動態路由器的配置
基本原理介紹
先解釋一下什麼是動態路由。
從前面的描述中我們可以看到,路由器的基本功能就是為IP分組尋找到達目的地址的路徑。我們前一節介紹的是人工手動靜態配置路由規則,也就是人為的設定尋路方式。但是因特網是個龐大的系統,上面跑的網絡結構負責,而且拓撲結構也在隨時改變,這樣在某些復雜的范圍裡我們的靜態配置就不一定能獲得最佳的尋路路徑了。而且一旦網絡結構發生改變,我們手動的靜態配置也往往無法及時跟著改變。在這個背景下,產生了動態路由配置的概念,也就是動態路由器。
動態路由器上的路由表項是通過相互連接的路由器之間交換彼此信息,然後按照一定的算法優化出來的,而這些路由信息是在一定時間間隙裡不斷更新,以適應不斷變化的網絡,以隨時獲得最優的尋路效果。為了實現IP分組的高效尋路,IETF制定了多種尋路協議。其中用於自治系統(AS:Autonomous System)內部網關協議有開放式最短路徑優先(OSPF:Open Shortest Path First)協議和尋路信息協議(RIP:Routing Information Protocol)。所謂自治系統是指在同一實體(如學校、企業或ISP)管理下的主機、路由器及其他網絡設備的集合。還有用於自治域系統之間的外部網絡路由協議BGP-4等。
運行這些路由協議的軟件就是我們通常說的路由軟件,Linux下常見的路由軟件有gated和zebra,。前者既有GPL版本的發行,又有收費的版本;而後者則是日本某組織開發的完全GPL的高效的路由軟件。Linux的發行裡面一般都缺省就有gated這個軟件,我們下面主要介紹它的配置和使用方法。
路由協議的介紹
我們這裡介紹一下RIP協議。
RIP是Routing Information Protocol的縮寫,直接翻譯就是"路由信息協議"。
RIP計算路由時使用了"距離向量(distance vector)"算法,因此,它也被稱作"距離向量尋路協議(distance vector routing protocol)。
RIP的特點是路由器間定時地交換網絡的整體知識,並且只和相鄰路由器交換這種知識。換句話說,路由器只和相鄰路由器共享網絡信息。路由器一旦從相鄰路由器獲取了新的知識,就將其追加到自己的數據庫中,並將該信息傳遞給所有的相鄰的路由器。相鄰路由器做同樣的操作,經過若干次傳遞,使自治系統內的所有路由器都能獲得完整的路由信息。
RIP報文用UDP數據報來傳送。為了區別於其他的UDP應用,規定RIPng的公認專用UDP端口號為521。主動尋路更新報文的源/目的的端口都是RIPng端口,應答的更新報文送往發起請求的端口。應當注意,IPv4中RIP使用的端口號是520,與RIPng的有所不同。
定時器愛RIP中有著比較重要的作用。在RIP中為支持尋路操作使用了三個不同的定時器。
第一個是啟動定時進行RIP更新操作的定時器。此定時器通常設置成30秒。在RIP標准中對其進一步加以限制,它要求路由器對更新報文的發送間隔采用隨機數,將RIP更新報文的間隔選取在25秒到35秒之間。其目的是為了避免網絡上所有的路由器以相同的定時發送更新報文,大量的業務量壓迫網絡造成沖突。利用隨機間隔可均衡業務量,從而減少路由器的沖突。
RIP在避免沖突方面還有一點需要注意,在觸發更新中不論何時發送了報文,不對30秒定時器復位。如果復位,多個路由器的更新報文的發送間隔就會發生沖突。這是由於所有的路由器在發送觸發更新後同時啟動定時器造成的。如不對該定時器復位,即使與在數秒前剛廣播的觸發更新報文的內容完全一樣,定時的更新報文也照發不誤。
RIP使用的第二個定時器時期滿(eXPiration)定時器。路由器只要收到通往特定信宿的路由,就對通往該信宿的期滿定時器初始化。期滿定時器雖然被設定為180秒,但在穩定的網絡中總是每隔30秒被初始化。當網絡不穩定時,此定時器的時間區間表示該路由無效。
RIP最後一個定時器時垃圾收集(garbage collection)定時器。路由器對無效路由打上尺度為無窮大的無效標記並將垃圾收集定時器置位。此時,定時器在120秒的區間內工作。在該期間內路由器將尺度費用置成無窮大的同時,繼續公布該信宿。以這種方法公布路由,相鄰路由表就能迅速從尋路表中刪除該路由。
RIP協議也有它的缺陷:
網絡直徑較小
RIP將尺度(即費用)無窮大定義為16,這一定義對使用RIP的所有網絡的規模作出了嚴格的限制。因尺度必須是整數,故網絡的費用至少為1。在基於RIP的Internet中,所有的系統距其他任何系統不能超過15個網絡。這一大小被稱作網絡直徑。
這一限制對管理員分配費用的靈活性是一個很大的制約。管理員分配費用最直接的方法是對各個網絡的費用都設成1。但是,在這種分配方式下,RIP就會選擇費用最小的路徑,而不管該路徑上的信道容量的大小。因此會捨棄"較長"的高速路徑而通過低效的"較短"路徑傳送數據。為了避免這種情況的發生,管理員可將大於1的費用分配給低效鏈路,人為地提高其費用。其結果是最大網絡直徑隨之變小,進一步限制了RIP的網絡規模。
對網絡變化的反應較慢
RIP網絡中的路由器從路由失效到將其識別出來要等待180秒,而在OSPF中典型值是1~2秒。
不支持組播
在RIP中沒有公布組成員信息的方法,因此不支持組播尋路。為實現組播尋路需和其他協議並用。
gated的配置
gated支持RIP、OSPF、IS-IS等路由協議。我們這裡著重介紹RIP協議的配置方法,其他協議的配置大家可以針對協議本身然後參考相關幫助文檔做類似的配置就可以。
首先修改/etc/sysconfig/network文件,使得FORWARD_IPV4=yes。然後在/etc/目錄下創建文件名為gated.conf的文件,裡面就是需要填寫的配置信息。RIP協議的配置語法如下:
rip yes no on off [ {
broadcast ;
nobroadcast ;
nocheckzero ;
preference preference;
defaultmetric metric ;
query authentication [none [[simplemd5] passWord]] ;
interface interface_list
[noripin] [ripin]
[noripout] [ripout]
[metricin metric]
[metricout metric]
[version 1][version 2 [multicastbroadcast]]
[[secondary] authentication [none [[simplemd5] password]] ;
trustedgateways gateway_list ;
sourcegateways gateway_list ;
traceoptions trace_options ;
} ] ;
上面的配置語法用來啟動或者禁止RIP協議的運行,並對RIP協議某些參數進行設置。各參數的含義如下:
broadcast
指明RIP分組將被廣播。當廣播靜態路由或者由其他協議產生的RIP路由項時,這很有用。
nobroadcast
指明當然的接口上不廣播RIP分組。
nocheckzero
指明RIP不處理RIP分組中的保留域。通常RIP將拒絕保留域為非零的分組。
preference preference
設置RIP路由的preference,其缺省值是100,這個值可以被其他的給定的策略重寫。
metric metric
定義當使用RIP廣告由其他路由協議獲得的路由信息時使用的尺度(metric)。其缺省值為16(不可達)。
query authentication [none [[simplemd5] password]] ;
設定身份認證密碼。缺省是無需認證。
interface interface_list
針對某特定的接口進行參數設定。
可以有的參數如下:
noripin
指定該接口商接收的RIP分組無效。
ripin
這是缺省的參數。與noripin相反。
noripout
被指定的接口上將無RIP分組發出。缺省值是在所有的廣播和非廣播的接口商發送送RIP分組。
ripout
這是缺省值。與noripout的含義相反。
metricin metric
指定在新添加的路由表項加入內核路由表以前增加的尺度(metric)。缺省值是1。
metricout metric
指定通過特定的接口發出的RIP前,對尺度的增加值。缺省值是0。
version 1
指定發送第一個版本的RIP協議的分組。缺省值是這個。
version 2
在指定的接口商發送第二個版本的RIP協議分組。如果IP組播可以使用,則缺省發送完全第二版本的分組,如果不支持組播,則使用與第一版本兼容的第二版本的RIP分組。
multicast
指明在特定接口上的第二版本的RIP分組使用組播發送。
broadcast
指明在特定的接口上使用廣播來發送與第一版本兼容的第二版本的RIP分組,即使該接口支持組播。
[secondary] authentication [none [simplemd5] password]
定義身份認證的方式。只對第二版本的RIP協議有用。缺省是無身份認證。
trustedgateways gateway_list
定義RIP接收RIP更新分組的網關。gateway_list 是一個簡單的主機名或者IP地址的列表。缺省情況下,在共享網絡上的所有的路由器都被認為支持提供RIP更新信息。
sourcegateways gateway_list
定義RIP直接發送分組的路由器列表,而不通過組播或者廣播。
traceoptions trace_options
設置RIP跟蹤選項。詳細設置略。
下面是些配置示例:
配置1:
#
#
# This configuration runs RIP in quiet mode, it only listens to
# packets, no matter how many interfaces are configured.
#
rip yes {
nobroadca