1. RIP
1.1. RIPv1 1.1.1. 拓扑
1.1.2. 配置 R0:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 en conf t hostname R0 int g0/0 ip add 192.168 .0 .254 255.255 .255 .0 no shu int g0/1 ip add 10.0 .0 .1 255.0 .0 .0 no shu int s0/0 /0 ip add 30.0 .0 .1 255.0 .0 .0 ip rip triggered no shu router rip ! 可以直接宣告与接口IP地址在"同一主类网络" 的任意IP地址,IOS会自动将该地址转换为所属的主类网络地址 network 192.168 .0 .254 network 10.0 .0 .1 network 30.0 .0 .1 do show ru | be rip! 可以看到运行配置中显示的RIP网络宣告已将最初输入的主机地址自动转换成了其所属的主类网络地址
R1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 en conf t hostname R1 int g0/0 ip add 192.168 .1 .254 255.255 .255 .0 no shu int g0/1 ip add 20.0 .0 .1 255.0 .0 .0 no shu int s0/0 /0 ip add 30.0 .0 .2 255.0 .0 .0 no shu router rip network 192.168 .1 .254 network 20.0 .0 .1 network 30.0 .0 .2
R2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 en conf t hostname R2 int g0/0 ip add 10.0 .0 .2 255.0 .0 .0 no shu int g0/1 ip add 20.0 .0 .2 255.0 .0 .0 no shu router rip network 10.0 .0 .2 network 20.0 .0 .2
1.1.3. 验证
查看各路由器路由表(show ip route rip
)
R0:
R1:
R2:
路由表中类型为R 的路由条目就是路由器通过RIP协议获取到的。
路由条目中的[120/1] 称为度量(Metric),其中120表示RIP协议 (110表示OSPF协议),也叫管理距离 ,可把管理距离看作可信程度或优先级 。例如,如果到达同一目的网络有两条路由条目,一条是RIP得出的,另一条是OSPF得出的,则路由器会选择OSPF得出的那条路由条目,因为它的管理距离更短(即更可信或优先级更高)。[120/1]中的**1是RIP距离(或称度量值和跳数)**,表明从路由器到达目的网络的RIP距离为1。
当同一目标网络出现多个RIP路由时,就表示路由器学习到了到达该网络的多条度量值相同的等价RIP路由 ,路由器通常会利用这些等价路由进行负载均衡 。
验证RIP的等价负载均衡 (R2 Ping R0 的 30.0.0.1) R2到R0的s0/0/0有2条路径:
路径1:R2 → R0 → R0的接口s0/0/0
路径1:R2 → R1 → R0的接口s0/0/0 RIP认为路径1和路径2是两条等价的路由,因为他们的RIP跳数都为1,因此ICMP报文会交替在这两条路径中传送,即使R1到R0的这段链路是带宽为1.544Mb/s的串行链路。
验证RIP认为好的路由是“RIP跳数最短”的路由 (PC0 Ping PC1) 从拓扑图来看,PC0 到 PC1 有2条路径:
PC0 → R0 → R1 → PC1
PC0 → R0 → R2 → R1 → PC1 RIP认为路径1是好的路由,尽管路径1中R0到R1之间的链路带宽比路径2中各链路带宽小很多,但RIP并不关心带宽指标 ,RIP认为好的路由是经过路由器数量最少的路由,也就是“RIP跳数最短”的路由。
观察RIP动态更新路由表(debug ip rip
) 使用RIP的路由器会每隔30s向另据路由器发送RIP广播更新报文,报文中含有路由器的路由表内容。收到RIP更新报文的另据路由器,会根据报文中的路由表内容,基于距离向量算法 来更新自己的路由表内容。
1.2. RIPv2 1.2.1. 拓扑
1.2.2. 配置 R0:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 en conf t int g0/0 ip add 192.168 .16 .126 255.255 .255 .128 no shu int g0/1 ip add 10.0 .0 .1 255.255 .255 .252 no shu int s0/0 /0 ip add 30.0 .0 .1 255.255 .255 .252 no shu router rip ! 思科2911 路由器默认使用RIPv1 version 2 ! 可以直接宣告与接口IP地址在"同一主类网络" 的任意IP地址,IOS会自动将该地址转换为所属的主类网络地址 network 192.168 .16 .126 network 10.0 .0 .1 network 30.0 .0 .1 ! 关闭默认开启的自动路由汇总,防止丢失子网信息,导致路由信息不精确 no auto -summary do show ru | be rip! 可以看到运行配置中显示的RIP网络宣告已将最初输入的主机地址自动转换成了其所属的主类网络地址
R1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 en conf t int g0/0 ip add 192.168 .16 .190 255.255 .255 .192 no shu int g0/1 ip add 20.0 .0 .1 255.255 .255 .252 no shu int s0/0 /0 ip add 30.0 .0 .2 255.255 .255 .252 no shu router rip version 2 network 192.168 .16 .190 network 20.0 .0 .1 network 30.0 .0 .2 no auto -summary
R2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 en conf t int g0/0 ip add 10.0 .0 .2 255.255 .255 .252 no shu int g0/1 ip add 20.0 .0 .2 255.255 .255 .252 no shu router rip version 2 network 10.0 .0 .2 network 20.0 .0 .2 no auto -summary
1.2.3. 验证
查看各路由器路由表(show ip route rip) R0:
R1:
R2:
验证RIPv1是有类路由协议,不支持VLSM (PC0 Ping PC1) 分别在3台路由器的RIP路由配置模式下执行version 1
命令,将RIP版本切换回V1,然后尝试用PC0 Ping PC1,可以看到目标主机不可达: 查看R0的路由表,可以看到R0压根没有去往PC1所在的192.168.16.128/26网段的路由条目,R1同样也没有去往PC0所在的192.168.16.0/25网段的路由条目。这是因为RIPv1是有类路由协议,它在路由更新中不携带子网掩码信息 ,由于RIPv1无法传递子网掩码信息,R0宣告192.168.16.0网络时,R1只能接收到路由汇总后的192.168.16.0/24这个有类网络路由,而不知道更精确的192.168.16.0/25子网信息。同样,R1宣告192.168.16.0网络时,R0也只能接收到路由汇总后的192.168.16.0/24这个有类网络路由,而不知道192.168.16.128/26子网的存在。并且由于R0和R1宣告的网络都相同(网络重叠 ),二者会忽略此网络,也就没有显示在路由表上了。而R2由于会收到R0和R1宣告的主类网络192.168.16.0/24,会形成一条等价路由,但和PC进行通信时,会有一半的流量丢包:
验证RIPv2组播发送RIP更新报文 (debug ip rip
) RIPv2的RIP更新报文被封装在目的IP地址为224.0.0.9的组播IP数据报中发送:
2. OSPF 2.1. OSPF单区域 2.1.1. 拓扑
2.1.2. 配置 R0:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 en conf t hostname R0 int g0/0 ip add 192.168 .16 .126 255.255 .255 .128 no shu int g0/1 ip add 10.0 .0 .1 255.255 .255 .252 ! 在接口开启ospf的md5认证 ip ospf authentication message-digest ! 配置md5认证的key_id和key值(密码) ip ospf message-digest-key 1 md5 mkbk no shu int s0/0 /0 ip add 30.0 .0 .1 255.255 .255 .252 ip ospf authentication message-digest ip ospf message-digest-key 1 md5 mkbk no shu ! 配置进程号为100 的ospf router ospf 1 ! 宣告路由器自己的直连网络(可使用接口IP,IOS会自动根据提供的反掩码转换为网络地址),需使用反掩码(通配符掩码),并指定区域标识符为0 network 192.168 .16 .126 0.0 .0 .127 area 0 network 10.0 .0 .1 0.0 .0 .3 area 0 network 30.0 .0 .1 0.0 .0 .3 area 0 ! 查看ospf配置 do show run | be ospf
R1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 en conf t hostname R1 int g0/0 ipa add 192.168 .16 .190 255.255 .255 .192 no shu int g0/1 ip add 20.0 .0 .1 255.255 .255 .252 ip ospf authentication message-digest ip ospf message-digest-key 1 md5 mkbk no shu int s0/0 /0 ip add 30.0 .0 .2 255.255 .255 .252 ip ospf authentication message-digest ip ospf message-digest-key 1 md5 mkbk no shu router ospf 1 network 192.168 .16 .190 0.0 .0 .63 area 0 network 20.0 .0 .1 0.0 .0 .3 area 0 network 30.0 .0 .1 0.0 .0 .3 area 0 do show run | be ospf
R2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 en conf t hostname R2 int g0/0 ip add 10.0 .0 .2 255.255 .255 .252 ip ospf authentication message-digest ip ospf message-digest-key 1 md5 mkbk no shu int g0/1 ip add 20.0 .0 .2 255.255 .255 .252 ip ospf authentication message-digest ip ospf message-digest-key 1 md5 mkbk no shu router ospf 1 network 10.0 .0 .2 0.0 .0 .3 area 0 network 20.0 .0 .2 0.0 .0 .3 area 0 do show run | be ospf
2.1.3. 验证
查看个路由器路由表(show ip route
) R0:
R1:
R2:
路由表中类型为O 的路由条目就是路由器通过OSPF协议获取到的。
路由条目中的[110/2] 称为度量(Metric),其中110表示OSPF协议 (120表示RIP协议),也叫管理距离 ,可把管理距离看作可信程度或优先级 。例如,如果到达同一目的网络有两条路由条目,一条是RIP得出的,另一条是OSPF得出的,则路由器会选择OSPF得出的那条路由条目,因为它的管理距离更短(即更可信或优先级更高)。[110/2]中的2是OSPF路径代价(Cost),思科路由器的 链路代价计算方法是用100Mb/s除以链路带宽,结果舍去小数,不足1按1算 。
验证OSPF认为好的路由是“路径代价最少”的路由 (PC0 Ping PC1) PC0到PC1有2条路径:
PC0 → R0 → R1 → PC1
PC0 → R0 → R2 → R1 → PC1PC1 OSPF认为路径2是好的路由,因为路径2的代价(3)小于路径1的代价(65),尽管路径2中所经过的路由器的数量比路径1中所经过的路由器数量多一个,但OSPF并不关心跳数指标 ,OSPF认为好的路由是“路径代价最少”的路由。
验证OSPF会每隔10s发送问候(Hello)分组 (debug ip ospf events
) 从图中可以看到R0每隔10s会分别从自己的s0/0/0和g0/1收到来自R1(30.0.0.2)和R2(10.0.0.2)的Hello分组。周期性发送Hello分组的目的是,发现和维护邻居路由器(show ip ospf neighbor
)的可达性:
验证OSPF默认选择活动物理接口中最大的IP地址作为Router-ID 设备在没有手动指定Router-ID以及设置活动loopback接口时,默认会选择物理接口中最大的IP地址作为Router-ID。 例如在R2上查看OSPF邻居列表,可以看到R0和R1的Router-ID都为设备中的最大的C类地址:
2.2. OSPF多区域 2.2.1. 拓扑
2.2.2. 配置 R0:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 en conf t hostname R0 int g0/0 ip add 10.0 .0 .1 255.255 .255 .252 ! 在接口开启ospf的md5认证 ip ospf authentication message-digest ! 配置md5认证的key_id和key值(密码) ip ospf message-digest-key 1 md5 mkbk no shu int g0/1 ip add 172.16 .0 .1 255.255 .255 .252 ip ospf authentication message-digest ip ospf message-digest-key 1 md5 wxdx no shu router ospf 1 ! 宣告直连网络以及指定OSPF区域标识符 network 10.0 .0 .1 0.0 .0 .3 area 0 network 172.16 .0 .1 0.0 .0 .3 area 100 do show ru | be ospfq
R1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 en conf t hostname R1 ! 添加环回口,用作OSPF的Router-ID int loop1ip add 1.0 .0 .0 255.255 .255 .255 int g0/0 ip add 10.0 .0 .2 255.255 .255 .252 ip ospf authentication message-digest ip ospf message-digest-key 1 md5 mkbk no shu int g0/1 ip add 172.19 .0 .1 255.255 .255 .252 ip ospf authentication message-digest ip ospf message-digest-key 1 md5 wxdx no shu router ospf 1 network 10.0 .0 .2 0.0 .0 .3 area 0 network 172.19 .0 .1 0.0 .0 .3 area 200 do show ru | be ospf
R2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 en conf t hostname R2 int g0/0 ip add 172.16 .0 .2 255.255 .255 .252 ip ospf authentication message-digest ip ospf message-digest-key 1 md5 wxdx no shu int g0/1 ip add 192.168 .0 .254 255.255 .255 .0 no shu router ospf 1 ! 手动指定Router-ID,用于标识路由器以及DR选举 router-id 0.0 .0 .2 network 172.16 .0 .2 0.0 .0 .3 area 100 network 192.168 .0 .254 0.0 .0 .255 area 100 do show ru | be ospf
R3:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 en conf t hostname R3 int g0/0 ip add 172.19 .0 .2 255.255 .255 .252 ip ospf authentication message-digest ip ospf message-digest-key 1 md5 wxdx no shu int g0/1 ip add 192.168 .1 .254 255.255 .255 .0 no shu router ospf 1 router-id 0.0 .0 .3 network 172.19 .0 .2 0.0 .0 .3 area 200 network 192.168 .1 .254 0.0 .0 .255 area 200 do show ru | be ospf
2.2.3. 验证
查看各路由器路由表(show ip route
) R0:
R1:
R2:
R3:
以R1为例,R1同时属于area 0(主干区域)和area 200,因此R1是一台ABR(区域边界路由器, Area Border Router),ABR负责将非主干区域的路由信息汇总后通告到主干区域,以及将主干区域的路由信息通告到非主干区域。R1学习到的目的网络172.16.0.0/30和192.168.0.0/24,都属于area 100,对于R1来说,area 100是一个不同的区域,因此这2条路由被标记为 IA(区域间路由, Inter Area) ,并且下一跳指向了 area 0的邻居R0(10.0.0.1)。
观察OSPF事件(debug ip ospf events
) R0每隔10s会收到来自R1(area 0)和R2(area 100)的Hello报文,维护邻居关系。
验证Router-ID的选择符合预期(show ip ospf database
)
R0的Router-ID为物理接口中最大的IP地址(172.16.0.1):
R1的Router-ID为loopback1的IP地址(1.0.0.0):
R2和R3的Router-ID为手动指定的地址:
3. BGP 3.1. 拓扑
R0、R1 和R2分别属于AS100、AS200和AS300,它们互相建立eBGP(External BGP)邻居关系并交换各自AS外部的路由信息,从而实现跨自治系统的网络互联:
3.2. 配置 R0:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 en conf t hostname R0 int g0/0 ip add 10.0 .0 .1 255.255 .255 .0 no shu ! 启动BGP进程并指定自治系统编号ASN为100 router bgp 100 ! 指定bgp邻居路由器以及所属ASN neighbor 10.0 .0 .2 remote-as 200 ! 宣告路由器自己的直连网络给bgp邻居 network 10.0 .0 .1 mask 255.255 .255 .0 do show ru | be bgp
R1:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 en conf t hostname R1 int g0/0 ip add 10.0 .0 .2 255.255 .255 .0 no shu int g0/1 ip add 20.0 .0 .2 255.255 .255 .0 no shu router bgp 200 neighbor 10.0 .0 .1 remote-as 100 neighbor 20.0 .0 .1 remote-as 300 ! R1直连R0和R1,无需宣告自己的直连路由 do show ru | be bgp
R2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 en conf t hostname R2 int g0/0 ip add 20.0 .0 .1 255.255 .255 .0 no shu router bgp 300 neighbor 20.0 .0 .2 remote-as 200 network 20.0 .0 .1 mask 255.255 .255 .0 do show ru | be bgp
3.3. 验证
查看各路由器路由表(show ip route bgp
) R0: R1: R2:
验证bgp使用使用TCP 179端口 :
4. 参考 https://book.douban.com/subject/36553580/