動(dòng)態(tài)選路協(xié)議
靜態(tài)選路:在配置接口時(shí)杨赤,以默認(rèn)方式生成路由表項(xiàng)故响,并通過(guò)route命令的方式可以增加表項(xiàng),或者通過(guò)ICMP重定向生成表項(xiàng)。
在網(wǎng)絡(luò)很少,且與其他網(wǎng)絡(luò)只有單個(gè)連接點(diǎn)且沒(méi)有多余路由時(shí)时捌,采用這種方法是可行的。
動(dòng)態(tài)選路協(xié)議:它用于路由器間通信炉抒。我們主要討論RIP奢讨,即選路信息協(xié)議,大多數(shù)TCP/IP是吸納都提供這個(gè)應(yīng)用廣泛的協(xié)議,其次還有OSPF和BGP以及一種名為無(wú)分類(lèi)域間選路的新的選路技術(shù)拿诸。
動(dòng)態(tài)選路
當(dāng)相鄰路由器之間進(jìn)行通信扒袖,以告知對(duì)方每個(gè)路由器當(dāng)前所連接的網(wǎng)絡(luò),這時(shí)就出現(xiàn)了動(dòng)態(tài)選路亩码。每個(gè)路由器之間必須采用選路協(xié)議進(jìn)行通信季率,這樣的選路協(xié)議有很多種。路由器上有一個(gè)進(jìn)程稱(chēng)為路由守護(hù)進(jìn)程描沟,它運(yùn)行選路協(xié)議飒泻,并與相鄰的一寫(xiě)路由器進(jìn)行通信。
動(dòng)態(tài)選路并不改變之前描述的內(nèi)核在IP層的選路方式吏廉。內(nèi)核搜索路由表泞遗,查找主機(jī)路由、網(wǎng)絡(luò)路由以及默認(rèn)路由的方式并沒(méi)有改變席覆。僅僅是放置到路由表中的信息改變了---當(dāng)路由隨時(shí)間變化時(shí)史辙,路由是有路由守護(hù)程序動(dòng)態(tài)的增加或刪除。
路由守護(hù)程序?qū)⑦x路策略加入到系統(tǒng)中看佩伤,選擇路由并加入到內(nèi)核的二路由表中聊倔。如果守護(hù)進(jìn)程發(fā)現(xiàn)前往同一宿主存在多條路由,那么它以某種方式生巡,將選擇最佳路由并加入到內(nèi)核路由表中耙蔑。如果路由守護(hù)程序發(fā)現(xiàn)一條鏈路已經(jīng)斷開(kāi),它可以刪除受影響的路由或增加一條路由繞開(kāi)問(wèn)題障斋。
在像Internet這樣的系統(tǒng)中纵潦,目前采用了許多不同的選路協(xié)議徐鹤。Internet是以一組自治系統(tǒng)(AS垃环,Autonomous System)的方式組織的,每個(gè)自治系統(tǒng)通常由單個(gè)實(shí)體管理返敬。常常將一個(gè)公司或大學(xué)校園定義為一個(gè)自治系統(tǒng)遂庄。NSFNET的Internet骨干網(wǎng)形成一個(gè)自治系統(tǒng),這是因?yàn)楣歉删W(wǎng)中的所有路由器都在單個(gè)的管理控制之下劲赠。
每個(gè)自治系統(tǒng)可以選擇該自治系統(tǒng)中各個(gè)路由器之間的選路協(xié)議涛目。這種協(xié)議我們稱(chēng)之為內(nèi)部網(wǎng)關(guān)協(xié)議IGP(Interior Gateway Protocol)或域內(nèi)選路協(xié)議(intradomain routing protocol)。
最常用的IGP是選路信息協(xié)議RIP凛澎。一種新的IGP是開(kāi)放最短路徑優(yōu)先OSPF(Open Shortest Path First)協(xié)議霹肝。
Unix選路守護(hù)程序
Unix系統(tǒng)上常常運(yùn)行名為routed路由守護(hù)程序。幾乎所有的TCP/IP實(shí)現(xiàn)中都提供該程序塑煎。改程序只使用RIP進(jìn)行通信沫换,這是一種用于小型到中型網(wǎng)絡(luò)中的協(xié)議。
另一個(gè)程序時(shí)gated最铁。IGP和EGP都支持它讯赏。下圖對(duì)routed和兩種不同版本的gated所支持的不同選路協(xié)議進(jìn)行了比較。大多數(shù)運(yùn)行路由守護(hù)程序的系統(tǒng)都可以運(yùn)行routed磕谅,除非它們需要支持gated所支持的其他協(xié)議。
RIP選路信息協(xié)議
報(bào)文格式
RIP報(bào)文包含在UDP數(shù)據(jù)包中宏榕,如下圖奠支。
下圖為使用IP地址時(shí)的RIP報(bào)文格式褥民。
命令字段為1表示請(qǐng)求宇攻,2表示應(yīng)答洛心。還有兩個(gè)舍棄不用的命令(3和4)番枚,兩個(gè)非正式的命令:5表示輪詢(xún)法严,6表示輪詢(xún)表項(xiàng)。請(qǐng)求表示要求其他系統(tǒng)發(fā)送其全部或部分路由表葫笼。應(yīng)答則包含發(fā)送者全部或部分路由表深啤。
版本字段通常為1,但是第二版RIP路星,將此字段設(shè)置為2溯街。
緊跟在后面的20字節(jié)指定地址系列、IP地址以及相應(yīng)的度量洋丐。
采用這種20字節(jié)格式的RIP報(bào)文可以通告多達(dá)25條路由呈昔。上限25是用來(lái)保證RIP報(bào)文的總長(zhǎng)度為20 X 25 + 4 = 504,小于512字節(jié)友绝。由于每個(gè)報(bào)文最多攜帶25個(gè)路由堤尾,因此為了發(fā)送整個(gè)路由表,經(jīng)常需要多個(gè)報(bào)文迁客。
正常運(yùn)行
RIP常用的UDP端口號(hào)是520郭宝,正常采用RIP協(xié)議的routed程序運(yùn)行結(jié)果:
·初始化:在啟動(dòng)一個(gè)路由守護(hù)程序時(shí),它先判斷啟動(dòng)了哪些接口掷漱,并在每個(gè)接口上發(fā)送一個(gè)請(qǐng)求報(bào)文粘室,要求其他路由器發(fā)送完整路由表。在點(diǎn)對(duì)點(diǎn)鏈路中切威,該請(qǐng)求是發(fā)送給其他終點(diǎn)的育特。如果網(wǎng)絡(luò)支持廣播的話(huà),這種請(qǐng)求是以廣播形式發(fā)送的先朦。目的UDP端口號(hào)是520(這是其他路由器的路由守護(hù)程序端口號(hào))。
這種請(qǐng)求報(bào)文的命令字段為1犬缨,但地址系列字段設(shè)置為0喳魏,而度量字段設(shè)置為16。這是一種要求另一端完整路由表的特殊請(qǐng)求報(bào)文怀薛。
·接收到請(qǐng)求:如果路由器接收到上面的特殊請(qǐng)求刺彩,那么路由器就將完整的路由表發(fā)送給請(qǐng)求者。否則,就處理請(qǐng)求中的每一個(gè)表項(xiàng):如果有連接到指明地址的路由创倔,則將度量設(shè)置成我們的值嗡害,否則將度量設(shè)置為16。然后發(fā)回相應(yīng)畦攘。
·接收到響應(yīng):使響應(yīng)生效霸妹,可能會(huì)更新路由表、可能會(huì)增加新的表項(xiàng)知押,對(duì)已有的表項(xiàng)進(jìn)行修改叹螟,或是將已有表項(xiàng)刪除。
·定期選路更新:每過(guò)30秒台盯,所有或部分路由器會(huì)將其完整路由表發(fā)送給相鄰路由器罢绽。發(fā)送路由器可以是廣播形式的,或是發(fā)送給點(diǎn)對(duì)點(diǎn)鏈路的其他終點(diǎn)的静盅。
·觸發(fā)更新:每當(dāng)一條路由的度量發(fā)生變化時(shí)良价,就對(duì)它進(jìn)行更新。不需要發(fā)送完整路由表蒿叠,而只需要發(fā)送那些發(fā)生變化的表項(xiàng)棚壁。
每條路由都有與之相關(guān)的定時(shí)器。如果運(yùn)行RIP的系統(tǒng)發(fā)現(xiàn)一條路由在3分鐘內(nèi)未更新栈虚,就將該路由的度量設(shè)置成無(wú)窮大(16)袖外,并標(biāo)注為刪除。這意味著已經(jīng)在6個(gè)30秒更新時(shí)間里沒(méi)收到通告該路由的路由器的更新了魂务。再過(guò)60秒曼验,將從本地路由表中刪除該路由,以保證該路由的失效已被傳播開(kāi)粘姜。
度量
RIP所使用的度量是以跳計(jì)算的鬓照。所有直連接口的跳數(shù)為1。
下圖中畫(huà)出的4條虛線(xiàn)是廣播RIP報(bào)文孤紧。路由器R1通過(guò)發(fā)送廣播到N1通告它與N2之間的跳數(shù)是1(發(fā)送給N1的廣播中通告它與N1之間的路由是無(wú)用的)豺裆。同時(shí)也通過(guò)發(fā)送廣播給N2通告它與N1之間的跳數(shù)為1。同樣号显,R2通告它與N2的度量為1臭猜,與N3的度量為1。
如果相鄰路由器通告它與其他網(wǎng)絡(luò)路由的跳數(shù)為1押蚤,那么我們與那個(gè)網(wǎng)絡(luò)的度量就是2蔑歌,這是因?yàn)闉榱税l(fā)送報(bào)文到該網(wǎng)絡(luò),我們必須經(jīng)過(guò)那個(gè)路由器揽碘。在我們的例子中次屠,R2到N1的度量是2园匹,與R1到N3的度量一樣。
由于每個(gè)路由器都發(fā)送其路由表給鄰站劫灶,因此裸违,可以判斷在同一個(gè)自治系統(tǒng)AS內(nèi)到每個(gè)網(wǎng)絡(luò)的路由。如果在該AS內(nèi)從一個(gè)路由器到一個(gè)網(wǎng)絡(luò)有多條路由本昏,那么路由器將選擇跳數(shù)最小的路由供汛,而忽略其他路由。
跳數(shù)的最大值是15凛俱,這意味著RIP只能用在主機(jī)間最大跳數(shù)值為15的AS內(nèi)紊馏。度量為16表示到無(wú)路由到達(dá)該IP地址。
問(wèn)題
這種方法看起來(lái)很簡(jiǎn)單蒲犬,但它有一些缺陷朱监。首先,RIP沒(méi)有子網(wǎng)地的概念原叮。例如赫编,如果標(biāo)準(zhǔn)的B類(lèi)地址中16bit的主機(jī)號(hào)不為0,那么RIP無(wú)法區(qū)分非零部分是一個(gè)子網(wǎng)號(hào)奋隶,或者是一個(gè)主機(jī)地址。有一些實(shí)現(xiàn)中通過(guò)接收到的RIP信息唯欣,來(lái)使用接口的網(wǎng)絡(luò)掩碼嘹吨,而這有可能出錯(cuò)。
其次境氢,在路由器或鏈路發(fā)生故障后蟀拷,需要很長(zhǎng)的一段時(shí)間才能穩(wěn)定下來(lái)。這段時(shí)間通常需要幾分鐘萍聊。在這段建立時(shí)間里问芬,可能會(huì)發(fā)生路由環(huán)路。在實(shí)現(xiàn)RIP時(shí)寿桨,必須采用很多微妙的措施來(lái)防止路由環(huán)路的出現(xiàn)此衅,并使其盡快建立。
采用跳數(shù)作為路由度量忽略了其他一些應(yīng)該考慮的因素亭螟。同時(shí)挡鞍,度量最大值為15則限制了可以使用RIP的網(wǎng)絡(luò)的大小。
RIP版本2
RIP-2版本的擴(kuò)充并不改變協(xié)議本身媒佣,而是利用下圖的結(jié)構(gòu)匕累,額外的傳遞一些信息。如果RIP忽略了那些必須為0的字段默伍,那么RIP和RIP-2可以互相操作欢嘿。
對(duì)于RIP-2來(lái)說(shuō),其版本字段為2也糊。
路由域是一個(gè)選路守護(hù)進(jìn)程的標(biāo)識(shí)符炼蹦,它指出了這個(gè)數(shù)據(jù)報(bào)的所有者。在一個(gè)Unix實(shí)現(xiàn)中狸剃,它可以是選路守護(hù)進(jìn)程的進(jìn)程號(hào)掐隐。該域允許管理者在單個(gè)路由器上運(yùn)行多個(gè)RIP實(shí)例,每個(gè)實(shí)例在一個(gè)路由域內(nèi)運(yùn)行钞馁。
路由標(biāo)記是為了支持外部網(wǎng)關(guān)協(xié)議而存在的虑省,它攜帶者EGP和BGP的自治系統(tǒng)號(hào)。
每個(gè)表項(xiàng)的子網(wǎng)掩碼應(yīng)用于相應(yīng)的IP地址上僧凰。下一站IP地址指明發(fā)往目的IP地址的報(bào)文該發(fā)往哪里探颈。該字段為0意味著發(fā)往目的地址的報(bào)文應(yīng)該發(fā)給RIP報(bào)文的系統(tǒng)。
RIP-2提供了一種簡(jiǎn)單的鑒別機(jī)制训措∥苯冢可以指定RIP報(bào)文的前20字節(jié)表項(xiàng)地址系列為0xffff,路由標(biāo)記為2绩鸣。表項(xiàng)中的其余16字節(jié)包含一個(gè)明文口令怀大。
OSPF:開(kāi)放最短路徑優(yōu)先
OSPF是除RIP外的另一個(gè)內(nèi)部網(wǎng)關(guān)協(xié)議,它克服了RIP的所有限制呀闻。
與采用距離向量的RIP協(xié)議不同的是化借,OSPF是一個(gè)鏈路狀態(tài)協(xié)議。距離向量的意思是RIP發(fā)送的報(bào)文包含一個(gè)距離向量(跳數(shù))捡多。每個(gè)路由器都根據(jù)它所接受到鄰站的這些距離向量來(lái)更新自己的路由表蓖康。
在一個(gè)鏈路狀態(tài)協(xié)議中,路由器并不與其鄰站交換距離信息局服。它采用的是每個(gè)路由器主動(dòng)地測(cè)試與其鄰站相連鏈路的狀態(tài)钓瞭,將這些信息發(fā)送給它的其他鄰站,而鄰站將這些信息在自治系統(tǒng)中傳播出去淫奔。每個(gè)路由器接受這些鏈路狀態(tài)信息山涡,并建立起完整的路由表。
OSPF與RIP(以及其他選路協(xié)議)的不同點(diǎn)在于唆迁,OSPF直接使用IP鸭丛。也就是說(shuō),它并不使用UDP或TCP唐责。
另外鳞溉,作為一種鏈路狀態(tài)協(xié)議而不是距離向量協(xié)議,OSPF還有著一些優(yōu)于RIP的特點(diǎn)鼠哥。
1.OSPF可以對(duì)每個(gè)IP服務(wù)類(lèi)型計(jì)算各自的路由集熟菲。這意味著對(duì)于任何目的看政,可以有多個(gè)路由表表項(xiàng),每個(gè)表項(xiàng)對(duì)應(yīng)著一個(gè)IP服務(wù)類(lèi)型抄罕。
2.給每個(gè)接口指派一個(gè)無(wú)維數(shù)的費(fèi)用允蚣。可以通過(guò)吞吐率呆贿、往返時(shí)間嚷兔、可靠性或其他性能來(lái)進(jìn)行指派∽鋈耄可以給每個(gè)IP服務(wù)類(lèi)型指派一個(gè)單獨(dú)的費(fèi)用冒晰。
3.當(dāng)對(duì)同一個(gè)目的地址存在著多個(gè)相同費(fèi)用的路由時(shí),OSPF在這些路由上平均分配流量竟块,我們稱(chēng)之為流量平衡壶运。
4.OSPF支持子網(wǎng):子網(wǎng)掩碼與每個(gè)通告路由相連。這樣就允許將一個(gè)任何類(lèi)型的IP地址分割成多個(gè)不同大小的子網(wǎng)彩郊。到一個(gè)主機(jī)的路由是通過(guò)全1子網(wǎng)掩碼進(jìn)行通告的前弯。默認(rèn)路由是以IP地址為0.0.0.0、網(wǎng)絡(luò)掩碼為全0進(jìn)行通告的秫逝。
5.路由器之間的點(diǎn)對(duì)點(diǎn)鏈路不需要每端都有一個(gè)IP地址恕出,我們稱(chēng)之為無(wú)編號(hào)網(wǎng)絡(luò)。這樣可以節(jié)省IP地址违帆。
6.采用了一種簡(jiǎn)單鑒別機(jī)制浙巫。可以采用類(lèi)似于 RIP-2機(jī)制(10.5節(jié))的方法指定一個(gè)明文口令刷后。
7.OSPF采用多播的畴,而不是廣播,以減少不參與OSPF系統(tǒng)負(fù)載尝胆。
BGP:邊界網(wǎng)關(guān)協(xié)議
BGP是一種不同系統(tǒng)的路由器之間進(jìn)行通信的外部網(wǎng)關(guān)協(xié)議丧裁。BGP是APPANET所使用的老EGP的取代品。
BGP系統(tǒng)與其他BGP系統(tǒng)之間交換網(wǎng)絡(luò)可到達(dá)信息含衔。這些信息包括數(shù)據(jù)到達(dá)這些網(wǎng)絡(luò)所必須經(jīng)過(guò)的自制系統(tǒng)AS中的所有路徑煎娇。這些信息足以構(gòu)造一副自治系統(tǒng)連接圖。然后贪染,可以根據(jù)連接圖刪除選路環(huán)缓呛,指定選路策略。
首先杭隙,我們將一個(gè)自治系統(tǒng)中的IP數(shù)據(jù)報(bào)分成本地流量和通過(guò)流量哟绊。在自治系統(tǒng)中,本地流量是起始或終止于該自治系統(tǒng)的流量痰憎。也就是說(shuō)票髓,其信源IP地址或信宿IP地址所指定的主機(jī)位于該自治系統(tǒng)中攀涵。其他的流量稱(chēng)為通過(guò)流量。在Internet中使用BGP的一個(gè)目的就是減少通過(guò)流量炬称。
可以將自治系統(tǒng)分為以下幾種類(lèi)型:
1)殘樁自治系統(tǒng)汁果,它與其他自治系統(tǒng)只有單個(gè)連接涡拘。該系統(tǒng)只有本地流量玲躯。
2)多接口自治系統(tǒng),它與其他自治系統(tǒng)有多個(gè)連接鳄乏,但拒絕傳送通過(guò)流量跷车。
3)轉(zhuǎn)送自治系統(tǒng),它與其他自治系統(tǒng)有多個(gè)連接橱野,在一些策略準(zhǔn)則之下朽缴,它可以傳送本地流量和通過(guò)流量。
這樣水援,可以將Internet的總拓?fù)浣Y(jié)構(gòu)看成是由一些殘樁自治系統(tǒng)密强、多接口自治系統(tǒng)以及轉(zhuǎn)送自治系統(tǒng)的任意互連。殘樁自治系統(tǒng)和多接口自治系統(tǒng)不需要使用BGP——它們通過(guò)運(yùn)行EGP在自治系統(tǒng)之間交換可到達(dá)信息蜗元。
BGP允許使用基于策略的選路或渤。由分治系統(tǒng)管理員指定策略,并通過(guò)配置文件將策略指定給BGP奕扣。指定策略并不是協(xié)議的一部分薪鹦,但指定策略允許BGP實(shí)現(xiàn)在存在多個(gè)可選路徑時(shí)選擇路徑,并控制信息的重發(fā)送惯豆。選路策略與政治池磁、安全或經(jīng)濟(jì)因素有關(guān)。
BGP與RIP和OSPF的不同之處在于BGP使用TCP作為其傳輸層協(xié)議楷兽。兩個(gè)運(yùn)行BGP的系統(tǒng)之間建立一條TCP連接地熄,然后交換整個(gè)BGP路由表。從這個(gè)時(shí)候開(kāi)始芯杀,在路由表發(fā)生變化時(shí)端考,再發(fā)送更新信號(hào)。
BGP是一個(gè)距離向量協(xié)議瘪匿,但是和RIP不同的是跛梗,BGP列舉了到每個(gè)目的地址的路由。
BGP通過(guò)定期發(fā)送keepalive報(bào)文給其鄰站來(lái)檢測(cè)TCP連接對(duì)端的鏈路或主機(jī)失敗棋弥。兩個(gè)報(bào)文之間的時(shí)間間隔建議值為30秒核偿。應(yīng)用層keepalive報(bào)文和TCP的keepalive選項(xiàng)是獨(dú)立的。
CIDR:無(wú)類(lèi)型域間選路
CIDP的基本觀(guān)點(diǎn)是采用一種分配多個(gè)IP地址的方式顽染,使其能夠?qū)⒙酚杀碇械脑S多表項(xiàng)總和成更少的數(shù)目漾岳。例如:如果單個(gè)站點(diǎn)分配16個(gè)C類(lèi)地址轰绵,以一種可以用總和的方式來(lái)分配這16個(gè)地址,這樣尼荆,所有者16個(gè)地址可以參照Internet上的單個(gè)路由表表項(xiàng)左腔。同時(shí),如果有8個(gè)不同站點(diǎn)是通過(guò)一個(gè)Internet服務(wù)提供商的同一個(gè)連接點(diǎn)接入Internet的捅儒,
且這8個(gè)站點(diǎn)分配的8個(gè)不同IP地址可以進(jìn)行總和液样,那么,對(duì)于這8個(gè)站點(diǎn)巧还,在Internet上鞭莽,只需要單個(gè)路由表表項(xiàng)。
要使用這種總和麸祷,必須滿(mǎn)足一下三種特性:
1.為進(jìn)行選路要對(duì)多個(gè)IP進(jìn)行總和時(shí)澎怒,這些IP地址必須具有相同的高位地址比特。
2.路由表和選路算法必須擴(kuò)展成根據(jù)32bitIP地址和32bit掩碼做出選路決策阶牍。
3.必須擴(kuò)展選路協(xié)議使其32bit地址外喷面,還要有32bit掩碼。
CIDR同時(shí)還使用一種技術(shù)走孽,使最佳匹配總是最長(zhǎng)的匹配:即在32bit掩碼中惧辈,它具有最大值。
“無(wú)類(lèi)型”的意思是現(xiàn)在的選路決策是基于整個(gè)32bitIP地址的掩碼操作融求,而不管其IP地址是A類(lèi)咬像、B類(lèi)或是C類(lèi),都沒(méi)有什么區(qū)別生宛。
小結(jié)
有兩種基本的選路協(xié)議县昂,即用于同一自治系統(tǒng)各路由器之間的內(nèi)部網(wǎng)關(guān)協(xié)議(IGP)和用于不同自治系統(tǒng)內(nèi)路由器通信的外部網(wǎng)關(guān)協(xié)議(EGP)。
最常用的IGP是路由信息協(xié)議(RIP),而OSPF是一個(gè)正在得到廣泛使用的新IGP陷舅。一種新近流行的EGP是邊界網(wǎng)關(guān)協(xié)議(BGP)倒彰。
第2版RIP是其最近的一個(gè)改進(jìn)版,它支持子網(wǎng)莱睁,還有一些其他改進(jìn)技術(shù)待讳。同時(shí)也對(duì)OSPF、BGP和無(wú)類(lèi)型域間選路(CIDR)進(jìn)行了描述仰剿。CIDR是一種新技術(shù)创淡,可以減小Internet路由表的大小。