4.6 路由选择
# 4.6 路由选择
本节课我们介绍路由选择协议的相关基本概念,路由选择可分为静态路由选择和动态路由选择两类。
# 4.6.1 路由选择协议概述
- 静态路由选择是指采用人工配置的方式给路由器添加网络路由、默认路由、特定主机路由、黑洞路由等路由信息。
- 而动态路由选择是指路由器通过路由选择协议自动获取路由信息。对于路由器自身而言,静态路由选择简单,开销小,但不能及时适应网络状态的变化,
- 而动态路由选择比较复杂,开销比较大,但能较好的适应网络状态的变化。因此静态路由选择一般只在小规模网络中采用,而动态路由选择适用于大规模网络。
因特网是全球最大的互联网络,它所采用的路由选择协议具有以下三个主要特点,分别是自适应,分布式,分层次,
- 自适应是指因特网采用的是动态路由选择,能较好的适应网络状态的变化。
- 分布式是指因特网中的各路由器,通过相互间的信息交互,共同完成路由信息的获取和更新
- 分层次是指将整个因特网划分为许多较小的自治系统AS,例如一个较大的因特网服务提供商,就可划分为一个自治系统,在自治系统内部和自治系统外部,采用不同类别的路由选择协议,分别进行路由选择。
下面我们来举例说明,因特网采用的分层次路由选择协议,假设这是因特网中的很小的一部分,我们可以将这些网络和路由器划归到一个自治系统,而将这些网络和路由器划归到另一个自治系统
- 自治之间的路由选择,简称为域间路由选择。自治系统内部的路由选择,简称为域内路由选择。
- 域间路由选择使用外部网关协议EGP类别的路由选择协议,域内路由选择使用内部网关协议IGP这个类别的路由选择协议
需要说明的是外部网关协议EGP和内部网关协议IGP只是路由选择协议的分类名称,而不是具体的路由选择协议。另外名称中使用的是网关这个名词,是因为在因特网早期的RFC文档中没有使用路由器,而使用的是网关这一名词。现在新的RFC文档中又改用路由器这一名词,因此外部网关协议EGP可改称为外部路由协议ERP,内部网关协议IGP,可改称为内部路由协议IRP。本课程仍然采用RFC原先使用的名词,以方便大家查阅RFC文档。
在一个自治系统内部使用的具体的内部网关协议,与因特网中其他自治系统中选用何种内部网关协议无关。例如在该自治系统内部使用的内部网关协议为路由信息协议RIP,而在这个自治系统内部使用的内部网关协议为开放式最短路径优先OSPF协议,
自治系统之间使用的外部网关协议为边界网关协议BGP
接下来我们给出常见的路由选择协议,分为内部网关协议和外部网关协议两大类,
内部网关协议包括路由信息协议RIP,内部网关路由协议IGRP,增强型内部网关路由协议EIGRP,开放式最短路径优先OSPF,中间系统到中间系统IS-IS
- RIP和IGRP是基于距离向量的,RIP是最早应用在因特网上的路由选择协议,IGRP是思科早期私有的协议,现在已被EIGRP取代。
- OSPF和IS-IS是基于链路状态的,OSPF在各种网络中得到了广泛的使用,而集成化的IS-IS是ISP骨干网上最常用的内部网关协议。RIGRP是思科私有的用来取代IGRP的混合型路由选择协议,它结合了距离向量和链路状态
而外部网关协议中最常见的仅有边界网关协议BGP
IGP:interior Gateway Protocols,内部网关协议
EGP:exterior gateway protocol,外部网关协议
BGP:Border Gateway Protocol,边界网关协议
路由选择协议是在路由器上运行的,下面我们就来看看路由器的基本结构,如图所示,路由器是一种具有多个输入端口和输出端口的专用计算机,其任务是转发分组。
整个路由器结构可划分为两大部分,一个是路由选择部分,另一个是分组转发部分。
路由选择部分的核心构件是路由选择处理机,它的任务是根据所使用的路由选择协议,周期性的与其他路由器进行路由信息的交互,来更新路由表。
分组转发部分由三部分构成,分别是交换结构,一组输入端口,一组输出端口。
信号从某个输入端口进入路由器,物理层将信号转换成比特流,送交数据链路层处理,数据链入层从比特流中识别出帧去掉帧头和帧尾后,送交网络层处理。如果送交网络层的分组是普通代转发的数据分组,则根据分组首部中的目的地址进行查表转发,若找不到匹配的转发条目,则丢弃来分组,否则按照匹配条目中所指示的端口进行转发。
网络层更新数据分组首部中某些字段的值,例如将数据分组的生存时间减一,然后送交数据链路层进行封装,数据链路层将数据分组封装成帧,送交物理层处理,物理层将帧看作是比特流,将其变换成相应的电信号进行发送。
如果送交网络层的分组,是路由器之间交换路由信息的路由报文则把这种分组送交路由选择处理机,路由选择处理机根据分组的内容来更新自己的路由表。路由表一般仅包含从目的网络到下一跳的映射,路由表需要对网络拓扑变化的计算最优化,而转发表是从路由表得出的,转发表的结构应当是查找过程最优化,
需要说明的是我们在之前的静态路由配置的相关课程中,并没有严格区分路由器中的路由表和转发表,这样有助于简化问题的分析。因此在后续有关路由选择协议的课程中,我们仍然不严格区分路由表和转发表,还是以路由表来表述问题。
路由选择处理机除了处理收到的路由报文外,还会周期性的给其他路由器发送自己所知道的路由信息。
路由器的各端口还应具有输入缓冲区和输出缓冲区,输入缓冲区用来暂存,新进入路由器,但还来不及处理的分组,
输出缓冲区用来暂存,已经处理完毕,但还来不及发送的分组。
需要说明的是路由器的端口一般都具有输入和输出的功能。我们图中分别给出输入端口和输出端口,目的在于更好的演示路由器的基本工作过程,使同学们更容易理解。
本节课的内容小结如下
# 4.6.2 路由信息协议RIP的基本工作原理
我们介绍路由信息协议,RIP的基本工作原理,路由信息协议RIP是内部网关协议中最先得到广泛使用的协议之一,其相关标准文档为RFC 1058,RIP要求自治系统内的每一个路由器都要维护从他自己到自治系统内其他每一个网络的距离记录,这是一组距离,称为距离向量,
RIP使用跳数作为度量来衡量到达目的网络的距离。我们来举例说明,RIP将路由器到直连网络的距离定义为一,例如图中的路由器R1到其直连网络N1的距离为一。
RIP将路由器到非直连网络的距离,定义为所经过的路由器数加一。
例如图中的路由器R3,到其非直连网络N2的距离为2,
RIP允许一条路径,最多只能包含15个路由器,距离等于16时,相当于不可达。因此RIP只适用于小型互联网,
需要说明的是有些厂商的路由器并没有严格按照RIP标准文档的规定来实现RIP,例如思科路由器中的RIP,将路由器到直连网络的距离定义为零,但这并不影响RIP的正常运行。
RIP认为好的路由距离短的路由,也就是所通过路由器数量最少的路由,如图所示,从R1到R5可以走这条路由,也可以走这条路由,RIP认为R1到R5的好路由是图中只经过一个路由器R4的这条路由。尽管这条路由上各段链路的带宽都非常小。
再来看这个例子,从R1到R6可以走这条路由,也可以走这条路由,而这两条路由是等价的,RIP该如何选择?当到达同一目的网络,有多条距离相等的路由时,RIP可以进行等价负载均衡,也就是将通信量均衡的分布到多条等价的路由上,
RIP包含以下三个要点,
- 第一个要点是和谁交换信息?答案是仅和相邻路由器交换信息。我们来举例说明相邻路由器的概念,下图中R1与R2故为相邻路由器,因为它们是直连的,中间没有其他路由器。
同理,R2与R3也互为相邻路由器,但是R1与R3不是相邻路由器,因为它们之间还存在其他路由器。 - 第二个要点是交换什么信息?答案是路由器自己的路由表。
- 第三个要点是何时交换信息,答案是周期性交换,例如每30秒发送一次RIP更新报文,
接下来我们举例说明RIP的基本工作过程:
- 路由器刚开始工作时,只知道自己到直连网络的距离是1如图所示,这是各路由器刚开始工作时各自的路由表,
其中包含的路由条目都是到达各自直连网络的信息,其距离都是1
- 之后每个路由器仅和相邻路由器周期性的交换,并更新路由信息。如图所示 R1和R2互为相邻路由器,R1和R3互为相邻路由器,R2和R3互为相邻路由器,R和R4互为相邻路由器,R3和R4也互为相邻路由器,
- 若干次交换和更新后,每个路由器都知道到达本自治系统内各网络的最短距离和下一跳地址,这称为收敛。如图所示。
接下来我们举例说明RIP的路由条目更新规则,路由器C和D互为相邻路由器,它们之间周期性的交换并更新路由信息
这是路由器C的路由表,其中到达各目的网络的下一跳都记为问号。可以理解为路由器D并不需要关心路由器C的这些内容,
这是路由器D的路由表。假设路由器C的RIP更新报文发送周期到了,则路由器C将自己路由表中的相关路由信息封装到RIP更新报文中,发送给路由器D。我们可以简单的理解为路由器C将自己的路由表发送给了路由器D
路由器D收到后对其进行改造,将到达各目的网络的下一跳,都改为C距离都增加1,这样的操作很容易理解,因为路由器C告诉D,它可以到达这些目的网络,那么路由器D作为C的邻居路由器,当然也就可以通过C来到达这些目的网络,只是比C到达这些目的网络的距离大1,路由器D现在可以根据改造好的路由表来更新自己先前的路由表了
更新过程:
- 路由器D原来到达网络N2的距离是二,下一跳经过路由器C的转发。
现在路由器D知道了,到达网络N2仍然经过C的转发,距离变为了5,也就是说C与N2之间的网络拓扑发生了变化,于是将自己这条路由条目中的距离更新为5。
更新路由表的理由可总结为到达目的网络相同的下一跳,最新的消息应该更新。 - 路由器D原来不知道网络N3的存在,现在路由器D知道了,可通过路由器C到达网络N3,于是将该路由条目添加到自己的路由表中
更新路由表的理由可总结为发现了新的网络添加 - 路由器D原来到达网络N6的距离是8,下一跳,经过路由器F的转发,现在路由器D知道了,到达网络N6,如果通过C来转发,则距离可缩短为5,于是将自己这条路由条目中的距离修改为5,下一跳修改为C
更新路由表的理由可总结为到达目的网络不同的下一跳,新路由有优势,应该更新, - 路由器D原来到达网络N8的距离是4,下一跳,经过路由器E的转发,现在路由器D知道了,到达网络N8还可以通过C来转发,距离也为4,于是将该路由条目添加到自己的路由表中。更新路由表的理由可总结为到达目的网络不同的下一跳,但距离相等,进行等价负载均衡。
- 路由器D原来到达网络N9的距离14,下一跳经过路由器F的转发,现在路由器D知道了,到达网络N9,如果通过C来转发,则距离扩大为6,于是不使用这条路由条目来更新自己的路由表,不更新。路由表的理由可总结为到达目的网络,不同的下一跳,新路由劣势,不应该更新。
接下来请同学们参看我们之前的举例,来完成这道习题。
再来看这道相关的考研题,这是计算机专业考研全国统考计算机网络部分2010年的题35,答案是选项D
在RIP协议中距离16被定义为目的网络不可达,因此而无法到达NET1,R1也无法通过R2到达NET1。
下面我们介绍RIP协议存在的坏消息传的慢的问题,如图所示,
- 假设R1到达其直连网络N1的链路出现了故障,当R1检测出该故障后,会将到达N1的路由条目中的距离修改为16,表示N1不可达,并等待RIP更新周期到时后,发送该路由信息给R2。
- 而此时R2的路由表中,关于N1的路由条目仍然是先前通过RIP协议获取到的,也就是到达N1的距离为2,下一跳通过R1转发,
- 假设R2的RIP更新周期先到时,也就是R2的这条路由信息先到达R1,而R1的这条路由信息一段时间后才到达R2,
- 当R1收到R2的这条路由信息后就会被该谣言误导,认为可以通过R2到达N1距离为3,并在自己的RIP更新周期到时后,将这条路由信息发送给R2
- 当R2收到R1的这条路,由信息后被该谣言误导,认为可以通过R1到达N1,距离为4,并在自己的RIP更新周期到时后将这条路由信息发送给R1。
- 当R1收到R的这条路由信息后被该谣言误导,认为可以通过R2到达N1,距离为5,并在自己的RIP更新周期,到时后将这条路由信息发送给R2
- 很显然只有R1和R2的路由表中到达N1的路由条目中的距离都增加到16号,R1和R2才都知道N1不可达,也就是才收敛。
- 在该过程中,R1和R2之间会出现路由环路,时间长达数分钟,有关路由环路的问题,我们在之前的静态路由配置的相关课程中已经介绍过了,此处就不再赘述了。
坏消息传的慢,要称为路由环路或距离无穷技术问题,这是距离向量算法的一个固有问题,可以采取多种措施,减少出现该问题的概率,或减少该问题带来的危害。例如
限制最大路径距离为15。
当路由表发生变化时,就要立即发送更新报文及触发更新,而不仅是周期性发送,
让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送,即水平分割,
请注意使用上述措施后,也不能彻底避免路由环路问题,这是距离向量算法的本质所决定的。
最后我们再来练习一道相关的考研题,这是2016年的题37,答案是选项B
- 根据题目所给,R3检测到网络201.1.2.0/25不可达可知R3与该网络是直连的,如图所示
- 又根据题目所给,R1,R2,R3采用RIP协议交换路由信息,且均已收敛,可知先前他们各自的路由表中关于该目的网络的路由条目如下所示
- 再根据题目所给,R3检测到网络201.1.2.0/25不可达,并向R2通告一次新的距离向量可知R3与该网络之间的链路出现了故障,
当R3检测到该故障时,将自己到达该网络的路由条目中的距离修改为16,表示该网络不可达,并向R2发送关于这条路由条目的通告 - R2收到后更新自己相应的路由条目,将距离修改为16。
- 最后根据题目所给,则R2更新后这句话可知,R1给R2发送了关于该路由条目的RIP更新报文,而R2听信了该谣言,误认为到达该目的网络可以通过R1的转发距离为3
小结:
# 4.6.3 开放最短路径优先OSPF的基本工作原理
本节课我们介绍开放最短路径优先OSPF协议的基本工作原理,开放最短路径优先OSPF协议是为客服RIP协议的缺点,在1989年开发出来的,开放表明OSPF不是受某一厂商控制的,而是公开发表的
最短路径优先,是因为使用了迪杰斯特拉提出的最短路径算法SPF。
OSPF是基于链路状态的,而不像RIP那样,是基于距离向量的
OSPF采用最短路径优先算法计算路由,从算法上保证了不会产生路由环路,
OSPF不限制网络规模,更新效率高,收敛速度快。
链路状态是指本路由器都和哪些路由器相邻,以及相应链路的代价,代价用来表示费用,距离时延、带宽等等,这些都是由网络管理人员来决定的。
我们来举例说明,在思科路由器中,OSPF计算代价的方法是用100兆比特每秒除以链路带宽,计算结果小于1的值仍记为1,大于1且有小数的舍去小数。我们来看看图中各路由器的链路状态,R1的邻居路由器有R2,相应的链路代价用100兆比特每秒除以链路带宽100兆比特每秒,结果是1
R1的邻居路由器还有R4,相应的链路代价用100兆比特每秒除以链路带宽1G比特每秒,计算结果小于一,但仍记为1,相信同学们可以很容易的得出其他各路由器的链路状态,我们就不再赘述了。
OSPF相邻路由器之间通过交互问候分组来建立和维护邻居关系。如图所示。问候分组需要封装在IP数据报中发送,发往组播地址224.0.0.5,IP数据报首部中的协议号字段的取值应为89,来表明IP数据报的数据载荷为OSPF分组,问候分组的发送周期为10秒,若40秒仍未收到来自邻居路由器的问候分组,则认为该邻居路由器不可达
因此每个路由器都会建立一张邻居表,例如这是路由器R1的邻居表,其中的每一个条目对应记录其各邻居路由器的相关信息,包括邻居ID,接口以及死亡倒计时。
例如R2是R1的一个邻居路由器,为简单起见,邻居ID就记为R2实践中应填写相应的路由器ID,该邻居路由器与自己的接口1相连,将接口号记为1,死亡倒计时还剩36秒,若在死亡倒计时到达0之前,再次收到了来自R2的问候分组,则重新启动针对该邻居条目的40秒死亡倒计时,否则当死亡倒计时为0,则判定该邻居路由器不可达。
R4是R1的另一个邻居路由器,邻居ID记为R4,该邻居路由器与自己的接口0相连,将接口号记为0,死亡倒计时还剩余18秒
使用OSPF的每个路由器都会产生链路状态通告,其中包含以下两类内容,一类是直连网络的链路状态信息,另一类是邻居路由器的链路状态信息。假设N1是路由器R4的直连网络,则R4的链路状态通道应包含R4与该直连网络的链路状态信息,还应包含其邻居路由器R1的链路状态信息,以及其邻居路由器R3的链路状态信息。链路状态通告被封装在链路状态更新分组中,采用洪范法发送。收到链路状态更新分组的路由器,将从自己其他所有接口转发该分组,也就是进行洪范转发,如图所示。
这样自制系统中每个路由器所发送的封装有链路状态通告的链路状态更新分组,会传递给系统中其他所有路由器。
使用OSPF的每个路由器都有一个链路状态数据库,用于存储链路状态通道,通过各路由器洪范发送封装有自己链路状态通道的链路状态更新分组,各路由器的链路状态数据库最终将达到一致。
例如这是路由器R2的链路状态数据库,其中记录有系统中各路由器的链路状态通道
使用OSPF的各路由器,基于链路状态数据库进行最短路径优先计算,就可构建出各自到达其他各路由器的最短路径,也就是构建出各自的路由表。
例如有这样一个网络拓扑,各链路旁的数字表示代价。通过各路由器洪范发送封装有自己链路状态通告的链路状态更新分组,各路由器最终会得出相同的链路状态数据库,由链路状态数据库可以得出带权有向图,对该图进行基于迪杰斯特拉的最短路径优先算法,就可以得出以各路由器为根的最短路径,如图所示
对于这样一个比较简单的网络拓扑,即使大家不懂得最短路径优先算法,也可以很快找出每个路由器到达其他各路由器的最短路径。但是如果网络拓扑比较复杂,该项工作对人类而言就比较复杂了,因此可以按照迪杰斯特拉提出的最短路径优先算法,编制程序,让路由器执行该程序。如果大家对该算法感兴趣,可以自行查阅相关资料,我们就不再赘述了。
对于一般的网络工程师,即便不熟悉该算法,也不影响对OSPF协议的配置和使用。OSPF包含以下5种分组类型,
- 类型一是问候分组,用来发现和维护邻居路由器的可达性,
- 类型二是数据库描述分组,用来向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息
- 类型三是链路状态请求分组,用来向邻居路由器请求发送某些列入状态项目的详细信息
- 类型四是链路状态更新分组,路由器使用这种分组,将其链路状态进行洪范发送,即用洪范法对全网更新链路状态
- 类型5是链路状态确认分组,这是对链路状态更新分组的确认分组。
接下来我们来举例说明OSPF协议的基本工作过程,相邻路由器之间周期性发送问候分组,以便建立和维护邻居关系,
建立邻居关系后,给邻居路由器发送数据库描述分组,也就是将自己的链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器。例如 R1收到R2的数据库描述分组后,发现自己缺少其中的某些链路状态项目,于是就给R2发送链路状态请求分组。R2收到后,将R1所缺少的链路状态项目的详细信息,封装在链路状态更新分组中发送给R1。R1收到后,将这些所缺少的链路状态项目的详细信息添加到自己的链路状态数据库中,并给R2发送链路状态确认分组。需要说明的是R2也可以像R1请求自己所缺少的链路状态项目的详细信息。这里我们就要不再演示该过程了,最终 R1和R2的链路状态数据库将达到一致,也就是链路状态数据库达到同步。
每30分钟或链路状态发生变化时,路由器都会发送链路状态更新分组,收到该分组的其他路由器,将洪范转发该分组,并给该路由器发回链路状态确认分组,这又称为新情况下的链路状态数据库同步。
当OSPF路由器在多点接入网络中建立邻居关系时,如果不采用其他机制,将会产生大量的多播分组。例如这5台路由器连接在同一个多点接入网络中,他们周期性的发送问候分组,以建立和维护邻居关系。这些路由器中的任意两个路由器都互为邻居关系,如图所示,邻居关系的数量为N乘以N-1,然后再除以2,其中N是路由器的数量,这样每个路由器要向其他N减一个路由器发送问候分组和链路状态更新分组。
为了减少所发送分组的数量,OSPF采用选举指定路由器DR和备用的指定路由器BDR的方法。如图所示,假设这两台路由器被分别选举为DR和BDR,所有的非DR,BDR只与DR,BDR建立邻居关系。如图所示,
因此之前的邻居关系数量降低为2×(N-2),再加1。非DR,BDR之间不能直接交换信息,而必须通过DR,BDR进行交换。若DR出现问题,则由BDR顶替DR。实现DR和BDR的选举并不复杂,无非就是各路由器之间交换一些选举参数,例如路由器优先级、路由器ID,接口IP地址等,然后根据选举规则选出DR和BDR,这与交换机生成树协议,选举跟交换机类似,我们就要不再赘述了。
为了使OSPF协议能够用于规模很大的网络,OSPF把一个自治系统在划分为若干个更小的范围,称为区域
如图所示,这是一个规模很大的网络,我们将其划分成一个自制系统,在该自治系统内,所有路由器都使用OSPF协议,OSPF将该自治系统再划分成4个更小的区域,每个区域都有一个32比特的区域标识符,可以用点分十进制表示,例如主干区域的标识符必须为0,也可表示成点分10进制形式的0.0.0.0,主干区域用于联通其他区域,其他区域的标识符不能为0,且互不相同。
每个区域的规模不应太大,一般所包含的路由器不应超过200个,划分区域的好处就是把利用洪范法交换链路状态信息的范围局限于每一个区域,而不是整个自治系统,这样就减少了整个网络上的通信量。
如果路由器的所有接口都在同一个区域内,则该路由器称为区域内路由器。为了本区域可以和自治系统内的其他区域联通,每个区域都会有一个区域边界路由器,它的一个接口用于连接自身所在区域,另一个接口用于连接主干区域,
主干区域内的路由器称为主干路由器。我们也可以把区域边界路由器看作是主干路由器。
在主干区域内还要有一个路由器,专门和本自制系统外的其他自治系统交换路由信息,这样的路由器成为自治系统边界路由器。在本例中区域边界路由器R3向主干区域发送自己所在区域一的链路状态通告,向自己所在区域发送区域023的链路状态通告,区域边界路由器R4向主干区域发送自己所在区域二的链路状态通道,向自己所在区域发送区域013的链路状态通告,
区域边界路由器R7,向主干区域发送自己所在区域三的链路状态通告,向自己所在区域发送区域0,1,2的链路状态通道,采用分层次划分区域的方法,虽然使交换信息的种类增多了,同时也使OSPF协议更加复杂了,但这样做却能使每一个区域内部交换路由信息的通信量大大减小,因而使OSPF协议能够用于规模很大的自制系统中。
本节课的内容小结如下
# 4.6.4 边界网关协议BGP的基本工作原理
本节课,我们介绍边界网关协议BGP的基本工作源理。在之前的课程中我们已经介绍过了,因特网采用分层次的路由选择协议,内部网关协议这一类别的协议,用于自治系统内部的路由选择,典型的协议有路由信息协议RIP 和开放最短路径优先OSPF 我们已在之前的课程中介绍过他们的基本工作源理,他们都是设法使分组,在一个自治系统内部,尽可能有效的从源网络传输到目的网络,无需考虑自治系统外部其他方面的策略。
外部网关协议这一类别的协议用于自治系统之间的路由选择。典型的协议是边界网关协议BGP。在不同自治系统内,度量路由的代价可能不同,因此对于自治系统之间的路由选择,使用代价作为度量来寻找最佳路由是不可行的。
我们来举例说明,各自治系统的连接关系如图所示,其中自治系统AS1将时延作为度量,AS2将距离也就是跳数作为度量,AS3将链路带宽作为度量,那么AS4可以通过哪些路径到达AS5呢?
可以走这条路径,也就是说AS4可以通过1AS3到达AS5,
也可以走这条路径,也就是说AS4可以通过AS1AS2到达AS5,当然还可以有其他路径,我们就要不再一一列出了。
那么这些路径中哪一个是最佳路由呢?由于没有统一的路由度量,因此寻找最佳路由是无意义的。
自治系统之间的路由选择还必须考虑相关策略。例如我国国内的站点在互相传送数据报时,不应经过国外兜圈,特别是不要经过某些对我国的安全有威胁的国家,又例如自治系统AS4,要发送数据报给AS5,本来最好是依次经过S1S3,但是 AS3不愿意让这些数据报经过自己自治系统内的网络,因为这是那两个自治系统的事情,与我这个自治系统无关。而AS2愿意让某些相邻自治系统的数据报,通过自己的网络,只要支付相应的服务费用即可。由此可见,自治系统之间的路由选择协议,应当允许使用多种路由选择策略,这些策略包括政治、经济、安全等,他们都是由网络管理人员对每一个路由器进行设置的,但这些策略并不是自治系统之间的路由选择协议本身。
基于上述情况,边界网关协议BGP只能是力求寻找一条能够到达目的网络且比较好的路由,也就是不能兜圈子,而并非要寻找一条最佳路由
我们来举例说明,在配置BGP时,每个自治系统的管理员要选择至少一个路由器,作为该自治系统的BGP发言人,一般来说两个BGP发言人都是通过一个共享网络连接在一起的,而BGP发言人往往就是BGP边界路由器,不同自治系统的BGP发言人要交换路由信息,首先必须建立TCP连接,端口号为179,在此TCP连接上交换BGP报文,以建立BGP会话,利用BGP会话交换路由信息,例如增加新的路由或撤销过时的路由,以及报告出错的情况等,使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站或对等站。
BGP发言人除了运行BGP协议外,还必须运行自己所在自治系统所使用的内部网关协议,例如OSPF或RIP
BGP发言人交换网络可达性的信息,也就是要到达某个网络所要经过的一系列自治系统。当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略,从收到的路由信息中,找出到达各自治系统的较好的路由,也就是构造出树形结构,不存在环路的自治系统连通图。如图所示,这是自治系统A的某个BP发言人,构造出的自治系统联通图,
边界网关协议BGP适用于多级结构的因特网。这里我们给出一个BGP发言人交换路径向量的例子,自治系统AS2的BP发言人,通知主干网的BGP发言人,要到达网络N1、N2、N3和N4,可经过AS2。
主干网在收到这个通知后就发出通知,要到达网络N1、N2、N3和N4,可沿路径AS1AS2,这里的路径AS1、AS2称为路径向量。
自治系统AS3,收到这条路径向量信息后,如果AS3自身也包含在其中,则不能采用这条路径,否则会兜圈子。
接下来我们介绍BGP版本4中规定的4种报文,
打开报文用来与相邻的另一个BGP发言人建立关系,是通信初始化
更新报文,用来通告某一路由的信息,以及列出要撤销的多条路由
保活报文用来周期性的证实临站的连通性,
通知报文用来发送检测到的差错。
在BGP协议刚刚运行时,BGP的临站交换整个BGP路由表,但以后只需要在发生变化时更新有变化的部分,这样做对节省网络带宽和减少路由器的处理开销都有好处。
这是计算机专业考研全国统考计算机网络部分2013年提47的第3问,我们来一起分析一下图中的R1和R2,分别位于两个不同的。自治系统AS1和AS2中,自治系统之间需要使用外部网关协议EGP这一类协议,具体为边界网关协议BGP。目前使用最多的版本是BGP4,BGP4的报文,被封装在TCP报文段中进行传输。
再来看2017年的题37 答案是选项D 本题并没有什么计算过程和解答技巧,需要大家记住下图所示的封装关系即可。
将本节课的内容小结如下,需要说明的是BGP协议非常复杂,很多内容都超出了本系列课程的教学目标,因此不再深入讨论。有兴趣的同学可查阅RFC4271文档。