第03章 路由协议Word文档下载推荐.docx
《第03章 路由协议Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第03章 路由协议Word文档下载推荐.docx(99页珍藏版)》请在冰豆网上搜索。
OSPF用于层次结构的网络。
定义层次需要定义出表示OSPF区域和地址分配的边界。
IS-IS(IntermediateSystemtoIntermediateSystem,中间系统到中间系统)是基于SPF算法的链路状态内部网关路由协议(IGP)。
IS-IS协议的基本设计思想与算法和OSPF基本一致。
IS-IS协议是基于链路层的路由协议,与网络层(IPv4,IPv6,OSI)无关,不受网络层所约束,因此有很好的扩展性。
IRMP综合了距离向量协议与链路状态协议的优点。
此外IRMP利用散播更新算法(DiffusingUpdateAlgorithm,DUAL),从而加快了收敛,并且减少了网络中产生路由环的可能。
IRMP比其它路由协议更有优势的一点是:
它不仅有能力支持IP,并且支持NovellNetWareIPX和AppleTalk。
因此,减化了网络设计和故障处理。
3.1静态路由协议
静态路由是由用户定义的路由,它让在源和目的之间传输的包采用管理员指定的路径。
328.1.1基本原理
为了清楚路由表中存在的信息种类,当一个报文帧到达路由器的一个接口时,开始对所发生的变化进行检查是很有用的。
必须检查帧的目的地址域中数据链路标识符,如果该标识符包括路由器接口的标识符或广播标识符,路由器将剥去帧的首部和尾部并将完整的报文传递给网络层。
网络层必须检查报文中的目的地址,如果该目的地址是路由器接口的IP地址或一个全主机广播地址,会检查该报文的协议域并将其完整的数据传送给对应的内部进程。
为寻找路由要用下一跳地址作为目的,并解析其链路层地址。
下一跳地址也许是路由器直连的另一网络中主机的地址(包括路由器的接口连接该网络的情况)或是路由器非直连的另一网络中主机的地址。
该地址也可能是一个直连的广播,在该广播中存在一个独特的网络或子网地址,其主机位全为1。
这些地址是可路由的。
如果要路由报文,路由器会在路由表中查找以获取正确的路由。
简单而言,数据库中的每一个路由项必须包含两个条件:
⏹目的地址。
这是路由器所能到达的网络地址,基于相同的主网地址,路由器会有不止一条到同一地址的路由。
⏹目的指针。
指针会指明目的网络与路由器是直连的或指出直连网络中的下一台路由器的地址,即为下一跳路由器。
路由器会匹配尽可能最特殊的地址,在下面的特殊顺序中,地址可能会是以下的一个:
⏹主机地址(主机路由)
⏹子网
⏹一组子网(汇总路由)
⏹主网络号
⏹一组主网络号(超网)
⏹默认地址
如果报文的目的地址不和路由表中的任何一项匹配,则会丢弃该报文并发送一个目的地不可达的ICMP信息给源地址。
328.1.2举例说明
下例是一个简单的具体环境,下面就任意一台路由器进行分析,来看其静态路由的调试信息。
环境说明
三台迈普路由器,mp-fix与mp-88、mp-88与mp-50分别背靠背相连,其中全部走静态路由,mp-fix与mp-88之间走PPP协议,mp-88与mp-50之间走HDLC协议。
调试信息
打开命令debugiprouting
该命令是用来看路由的添加情况。
mp-50#debugiprouting
mp-50#cleariprouteall
01:
07:
50:
RT:
add"
C29.1.2.0255.255.255.0(global,0)-->
29.1.2.2(global,0),serial2/0,tos=0,distance=0,cost=0,flags=0x0,0x0,mplskey=0"
tortableglobal(0)success
C29.1.2.1255.255.255.255(global,0)-->
29.1.2.2(global,0),serial2/0,tos=0,distance=0,cost=0,flags=0x0,0x0,mplskey=0"
:
S8.8.8.8255.255.255.255(global,0)-->
29.1.2.1(global,0),serial2/0,tos=0,distance=1,cost=0,flags=0x0,0x0,mplskey=0"
S29.1.1.0255.255.255.0(global,0)-->
S129.255.0.0255.255.0.0(global,0)-->
调试信息显示所有路由添加成功。
mp-50(config)#iproute129.255.0.0255.255.0.0serial2/0
59:
29.1.2.2(global,0),serial2/0,tos=0,distance=1,cost=0,flags=0x0,0x0,mplskey=0"
当尝试向路由表中添加一条静态路由时,若到达此目的地路由已经存在(可能表现为其它形式,例如本例中路由表中存在一条到达129.255.0.0255.255.0.0网段的静态路由),那么,此动作将失败(failed)。
328.2RIP协议
本章主要讲述RIP的协议原理及实现,以及RIP常用的调试命令和显示的调试信息。
本章主要内容:
⏹RIP协议相关术语解析
⏹RIP协议介绍
⏹调试命令及调试信息
328.2.1RIP协议相关术语解析
UDP――用户数据报协议(UserDatagramProtocol)。
一种简单的面向数据报的不可靠传输的IP网络传输层协议。
D-V算法――距离矢量(Distance-Vector)算法。
一种计算机网络的路由计算方法。
又称为Bellman-Ford算法。
IGP――内部网关协议(InteriorGatewayProtocol)。
Request报文――请求报文,用于请求其它路由器的RIP的路由信息。
Response报文――响应报文,用于向其它相邻路由器的RIP通告自己的路由信息。
Splithorizon――水平分割。
RIP协议为防止产生路由环回而采取的一种措施。
Poisonedreverse――毒性逆转。
RIP协议为防止产生路由环回采取的一种措施,比水平分割(Splithorizon)更主动。
Triggeredupdates――触发更新。
RIP协议加速收敛的一种措施。
当路由发生变化时,会产生触发更新,将变化了的路由通告出去。
与之相对的是常规更新(Regularupdates),指RIP协议每隔30秒(默认)都会发出所有路由信息的更新。
328.2.2RIP协议介绍
RIP协议目前已成为路由器、主机之间路由信息传递的标准之一。
RIP协议有RIPv1和RIPv2两个版本,两个版本的主要区别是RIPv1不支持无类别路由,而RIPv2支持无类别路由。
一般情况下使用RIPv2版本。
RIP协议有协议简单、配置简单等优点。
但RIP协议需要通告的路由信息和路由表的路由数量成正比。
当路由比较多的时候,比较消耗网络资源。
由RIP协议规定了路由的路径经过的路由器的跳数最大是15。
因此,RIP协议只使用于比较简单的中小型网络。
RIP协议可用于大多数校园网及结构较简单的连续性强的地区性网络。
对于更复杂的环境,一般不使用RIP协议。
328.2.2.1RIP协议在TCP/IP协议栈中的位置
图3-1
如图3-1所示,RIP协议是基于UDP协议的一个路由协议,RIP协议所发送的协议报文都封装在UDP报文中。
RIP协议在520端口号上接收来自远程路由器的协议报文,根据接收的协议报文中的路由信息对本地的路由表做相应的更新,同时将度量加1后通知其它相邻路由器。
通过这种方式,使得路由域内所有的路由器都学到所有的路由。
RIP协议发送协议报文有三种方式:
广播方式、组播方式和单播方式。
各种方式的使用方法如下表3-1所示。
表3-1RIP协议发送报文的方式
方式
地址
版本
端口
用途
广播
255.255.255.255
RIPv1
520
RIPv1向一个接口上所有相邻路由器发送协议报文
组播
224.0.0.9
RIPv2
RIPv2向一个接口上所有相邻路由器发送协议报文
单播
单播IP地址
RIPv1/2
回应请求(Request)报文的响应(Response)报文
发送给配置的邻居(Neighbor)的协议报文
328.2.2.2RIP协议报文类型和组织结构
A)RIP协议报文类型
RIP协议有两种协议报文:
请求(Request)报文和响应(Response)报文。
RIP协议报文类型和功能如表3-2所示。
表3-2RIP协议报文类型
报文类型
功能描述
发送情况
请求(Request)报文
向相邻路由器的RIP请求路由信息。
可以要请求指定的路由信息,也可请求所有的路由信息(只有一条地址族标识为0,度量为16的路由条目)。
接口上刚开始运行RIP的时候,向相邻路由器的RIP请求所有路由信息。
响应(Response)报文
向相邻路由器的RIP通告路由信息。
A)回应请求(Request)报文;
B)当路由改变的时候,触发更新(Triggeredupdates)路由信息;
C)定期向相邻路由器的RIP通告所有路由信息(Regularupdates)。
B)RIP协议报文组织结构
图3-2RIP协议报文的基本组织结构
如图3-2所示,RIP协议的报文封装在UDP报文里面。
在RIP协议报文的IP头部中,TTL(TimeToLive)字段设置为1,防止RIP协议报文被其他路由器转发。
RIP头部有两个字段:
Command字段标识该报文是请求报文
(1)还是响应报文
(2);
Version字段标识该报文是RIPv1报文
(1)还是RIPv2报文
(2)。
RIPEntry可以有三种类型:
RIPv1路由条目、RIPv2路由条目、认证信息条目。
RIPEntry的类型和描述如表3-3所示。
表3-3RIP协议RIPEntry类型和描述
RIP信息条目
格式
描述
RIPv1路由条目
如图3-3
在RIPv1协议中向相邻路由器的RIP通告路由信息。
RIPv2路由条目
在RIPv2协议中向相邻路由器的RIP通告路由信息。
认证信息条目
明文
如图3-4
在RIPv2协议中添加报文的明文认证信息。
该信息只能紧跟着出现在RIP报文头部后面。
MD5
如图3-2-4
在RIPv2协议中添加报文的MD5认证信息。
在报文尾部,还需要有相应的认证内容。
图3-3RIP协议路由信息条目格式
图3-4RIPv2协议带认证信息的报文格式
328.2.2.3RIP协议基本工作原理
图3-5RIP协议基本工作流程
RIP协议基本工作流程如图3-5所示,分为两部分:
一是RIP协议启动流程;
二是RIP协议接收报文处理流程。
A)启动过程
当一个接口上开始运行RIP协议的时候,会用广播(RIPv1)或者组播(RIPv2)方式向该接口上发送请求(Request)报文,向该接口上所有相邻路由器的RIP请求其所有路由信息,以便能够达到快速收敛的目的。
当接收到应答请求(Request)报文的响应(Response)报文后,根据报文里面的路由信息更新路由数据库里面的路由,然后将改变的路由通告给其他相邻路由器的RIP(Triggeredupdates)。
同时,启动更新(Updates)定时器,每30秒(默认)向所有相邻路由器的RIP用响应(Response)报文通告自己所有的路由信息。
这样做一是为了保证各台路由器的RIP之间路由数据库的同步,二是为了刷新自己原先通告出去的路由,使得原先通告出去的路由在别的路由器上不超时失效。
B)路由数据库
路由数据库里面记录了RIP协议的所有路由信息。
每条路由信息由以下几个要素组成:
●目的地址:
该路由到达的目的主机或子网。
●度量(Metric):
到达该目的地的度量值。
●下一跳接口:
转发到达该目的地报文的接口,也就是学到该路由的接口。
●下一跳IP地址:
为到该达目的地,需要经过的相邻路由器的接口IP地址。
一般为学到该路由的响应(Response)报文的源IP地址。
●源IP地址:
学到该路由的响应(Response)报文的源IP地址。
●路由标记(RouteTag):
用户自己定义的标记,用于标记一类路由。
例如,标记一条路由是通过重分发BGP的路由得到的。
C)路由数据库中路由条目的来源
RIP协议路由数据库中路由条目的来源主要有下面的几个:
●协议覆盖接口的直连路由。
●协议重分发其他协议的路由。
●协议配置命令产生的路由,如产生发布默认路由0.0.0.0的命令(default-informationoriginate)。
●从相邻路由器的RIP学习到的路由。
D)路由的下一条获取
在RIPv1中,路由的下一跳接口就是学习到该路由的接口,下一跳IP地址就是学习到该路由的响应(Response)报文的源IP地址。
在RIPv2中,响应(Response)报文中的路由信息允许携带下一跳IP地址。
路由的下一跳接口仍然是学习到该路由的接口。
而下一跳IP地址则在学习到该路由的响应(Response)报文的源IP地址和路由信息中携带的下一跳IP地址之间进行选择。
如果路由信息中的下一跳IP地址和接收到该路由信息的接口处于同一子网,则路由的下一跳IP地址为路由信息中的下一跳IP地址;
否则路由的下一跳IP地址为响应(Response)报文的源IP地址。
这样做是为了实现类似于重定向的功能。
E)路由更新
当从相邻路由器的RIP学习到一条路由的时候,下面情况下使用该路由更新路由数据库中的路由:
●该路由在路由数据库中不存在,并且该路由的度量小于16跳。
●该路由在数据库中存在,并且源IP地址和学习到的路由的源IP地址一致。
●该路由在数据库中存在,但度量比学习到的路由的度量大或者相等。
为了达到度量跳(hop)数累加的效果,当将路由数据库中的路由通告出去的时候,度量加1。
度量最大值为15。
当度量大于15的时候,路由被认为不可达。
328.2.2.4RIP协议的定时器
图3-6RIP协议路由条目状态变迁
RIP协议总共由四个定时器:
更新定时器(UpdateTimer)、无效定时器(InvalidTimer)、抑制定时器(HolddownTimer)、清除定时器(FlushTimer)。
各个定时器的描述如表所示。
表3-4RIP协议的定时器
定时器名称
操作对象
默认值
启动条件
更新定时器
(UpdateTimer)
路由数据库
30秒
当RIP启动时启动该定时器,并不停循环启动
定期用响应(Response)报文向相邻路由器的RIP通告自己的所有路由信息。
一是为了保证各个路由器的RIP之间路由数据库同步;
二是为了刷新自己原先通告出去的路由,使得原先通告出去的路由在别的路由器上不超时失效。
无效定时器
(InvalidTimer)
路由条目
180秒
学习到一条路由条目时候启动
使得一条路由条目如果在一定时间内得不到更新就会失效。
状态变迁如图3-6所示。
该定时器能够被响应(Response)报文更新。
当路由条目失效后关闭该定时器。
抑制定时器
(HolddownTimer)
路由条目进入无效状态时启动
使得一条路由条目在失效后一定时间内不允许被响应(Response)报文更新,防止路由环路产生。
当路由条目走出抑制状态后关闭该定时器。
清除定时器
(FlushTimer)
240秒
使得一条路由在失效后一定时间后被从路由数据库中删除。
当路由条目删除后关闭该定时器。
328.2.2.5RIP协议路由环路的避免
RIP协议是基于距离矢量算法(Distance-Vector)的动态路由协议,不知道整个网络的拓扑情况。
当网络发送变化的时候,整个网络的路由需要一定的时间进行收敛,从而导致各个路由器的路由数据库在一定时间内不同步。
同时又不知道整个网络的拓扑,就可能产生路由环路。
RIP协议使用以下机制减小因网络上的不一致性带来的路由环路的可能性:
计数到无穷大、水平分割、毒性逆转、抑制定时器和触发更新。
A)计数到无穷大
RIP协议允许最大跳数为15,大于15跳的目的地被认为不可达。
这个数字限制了网络大小的同时也防止了路由信息的无限制传递。
路由信息从一个路由器传到另一个路由器,每传一次跳数加一。
当跳数超过15,路由就将从路由表中删除。
B)水平分割(SplitHorizon)
图3-7RIP协议水平分割示例
水平分割,就是从一个接口学习到的路由不能再向该接口通告出去。
从一个接口学到的路由又从该接口通告回去,可能导致路由环路。
RIP协议水平分割规则如下:
如果路由器的RIP从接口1学到了路由信息A,那么向接口1发送的响应(Response)报文中不能包含路由信息A。
但当响应从接口1收到的不是请求所有路由信息的请求(Request)报文的时候,不进行水平分割。
如图3-7所示的RIP协议水平分割的例子,路由器A的S1/0与路由器B的S2/0相连,且都运行RIP协议,路由器A向外通告192.168.1.0/24的路由信息,路由器B通过接口S2/0学习到了该条路由信息,则路由器B通过接口S2/0发出的响应(Response)报文中不能包含192.168.1.0/24的路由信息。
C)毒性逆转(PoisonedReverse)
毒性逆转的目的与水平分割的目的相同,但做法略有差异。
毒性逆转的规则是:
如果路由器从端口1学到了路由信息A,从端口1发送的响应(Response)报文中包含路由信息A,但跳数设为16(即不可达)。
在上面图3-7的例子中,如果采用毒性逆转,则路由器B从S2/0发出的更新中会包含192.168.1.0/24路由信息,但该条信息的metric=16。
毒性逆转与水平分割相比,优点是通过把跳数设为不可达,将路由信息通知源路由器,能立即打破路由环路;
而水平分割只能等待错误路由项因超时而被删除。
缺点是,毒性逆转增大了响应(Response)报文的大小。
D)抑制定时器(HolddownTimer)
抑制定时器,作用是在路由条目不可达后一定时间内不允许被响应(Response)报文更新。
它的思想是保证每台路由器都收到路由不可达信息之前,不可达路由不会被收到的响应(Response)报文更新。
因为收到的响应(Response)报文中该路由条目的信息有可能就是自己原先通告出去的。
E)触发更新(Triggeredupdates)
触发更新,就是当路由发生改变的时候,马上用响应(Response)报文通告给相邻路由器的RIP。
毒性逆转和水平分割将任何