文章目录
- 一、分组转发
- 二、路由选择
- 1.理想的路由算法的基本特征
- 2.路由算法的度量标准
- 3.路由算法分类:
- 4.IP路由选择与路由汇聚(重点)
- 三、自治系统与Internet的路由选择协议
- 1.自治系统
- 2.路由选择协议的分类
- 四、内部网关协议
- 1.RIP的基本概念
- 2.RIP的原理
- 3.RIP的运行过程
- 五、开放最短路径优先协议
- 1.OSPF协议概述
- 2.OSPF的层次结构与区域划分
- 3.OSPF协议的运行过程
- 六、外部网关协议
- 1.BGP协议的特性
- 2.BGP的路由器角色及基本特征
- 3.BGP协议报文
- 4.BGP的运行过程
一、分组转发
所谓的分组转发中,数据是以分组形式传输的, 如果源端要发送一个很大的数据,则将其分成若干分组,每个分组中除了用户数据外还包含一些控制信息,以便能够正确地把分组传送给目的端。分组的传送采用存储-转发方式, 即网络节点根据分组控制信息,把分组送到下一节点,下一节点接收到分组后,暂时保存下来并排队等候传输,然后根据分组控制信息把该分组传送到下一个节点,直至到达最终目的。
在互联网络中,路由器就是采用分组转发的机制实现IP分组的物理传输和数据报转发的。如下图所示,分组转发根据分组的源地址(网络层的IP地址)和目的地址(网络层的IP地址)是否在同一个网络中,可以分为直接转发与间接转发两种转发方式。
当分组的源地址和目的地址在同一个网络中,则源主机可将分组直接转发给目的主机,或者目的路由器向目的主机转发分组时,也为直接转发。 否则,当分组的源地址与目的地址不在同一个网络中,就需要通过路由查找进行转发,即间接转发。 间接转发时,路由器需要从路由表中找,到所需转发的下一跳地址,然后经过IP包处理,转发给下一跳,直至到达目的主机。
分组转发示意图
二、路由选择
1.理想的路由算法的基本特征
理想的路由算法需要满足一些基本特性:简单性、正确性、稳定性、健壮性、公平性、最优性、高效性。
简单性指的是路由算法不能太复杂。
正确性指的是路由算法首先要保证自身正确,同时应该满足数据传输的要求,从而满足网络用户业务工作的需要。
稳定性指的是路由算法对网络状态的变化要适度反应,不能过于敏感也不能太迟缓。
健壮性指的是路由算法能适应拓扑结构和通信量等网络状态的变化,尽可能保持网络正常运行,把中断的数据传输继续下去,而不需要重启网络或者将主机数据传输终止。
公平性指的是路由选择算法应对所有用户(除对少数优先级高的用户)都是平等的。
最优性指的是路由选择算法应当能够找出最好的路由,使得分组平均延时最小而网络的吞吐量最大。
高效性是指因路由算法工作的需要,网络中的每个节点都会承担一定的处理开销,同时会产生一些传输开销,一定程度上会影响网络的效率。
2.路由算法的度量标准
- 带宽: 指的是链路的传输速率(如T1链路带宽为1.544Mbit/s)
- 负载: 指的是单位时间内通过网络资源(如路由器或链路)上的通信量。
- 延迟: 指的是一个分组从源节点到达目的节点所花费的时间。延迟取决于中间链路的带宽、经过的每个路由器的端口队列、网络拥塞情况以及物理距离等因素。
- 跳数: 指的是分组从源主机到达目的主机经过的路由器的数量。跳数越少的路径越好。可靠性:指的是传输过程中每个网络链路的误码率。-
- 代价(开销): 可以是个任意的值,一般以费用、带宽的开销或其他衡量标准为基础,可以由网络管理员指定。
3.路由算法分类:
(1)静态路由选择算法。
静态路由选择具有简单和开销较小的特点,适用于简单的规模小的网络,因为在此种网络环境下,网络管理人员比较容易掌握网络的拓扑结构,手工配置路由信息工作量也不大。它还有利于保证网络的安全保密性,因为静态路由为手工配置,因此不存在因路由器之间交换各自的路由表而导致路由信息被截获和分析,从而泄漏网络的拓扑结构和网络地址等信息的问题。
(2)动态路由选择算法。
动态路由选择算法也叫做自适应路由选择,其路由信息是通过相互连接的路由器彼此之间交换路由信息,然后按照一定的算法计算并优化而得出的,同时为适应不断变化的网络,还需要在一定时间间隙对这些路由信息不断更新,以及时获得最优的路径选择效果。其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。
4.IP路由选择与路由汇聚(重点)
在图中的网络包含接入、汇聚、核心三层,分别由接入层路由器、汇聚层路由器和核心层路由器连接。路由器与路由器之间的连接链路主要有两种,即串行线路(用S1、S2标记)和以太网线路(F0、F1、F2标记) 。核心层路由器R1通过两条串行线路S1、S2分别与汇聚层路由器R2、R3连接:路由器R2通过以太网接口与接入层路由器R4、R5连接;路由器R3通过以太网接口与接入层路由器R6、R7连接。接入层路由器R4、R5、R6、 R7又分别连接了200.200.0.0/24-200.200.3.0/24, 200.200.128.0/24~200. 200.131.0/24共8个子网。那么在该网络中,加上连接核心路由器、连接汇聚路由器的2个子网,共有12个子网。对应地就应该有12个路由条目在核心路由器R1的路由表中,如表所示。
路由汇聚示意图
在该网络中,如果使用的是静态路由表就需要在图中的7个路由器中逐条人工添加路由条目,那么总共需要输入的路由条目数为12×7=84个。可,见工作量较大,而且任一路由器或链路发生变化时, 7个路由器的路由表又要重新配置,故只能采用动态路由选择协议来自动建立和更新路由表。
核心路由器的路由表
路由 | 接口 | 路由 | 接口 |
---|---|---|---|
200. 200,.200.0/30 | S1 | 200.200.2.0/24 | S1 |
200. 200. 201.0/30 | S2 | 200.200,3.0/24 | S1 |
200. 200.100.0/28 | S1 | 200, 200. 128.0/24 | S2 |
200. 200. 101.0/28 | S2 | 200. 200. 129.0/24 | S2 |
200.200.0.0/24 | S1 | 200. 200. 130./24 | S2 |
200.200.0.0/24 | S1 | 200,.200.131.0/24 | S2 |
200. 200.200.0/30 | S1 | 200.200.2.0/24 | S1 |
200. 200. 201.0/30 | S2 | 200.200,3.0/24 | S1 |
200. 200.100.0/28 | S1 | 200, 200. 128.0/24 | S2 |
200. 200. 101.0/28 | S2 | 200. 200. 129.0/24 | S2 |
200.200.0.0/24 | S1 | 200. 200. 130./24 | S2 |
200.200.0.0/24 | S1 | 200,.200.131.0/24 | S2 |
我们观察可以发现,核心路由器的路由表的路由表项条目可以按照“最长前缀匹配”的方法,将12个路由表项条目进行一定程度的汇聚,特别是接入层所连接的8个C类网络路由条目。
首先对于200.200.0.0-200.200.3.0它们两个的前16位是完全一样的,所以其汇总路由肯定也包含"200.200.XX"字样,我们再观察它们的第3个字段:
0=00000000
1= 00000001
2= 00000010
3=00000011
可以看出来,它们具有完全相同的前6位,加上之前完全相同的前16位,共有8+8+6-22位完全相同,这些相同的位数构成了汇总地址的网络位。剩下还有32-22-10位,就是汇总后路由的主机位。在表示汇总路由的网络号时,主机位全部用0值表示。因此200.200.0.0-200.200.3.0通过路由汇聚得到的汇聚路由是200.200.0.0/22。
对于200.200.128.0-200.200.131.0,它们两个的前16位也是完全一样的,所以其汇总路由肯定也包含"200.200.X.X"字样,我们再观察它们的第3个字段:
128=10000000
129=10000001
130=10000010
131=10000011
对于这四条链路,第3个字段的前六位是完全相同的,也就是说四项的最长相同前缀为22位,因此200.200.128.0-200.200.131.0通过路由汇聚后得到的汇聚路由是200.200.128.0/22。
这样,路由表就由原来的12项路由条目精简为6项,精简之后的路由表如所示。这就是路由汇聚的整个过程。
汇聚后的核心路由器的路由表
路由 | 接口 | 路由 | 接口 |
---|---|---|---|
200. 200,.200.0/30 | S1 | 200.200.101.0/28 | S2 |
200. 200. 201.0/30 | S2 | 200.200,0.0/22 | S1 |
200. 200.100.0/28 | S1 | 200, 200. 128.0/24 | S2 |
200. 200. 200.0/30 | S1 | 200. 200. 101.0/28 | S2 |
200.200.201.0/30 | S2 | 200. 200. 0.0/22 | S1 |
200.200.100.0/28 | S1 | 200,.200.128.0/22 | S2 |
假设R1接收到一个目的地址为200.200.3.129的数据包, R1要在路由表中寻找一条最佳路径,按照路由查找步骤,将目的地址200.200.3.129与路由表中的路由条目进行匹配: 200.200.3.129/32的二进制表为11001000.11001000.00000011.10000001,与200.200.0.0/22的二进制表示11001000.11001000.00000000.00000000对比可以看出,目的地址200.200.3.129与200.200.0.0/22的地址前缀有22位完全相同,因此核心路由器R1将根据其对应的路由条目找到出口,并最终把数据包从S1口转发出去。
三、自治系统与Internet的路由选择协议
1.自治系统
Internet的路由选择只能采用分层方式进行,首先由不同的管理机构,将Internet划分为多个较小的自治系统。
自治系统(Autonomous System, AS)是一组共享相似的路由策略并在同一管理机构下运行的路由器的集合。 一个AS可以是运行单一路由协议的路由器的集合, 也可以是一些运行不同路由选择协议, 但都属于一个组织机构的路由器集合。
其主要特点是它有权决定本系统内采用什么路由策略。自治系统内部的路由选择称为域内路由选择, 自治系统之间的路由选择称为域间路由选择。
在自治系统内部的网络中采用的称为第一层区域的路由,也就是区域内路由,它由自治系统内部的路由器产生并负责内部网络的数据传输。第二层路由为Internet的主干路由,每个连入Internet的自治系统中都有负责连入主干网络的路由器,由它们负责维护自治系统间路由信息,并负责自治系统间数据传输,自治系统的内部主机访问外部主机时都需要通过本自治系统中的主干路由器。
2.路由选择协议的分类
路由选择协议(Routing Protocol)简单来说就是用来计算、维护路由信息的协议。路由选择协议一般工作在OSI参考模型的传输层或者应用层。
路由协议(Routed Protocol)又称为被路由协议,指可以被路由器在不同逻辑网段间路由的协议。路由协议通常工作在OSI参考模型的网络层。
按照工作范围的不同,路由协议可以分为IGP(Interior Gateway Protocols,内部网关协议)和EGP(Exterior Gateway Protocols,外部网关协议)两大类,如图所示。
IGP与EGP
IGP是指在同一个自治系统内部交换路由信息的路由协议。IGP的主要目的是发现和计算自治系统内部的路由信息:
- 路由信息协议(RIP) ,它是一种分布式的、基于距离向量的路由协议。·
- 开放最短路径优先协议(OSPF) ,它是一种链路状态路由协议,是目前最常用的一种内部网关协议。
- 中间系统到中间系统(IS-IS),它为一个域内两个路由器之间传送分组提供动态路由。·
- 内部网关路由协议(IGRP) ,它是一种距离向量路由协议,是Cisco公司的私有协议。
EGP用于连接不同的自治系统,并在不同自治系统之间交换路由信息。EGP的主要目的是将路由选择信息从一个自治系统传递到另一个自治系统中。
四、内部网关协议
1.RIP的基本概念
RIP (Routing information Protocol,路由信息协议)是一种分布式、基于距离向量的内部网关协议,使用“跳数”来衡量到达目标地址的路由距离。
2.RIP的原理
RIP规定,路由器每30秒向外广播一个(V,D)报文,报文信息来自本地路由表。RIP协议的(VD)报文中,以跳数计算距离: 与目标网络直接相连的路由器规定为一跳,相隔一个路由器则为两跳 依次类推。一条路径的距离为该路径(从源主机到目的主机机)上的路由器数。RIP规定,一条有限的路径长度不得超过15,超过15则意味路径为无限长,即路径不存在。
3.RIP的运行过程
(1)路由表的建立。
初始化后的路由器只包含所有与该路由器直接相连的网络路由,且(V, D)表中各路由的距离均为0。
(2)路由表信息的更新。
如图所示是路由表信息的更新过程,假设Router1与Router2是一个自治系统中相邻的两个路由器。Router2发送(V, D)报文至Router1,而后Router1按照以下规律更新路由表的信息。
如果Router1的路由表没有这一项记录, Router1在路由表中增加该项,由于要经过Router2转发,因此距离D值加1;如果Router1的路由表中的一项记录比Router2发送的一项记录距离D值减1还要大, Router1在路由表中修改该项,距离D值根据Router2提供的值加1。
路由器1起始路由表
目的网络 | 距离 | 路由 |
---|---|---|
10.0.0.0 | 0 | 直接 |
20.0.0.0 | 8 | Router2 |
30.0.0.0 | 3 | Router2 |
120.0.0.0 | 11 | Router4 |
125.0.0.0 | 4 | Router5 |
212.0.0.0 | 10 | Router6 |
220.0.0.0 | 9 | Router6 |
路由器2发送对1(V,D)报文
目的网络 | 距离 |
---|---|
10.0.0.0 | 3 |
20.0.0.0 | 4 |
30.0.0.0 | 2 |
40.0.0.0 | 7 |
120.0.0.0 | 5 |
修改后的路由器1起始路由表
目的网络 | 距离 | 路由 |
---|---|---|
10.0.0.0 | 0 | 直接 |
20.0.0.0 | 5 | Router2 |
30.0.0.0 | 3 | Router2 |
40.0.0.0 | 8 | Router2 |
120.0.0.0 | 6 | Router2 |
125.0.0.0 | 4 | Router5 |
212.0.0.0 | 10 | Router6 |
220.0.0.0 | 9 | Router6 |
路由表信息的更新过程
五、开放最短路径优先协议
1.OSPF协议概述
开放最短路径优先(Open Source Path First, DSPF)协议,也是内部网关协议的一种,主要用于在自治系统内部路由器之间传输路由信息,是基于Dijkstra提出的最短路径算法规则计算路由。
-
OSPF协议的主要特点有如下几点:OSPF协议最主要的特征就是使用分布式链路状态协议(Link StateProtocol)。
-
OSPF协议要求当链路发生变化时用洪泛法向本自治系统中所有路由器发送信息。
主要是路由器通过所有输出端口向所有相邻的路由器发送信息,而每个相邻路由器又再将此信息发往其所有的相邻路由器,最终所有在这个区域中的路由器都拥有了一个一致的网络结构信息。而RIP的每个路由器只知道到每个网段的距离和下一跳,不知道全网的拓扑结构,并且RIP仅向自己相邻的几个路由器交换路由信息。 -
OSPF发送的信息是与本路由器相邻的所有路由器的链路状态,所谓链路状态指的是本路由器相邻路由器都有哪些,以及与相邻路由器之间链路的“度量”值, OSPF的链路状态"度量”主要是指距离、费用、带宽、时延等。
2.OSPF的层次结构与区域划分
OSPF协议将自治系统划分成不同的区域。划分区域是从逻辑上将路由器划分为不同的组,每个组用一个区域号(Area ID)来标识。 划分区域的边界是路由器,而不是链路。一个网段(链路)只能属于一个区域,或者说运行OSPF路由器的每个接口必须属于某个特定的区域。区域号是0,通常被称为骨干区域或骨干路由器。 骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。
3.OSPF协议的运行过程
(1)路由器的初始化过程。
OSPF中的每个路由器都采用一个包含数据库描述的数据包,与相邻的路由器交换自己数据库中已有的链路状态摘要信息,而不是把自己的链路状态信息对全网广播。
(2)网络运行过程。
在网络运行的过程中,只要一个路由器的链路状态发生变化,该路由器就要使用链路状态更新分组,用洪泛法向全网更新链路状态。OSPF使用的是可靠的洪泛法。 为了确保链路状态数据库与全网的数据库状态保持一致,OSPF还规定每隔一段时间,例如每30分钟要刷新一次数据库中的链路状态。
六、外部网关协议
1.BGP协议的特性
(1) BGP是一种外部网关协议,它重点关心的不是发现和计算路由,而是在AS之间传递路由信息以及控制优化路由信息(提供这些信息是为了找到较好的路由,不一定是最佳路由)。
(2) BGP是一种“路径矢量”路由协议,其路由信息中携带了所经过的全部自治系统的路径列表。
(3)为了保证BGP的可靠传输,其使用TCP来承载协议报文。 通过TCP的可靠传输机制、重传、排序等机制来保证BGP消息报文传输的可靠性。
(4) BGP支持CIDR和路由聚合,可以将一些连续的子网聚合成较大的子网(突破了标准分类地址限制),从而可以在一定程度上控制路由表的快速增长,并降低了路由查找的复杂度。
(5) BGP最重要的特性是丰富的路由属性以及强大的路由过滤和路由策略。
2.BGP的路由器角色及基本特征
(1)发言者。
发送BGP协议报文的路由器称为BGP发言者(BGP Speaker) ,它接受或产生新的路由信息,并发布给其他发言者。
(2)对等体。
相互交换BGP协议报文的BGP发言者之间互称为BGP对等体(BGPPeer)。
(3)IBGP对等体。
处于同一个AS (域)的BGP对等体称为IBGP对等体,从IBGP获得的路由不向它的IBGP对等体发布。图中RB、RD是IBGP对等体。
(4)EBGP对等体。
处于不同AS的BGP对等体称为EBGP对等体。通常情况下, EBGP对等体是物理上直连的BGP发言者,路由器从EBGP对等体获得的路由会向它所有的BGP对等体通告(包括EBGP和IBGP) 。
3.BGP协议报文
(1)打开(Open)分组: 打开分组用来与相邻的另一个BGP发言人建立关系。
(2)保活(Keepalive)分组: 保活分组用来确认打开报文,以及周期性地证实相邻边界路由器的存在。
(3)更新(Update)分组: 更新分组用来发送某一路由的信息,以及列出要撤销的多条路由。
(4)通知(Notification)分组: 通知分组的作用为发出错误通知。BGP发言者如果检测到对方发过来的消息有错误或者对方主动断开BGP连接,都会发出通知报文通知BGP邻居。
4.BGP的运行过程
当开始向相邻边界路由器进行协商时就要发送“打开分组”,如果相邻边界路由器接受,就响应一个“保活分组”。两个BGP发言人的相邻关系就建立了。为了维护这种关系,两个BGP发言人彼此要周期性地(一般是每隔30秒)交换“保活分组”。"更新分组”是BGP协议的核心, BGP发言人可以用“更新分组”撤销它以前曾经通知过的路由,也可以宣布增加新的路由。