IPv4单播路由技术.docx
《IPv4单播路由技术.docx》由会员分享,可在线阅读,更多相关《IPv4单播路由技术.docx(80页珍藏版)》请在冰点文库上搜索。
IPv4单播路由技术
IPv4单播路由技术
目录
第1章简介1
第2章IPv4单播路由简介2
第3章静态路由协议4
3.1静态路由介绍4
3.2静态路由典型应用5
第4章RIP动态路由协议7
4.1RIP协议相关术语解析7
4.2RIP协议介绍7
4.2.1RIP协议在TCP/IP协议栈中的位置8
4.2.2RIP协议报文类型和组织结构9
4.2.3RIP协议基本工作原理12
4.2.4RIP协议的定时器15
4.2.5RIP协议路由环路的避免16
4.2.6RIPv1和RIPv2的区别18
第5章IRMP动态路由协议19
5.1IRMP协议相关术语解析19
5.2IRMP协议介绍19
5.2.1IRMP的分组类型19
5.2.2IRMP版本中定义的不同TLV20
5.2.3IRMP分组单播和多播发送(多目广播地址224.0.0.10)20
5.2.4IRMP报文格式(以某一具体的携带IRMP数据包的IP报文为例)20
第6章OSPF动态路由协议22
6.1OSPF协议相关术语解析22
6.2OSPF协议介绍24
6.2.1OSPF中区域的划分25
6.2.2OSPF的过程26
6.2.3OSPF优雅重启27
6.2.4OSPF的链路状态数据库(LSDB)29
6.2.5OSPF的报文格式30
6.2.6OSPF的特点43
第7章IS-IS动态路由协议46
7.1IS-IS协议相关术语解析46
7.2IS-IS协议介绍47
7.2.1IS-IS协议栈结构及在网络协议栈中的位置48
7.2.2IS-IS协议报文组织结构49
7.2.3中间系统(IS)的网络实体标题(NET)50
7.2.4IS-IS协议分层的网络拓扑结构51
7.2.5IS-IS协议中邻居的建立和邻接信息产生52
7.2.6IS-IS协议路由信息的发布55
7.2.7IS-IS协议路由计算57
7.3IS-IS协议典型应用57
7.3.1第一步:
路由信息发布58
7.3.2第二步:
进行SPF计算,算出路由器A到达各台路由器的最短路径59
7.3.3第三步:
根据可达子网信息产生路由60
第8章BGP动态路由协议61
8.1BGP协议相关术语解析61
8.2BGP协议介绍61
8.2.1BGP消息报头62
8.2.2Open消息64
8.2.3Update消息65
8.2.4Keepalive消息67
8.2.5Notification消息67
8.2.6BGP有限状态机68
8.2.7BGP路由决策70
8.2.8路由过滤71
8.2.9路由反射器71
8.2.10联盟72
8.2.11路由阻尼72
8.2.12优雅重启73
第9章策略路由74
9.1策略路由相关术语解析74
9.2策略路由介绍74
第10章M-VRF75
10.1M-VRF相关术语解析75
10.2M-VRF介绍75
第11章负载均衡76
11.1负载均衡介绍76
11.1.1负载均衡类型76
11.1.2负载均衡方式76
11.1.3交换类型与负载均衡76
第1章简介
本章主要是介绍几种主流路由协议的基本原理。
本章主要内容:
●IPv4单播路由简介
●静态路由协议
●RIP动态路由协议
●IRMP动态路由协议
●OSPF动态路由协议
●IS-IS动态路由协议
●BGP动态路由协议
●策略路由
●M-VRF
●负载均衡
第2章IPv4单播路由简介
一个报文要从一台主机通过一个网络到达另外一台主机,需要知道该报文在网络中传输的路径。
这个路径,我们称之为路由。
一个网络是由许多台转发设备(如路由器)组成的,要将一台主机发出的报文转发到另外一台主机,每台转发设备都需要知道到达该目的主机应该这么走,即每台转发设备上都需要有到达该目的主机的路由。
然而,这些路由从哪里来呢?
路由的来源主要有三种途径:
转发设备自己直接连接的网络,会产生直连路由;网络管理员手工配置添加路由,会产生静态路由;通过在各台转发设备上运行动态路由协议,能够自动地学习到动态路由。
一个报文从一台主机到达另外一台主机,可能有多条路径,所以需要选择出最优的一条来用于转发报文。
判断一条路径的优劣主要有如下几个方面:
1、路径长度:
路径长度可以用跳跃数或花费来衡量。
在距离矢量路由协议中,路径长度是指一个报文从源主机到目的主机所要通过的转发设备的个数。
在链路状态路由协议中,路径长度是指这条路径上每一段链路的花费之和。
2、可靠程度:
衡量一条链路连接的可靠性,典型情况下是用源主机和目的主机之间的数据出错率来衡量。
在大多数的路由协议中,一条链路的可靠程度可以由网络工程师指定。
3、延迟:
延迟是指一个报文经过所有网络设备、链路和所有路由器的队列所花费时间的总和。
此外,在估计延迟时间时,还要考虑网络阻塞和从源端到目的端的距离等因素。
由于延迟值考虑了许多变量,在最优路径计算时延迟是一个有影响力的度量标准。
4、带宽:
利用带宽作为度量标准计算最优路径时可能产生误导,尽管一条1.544Mbps带宽的链路优于一条56Kbps带宽的链路,但由于当前1.544Mbps带宽的链路的利用率高,或者该链路的对端接收设备负载重,它可能并非最优路径。
5、负载:
负载是依靠所有资源利用情况来给网络资源分配一个值,这个值由CPU利用情况、每秒报文的通过情况和报文的分拆组装情况及其它一些情况合成而定。
但是监控设备资源本身就是一个重负载的加工过程。
6、通信代价:
在一些情况下,对于公共网通信链路是按利用率或直接按月收费,例如ISDN链路是以所用时间和在此时间内的数据传输量来记费。
在这些例子中,通信花费在决定最优路径上成为一个重要因素。
第3章静态路由协议
本节主要内容:
●静态路由介绍
●静态路由典型应用
3.1静态路由介绍
静态路由是由用户定义的路由,它让在源和目的之间传输的包采用管理员指定的路径。
为了清楚路由表中存在的信息种类,当一个报文帧到达路由器的一个接口时,开始对所发生的变化进行检查是很有用的。
必须检查帧的目的地址域中数据链路标识符,如果该标识符包括路由器接口的标识符或广播标识符,路由器将剥去帧的首部和尾部并将完整的报文传递给网络层。
网络层必须检查报文中的目的地址,如果该目的地址是路由器接口的IP地址、接口正在进行监听的多播地址、或一个全主机广播地址,会检查该报文的协议域并将其完整的数据传送给对应的内部进程。
为寻找路由要用下一跳地址作为目的,并解析其链路层地址。
下一跳地址也许是路由器直连的另一网络中主机的地址(包括路由器的接口连接该网络的情况)或是路由器非直连的另一网络中主机的地址。
该地址也可能是一个直连的广播,在该广播中存在一个独特的网络或子网地址,其主机位全为1。
这些地址是可路由的。
如果要路由报文,路由器会在路由表中查找以获取正确的路由。
简单而言,数据库中的每一个路由项必须包含两个条件:
●目的地址。
这是路由器所能到达的网络地址,基于相同的主网地址,路由器会有不止一条到同一地址的路由。
●目的指针。
指针会指明目的网络与路由器是直连的或指出直连网络中的下一台路由器的地址,即为下一跳路由器。
路由器会匹配尽可能最特殊的地址,在下面的特殊顺序中,地址可能会是以下的一个:
●主机地址(主机路由)
●子网
●一组子网(汇总路由)
●主网络号
●一组主网络号(超网)
●默认地址
如果报文的目的地址不和路由表中的任何一项匹配,则会丢弃该报文并发送一个目的地不可达的ICMP信息给源地址。
3.2静态路由典型应用
下例是一个简单的具体环境,说明如何使用静态路由。
图31静态路由典型应用示例拓扑
图解:
两台迈普路由器router-a和router-b,作为转发设备,连接了10.1.1.0/24和10.1.3.0/24两个网络。
PC-1的默认网关是10.1.1.2,PC-2的默认网关是10.1.3.1。
管理员在两台路由器上配置静态路由,实现10.1.1.0/24同10.1.3.0/24两个网络的互通。
在rotuer-a上配置一条静态路由,路由目的网络为10.1.3.0/24,下一跳为10.1.2.2;router-b上配置一条静态路由,路由目的网络为10.1.1.0/24,下一跳为10.1.2.1,即可完成网络的互通。
PC-1发出的访问PC-2的数据流,首先到达默认网关router-a。
router-a检查数据流的目的地址10.1.3.2,不属于本地地址,于是查找路由表。
由于静态路由10.1.3.0/24的存在,MP-7500-1能够将数据流转发到路由下一跳10.1.2.2(即router-b)。
MP-7500-2继续转发,数据流的目的地址命中直连路由,数据流被成功送到PC-2。
第4章RIP动态路由协议
本节主要内容:
●RIP协议相关术语解析
●RIP协议介绍
4.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秒(默认)都会发出所有路由信息的更新。
4.2RIP协议介绍
路由信息协议(RoutingInformationProtocol,RIP)是基于距离矢量算法(Distance-Vector)的内部网关动态路由协议(IGP),用于动态产生IPv4的路由。
RIP协议目前已成为路由器、主机之间路由信息传递的标准之一。
RIP协议有RIPv1和RIPv2两个版本,两个版本的主要区别是RIPv1不支持无类别路由,而RIPv2支持无类别路由。
一般情况下使用RIPv2版本。
RIP协议有协议简单、配置简单等优点。
但RIP协议需要通告的路由信息和路由表的路由数量成正比。
当路由比较多的时候,比较消耗网络资源。
同时RIP协议规定了路由的路径经过的路由器的跳数最大是15跳。
因此,RIP协议只使用于比较简单的中小型网络。
RIP协议可用于大多数校园网及结构较简单的连续性强的地区性网络。
对于更复杂的环境,一般不使用RIP协议。
4.2.1RIP协议在TCP/IP协议栈中的位置
图41RIP协议在TCP/IP协议栈中的位置
如上图所示,RIP协议是基于UDP协议的一个路由协议,RIP协议所发送的协议报文都封装在UDP报文中。
RIP协议在520端口号上接收来自远程路由器的协议报文,根据接收的协议报文中的路由信息对本地的路由表做相应的更新,同时将度量加1后通知其它相邻路由器。
通过这种方式,使得路由域内所有的路由器都学到所有的路由。
RIP协议发送协议报文有三种方式:
广播方式、组播方式和单播方式。
各种方式的使用方法如下表所示。
表41RIP协议发送报文的方式
方式
地址
版本
端口
用途
广播
255.255.255.255
RIPv1
520
RIPv1向一个接口上所有相邻路由器发送协议报文
组播
224.0.0.9
RIPv2
520
RIPv2向一个接口上所有相邻路由器发送协议报文
单播
单播IP地址
RIPv1/2
520
回应请求(Request)报文的响应(Response)报文
发送给配置的邻居(Neighbor)的协议报文
4.2.2RIP协议报文类型和组织结构
4.2.2.1RIP协议报文类型
RIP协议有两种协议报文:
请求(Request)报文和响应(Response)报文。
RIP协议报文类型和功能如下表所示。
表42RIP协议报文类型
报文类型
功能描述
发送情况
请求(Request)报文
向相邻路由器的RIP请求路由信息。
可以要请求指定的路由信息,也可请求所有的路由信息(只有一条地址族标识为0,度量为16的路由条目)。
接口上刚开始运行RIP的时候,向相邻路由器的RIP请求所有路由信息。
响应(Response)报文
向相邻路由器的RIP通告路由信息。
A)回应请求(Request)报文;
B)当路由改变的时候,触发更新(Triggeredupdates)路由信息;
C)定期向相邻路由器的RIP通告所有路由信息(Regularupdates)。
4.2.2.2RIP协议报文组织结构
图42RIP协议报文的基本组织结构
如上图所示,RIP协议的报文封装在UDP报文里面。
在RIP协议报文的IP头部中,TTL(TimeToLive)字段设置为1,防止RIP协议报文被其他路由器转发。
RIP头部有两个字段:
Command字段标识该报文是请求报文(值为1)还是响应报文(值为2);Version字段标识该报文是RIPv1报文(值为1)还是RIPv2报文(值为2)。
RIPEntry可以有三种类型:
RIPv1路由条目、RIPv2路由条目、认证信息条目。
RIPEntry的类型和描述如下表所示。
表43RIP协议RIPEntry类型和描述
RIP信息条目
版本
格式
描述
RIPv1路由条目
RIPv1
如下图所示
在RIPv1协议中向相邻路由器的RIP通告路由信息。
RIPv2路由条目
RIPv2
如下图所示
在RIPv2协议中向相邻路由器的RIP通告路由信息。
认证信息条目
明文
RIPv2
如下图所示
在RIPv2协议中添加报文的明文认证信息。
该信息只能紧跟着出现在RIP报文头部后面。
MD5
RIPv2
如下图所示
在RIPv2协议中添加报文的MD5认证信息。
该信息只能紧跟着出现在RIP报文头部后面。
在报文尾部,还需要有相应的认证内容。
图43RIP协议路由信息条目格式
图44RIPv2协议带认证信息的报文格式
4.2.3RIP协议基本工作原理
图45RIP协议基本工作流程
RIP协议基本工作流程如上图所示,分为两部分:
一是RIP协议启动流程;二是RIP协议接收报文处理流程。
4.2.3.1协议启动过程
当一个接口上开始运行RIP协议的时候,会用广播(RIPv1)或者组播(RIPv2)方式向该接口上发送请求(Request)报文,向该接口上所有相邻路由器的RIP请求其所有路由信息,以便能够达到快速收敛的目的。
当接收到应答请求(Request)报文的响应(Response)报文后,根据报文里面的路由信息更新路由数据库里面的路由,然后将改变的路由通告给其他相邻路由器的RIP(Triggeredupdates)。
同时,启动更新(Updates)定时器,每30秒(默认)向所有相邻路由器的RIP用响应(Response)报文通告自己所有的路由信息。
这样做一是为了保证各台路由器的RIP之间路由数据库的同步,二是为了刷新自己原先通告出去的路由,使得原先通告出去的路由在别的路由器上不超时失效。
4.2.3.2路由数据库
路由数据库里面记录了RIP协议的所有路由信息。
每条路由信息由以下几个要素组成:
7、目的地址:
该路由到达的目的主机或子网。
8、度量(Metric):
到达该目的地的度量值。
9、下一跳接口:
转发到达该目的地报文的接口,也就是学到该路由的接口。
10、下一跳IP地址:
为到达该目的地,需要经过的相邻路由器的接口IP地址。
一般为学到该路由的响应(Response)报文的源IP地址。
11、源IP地址:
学到该路由的响应(Response)报文的源IP地址。
12、路由标记(RouteTag):
用户自己定义的标记,用于标记一类路由。
例如,标记一条路由是通过重分发BGP的路由得到的。
4.2.3.3路由数据库中路由条目的来源
RIP协议路由数据库中路由条目的来源主要有下面的几个:
13、协议覆盖接口的直连路由。
14、协议重分发其他协议的路由。
15、协议配置命令产生的路由,如产生发布默认路由0.0.0.0的命令(default-informationoriginate)。
16、从相邻路由器的RIP学习到的路由。
4.2.3.4路由的下一条获取
在RIPv1中,路由的下一跳接口就是学习到该路由的接口,下一跳IP地址就是学习到该路由的响应(Response)报文的源IP地址。
在RIPv2中,响应(Response)报文中的路由信息允许携带下一跳IP地址。
路由的下一跳接口仍然是学习到该路由的接口,而下一跳IP地址则在下面两个地址中选择:
学习到该路由的响应(Response)报文的源IP地址;路由信息中携带的下一跳IP地址。
如果路由信息中的下一跳IP地址和接收到该路由信息的接口处于同一子网,则路由的下一跳IP地址为路由信息中的下一跳IP地址;否则路由的下一跳IP地址为响应(Response)报文的源IP地址。
这样做是为了实现类似于重定向的功能。
下面列举一个例子,来说明RIPv2中路由条目的下一跳地址的使用。
图46RIP路由重定向示例图
如上图所示,Router-A上运行了RIP,Router-B上运行了RIP和OSPF,RouterC上运行了OSPF。
在Router-B中的RIP重分发本机学习到的OSPF路由11.0.0.0/8,使得Router-A可以学习到到达子网11.0.0.0/8的路由。
在Router-A上学习到该路由的时候,默认情况下下一跳为Router-B即10.1.1.2。
如此,从Router-A转发到目的子网11.0.0.0/8的报文全部先绕到Router-B,才到达Router-C。
为了解决这个问题,Router-B在向Router-A通告路由11.0.0.0/8的时候,将该路由的下一跳指定为Router-C即10.1.1.3。
当Router-A学习到该路由的时候,就会将路由11.0.0.0/8的下一跳指定为Router-C即10.1.1.3。
如此,Router-A转发到目的子网11.0.0.0/8的报文全部直接转发给Router-C,不需要在绕到Router-B了。
4.2.3.5路由更新
当从相邻路由器的RIP学习到一条路由的时候,下面情况下使用该路由更新路由数据库中的路由:
17、该路由在路由数据库中不存在,并且该路由的度量小于16跳。
18、该路由在数据库中存在,并且源IP地址和学习到的路由的源IP地址一致。
19、该路由在数据库中存在,但度量比学习到的路由的度量大或者相等。
为了达到度量跳(hop)数累加的效果,当将路由数据库中的路由通告出去的时候,度量加1。
度量最大值为15。
当度量大于15的时候,路由被认为不可达。
4.2.4RIP协议的定时器
图47RIP协议路由条目状态变迁
RIP协议总共由四个定时器:
更新定时器(UpdateTimer)、无效定时器(InvalidTimer)、抑制定时器(HolddownTimer)、清除定时器(FlushTimer)。
各个定时器的描述如下表所示。
表44RIP协议的定时器
定时器名称
操作对象
默认值
启动条件
功能描述
更新定时器
UpdateTimer
路由数据库
30秒
当RIP启动时启动该定时器,并不停循环启动
定期用响应(Response)报文向相邻路由器的RIP通告自己的所有路由信息。
一是为了保证各个路由器的RIP之间路由数据库同步;
二是为了刷新自己原先通告出去的路由,使得原先通告出去的路由在别的路由器上不超时失效。
无效定时器
InvalidTimer
路由条目的下一跳
180秒
学习到一条路由条目时候启动
使得一条路由条目如果在一定时间内得不到更新就会失效。
状态变迁如上图所示。
该定时器能够被响应(Response)报文更新。
当路由条目失效后关闭该定时器。
抑制定时器
HolddownTimer
路由条目
180秒
路由条目进入无效状态时启动
使得一条路由条目在失效后一定时间内不允许被响应(Response)报文更新,防止路由环路产生。
状态变迁如上图所示。
当路由条目走出抑制状态后关闭该定时器。
清除定时器
FlushTimer
路由条目
240秒
路由条目进入无效状态时启动
使得一条路由在失效后一定时间后被从路由数据库中删除。
状态变迁如上图所示。
当路由条目删除后关闭该定时器。
4.2.5RIP协议路由环路的避免
RIP协议是基于距离矢量算法(Distance-Vector)的动态路由协议,不知道整个网络的拓扑情况。
当网络发送变化的时候,整个网络的路由需要一定的时间进行收敛,从而导致各个路由器的路由数据库在一定时间内不同步。
同时又不知道整个网络的拓扑,就可能产生路由环路。
RIP协议使用以下机制减小因网络上的不一致性带来的路由环路的可能性:
计数到无穷大、水平分割、毒性逆转、抑制定时器和触发更新。
4.2.5.1度量不可达(CountingtoInfinity)
RIP协议允许最大跳数为15,大于15跳的目的地被认为不可达。
这个数字限制了网络大小的同时也防止了路由信息的无限制传递。
路由信息从一个路由器传到另一个路由器,每传一次跳数加一。
当跳数超过15,路由就将从路由表中删除。
4.2.5.2水平分割(SplitHorizon)
水平分割,就是从一个接口学习到的路由不能再向该接口通告出去。
从一个接口学到的路由又从该接口通告回去,可能导致路由环路。
RIP协议水平分割规则如下:
如果路由器的RIP从某个接口学到了路由信息A,那么向该接口发送的路由响应(Response)报文中不能包含路由信息A。
水平分割有一种特殊情况,当从某个接口上收到部分路由信息请求(Request)报文的时候,该报文的响应不进行水平分割。
4.2.5.3毒性逆转(PoisonedReverse)
毒性逆转的目的与水平分割的目的相同,但做法略有差异。
RIP协议水平分割规则如下:
如果路由器的RIP从某个接口学到了路由信息A,那么向该接口发送的路由响应(Response)报文中包含路由信息A,但度量设置为16(即不可达)。
毒性逆转与水平分割相比,优点是通过把跳数设为不可达,将路由信息通知源路由器,如果已经存在路由环路,则能立即打破路由环路;而水平分割只能等待错误路由项因超时而被删除。
缺点是,毒性逆转增大了路由响应(Response)报文的大小