0×1.路由表結(jié)構(gòu)
首先如下圖所示配置R1和R2见芹;R1上面有4個(gè)回環(huán)接口蕉鸳,其中Lo3的子網(wǎng)掩碼長(zhǎng)度是26隐孽,在R1上有一條默認(rèn)路由指向R2的s0/1接口IP癌淮,R2上面有一條靜態(tài)路由指向R1的s0/0接口IP:

R1配置:
01
R1(config)#
int
s 0/0
02
R1(config-if)#
ip
add
12.1.1.1 255.255.255.0
03
R1(config-if)#
no
shut
04
R1(config-if)#
int
lo
0
05
R1(config-if)#
ip
add
172.16.1.1 255.255.255.0
06
R1(config-if)#
no
shut
07
R1(config-if)#
int
lo
1
08
R1(config-if)#
ip
add
172.16.2.1 255.255.255.0
09
R1(config-if)#
no
shut
10
R1(config-if)#
int
lo
2
11
R1(config-if)#
ip
add
172.17.1.1 255.255.255.0
12
R1(config-if)#
no
shut
13
R1(config-if)#
int
lo
3
14
R1(config-if)#
ip
add
172.17.2.1 255.255.255.192
15
R1(config-if)#
no
shut
16
R1(config-if)#
exit
17
R1(config)#
ip
route
0.0.0.0 0.0.0.0 12.1.1.2
18
R1(config)#
end
R2配置:
1
R2(config)#
int
s 0/1
2
R2(config-if)#
ip
add
12.1.1.2 255.255.255.0
3
R2(config-if)#
no
shut
4
R2(config-if)#
int
lo
0
5
R2(config-if)#
ip
add
192.168.2.1 255.255.255.0
6
R2(config-if)#
no
shut
7
R2(config-if)#
exit
8
R2(config)#
ip
route
172.16.0.0 255.254.0.0 12.1.1.1
9
R2(config)#
end
配置完成后查看R1和R2的路由表:
01
/查看R1路由表/
02
R1#
show
ip
route
03
04
172.17.0.0/16 is variably subnetted, 2 subnets, 2 masks
05
C 172.17.1.0/24 is directly connected, Loopback2
06
C 172.17.2.0/26 is directly connected, Loopback3
07
172.16.0.0/24 is subnetted, 2 subnets
08
C 172.16.1.0 is directly connected, Loopback0
09
C 172.16.2.0 is directly connected, Loopback1
10
12.0.0.0/24 is subnetted, 1 subnets
11
C 12.1.1.0 is directly connected, Serial0/0
12
S* 0.0.0.0/0 [1/0] via 12.1.1.2
13
14
/查看R2路由表/
15
R2#
show
ip
route
16
17
12.0.0.0/24 is subnetted, 1 subnets
18
C 12.1.1.0 is directly connected, Serial0/1
19
C 192.168.2.0/24 is directly connected, Loopback0
20
S 172.16.0.0/15 [1/0] via 12.1.1.1
對(duì)于這個(gè)路由表的結(jié)構(gòu)可能大家會(huì)有疑問(wèn),為什么R2中像"172.16.0.0/15 [1/0] via 12.1.1.1"和"192.168.2.0/24 is directly connected, Loopback0"這樣的路由只顯示成一行属桦,而"12.0.0.0/24 is subnetted, 1 subnets"卻顯示了兩行?上面這種輸出格式他爸,是路由級(jí)別決定的聂宾,那什么是路由級(jí)別呢?請(qǐng)看下面的詳細(xì)說(shuō)明诊笤。
a.級(jí)別1路由(Level 1 Route)
級(jí)別1路由是指一條路由使用的子網(wǎng)掩碼小于或等于有類網(wǎng)絡(luò)的默認(rèn)子網(wǎng)掩碼(什么是"有類網(wǎng)絡(luò)的默認(rèn)子網(wǎng)掩碼"系谐?例如在IPv4中,192.168.1.0/24就是一個(gè)C類網(wǎng)絡(luò)讨跟,C類網(wǎng)絡(luò)的默認(rèn)子網(wǎng)掩碼長(zhǎng)度就是24)纪他。
級(jí)別1路由包括:
網(wǎng)絡(luò)路由:一條路由使用的子網(wǎng)掩碼等于有類網(wǎng)絡(luò)默認(rèn)的子網(wǎng)掩碼,比如R2上的192.168.2.1/24晾匠;超網(wǎng)路由:一條路由使用的子網(wǎng)掩碼小于有類網(wǎng)絡(luò)默認(rèn)的子網(wǎng)掩碼茶袒,比如R2上的172.16.0.0/15;默認(rèn)路由:比如R1上的0.0.0.0/0凉馆;
對(duì)于上面列出的三種路由薪寓,在路由表中只顯示成一行亡资。
b.父路由(Parent Route)
注意上面R2的路由表中"12.0.0.0/24"就是一條父路由,父路由不包括下一跳地址或本地路由的外出接口向叉;父路由實(shí)際上只是一個(gè)頭部锥腻,暗示后面還有級(jí)別2的路由,級(jí)別2的路由也稱為子路由母谎。
無(wú)論什么時(shí)候瘦黑,只要路由表中出現(xiàn)一條子網(wǎng)掩碼長(zhǎng)度大于默認(rèn)有類網(wǎng)絡(luò)子網(wǎng)掩碼的路由,父路由就會(huì)被創(chuàng)建奇唤。
在R2的路由表中"12.0.0.0/24 is subnetted, 1 subnets"表示的是父路由幸斥,子網(wǎng)掩碼的位數(shù)是24,該主類網(wǎng)絡(luò)在路由表中有一個(gè)子網(wǎng)冻记。
R1的路由表中的"172.17.0.0/16 is variably subnetted, 2 subnets, 2 masks"也是一條父路由睡毒,因?yàn)樽勇酚蓳碛胁煌淖泳W(wǎng)掩碼,所以父路由的子網(wǎng)掩碼使用主類網(wǎng)絡(luò)默認(rèn)的子網(wǎng)掩碼16冗栗。"variably subnetted"表示是變長(zhǎng)子網(wǎng)演顾,有兩個(gè)子網(wǎng),有兩種掩碼隅居,不同的子網(wǎng)掩碼在子路由中分別表示钠至。
R1中的"172.16.0.0/24 is subnetted, 2 subnets"也是一條父路由,因?yàn)閮蓚€(gè)子路由的掩碼長(zhǎng)度都相同胎源,所以在父路由中用/24表示出來(lái)棉钧,父路由中已經(jīng)表示了子網(wǎng)掩碼長(zhǎng)度,子路由就不必再表示了涕蚤。
c.子路由(Child Route)
子路由中明確的標(biāo)出了下一跳的IP地址或本路由的外出接口宪卿;如果所有子路由的子網(wǎng)掩碼相同,相同的子網(wǎng)掩碼將在父路由中表示出來(lái)万栅,子路由中就不再顯示子網(wǎng)掩碼長(zhǎng)度了佑钾,比如R1中的"172.16.1.0 is directly connected, Loopback0"和"172.16.2.0 is directly connected, Loopback1";
如果子路由擁有不同的子網(wǎng)掩碼長(zhǎng)度烦粒,子網(wǎng)掩碼將在每個(gè)子路由中單獨(dú)表示出來(lái)休溶,而父路由則使用默認(rèn)主類網(wǎng)絡(luò)掩碼表示,如R1中的"172.17.1.0/24 is directly connected, Loopback2"和"172.17.2.0/26 is directly connected, Loopback3"扰她。
d.最終路由(Ultimate Route)
所謂的最終路由是指路由條目中包含下一跳路由器的IP地址或本路由的外出接口兽掰;除父路由外,所有級(jí)別1的路由和子路由都是最終路由徒役。
0×2.路由查找過(guò)程
當(dāng)一個(gè)路由器收到一個(gè)IP報(bào)文時(shí)孽尽,檢查目的IP地址,按照下面的步驟查找路由表:
1)路由器根據(jù)目的IP查找級(jí)別1路由忧勿,依次查找網(wǎng)絡(luò)路由(包括父路由)泻云、超網(wǎng)路由艇拍、默認(rèn)路由,如果最佳匹配(子網(wǎng)掩碼最長(zhǎng)匹配)是級(jí)別1路由的最終路由(路由條目中包含下一跳IP或本地外出接口)宠纯,那么這條路由用來(lái)轉(zhuǎn)發(fā)數(shù)據(jù)包卸夕;2)如果最佳匹配的是級(jí)別1中的父路由,繼續(xù)下一步查找即查找該父路由的子路由婆瓜,如果找到匹配的子路由快集,則這條子路由用來(lái)轉(zhuǎn)發(fā)數(shù)據(jù)包;3)如果子路由沒有匹配廉白,繼續(xù)下一步查找个初,此時(shí)判斷路由執(zhí)行的是有類查找還是無(wú)類查找(有類或無(wú)類查找是通過(guò)ip classless和no ip classless這兩條命令來(lái)控制的),如果是有類查找則跳到第4步猴蹂,如果是無(wú)類查找則跳到第5步院溺。;4)有類路由行為:終止查找磅轻,丟棄數(shù)據(jù)包珍逸;5)無(wú)類路由行為:繼續(xù)查找級(jí)別1的超網(wǎng)路由和默認(rèn)路由,如果沒有超網(wǎng)路由匹配聋溜,也沒有默認(rèn)路由匹配谆膳,則終止查找,丟棄數(shù)據(jù)包撮躁。如果找到匹配漱病,則使用找到的路由條目進(jìn)行轉(zhuǎn)發(fā);
下面使用本文第一部分中的拓?fù)鋱D來(lái)演示上面介紹的路由查找過(guò)程把曼。
路由查找實(shí)例一:在R2上新增加一個(gè)Loopback1并配置IP(2.2.2.2/24),然后在R1上去ping R2的lo1杨帽;
01
/新增一個(gè)回環(huán)接口lo1/
02
R2(config)#
int
lo
1
03
R2(config-if)#
ip
add
2.2.2.2 255.255.255.0
04
R2(config-if)#
no
shut
05
R2(config-if)#
end
06
07
/在R1上去
ping
R2新增的這個(gè)回環(huán)接口地址/
08
R1#
ping
2.2.2.2
09
!!!!!
10
/可以
ping
通/
通過(guò)R1的路由表分析R1的查找過(guò)程如下:
1)依次查找級(jí)別1路由,此時(shí)R1上只有一條級(jí)別1路由嗤军,即默認(rèn)路由注盈;2)找到默認(rèn)路由"0.0.0.0/0 [1/0] via 12.1.1.2",這是一條最終路由型雳,下一跳是12.1.1.2;3)使用這條路由轉(zhuǎn)發(fā)山害,R1將數(shù)據(jù)發(fā)往R2纠俭;
路由查找實(shí)例二:路由R1上去往12.1.1.2的數(shù)據(jù)包查找過(guò)程;
1)R1查找級(jí)別1路由浪慌;2)找到最佳匹配12.0.0.0/24冤荆,這是一條級(jí)別1的父路由,繼續(xù)下一步查找权纤;3)查找這條父路由的子路由钓简,子路由中的12.1.1.0/24匹配12.1.1.2乌妒,R1根據(jù)這條路由,將數(shù)據(jù)從自己的s0/0發(fā)送出去外邓;
路由查找實(shí)例三:R1去往172.16.3.1的數(shù)據(jù)包查找過(guò)程撤蚊;
注意!無(wú)類查找需要讓R1執(zhí)行進(jìn)程交換而不是快速交換损话,默認(rèn)的快速交換會(huì)影響無(wú)類路由查找過(guò)程侦啸。
在R2上新增一個(gè)回環(huán)接口loopback2給它分配IP地址172.16.3.1/24,然后在R1上使用進(jìn)程交換并且使用有類查找:
01
/在R2上增加新回環(huán)接口/
02
R2(config)#
int
lo2
03
R2(config-if)#
ip
add
172.16.3.1 255.255.255.0
04
R2(config-if)#
no
shut
05
R2(config-if)#
end
06
07
/R1使用進(jìn)程交換和有類查找/
08
R1(config)#
no
ip
cef
/切換到進(jìn)程交換/
09
R1(config)#
no
ip
classless
/切換到有類查找/
10
R1(config)#
end
11
12
/測(cè)試
ping
R2的lo2/
13
R1#
ping
172.16.3.1
14
..... /無(wú)法
ping
通/
導(dǎo)致這一步無(wú)法ping通的原因是因?yàn)镽1開啟了有類查找,下面是R1路由查找過(guò)程:
1)R1根據(jù)自身路由表查找級(jí)別1路由丧枪,找到匹配的父路由172.17.0.0/16光涂;2)繼續(xù)下一步查找該父路由的子路由,結(jié)果無(wú)法找到匹配172.17.3.1的最終路由拧烦;3)路由R1檢查自己是使用有類查找還是無(wú)類查找忘闻,結(jié)果發(fā)現(xiàn)自己是使用有類查找;4)停止繼續(xù)查找恋博,丟棄該數(shù)據(jù)齐佳;
開啟R1的無(wú)類查找,再次ping測(cè)試:
1
/使用無(wú)類查找/
2
R1(config)#
ip
classless
3
4
/再次
ping
R2的lo2/
5
R1#
ping
172.16.3.1
6
!!!!!
7
/*
ping
成功*/
開啟無(wú)類查找后R1的路由查找過(guò)程:
1)R1根據(jù)自身路由表查找級(jí)別1路由交播,找到匹配的父路由172.17.0.0/16重虑;2)繼續(xù)下一步查找該父路由的子路由,結(jié)果無(wú)法找到匹配172.17.3.1的最終路由秦士;3)路由R1檢查自己是使用有類查找還是無(wú)類查找缺厉,發(fā)現(xiàn)自己是使用無(wú)類查找;4)繼續(xù)查找其他的級(jí)別1路由隧土,找到默認(rèn)路由匹配提针,使用這條默認(rèn)路由轉(zhuǎn)發(fā)數(shù)據(jù);