经常在论坛上看到路由选择问题,为什么路由选择这样的路径?有人说是ad(administrative distance ),有人说是度量值(metric),有人说最长掩码匹配,这些说法说的既对也不对(或者说不完全对),路由器为什么选择这样的路径发送packet呢?其实是从2个方面来说的
路由选择分为2个层面:
1、Control 层面
2、data 层面
所谓的control层面就是路由器手工配置的路由表项与路由器经过路由学习获得的(就是配置static,或者经过ospf,eigrp,is-is,bgp,rip学习而来的),主要是比较1、ad,2、metric
这里借用xx的红头发老师的举的例子,
1、ad
你从成都到北京
有飞机(static),火车(ospf),汽车(eigrp),轮船(is-is)等等,哪个到北京(destination)的代价最小,或者说该路径可信度大小(0-255),谁的ad就越小,比如说做飞机只要2个小时,最快,而且打x折,只要300多,而坐火车需要10个小时,要400多,你肯定选择飞机做为旅行工具(放进topology tabel或者route tabel里面 )
2、metric
同样是从成都要北京,你发现飞机有多条走法:
1、直飞 (最快,2小时)(这里把时间做为metric,实际中是hop,cost,bandwidth,delay等等)
2、从西安转机 (稍快,5小时)
3、从武汉转机 (6小时)
你比较完后,肯定将直飞做为旅行工具(route tabel里面)
好了,control层面比较完了,你会发现你行程已经通过旅行社或者机场等等得到去(dentination)的路了(routing)了,那要你怎么走(去发送packet)呢
1、相与
相与就类似你要想去那里,好比,你知道了一个堆怎么去上海,北京,南京,广州的信息,你自己想去那里,比如你想去北京的中关村,你一比较,到北京可以到达。
你把要去dentinstion的ip address与netmask进行相与操作(这里是host地址啊,你别说你要访问一个网段),举个例子:你要与2.2.2.2/24进行通信:
路由表为
D: 2.2.2.0/24 S0
O:2.2.2.2/32 S1
D:192.168.1.0/24 S0
IS-IS:172.16.1.0/24 Fa0/0
.....
你是怎么知道走哪条路,先相与2.2.2.2与/24相与,得到2.2.2.0,在路由表一查:
D: 2.2.2.0/24 S0
O:2.2.2.2/32 S1
有2条,你为难了,我信谁了,要是一条,我就发送packet了
2、最长掩码匹配
最长匹配就类似,上个例子,你去中关村,有几条路,有到北京,有到北京朝阳区,当然到朝阳区的离中关村更精确了。
当然信任最长掩码的了
/24与/32谁长些,当然是/32了,我从s1口发送。(有人疑惑,不是说ad么,ospf110比eigrp90大啊,eigrp更可信啊,嘿嘿,这里是data层面了,不比较ad和metric了,只是选择从路由表找best的路径,如果有多条,就是负载均衡了)
本来是用gns3实验的拓扑,可惜4台路由器配置完2台,cpu就100%,然后挂了,所以用pt来完成吧,什么时候gns3能向pt学学少占点mem与cpu。(负载太高了)
R1与R2是12.1.1.0/24网段
R2与R3是23.1.1.0/24网段
R1与R3是13.1.1.0/24网段
R3与R4是34.1.1.0/24网段
R4上面起一个loopback 0口,ip地址为4.4.4.4,R1与R2,R4起eigrp,宣告12.1.1.0/24、23.1.1.0/24、4.4.4.4/24(我这里都是精确匹配)
R1与R2,R4起ospf,宣告13.1.1.0/24 、34.1.1.0/24 、4.4.4.4/32(注意ospf中loop口都是/32位的)
在去R1上面看看路由表:
- do 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
- 4.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
- D 4.4.4.0/24 [90/2809856] via 12.1.1.2, 00:07:00, Serial0/0
- O 4.4.4.4/32 [110/129] via 13.1.1.3, 00:01:05, Serial0/1
- 12.0.0.0/24 is subnetted, 1 subnets
- C 12.1.1.0 is directly connected, Serial0/0
- 13.0.0.0/24 is subnetted, 1 subnets
- C 13.1.1.0 is directly connected, Serial0/1
- 24.0.0.0/24 is subnetted, 1 subnets
- D 24.1.1.0 [90/2681856] via 12.1.1.2, 00:07:20, Serial0/0
- 34.0.0.0/24 is subnetted, 1 subnets
- O 34.1.1.0 [110/128] via 13.1.1.3, 00:01:15, Serial0/1
看有2条到4.4.4.0的路由啊,
D 4.4.4.0/24 [90/2809856] via 12.1.1.2, 00:07:00, Serial0/0
O 4.4.4.4/32 [110/129] via 13.1.1.3, 00:01:05, Serial0/1
注意这2个不是一个网段啊
看看R1的数据库:(1类lsa(RLSA))
- do show ip ospf database
- OSPF Router with ID (1.1.1.1) (Process ID 110)
- Router Link States (Area 0)
- Link ID ADV Router Age Seq# Checksum Link count
- 1.1.1.1 1.1.1.1 1156 0x80000002 0x00365c 2
- 3.3.3.3 3.3.3.3 999 0x80000004 0x000c80 4
- 4.4.4.4 4.4.4.4 999 0x80000003 0x00b971 3
让我们看看,我去ping4.4.4.4,他是怎么走
没有抓包软件,只能看看pt自己的
看好了,packet是从R1发送到R3,而不是R2.source地址是13.1.1.1,destination地址是4.4.4.4.
这就是最长掩码匹配。
完毕
转载于:https://blog.51cto.com/fengyun/387035