1. 程式人生 > >Zebra ——優秀的開源 TCP/IP 路由軟體

Zebra ——優秀的開源 TCP/IP 路由軟體

摘要:Zebra 是一個開源的 TCP/IP 路由軟體,同 Cisco Internet 網路作業系統(IOS)類似。它靈活而且具有強大的功能,可以處理路由資訊協議(RIP)、開放式最短路徑優先協議(OSPF)和邊界閘道器協議以及這些協議的所有變體。本文介紹了作者安裝 Zebra 並且使之與真正的 Cisco 路由器配合來動態地管理路由。

動態、健壯的路由對於 Internet 網路來說極其重要,因此任何一個初涉此領域的網路工程師不僅需要理解路由的概念,而且要有能力在真正的環境下駕馭它。但是,路由領域由高階網路裝置供應商(比如 Cisco)提供的產品一統天下,這就意味著對於大多數人來說,只能在學校或者實驗室環境中才能學習路由,而且還要一直受到實踐時間和實踐條件的困擾。

我們在組織一門關於 TCP/IP 路由的課程時就遇到了這樣的困難。在一個小型的測試環境下,我們想演示在使用路由資訊協議(RIP)和開放式最短路徑優先協議(OSPF)時各種不同的負載平衡情形。但是,我們手頭上的 Cisco 路由器數量有限。不過我們有一些 PC 機可以使用,於是我們開始想辦法用 Linux 來模擬 Cisco 路由器以解決這個問題。

開始時我們嘗試使用傳統的路由和閘道器守護程序來構建我們的測試網路,但我們很快就發現對它們進行配置比較困難,而且它們的能力有限,我們的工作得不償失。於是我們決定嘗試使用更先進的方法來完成我們的測試網路,很幸運,我們找到了 Zebra。 

什麼是 Zebra?


Zebra 是一個 TPC/IP 路由軟體,支援 BGP-4、BGP-4+、OSPFv2、OSPFv3、RIPv1、RIPv2 和 RIPng。它的發行遵循 GNU 通用公共許可協議,可以運行於 Linux 以及其他一些 Unix 變體作業系統上。Zebra 是那些系統最新的發行版本中的路由軟體。最新版本的Zebra以及文件可以從GNU Zebra網站上下載http://www.zebra.org/

最初的 Zebra 軟體包由 Kunihiro Ishiguro 和 Yoshinari Yoshikawa 於1996年完成。現在,這個軟體包主要由 IP Infusion――CTO 是 Ishiguro 先生――在多名網路工程師以及開源志願者的幫助下來維持。

Zebra 的設計獨特,採用模組的方法來管理協議。可以根據網路需要啟用或者禁用協議。

Zebra 最為實用的一點是它的配置形式同 Cisco IOS 極其類似。儘管它的配置與 IOS 相比還是有一些不同,但是這對於那些已經熟悉 IOS 的網路工程師來說在這種環境下工作將相當自如。

安裝 Zebra
我們的 Zebra 測試平臺是一臺舊的但是依然很好用的 ThinkPad X20,其執行的是 Red Hat Linux 9。ThinkPad 有一個內建的乙太網介面,我們又給它加了一塊 PCMCIA 乙太網卡,使之可以完成路由器的功能。在安裝 Zebra 之前,我們確認兩塊網絡卡都已經被 Linux 認出並且正常工作。 

在 Red Hat 9 中已經附帶了 Zebra-0.93b 的 RPM 安裝包。這個版本與 Zebra 網站上提供的版本相同,因此我們決定直接使用它,而不再去從網上下載並自己編譯。Zebra RPM 將安裝二進位制檔案、指令碼和配置檔案,以及必需的手冊、例子和文件檔案。 

Zebra 基本配置
zebra 守護程序是實際的路由管理者,控制著其他模組;而且使用者主要通過它進行互動。我們最先需要配置 Zebra 守護程序,對應的配置檔案是 /etc/zebra/zebra.conf。

Zebra RPM 包中有一個完整的配置檔案樣例。不過,就最簡化的情形來說,我們實際上只需要建立一個包含以下幾行的 /etc/zebra/zebra.conf 檔案: 

清單 1.一個最簡的 Zebra 配置檔案

hostname speedmetal
password zebra
enable password zebra

hostname 指定了當您進入互動式配置方式時的路由器名。它可以是任何一個標識,不一定要和機器的主機名相同。

password 指定了登入進入互動式 Zebra 終端時需要的密碼。

enable password 指定了當您想要改變配置時以較高級別身份訪問 Zebra 所需要的密碼。

建立了 /etc/zebra/zebra.conf 檔案以後,我們現在可以執行下面的命令來啟動 zebra 守護程序: 

# service zebra start

現在通過 telnet 到我們的機器的 2601 埠就可以進入 Zebra 互動式會話。

清單 2. 一個 Zebra 會話樣例

[[email protected] zebra]# telnet 127.0.0.1 2601
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

Hello, this is zebra (version 0.93b).
Copyright 1996-2002 Kunihiro Ishiguro.

User Access Verification

Password: zebra
speedmetal> enable
Password: zebra
speedmetal# ?
  configure  Configuration from vty interface
  copy       Copy configuration
  debug      Debugging functions (see also 'undebug')
  disable    Turn off privileged mode command
  end        End current mode and change to enable mode.
  exit       Exit current mode and down to previous mode
  help       Description of the interactive help system
  list       Print command list
  no         Negate a command or set its defaults
  quit       Exit current mode and down to previous mode
  show       Show running system information
  terminal   Set terminal line parameters
  who        Display who is on vty
  write      Write running configuration to memory, network, or terminal
speedmetal#

在互動式終端中操作很簡單。要獲得可用命令的提示,您可以在任何時刻按 ?鍵,然後命令的選項就會出現在螢幕上。如果您正在構建您自己的 Zebra 路由器,而且您有配置 Cisco 路由器的經驗的話,您會覺得這個配置過程非常熟悉。

到現在為止,還只有 Zebra 被配置好並且執行起來了,但是還沒有任何其他的協議。接下來將開始配置的實質內容,我們將向您介紹我們的這一過程。 

MRLG 的配置和使用
Multi-Router Looking Glass,簡稱 MRLG,由 EnterZone 的 John Frazier 開發,是一個基於 Web 的工具,可以用來顯示 Zebra 識別出來的介面和路由。MRLG 其實僅僅是 Zebra shell 的一個 Web 介面,只能使用有限的命令集,但是在我們的測試過程中,我們發現使用它是顯示路由的一個快速而有效的途徑。所以,在開始配置 Zebra 協議之前,我們先向您介紹如何安裝 MRLG。

MRLG 需要 Net::Telnet Perl 軟體包的支援才能與 Zebra shell 通訊。

由於 MRLG 是作為一個 CGI 應用程式來執行,因此我們還需要安裝一個 Web 伺服器。如果您是自己在嘗試這些事情,您可以直接使用 Red Hat 9 自帶的 httpd RPM。

我們將 /usr/share/doc/zebra-0.93b/tools 目錄中的 mrlg.cgi 檔案拷貝到 /var/www/cgi-gin 目錄下。然後,我們修改 mrlg.cgi 檔案的第36行,將 

$url="http://www.sample.com/mrlg.cgi";

修改為:

$url="http://127.0.0.1/cgi-bin/mrlg.cgi";

我們還修改了第168行到第174行的部分內容,如下所示:

if ($Form{'router'} eq 'router1') { $server = '127.0.0.1'; $login_pass = 'zebra'; $bgpd = "2605"; $zebra = "2601"; $full_tables=1;

為了訪問 MRLG,將瀏覽器定向到 http://127.0.0.1/cgi-bin/mrlg.cgi。

基本的實驗室配置
我們的實驗室配置包括兩個 Cisco 3620 路由器和一個 ThinkPad X20(有一個內建的乙太網介面和一個 Home-and-Away PCMCIA 乙太網卡)。兩個路由器通過序列線聯接起來,並且每個路由器通過乙太網連線到 ThinkPad。見我們的連線圖:

使用 Zebra 配置介面
我們首先從 RIP 協議開始講述使用 Zebra 來管理路由。如前所述,我們已經在 ThinkPad 上安裝了 Zebra。由於我們在 ThinkPad 上還需要另一個網路介面,我們安裝了一個虛擬的網路裝置,如下:


# modprobe dummy
          
# ifconfig dummy0

我們 telnet 到 Zebra 埠來開始配置。我們按照以下順序與 Zebra 會話:

清單 3. 配置 IP 介面

User Access Verification

Password: zebra
speedmetal> enable
Password: zebra
speedmetal# configure terminal
speedmetal(config)# interface eth0
speedmetal(config-if)# ip address 192.168.2.1/30
speedmetal(config-if)# quit
speedmetal(config)# interface eth1
speedmetal(config-if)# ip address 192.168.1.1/30
speedmetal(config-if)# quit
speedmetal(config)# interface dummy0
speedmetal(config-if)# ip address 10.0.2.1/24
speedmetal(config-if)# write
Configuration saved to /etc/zebra/zebra.conf
speedmetal(config-if)# end
speedmetal# show run
 
Current configuration:
!
hostname speedmetal
password zebra
enable password zebra
!
interface lo
!
interface eth0
 ip address 192.168.2.1/30
!
interface dummy0
 ip address 10.0.2.1/24
!
interface eth1
 ip address 192.168.1.1/30
!
!
line vty
!
end

要注意的是我們沒有用常規的方法設定 ThinkPad 的 IP 地址;而是通過 Zebra 來設定它們。這些設定儲存在 /etc/zebra/zebra.conf 配置檔案中,因此每次當 Zebra 服務啟動時,這些設定就會生效。

Zebra.conf 檔案中由 Zebra 修改的部分如下: 

清單 4. 由 Zebra 修改過的 /etc/zebra/zebra.conf 檔案

!
! Zebra configuration saved from vty
!   2003/08/20 00:07:51
!
hostname speedmetal
password zebra
enable password zebra
!
interface lo
!
interface eth0
 ip address 192.168.2.1/30
!
interface dummy0
 ip address 10.0.2.1/24
!
interface eth1
 ip address 192.168.1.1/30
!
!
line vty
!

我們還可以用 MRLG 來檢查介面的狀態,方法是:選擇預設值,"router1",選中單選按鈕 "show interface",然後點選 "Execute"。

使用 Zebra 安裝配置 RIP 路由
我們已經在 ThinkPad/router 上安裝配置了網路介面,接下來我們再對它進行配置,使之可以與 RIP 更新協同工作。正如我們已經提到過的,Zebra 使用單獨的守護程序來實現路由協議,所以我們必須首先為 RIP 守護程序在/etc/zebra 目錄下建立一個簡單的配置檔案ripd.conf。


hostname speedmetal-rip
password zebra
enable password zebra

然後我們啟動 ripd 守護程序 

# service ripd start

完成後,我們可以 telnet 到我們的 Zebra 路由器的 2602 埠來配置 RIP 守護程序。


User Access Verification

Password: zebra
speedmetal-rip> enable
Password: zebra
speedmetal-rip# configure terminal
speedmetal-rip(config)# router rip
speedmetal-rip(config-router)# network 10.0.0.0/8
speedmetal-rip(config-router)# network 192.168.0.0/16
speedmetal-rip(config-router)# end
speedmetal-rip# show run

Current configuration:
!
hostname speedmetal-rip
password zebra
enable password zebra
!
interface lo
!
interface eth0
!
interface dummy0
!
router rip
 network 0.0.0.0/0
 network 192.168.0.0/16
!
line vty
!
end
speedmetal-rip# write
Configuration saved to /etc/zebra/ripd.conf
speedmetal-rip#

生成的 ripd.conf 配置檔案如下所示:

清單 7. 生成的 /etc/zebra/ripd.conf 檔案 

!
! Zebra configuration saved from vty
!   2003/08/19 13:50:30
!
hostname speedmetal-rip
password zebra
enable password zebra
!
interface lo
!
interface eth0
!
interface eth1
!
interface dummy0
!
router rip
 network 10.0.0.0/8
 network 192.168.0.0/16
!
line vty
!

在 Cisco 路由器上安裝配置 RIP 路由
我們將兩個 Cisco 路由器稱為 "A" 和 "B",為了簡化這兩個路由器的配置,我們只配置了一些讓路由器能正常執行的基本設定,包括設定介面的 IP 地址、環回地址,以及用於串列埠通訊的串列埠時鐘頻率。

清單 8. 配置路由器 A

Router#config terminal
Router(config)#hostname RouterA
RouterA(config)#int s0/0
RouterA(config-if)#ip address 192.168.0.1 255.255.255.252
RouterA(config-if)#no shut
RouterA(config-if)# interface fastEthernet 0/0
RouterA(config-if)#ip address 192.168.2.2 255.255.255.252
RouterA(config-if)#no shut
RouterA(config-if)#int loopback 0
RouterA(config-if)#ip address 10.0.0.1 255.255.255.0
RouterA(config-if)#end
RouterA#write

類似地,我們配置好路由器 "B"。

清單 9. 配置路由器 B

Router#configure terminal
Router(config)#hostname RouterB
RouterB(config)#int s0/0
RouterB(config-if)#ip address 192.168.0.2 255.255.255.252
RouterB(config-if)#no shut
RouterB(config-if)#int fastEthernet0/0
RouterB(config-if)#ip address 192.168.1.2 255.255.255.252
RouterB(config-if)#no shut
RouterB(config-if)#int loopback 0
RouterB(config-if)#ip address 10.0.1.1 255.255.255.0
RouterB(config-router)#end
RouterB#write

在 3620 路由器上配置 RIP 與 Zebra 中的命令極其類似。我們通過控制檯線纜訪問兩臺3620,執行如下命令:

清單 10. 在路由器 A 上完成 RIP 所需的配置

RouterA#conf t
Enter configuration commands, one per line. End with CNTL/Z.
RouterA(config)#router rip
RouterA(config-router)#network 10.0.0.0
RouterA(config-router)#network 192.168.0.0
RouterA(config-router)#network 192.168.2.0
RouterA(config-router)#version 2
RouterA(config-router)#end
RouterA#write

然後是路由器 B:

清單 11. 在路由器 B 上完成 RIP 所需的配置

RouterB#conf t
Enter configuration commands, one per line. End with CNTL/Z.
RouterB(config)#router rip
RouterB(config-router)#network 10.0.1.0
RouterB(config-router)#network 192.168.0.0
RouterB(config-router)#network 192.168.1.0
RouterB(config-router)#version 2
RouterB(config-router)#end
RouterB#write

router rip 命令啟動配置 RIP 的過程。network 命令告訴路由器哪些是 RIP 要傳播的網段。

RIP 傳播路由
現在 Cisco 路由器和 Zebra 都已經配置好,我們接下來檢驗傳播的路由。在 MRLG 中,我們選擇 "show ip route" 然後點選 "Execute"。生成如下報告:

清單 12. Zebra 反映的 RIP 路由

Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
       B - BGP, > - selected route, * - FIB route

R>* 10.0.0.0/24 [120/2] via 192.168.2.2, eth0, 00:11:05
R>* 10.0.1.0/24 [120/2] via 192.168.1.2, eth1, 00:02:08
C>* 10.0.2.0/24 is directly connected, dummy0
K * 127.0.0.0/8 is directly connected, lo
C>* 127.0.0.0/8 is directly connected, lo
R>* 192.168.0.0/30 [120/2] via 192.168.2.2, eth0, 00:11:05
C>* 192.168.1.0/30 is directly connected, eth1
C>* 192.168.2.0/30 is directly connected, eth0

通過 RIP 得到的路由用一個 R 來標記。

要注意的是,通過路由器 A 和路由器 B 的廣播,Zebra 現在知道了 10.0.0.0/24 和 10.0.1.0/24 兩個網段。測試時,我們從 ThinkPad Zebra 路由器上 ping 10.0.0.1 和 10.0.1.1,並從兩個路由器上 ping 10.0.2.1(ThinkPad 的虛擬網路介面)。

為了測試路由的 failover,我們把連線網段 10.0.0.0/24 的路由器 A 上的網路連線斷開。經過總計約兩分鐘的過期時間以後,Zebra 得到了另一個可達 10.0.0.0/24 的路由,這個新的路由是通過路由器 B 得到的。注意在下面的清單中,Zebra 通過 192.168.1.2 到達 10.0.0.0/24,而不是先前的路徑。 

清單 13. Zebra 反映的 RIP 路由

Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
       B - BGP, > - selected route, * - FIB route

R>* 10.0.0.0/24 [120/3] via 192.168.1.2, eth0, 00:00:26
R>* 10.0.1.0/24 [120/2] via 192.168.1.2, eth1, 00:06:02
C>* 10.0.2.0/24 is directly connected, dummy0
K * 127.0.0.0/8 is directly connected, lo
C>* 127.0.0.0/8 is directly connected, lo
R>* 192.168.0.0/30 [120/2] via 192.168.1.2, eth1, 00:00:26
C>* 192.168.1.0/30 is directly connected, eth1
C>* 192.168.2.0/30 is directly connected, eth0

為什麼總的過期時間大於兩分鐘?RIP 預設的過期時間是 30 秒,但是 RIP 協議指定了在確認一個路由已經失效之前要進行 3 次重試(共 90 秒),並且還要有一段時間來清空無效的路由(還需要 240 秒)。眾所周知,RIP 協議對連線失敗反應遲鈍,這一點在這裡得到了明確的論證。

這裡是在 failover 發生之前路由器 A 的路由表的輸出。 

清單 14. Failover 之前路由器 A 的路由表

RouterA#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 3 subnets
R       10.0.2.0 [120/1] via 192.168.2.1, 00:00:11, FastEthernet0/0
C       10.0.0.0 is directly connected, Loopback0
R       10.0.1.0 [120/1] via 192.168.0.2, 00:00:18, Serial0/0
     192.168.0.0/30 is subnetted, 1 subnets
C       192.168.0.0 is directly connected, Serial0/0
     192.168.1.0/30 is subnetted, 1 subnets
R       192.168.1.0 [120/1] via 192.168.0.2, 00:00:18, Serial0/0
                    [120/1] via 192.168.2.1, 00:00:11, FastEthernet0/0
     192.168.2.0/30 is subnetted, 1 subnets
C       192.168.2.0 is directly connected, FastEthernet0/0

failover 之後:

清單 15. Failover 之後路由器 A 的路由表

RouterA#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
       i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
       * - candidate default, U - per-user static route, o - ODR
       P - periodic downloaded static route

Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 3 subnets
R       10.0.2.0 [120/2] via 192.168.0.2, 00:00:09, Serial0/0
C       10.0.0.0 is directly connected, Loopback0
R       10.0.1.0 [120/1] via 192.168.0.2, 00:00:09, Serial0/0
     192.168.0.0/30 is subnetted, 1 subnets
C       192.168.0.0 is directly connected, Serial0/0
     192.168.1.0/30 is subnetted, 1 subnets
R       192.168.1.0 [120/1] via 192.168.0.2, 00:00:09, Serial0/0
     192.168.2.0/30 is subnetted, 1 subnets
R       192.168.2.0 [120/2] via 192.168.0.2, 00:00:10, Serial0/0

使用 Zebra 配置 OSPF 路由
完成 RIP 的配置後,我們開始配置 OSPF 路由。儘管 OSPF 和 RIP 可以同時使用,不過為了配置的簡化,我們現在只使用 OSPF。我們只需要把 ripd 服務停掉,就可以在 Zebra 中將 RIP 禁用。

# service ripd stop

和前面一樣,我們從 OSPF 的一個基本的配置檔案開始,這次是 ospfd.conf,檔案所在目錄仍是 /etc/zebra。

清單 16. 一個基本的 /etc/zebra/ospfd.conf 檔案

hostname speedmetal-ospf
password zebra
enable password zebra

然後,我們啟動 OSPF 服務:

# service ospfd start

對 OSPF 的配置比 RIP 簡單:基本上我們僅僅需要告訴 OSPF 去廣播所有它知道的路由。

配置 OSPF 的埠是 2604。

下面是我們配置 OSPF 的會話。 

清單 17. OSPF 配置會話

[[email protected] zebra]# telnet 127.0.0.1 2604
User Access Verification

Password: zebra
speedmetal-ospf> enable
Password: zebra
speedmetal-ospf# configure terminal
speedmetal-ospf(config)# router ospf
speedmetal-ospf(config-router)# network 0.0.0.0/0 area 0
speedmetal-ospf(config-router)# end
speedmetal-ospf# write
Configuration saved to /etc/zebra/ospfd.conf
speedmetal-ospf# show run
 
Current configuration:
!
hostname speedmetal-ospf
password zebra
enable password zebra
!
!
router ospf
 network 0.0.0.0/0 area 0
!
line vty
!
end
speedmetal-ospf#

ospfd.conf 配置檔案的修改結果如下:

清單 18. Zebra 修改後的 /etc/zebra/ospfd.conf 檔案

!
! Zebra configuration saved from vty
!   2003/08/19 14:22:17
!
hostname speedmetal-ospf
password zebra
enable password zebra
!
!
!
interface lo
!
interface eth0
!
interface eth1
!
interface dummy0
!
router ospf
 network 0.0.0.0/0 area 0
!
line vty
!

在 Cisco 路由器上配置 OSPF
我們用以下命令來移除 RIP 協議並新增 OSPF 協議:

清單 19. 移除 RIP 協議,新增 OSPF 協議

RouterA#conf term
RouterA(config)no router rip
RouterA(config)#router ospf 100
RouterA(config-router)#network 0.0.0.0 255.255.255.255 area 0
RouterA(config-router)end

我們在路由器 A 和路由器 B 上執行同樣的步驟。

清單 20. Zebra 反映的 OSPF 路由

Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
       B - BGP, > - selected route, * - FIB route

O>* 10.0.0.0/32 [110/11] via 192.168.2.2, eth0, 00:00:01
O>* 10.0.1.1/32 [110/11] via 192.168.1.2, eth1, 00:02:53
O   10.0.2.0/24 [110/10] is directly connected, dummy0, 00:03:31
C>* 10.0.2.0/24 is directly connected, dummy0
K * 127.0.0.0/8 is directly connected, lo
C>* 127.0.0.0/8 is directly connected, lo
O>* 192.168.0.0/30 [110/58] via 192.168.2.2, eth0, 00:00:01
                            via 192.168.1.2, eth1, 00:00:01
O   192.168.1.0/30 [110/10] is directly connected, eth1, 00:03:21
C>* 192.168.1.0/30 is directly connected, eth1
O   192.168.2.0/30 [110/10] is directly connected, eth0, 00:03:31
C>* 192.168.2.0/30 is directly connected, eth0

請注意 10.0.0.1/32 和到 10.0.1.1/32 的路由被標記為 O,說明這些路由是通過 OSPF 得到的。

當我們把從 Zebra 路由器到路由器 A 的連線斷開時,路由自動更新。MRLG 生成的報告如下: 

清單 21. Failover 之後 Zebra 反映的 OSPF 路由

Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
       B - BGP, > - selected route, * - FIB route

O>* 10.0.0.1/32 [110/59] via 192.168.2.2, eth0, 00:01:10
O>* 10.0.1.1/32 [110/11] via 192.168.1.2, eth1, 00:09:46
O   10.0.2.0/24 [110/10] is directly connected, dummy0, 00:10:24
C>* 10.0.2.0/24 is directly connected, dummy0
K * 127.0.0.0/8 is directly connected, lo
C>* 127.0.0.0/8 is directly connected, lo
O>* 192.168.0.0/30 [110/58] via 192.168.1.2, eth1, 00:01:10
O   192.168.1.0/30 [110/10[ is directly connected, eth1, 00:10:14
C>* 192.168.1.0/30 is directly connected, eth1
O   192.168.2.0/30 [110/10] is directly connected, eth0, 00:10:24
C>* 192.168.2.0/30 is directly connected, eth0

由於 OSPF 是基於鏈路狀態的,所以 failover 速度快得多:新的路由在 30 秒內就可以傳播完成。

相關推薦

Zebra ——優秀開源 TCP/IP 路由軟體

摘要:Zebra 是一個開源的 TCP/IP 路由軟體,同 Cisco Internet 網路作業系統(IOS)類似。它靈活而且具有強大的功能,可以處理路由資訊協議(RIP)、開放式最短路徑優先協議(OSPF)和邊界閘道器協議以及這些協議的所有變體。本文介紹了作者安裝 Z

ZCU106開發詳解之PS側開源TCP/IP協議棧UDP回顯程式(高階外設,大神之路)

感謝大家的等待!! 本週將四連發,我們團隊也將盡自己能力為大家答疑解惑!!! 如果有朋友想了解更多相關資訊請加QQ群836535064。我們會將相關資料釋出於QQ群中。 歡迎有需求的朋友深度合作。本團隊專注於高速視訊編解碼,高速訊號採集處理,高速異構平臺,高速儲存方案提

TCP/IPIP路由選擇

否則 spa dsm mil adding 搜索 應該 區分 class IP層在內存中有一個路由表,當有數據要發送時,它要對該表進行一次搜索以確認轉發地址。收到的數據到達IP層時。IP層會檢查數據報的目的地址是否為本機IP或廣播IP: 假設是,就依據IP首部

OSI七層模型,TCP/IP,靜態和rip路由

OSI七層 TCP/IP 靜態路由 rip 一、OSI七層參考模型 應用層:將抽象語言(文字、圖像、聲音)->編碼表示層:編碼->二進制會話層:應用程序提供會話地址(應用程序會話地址),如qq號;不是所有應用程序都需要這個地址 *上三層是應用程序對信息進行加工處理直到可以被傳輸 傳

python 實戰之模仿開發QQ聊天軟體(三)TCP/IP伺服器與客戶端建設

無論是p2p還是c/s還是b/s,只要用到通訊,必然是要用到今天寫的這個。 TCP/IP是網路軟體最核心的部分,缺少這個你只能當做單機遊戲玩。 TCP/IP,只需要搞清楚udp和tcp這兩個就可以了。 兩者的區別在於 udp每次傳送資訊都需要傳送ip和埠號,可以比

TCP/IPIP:網際協議(定址和路由

IP是TCP/IP協議族中最為核心的協議,所有的TCP、UDP、ICMP及IGMP資料都以IP資料報格式傳輸。 IP提供不可靠、無連線的資料報傳送服務。 不可靠是指它不能保證IP資料報能成功地到達目的地,IP僅提供最好的傳輸服務,如果期間資料傳輸發生了錯誤,IP的處理演算法

TCP/IP協議族——單播路由選擇協議RIP、OSPF、BGP

每個自治系統內部可以選擇一個或多個域內路由選擇協議來處理本自治系統內部的路由選擇,但是,處理自治系統之間的路由選擇只能使用一種域間路由選擇協議。 一 距離向量路由選擇協議 該方法視AS及其所有路由器和網路如同一張由結點連線結點的邊的集合構成的圖。 1.1 Bellman-

幾種開源TCP/IP協議棧對比

幾種開放原始碼的TCPIP協議棧概述 1、BSD TCP/IP協議棧      BSD棧歷史上是其他商業棧的起點,大多數專業TCP/IP棧(VxWorks內嵌的TCP/IP 棧)是BSD棧派生的。這是因為BSD棧在BSD許可協議下提供了這些專業棧的雛形,BSD許用證允許

開源路由軟體Quagga安裝及使用

QUAGGA是一款開源的路由軟體,也是zebra(已經停止更新)的升級維護版本。 作用:將linux裝置變成一個功能完整的路由器。支援的協議:rip,ospf,bgp等。 各種簡單的介紹使用方法啊等

TCP/IP詳解卷2:實現》筆記--Radix樹路由

由IP完成的路由選擇是一種選路機制,它通過搜尋路由表來確定從哪個介面把分組傳送出去,它與選路策略不一樣,選路策略 是一組規則的集合,這些規則用來確定哪些路由可以編入到路由表中,Net/3核心實現選路機制,而選路守護程序,典型地如 routed或gated,實現選路策略。 1

路由軟體 zebra-0.95a 在linux下面編譯出現問題的解決

1.問題現象解壓縮zebra-0.95a壓縮包,編譯,出現問題: ./configure make 後出現:  Java程式碼   rtadv.c: In function ‘rtadv_recv_packet’:   rtadv.c:123: error: der

自由路由軟體ZEBRA基本配置完全攻略

前言  Zebra是一個路由軟體包,提供基於TCP/IP路由服務,支援RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP- 4, 和 BGP-4+等眾多路由協議。Zebra還支援BGP特性路由反射器(Route Reflector)。除了傳統的

我發起了一個 操作系統 GUI 和 Tcp / IP 包 的 開源項目 DeviceOS

系統 一個 智能設備 容易 實現 需要 目的 實現邏輯 兩個 操作系統 如果 不需要 處理 復雜多樣 的 硬件 兼容性, 其實 並不算 大項目, 可以算 畢業設計 。 但是, GUI 和 Tcp / IP 這兩個 部分 的 實現邏輯 很多 很復雜, 這 2 個部分

路由表和路由選路原則(TCP/IP

1、路由表每個Windows系統中都有IP路由表,它儲存了本地計算機可以到達的網路目的地址範圍和如何到達的路由資訊。路由表是TCP/IP通訊的基礎,本地計算機上的任何TCP/IP通訊都受到路由表的控制。路由表中的每一個路由項都具有五個型別。分為四大部分1、  網路地址(net

TCP/IP簡易聊天軟體C++實現

第一步:需求 軟體需要實現的功能: 0.登入  1.私聊   2.群聊  3.檔案傳輸 第二步:考慮使用的網路通訊協議。 鑑於ICQ使用的TCP協議,採用TCP實現聊天和檔案傳輸。因為伺服器端對於使用者傳送過來的資料要進行區分是什麼型別的資料,比如聊天、檔案等等,所以設計成

TCP/IP具體解釋》讀書筆記(21章)-TCP的超時與重傳

打開 定時器 是否 檢查 例如 技術 blog 信息 全部 TCP提供可靠的運輸層。它使用的方法之中的一個就是確認從還有一端收到的數據。但數據和確認都有可能會丟失。TCP通過在發送時設置一個定時器來解決這樣的問題。假設當定時器溢出時還沒有收到確認,它就重傳該數據。對於實現

TCP--IP 實戰IMCP

txt 組成 時間 clas 錯誤 信息 可靠的 pre 校驗 1、打開wireshark2、ping一個不存在的IP地址3、抓包4、過濾條件為icmpIP協議並 不是一個可靠的協議,它不保證數據被送達,那麽,自然的,保證數據送達的工作應該由其他的模塊來完成。其中一個重要

TCP/IP協議族-----22、萬維網和HTTP

art class ip協議 post term fill 技術分享 clas data- TCP/IP協議族-----22、萬維網和HTTP

TCP/IP網絡協議的深入淺出歸納

通過 傳輸速率 兩個人 比較 多層 本質 恰恰 transport 前段時間 前段時間做了一個開發,涉及到網絡編程,開發過程比較順利,但任務完成後始終覺得有一些疑惑。主要是因為對網絡協議不太熟悉,對一些概念也沒弄清楚。後來 我花了一些時間去了解這些網絡協議,現在對TCP/I

TCP/IP協議(2):網絡設備

數據包 服務器 網絡設備 風暴 二層交換機 不同的 中繼器 tcp/ip 解決 1、中繼器(Repeater) 中繼器工作在OSI的一層,我們知道,超5類線的傳輸距離最大為100米,超過這個距離信號就會衰減,中繼器就是為了防止信號變差,將網絡信號進行再生和重定時。 2、