第06章 动态路由和静态路由
6.1路由-网络层实现的功能
网络层功能就是给传输层协议提供简单灵活的、无连接的、尽最大努力交付的数据包服务。
通俗一点来讲,网络中的路由器为每一个数据包单独的选择转发路径,网络层不提供服务质量的承诺。
也就说路由器直接丢弃传输过程中出错的数据包,如果网络中待发的数据包太多,路由器处理不了就直接丢弃,路由器也不判断数据包是否重复,也不确保数据包按发送顺序到达终点。
6.1.1 网络畅通的条件
计算机网络畅通的条件就是数据包能去能回,道理很简单、也很好理解,却是我们排除网络故障的理论依据。
以下情况网络不通
目标主机不可到达
请求超时
网络排错
明白了网络畅通的条件,网络排错就变得简单了。
先检查数据包是否能够到达目标网络
再检查数据包是否能够返回来。
如果网络不通,您就要检查计算机是否配置了正确的IP地址子网掩码以及网关,再逐一检查沿途路由器上的路由表,查看是否有到达目标网络的路由;然后逐一检查沿途路由器上的路由表,检查是否有数据包返回所需的路由。
6.1.2静态路由
要想实现全网通信,也就是网络中的任意两个节点都能通信,这就要求每个路由器的路由表中必须有到所有网段的路由。
对于路由器来说,它只知道自己直连的网段,直连的网段不用添加静态路由,对于没有直连的网段,需要管理员人工添加到这些网段的路由。
管理员人工添加到某个网段如何转发,就是静态路由。
后面还会讲到配置网络中的路由器使用动态路由协议(RIP、OSPF)自动构建路由表,就是动态路由。
思科路由器添加静态路由的命令
R1路由器直连A、B两个网段,C、D网段没有直连,你需要添加到C、D网段的路由。
R2路由器直连B、C两个网段,A、D网段没有直连,你需要添加到A、D网段的路由。
R3路由器直连C、D两个网段,A、B网段没有直连,你需要添加到A、B网段的路由。
主机部分必须为0,因为表示网段,接着写下一跳的网关或者写出口(点到点设备)
如果想配置某个地址,子网掩码要写成255.255.255.255
点到点链路静态路由下一跳
点到点链路下一跳可以是数据包的转发出口
在R1上添加到192.168.1.0/24网段的路由可以使用以下命令R1(config)#iproute 192.168.1.0 255.255.255.0 serial 2/0
注意:Serial 2/0是路由器R1接口
路由器只关心到某个网段如何转发
路由器只关心到某个网段如何转发数据包,因此我们在路由器上添加路由,必须是到某个网段(子网)的路由,不能添加到某个特定地址的路由。
以下命令试图添加到一个IP地址的路由,路由器报错。
R1(config)#ip route 192.168.1.3 255.255.255.0 172.16.0.2
%Inconsistent address and mask --错误的地址和子网掩码
如果你就想让路由器转发到一个IP地址的路由,子网掩码要写成四个255,这就意味着IP地址的32位二进制是全部的网络位,该网段中就这一个地址。
R1(config)#ip route 192.168.1.3 255.255.255.255 172.16.0.2
6.2实战:配置静态路由
6.2.1查看路由表
6.2.2添加静态路由
6.2.3测试网络是否畅通
6.2.4删除静态路由
6.3路由汇总
Internet是全球最大的互联网,如果Internet上的路由器把全球所有的网段都添加到路由表,那将是一个非常庞大的路由表。路由器每转发一个数据包,都要检查路由表为该数据包选择转发接口,庞大的路由表势必会增加处理时延。
通过合理的地址规划,可以通过路由汇总简化路由表。
将物理位置连续的网络分配地址连续的网段,就可以在边界路由器上将远程的网络合并成一条路由,这就是路由汇总。
6.3.1通过路由汇总简化路由表
不汇总的路由表
汇总后的路由表
将北京的网络汇总成172.0.0.0 255.0.0.0网段。
将北京的网络汇总成172.0.0.0 255.0.0.0网段。
6.3.2路由汇总例外
针对例外的网段需要单独添加路由。
6.3.3 无类域间路由(CIDR)
无类域间路由(CIDR)采用13~27位可变网络ID,而不是A、B、C类网络ID所用的固定的8、16和24位。
这样我们可以将子网掩码向左移动1位,合并两个网段;向左移动2位合并4个网段;向左移动3位合并8个网段;向左移动n位,就可以合并2n个网段。
路由汇总一定要能够想起前面讲的超网合并网段,对于R2路由器来说A区的就相当于一个合并了四个网段的超网。
6.4默认路由
6.4.1全球最大的网段
我们在路由器上添加以下三条路由。
R1(config)#ip route 172.0.0.0 255.0.0.0 10.0.0.2 --第1条路由
R1(config)#ip route 172.16.0.0 255.255.0.0 10.0.1.2 --第2条路由
R1(config)#ip route 172.16.10.0 255.255.255.0 10.0.3.2 --第3条路由
从上面3条路由可以看出,子网掩码越短(子网掩码写成二进制形式1的个数越少),主机位越多,该网段的地址数量就越大。
如果想让一个网段包括全部的IP地址,这就要求子网掩码短到极限,最短就是0,子网掩码变成了0.0.0.0,这就意味着该网段的32位二进制的IP地址都是主机位,任何一个地址都属于该网段。因此0.0.0.0 子网掩码0.0.0.0网段包括了全球所有IPv4地址,也就是全球最大的网段,换一种写法就是0.0.0.0/0。
在路由器上添加添加到0.0.0.0 0.0.0.0网段的路由,就是默认路由。
R1(config)#ip route 0.0.0.0 0.0.0.0 10.0.0.2 --第4条路由
任何一个目标地址都与默认路由匹配,根据前面讲的“最长前缀匹配”算法,默认路由是在路由器没有为数据包找到更为精确匹配的路由,先匹配子网掩码长的,最后匹配的一条路由。
6.4.2使用默认路由作为指向Internet的路由
网络末端路由器B和D只需添加一条默认路由。
RA路由器上的路由表也可以精简
对A路由路由表进行精简,在A路由器上可以把内网看做是10.0.0.0 255.0.0.0这个网段。所以只需添加一条路由。
6.4.3让默认路由代替大多数网段的路由
对于C路由器来说,1和2两种方式都可以,但1这种方式路由条目更少。
6.4.4默认路由和环状网络
当ping不存在的网段,会来回循环
6.4.5默认路由造成的往复转发
当ping不存在的网段,会在RA和RB之间来回
6.4.6使用默认路由和路由汇总简化路由表
6.4.7Windows上的默认路由和网关
计算机也有路由表,我们可以在Windows操作系统上运行route print显示Windows操作系统上的路由表,也可以运行netstat –r显示Windows操作系统上的路由表。
查看Windows上的路由表
在Windows上添加默认路由
在Web服务器上需要添加到内网的路由
添加到某个网段的路由
如果想删除到172.16.0.0 255.255.255.0网段的路由,指向以下命令。
route delete 172.16.0.0 mask 255.255.255.0
6.5网络排错案例
在石家庄
6.5.1网络排错要有全局观
网络出现不通的故障,要确保数据包有去有回,确保沿途的路由知道源和目标网络的路由。
出现网络故障,不要只检查自己所管辖的网络。也要确保远程网络中的路由器的路由表,有返回的路由。
6.5.2计算机网关也很重要
计算机不设置网关,只能和本网段的计算机通信。
6.6动态路由-RIP协议
6.6.1 介绍RIP协议
路由信息协议RIP(Routing Information Protocol)是一个真正的距离矢量路由选择协议。
它每隔30秒就送出自己完整的路由表到所有激活的接口。
RIP协议选择最佳路径的标准就是跳数,认为到达目标网络经过的路由器最少的路径就是最佳路径。
默认它所允许的最大跳数为15跳,也就是说16跳的距离将被认为是不可达的。
在小型网络中,RIP会运转良好,但是对于使用慢速WAN连接的大型网络或者安装有大量路由器的网络来说,它的效率就很低了。
RIPv1广播255.255.255.255不带子网掩码不支持变成子网支持等长子网
RIPv2多播224.0.0.9带子网掩码支持变长子网
6.6.2 RIP协议工作原理
举例说明192.168.10.0/24网段如何通过RIP协议通告给网络中的其他路由器的。
如果学到到一个网段有两条路径,只保留最佳路径。
6.6.3在路由器上配置RIP协议
搭建实验环境
在R1上的配置
R1#config t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#router rip
R1(config-router)#network 192.168.0.0
R1(config-router)#network 192.168.1.0
R1(config-router)#network 192.168.4.0
R1(config-router)#version 2
network的应该怎么写
就要看接口属于哪个网络,多个接口属于同一个网段(按A、B、C分类),只需写一个。
RA(config-router)#network 172.16.0.0
RA(config-router)#network 192.168.10.0
RA(config-router)#network 172.16.0.0
RA(config-router)#network 172.17. 0.0
6.6.4查看路由表
R3#show ip route
R 192.168.4.0/24 [120/2] via 192.168.6.1, 00:00:08, Serial2/0
[120/2] via 192.168.2.1, 00:00:02, Serial2/1
R 192.168.5.0/24 [120/1] via 192.168.6.1, 00:00:08, Serial2/0
C 192.168.6.0/24 is directly connected, Serial2/0
R 192.168.0.0/24 [120/2] via 192.168.2.1, 00:00:02, Serial2/1
R 192.168.1.0/24 [120/1] via 192.168.2.1, 00:00:02, Serial2/1
C 192.168.2.0/24 is directly connected, Serial2/1
C 192.168.3.0/24 is directly connected, FastEthernet0/0
路由条目的详细说明
管理距离是指一种路由协议的路由可信度。每一种路由协议按可靠性从高到低,依次分配一个信任等级,这个信任等级就叫管理距离(administrative distance,缩写:AD)。
AD值越低,则它的优先级越高。 一个管理距离是一个从0-255的整数值,0是最可信赖的,而255则意味着不会有业务量通过这个路由。
默认情况下的管理距离值:直连接口 0 ,静态路由 1,OSPF 110,RIP 120
6.6.5观察RIP协议路由更新活动
默认情况下RIP协议发送和接收路由更新信息以及构造路由表的细节是不显示的,如果我们想观察RIP协议路由更新的活动,可以输入命令debug ip rip 命令,输入该命令后将显示发送和接收到的RIP路由更新信息,显示路由器使用了RIP的V1版还是V2版本。可以看到发送路由消息使用的多播地址是224.0.0.9, 输入undebug all关闭所有诊断输出。
R3#debug ip rip
RIP protocol debugging is on
*Mar 1 01:22:52.703: RIP: sending v2 update to 224.0.0.9 via FastEthernet0/0 (192.168.3.1
*Mar 1 01:22:52.703: RIP: build update entries --更新路由表
*Mar 1 01:22:52.703: 192.168.0.0/24 via 0.0.0.0, metric 3, tag 0
*Mar 1 01:22:52.703: 192.168.1.0/24 via 0.0.0.0, metric 2, tag 0
*Mar 1 01:22:52.703: 192.168.2.0/24 via 0.0.0.0, metric 1, tag 0
6.6.6测试RIP协议健壮性
动态路由协议会随着网络的变化重新生成到各个网络的路由,当最佳路径没有了,就会从备用路径中重新选择一个最佳路径
6.6.7 RIP协议排错
如果网络中的路由配置了RIP协议,但没有从邻居路由器学习到路由,就要测试网络中的直连的路由之间是否能够通信,确保IP地址子网掩码配置正确,路由器使用串口相连,还要确保在DCE端配置了时钟频率。
再就是检测RIP协议是否配置正确,网络中的路由最好都使用相同版本的RIP协议,Network命令后面的网段是否正确。
查看路由器上的RIP协议配置,输入show ip protocols。
查看运行的IP协议
R1#show ip protocols
Routing Protocol is "rip"
Maximum path: 4
Routing for Networks:
192.168.0.0
192.168.1.0
192.168.4.0
Routing Information Sources:
Gateway Distance Last Update
192.168.1.2 120 00:00:06
192.168.4.2 120 00:00:23
Distance: (default is 120)
6.6.8RIP协议数据包报文格式
6.7动态路由-OSPF协议
6.7.1什么是最短路径优先
最短路径优先示意图
计算最短路径
6.7.2 OSPF术语
- Router-ID
网络中运行OSPF协议的路由器都要有一个唯一的标识,这就是Router-ID,并且Router-ID在网络中绝对不可以有重复。
- COST(开销)
OSPF协议选择最佳路径的标准是带宽,带宽越高计算出来的开销越低。到达目标网络的各个链路累计开销最低的,就是最佳路径。
- 链路(Link)
就是路由器上的接口,在这里,应该指运行在OSPF进程下的接口。
- 链路状态(Link-State)
链路状态(LSA)就是OSPF接口上的描述信息,例如接口上的IP地址,子网掩码,网络类型,Cost值等等,OSPF路由器之间交换的并不是路由表,而是链路状态(LSA)。
- 邻居(Neighbor)
OSPF只有邻接状态才会交换LSA。
6.7.3OSPF协议工作过程
运行OSPF协议的路由器有3张表,邻居表、链路状态表和路由表。下面以这三张表的产生过程为线索,来分析在这个过程中,路由器发生了那些变化,从而说明OSPF协议的工作过程。
OSPF协议工作过程
6.7.4 OSPF的5种报文
类型1,问候(Hello)数据包,发现并建立邻接关系。
类型2,数据库描述(Database Description)数据包,向邻居给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
类型3,链路状态请求(Link State Request,LSR)数据包,向对方请求某些链路状态项目的完整信息。
类型4,链路状态更新(Link State Update,LSU)数据包,用洪泛法对全网更新链路状态。这种数据包是最复杂的,也是OSPF协议最核心的部分。路由器使用这种数据包将其链路状态通知给相邻路由器。在OSPF中,只有LSU需要显示确认。
类型5,链路状态确认(Link State Acknowledgement,LSAck)数据包,对LSU做确认。
6.7.5OSPF支持多区域
划分区域的好处就是把利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。在一个区域内部的路由器只知道本区域的完整网络拓扑,而不需知道其他区域的网络拓扑的情况。
6.8 配置OSPF协议
本节实验环境 配置OSPF协议
6.8.1 在路由器配置OSPF协议
R1#config t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#router ospf ?
<1-65535> Process ID
R1(config)#router ospf 1
R1(config-router)#network 192.168.0.0 0.0.0.255 area 0
R1(config-router)#network 192.168.1.0 0.0.0.255 area 0
R1(config-router)#network 192.168.4.0 0.0.0.255 area 0
R1(config-router)#
6.8.2查看OSPF协议三张表
R1#show ip ospf neighbor --显示邻居表
Neighbor ID Pri State Dead Time Address Interface
192.168.5.1 0 FULL/ - 00:00:37 192.168.4.2 Serial2/1
192.168.2.1 0 FULL/ - 00:00:34 192.168.1.2 Serial2/0
R1#show ip ospf neighbor detail --显示邻居详细信息
R1#show ip ospf database --显示链路状态数据库
R1#show ip ospf database router --显示完整的链路状态数据库
R1#show ip route ospf --只显示OSPF协议学到的路由
6.8.3监控OSPF协议的活动
R1#debug ip ospf hello
R1#undebug all
6.8.4验证OSPF协议健壮性
断开最佳连接,跟踪数据包路径。
恢复最佳连接,跟踪数据包路径。
看看在此期间,网络中断的时间。
6.8.5 OSPF协议配置排错
R1#show ip protocols --显示OSPF协议的配置
Routing Protocol is "ospf 1"
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Router ID 192.168.4.1
Number of areas in this router is 1. 1 normal 0 stub 0 nssa
Maximum path: 4
Routing for Networks:
192.168.0.0 0.0.0.255 area 0
192.168.1.0 0.0.0.255 area 0
192.168.4.0 0.0.0.255 area 0
Reference bandwidth unit is 100 mbps
Routing Information Sources:
Gateway Distance Last Update
192.168.2.1 110 00:13:59
192.168.5.1 110 00:13:59
192.168.6.2 110 00:13:59
192.168.6.1 110 00:13:59
Distance: (default is 110)