一分鐘教你什么是“路由表”?
本文轉(zhuǎn)載自微信公眾號(hào)「思科CCIE俱樂(lè)部」,作者老楊。轉(zhuǎn)載本文請(qǐng)聯(lián)系思科CCIE俱樂(lè)部公眾號(hào)。
路由表
為了理解路由表中的信息種類,我們需要先考慮數(shù)據(jù)包到達(dá)路由器接口時(shí)會(huì)發(fā)生什么,這是非常有用的。首先,路由器會(huì)檢查數(shù)據(jù)幀目標(biāo)地址字段中的數(shù)據(jù)鏈路標(biāo)識(shí)。如果它包含了路由器接口標(biāo)識(shí)符或廣播標(biāo)識(shí)符,那么路由器將從幀中剝離出數(shù)據(jù)包并傳遞給網(wǎng)絡(luò)層。在網(wǎng)絡(luò)層,路由器將檢查數(shù)據(jù)包的目標(biāo)地址。如果目標(biāo)地址是路由器接口的IP地址或是所有主機(jī)的廣播地址,那么需要進(jìn)一步檢查數(shù)據(jù)包的協(xié)議字段,然后再把被封裝的數(shù)據(jù)發(fā)送給適當(dāng)?shù)膬?nèi)部進(jìn)程。
除此之外,所有其他目標(biāo)地址都需要進(jìn)行路由選擇。這里的目標(biāo)地址可能是另一個(gè)網(wǎng)絡(luò)上的主機(jī)地址,該網(wǎng)絡(luò)或者與路由器相連(包括與那個(gè)網(wǎng)絡(luò)相連接的路由器接口),或者不直接連接到路由器上目標(biāo)地址還可能是一個(gè)定向的廣播地址,這種地址有明確的網(wǎng)絡(luò)地址或子網(wǎng)地址并且主機(jī)位全部為1。這些地址也是可以路由的。
如果數(shù)據(jù)包是可以被路由的,那么路由器將T查找路小麥獲得一個(gè)正確的路徑。在數(shù)據(jù)庫(kù)中的每個(gè)路由表項(xiàng)最少必須包括下面兩個(gè)項(xiàng)目:
- 目標(biāo)地址——這是路由器可以到達(dá)的網(wǎng)絡(luò)地址。正像小編所解釋的,路由器可能會(huì)有多條路徑到達(dá)山同的地址或是相同主網(wǎng)IP地址下的-組等長(zhǎng)或變長(zhǎng)的子網(wǎng)。
- 指向目標(biāo)的指針——指針不是指向路由器的直連目標(biāo)網(wǎng)絡(luò)就是指向直連網(wǎng)絡(luò)內(nèi)的另一臺(tái)路由器地址,或者是到這個(gè)鏈路的本地接口。更接近目標(biāo)網(wǎng)絡(luò)一跳的路由器叫下一跳(next hop)路由器。
路由器將會(huì)盡量地進(jìn)行最精確的匹配。2按精確程度遞減的順序,可選地址排列如下:
- 主機(jī)地址(主機(jī)路徑) ;
- 子網(wǎng):
- 一組子網(wǎng)(一條匯總路由) :
- 主網(wǎng)號(hào):
- 一組主網(wǎng)號(hào)(超網(wǎng)) ;
- 缺省地址。
缺省地址是最不明確的地址,只有當(dāng)所有匹配都失敗時(shí)才被使用。
如果數(shù)據(jù)包的目標(biāo)地址不能匹配到任何一條路由表項(xiàng),那么數(shù)據(jù)包將被丟棄,同時(shí)一個(gè)“目標(biāo)網(wǎng)絡(luò)不可達(dá)"的ICMP消息將會(huì)被發(fā)送給源地址。
如圖3-1所示,這是一個(gè)簡(jiǎn)單的網(wǎng)絡(luò),圖中給出了每臺(tái)路由器需要的路由表項(xiàng)。這里最重要的是這些路由表將如何作為一個(gè)整體運(yùn)行并能準(zhǔn)確高效地傳輸數(shù)據(jù)包。路由表的網(wǎng)絡(luò)欄列出了路由器可達(dá)的網(wǎng)絡(luò)地址。指向目標(biāo)網(wǎng)絡(luò)的指針在下一跳欄中。
在圖3-1中,如果路由器Crroll收到一個(gè)源地址為10.1.1.97、 目標(biāo)地址為10.1.735的數(shù)據(jù)包,路由表查詢的結(jié)果是:目標(biāo)地址的最優(yōu)匹配是子網(wǎng)10.1.7.0,可以從so接口出站經(jīng)下一跳地址 10.1.2.2去往目的地。數(shù)據(jù)包被發(fā)送給路由器Dahl, Dahl 查找自己的路由表后發(fā)現(xiàn)數(shù)據(jù)包應(yīng)該從SI接口出站經(jīng)下一跳10.1.4.2去往目標(biāo)網(wǎng)絡(luò)10.1.7.0.此過(guò)程將一直持續(xù)到數(shù)據(jù)包到達(dá)路由器Baum.當(dāng)Baum在接口so接收到數(shù)據(jù)包時(shí),Baum 通過(guò)查找路由器,發(fā)現(xiàn)目的地是連接在端口EO的一個(gè)直連網(wǎng)絡(luò)。最終結(jié)束路由選擇過(guò)程,數(shù)據(jù)包被傳遞給以太網(wǎng)鏈路上的主機(jī)10.1.735.
上面說(shuō)明的路由選擇過(guò)程是假設(shè)路由器可以將下一跳地址同它的接口進(jìn)行匹配。例如,路由器Dahl必須知道通過(guò)接口S1可以到達(dá)Lewis的地址10.1.4.2.首先Dahl從分配給接口SI的IP地址和子網(wǎng)掩碼可以知道子網(wǎng)10.1.4.0直接連接在接口S1上; 那么Dahl就可以知道10.1.4.2是子網(wǎng)10.1.4.0的成員,而且- -定被連接到該子網(wǎng)上。
還有一種特殊情況,那就是組播地址,它表示-組設(shè)備而不是所有設(shè)備。D類地址24.00.0就是一個(gè)組播地址。這個(gè)地址為所有OSPF路由器保留。尋找最優(yōu)匹配有兩個(gè)基本過(guò)程,它們依賴于路由器是否表現(xiàn)為有類別或無(wú)類別。
注意,為了正確地進(jìn)行數(shù)據(jù)包交換,每臺(tái)路由器都必須保持信息的一致性和準(zhǔn)確性。例如,在圖3-1中,路由器Dahl的路由表中丟失了關(guān)于網(wǎng)絡(luò)10.1.1.0 的表項(xiàng)。從10.1.1.97 到10.1.7.35的數(shù)據(jù)包將被傳送,但是當(dāng)10.1.7.35 向10.1.1.97回復(fù)數(shù)據(jù)包時(shí),數(shù)據(jù)包從Baum到
Lewis再到Dahl傳遞。Dahl 查找路由表后發(fā)現(xiàn)沒(méi)有關(guān)于子網(wǎng)10.1.1.0 的路由表項(xiàng),因此丟棄此數(shù)據(jù)包,同時(shí)Dahl向主機(jī)10.1.7.35發(fā)送目標(biāo)網(wǎng)絡(luò)不可達(dá)的ICMP信息。
示例3-1給出了圖3-1中路由器Lewis的路由表。在Cisco路由器中查看路由表的I0S命令是show ip route.檢查數(shù)據(jù)庫(kù)的內(nèi)容并把它與圖3-1中路由器Lewis 的一般路由表相比較??梢钥吹剑碜钌戏降年P(guān)鍵字是對(duì)路由表左側(cè)的- -列字 母的解釋。這些字母指明了每個(gè)路由表項(xiàng)是如何學(xué)習(xí)到的。在示例3-1中,標(biāo)記為C的路由表示直連網(wǎng)絡(luò),標(biāo)記為S的路由表示靜態(tài)路由。聲明“gateway of last resort is not set"指的是缺省路由。
表頭有一句聲明主網(wǎng)絡(luò)地址10.0.0.0有7個(gè)已知子網(wǎng),掩碼為24位。在7個(gè)路由表項(xiàng)中,每一個(gè)都給出了目標(biāo)子網(wǎng)。對(duì)于不是直連網(wǎng)絡(luò)的表項(xiàng)一數(shù)據(jù)包必須轉(zhuǎn)發(fā)到下一跳路由器一置于括號(hào)內(nèi)的元組指明了路由的[管理距離/度量]。
度量是通過(guò)優(yōu)先權(quán)評(píng)價(jià)路由的一種手段,度量越低,路徑越短,也就是該路徑更理想。
注意,在示例3-1中靜態(tài)路由的度量為0。最后,路由表還給出了下一跳路由器的接口地址或連接直連目標(biāo)網(wǎng)絡(luò)的接口。