网络层——路由选择协议

路由选择协议是讨论路由表中的路由是怎样得出来的。

基本概念

理想的路由算法

路由选择协议的核心就是路由算法,即需要何种算法来获得路由表中的各项目。

一个理想的路由算法有如下特点:

  • 算法必须是正确的和完整的。沿着各路由表所指引的路由,分组一定能够最终到达目的网络和目的主机。
  • 算法在计算上应简单。路由选择的计算不应使网络通信量增加太多的额外开销。
  • 算法应能适应通信量和网络拓扑的变化,要有自适应性。当网络中的通信量发生变化时,算法能自适应地改变路由以均衡各链路的负载。当某个或某些结点、链路发生故障不能工作,或者修理好了再投入运行时,算法也能及时地改变路由。
  • 算法应具有稳定性。在网络通信量和网络拓扑相对稳定的情况下,路由算法应收敛于一个可以接受的解,而不应使得出的路由不停地变化。
  • 算法应是公平的。路由选择算法应对所有用户(除对少数优先级高的用户)都是平等的。
  • 算法应是最佳的。路由选择算法应当能够找出最好的路由,使得分组平均时延最小而网络的吞吐量最大。

不存在一种绝对的最佳路由算法。所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。

实际的路由选择算法,应尽可能接近于理想的算法。

路由选择是个非常复杂的问题,它是网络中的所有结点共同协调工作的结果。路由选择的环境往往是不断变化的,而这种变化有时无法事先知道。

从路由算法的自适应性考虑

从路由算法能否随网络的通信量或拓扑自适应的进行调整变化划分有两类:

  • 静态路由选择策略——即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化。适用于简单的小网络。
  • 动态路由选择策略——即自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。适用于较复杂的大网络。

分层次的路由选择协议

互联网采用的路由选择协议主要是自适应的(即动态的)、分布式路由选择协议。

互联网采用分层次的路由选择协议原因:

  1. 互联网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。而所有这些路由器之间交换路由信息所需的带宽就会使互联网的通信链路饱和。
  2. 许多单位不愿意外界了解自己单位网络的布局细节和本部门所采用的路由选择协议(这属于本部门内部的事情),但同时还希望连接到互联网上。

为此,可以把整个互联网划分为许多小的自治系统。

自治系统 AS (Autonomous System)

自治系统 AS 的定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS 之间的路由。

尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。

互联网有两大类路由选择协议:

  • 内部网关协议 IGP(Interior Gateway Protocol),在一个自治系统内部使用的路由选择协议。目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。
  • 外部网关协议 EGP(External Gateway Protocol),若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。在外部网关协议中目前使用最多的是 BGP-4。

自治系统之间的路由选择也叫做域间路由选择,在自治系统内部的路由选择叫做域内路由选择。

互联网的路由选择协议

内部网关协议 RIP

路由信息协议 RIP(Routing Information Protocol) 是内部网关协议 IGP 中最先得到广泛使用的协议。

RIP 是一种分布式的、基于距离矢量算法的路由选择协议。使用跳数作为度量来衡量到达目的网络的距离。

RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。

RIP 距离定义:从一路由器到直接连接的网络的距离定义为 0;从一路由器到非直接连接的网络的距离定义为所经过的路由器数加 1;

RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。

RIP 允许一条路径最多只能包含 15 个路由器。因此,“距离”的最大值为 16 时即相当于不可达。可见 RIP 只适用于小型互联网。

RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。

工作原理

路由器启动时,路由表中只会包含直连路由。

运行 RIP 之后:

  1. 路由器会发送Request报文,用来请求邻居路由器的 RIP 路由。
  2. 运行 RIP 的邻居路由器收到该Request报文后,会根据自己的路由表,生成Response报文进行回复。
  3. 路由器在收到Response报文后,会将相应的路由添加到自己的路由表中。

RIP 网络稳定以后,每个路由器会周期性地向邻居路由器通告自己的整张路由表中的路由信息,默认周期为 30 秒。邻居路由器根据收到的路由信息刷新自己的路由表。

RIP协议度量——跳数

RIP 使用跳数作为度量值来衡量到达目的网络的距离。

在 RIP 中,路由器到与它直接相连网络的跳数为 0,每经过一个路由器后跳数加 1。为限制收敛时间,RIP 规定跳数的取值范围为 0~15 之间的整数,大于 15 的跳数被定义为无穷大,即目的网络或主机不可达。

路由更新原则

路由器从某一邻居路由器收到路由更新报文时,将根据以下原则更新本路由器的 RIP 路由表:

  1. 对于本路由表中已有的路由项,当该路由项的下一跳是该邻居路由器时,不论度量值将增大或是减少,都更新该路由项。度量值相同时只将其老化定时器清零。路由表中的每一路由项都对应了一个老化定时器,当路由项在 180 秒内没有任何更新时,定时器超时,该路由项的度量值变为不可达。
  2. 当该路由项的下一跳不是该邻居路由器时,如果度量值将减少,则更新该路由项。
  3. 对于本路由表中不存在的路由项,如果度量值小于 16,则在路由表中增加该路由项。
  4. 某路由项的度量值变为不可达后,该路由会在Response报文中发布四次(120 秒),然后从路由表中清除。

RIP 协议的三个特点

  • 仅和相邻路由器交换信息。
  • 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
  • 按固定的时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。

RIPV1和RIPv2

RIP 分为两个版本。RIPv1 使用本地广播地址255.255.255.255发布路由信息,默认的路由更新周期为 30s,持有时间为 180s。也就是说,RIP 路由器每 30s 向所有邻居发送一次路由更新报文,如果在 180s 之内没有从某个邻居接收到路由更新报文,则认为该邻居已经不存在了。这时如果从其他邻居收到了有关同一目标的路由更新报文,则用新的路由信息替换已失效的路由表项,否则,对应的路由表项被删除。

RIP 以跳步计数来度量路由费用,显然这不是最好的度量标准。例如,若有两条到达同一目标的连接,一条是经过两跳的 10M 以太网连接,另一条是经过一跳的 64k WAN 连接,则 RIP 会选取 WAN 连接作为最佳路由。在 RIP 协议中,15 跳是最大跳数,16 跳是不可到达网络,经过 16 跳的任何分组将被路由器丢弃。

RIPv1 是有类别的协议,这意味着配置 RIPv1 时必须使用 A、B 或 C 类 IP 地址和子网掩码,例如不能把子网掩码255.255.255.0用于 B 类网络172.16.0.0。对于同一目标,RIP 路由表项中最多可以有 6 条等费用的通路,虽然默认是 4 条。RIP 可以实现等费用通路的负载均衡,这种机制提供了链路冗余功能,以对付可能出现的连接失效,但是 RIP 不支持不等费用通路的负载均衡。

RIPv2 基本上还是一个距离矢量路由协议,但是有 3 个方面的改进。首先是它使用组播而不是广播来传播路由更新报文,并且采用了触发更新机制来加速路由收敛,即出现路由变化时立即向邻居发送路由更新报文,而不必等待更新周期是否到达。其次是 RIPv2 是一个无类别的协议,可以使用可变长子网掩码(VLSM),也支持无类别域间路由(CIDR),这些功能使得网络的设计更具伸缩性。第3个增强是 RIPv2 支持认证,使用经过散列的口令字来限制路由更新信息的传播。

距离向量算法

路由器收到相邻路由器(其地址为 X)的一个 RIP 报文:

  1. 先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。
  2. 对修改后的 RIP 报文中的每一个项目,重复以下步骤:
  • 若项目中的目的网络不在路由表中,则把该项目加到路由表中。
  • 否则,若下一跳字段给出的路由器地址是同样的,则把收到的项目替换原路由表中的项目。
  • 否则,若收到项目中的距离小于路由表中的距离,则进行更新,
  • 否则,什么也不做。
  1. 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为 16(表示不可达)。
  2. 返回。

距离向量算法的要点是这样的:设X是结点 A 到 B 的最短路径上的一个结点。若把路径 A→B 拆成两段路径 A→X 和 X→B,则每一段路径 A→X 和 X→B 也都分别是结点 A 到 X 和结点 X 到 B 的最短路径。

RIP 协议让互联网中的所有路由器都和自己的相邻路由器不断交换路由信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的(即跳数最少)。

虽然所有的路由器最终都拥有了整个自治系统的全局路由信息,但由于每一个路由器的位置不同,它们的路由表当然也应当是不同的。

已知路由器 R6 有表a所示的路由表。现在收到相邻路由器 R4 发来的路由更新信息。试更新路由器 R6 的路由表。


RIP 协议的报文格式

RIP 报文封装在 UDP 数据报中发送,占用端口号 520。RIP 报文由首部和路由部分组成。

RIP 报文中的路由部分由若干个路由信息组成。每个路由信息需要用 20 个字节。一个 RIP 报文最多可包括 25 个路由,因而 RIP 报文的最大长度是4+20x25=504字节。如超过,必须再用一个 RIP 报文来传送。

RIP 环路问题

RIP 协议特点:好消息传播得快,坏消息传播得慢。

RIP 存在的一个问题:当网络出现故障时,要经过比较长的时间 (例如数分钟) 才能将此信息传送到所有的路由器。






### RIP 协议的优缺点 优点:开销较小,易于配置、管理和实现。 缺点: * RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)。这使得 RIP 协议不适于大型网络。 * 路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。 * “坏消息传播得慢”,使更新过程的收敛时间过长。

内部网关协议 OSPF

开放最短路径优先 OSPF(Open Shortest Path First)是为克服 RIP 的缺点开发出来的。“开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。“最短路径优先”是因为使用了最短路径算法 SPF。

采用分布式的链路状态协议(link state protocol)。

注意:OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。

三个要点

  1. 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。这就是路由器通过所有输出端口向所有相邻的路由器发送信息。而每一个相邻路由器又再将此信息发往其所有的相邻路由器(但不再发送给刚刚发来信息的那个路由器)。这样,最终整个区域中所有的路由器都得到了这个信息的一个副本。
  2. 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。所谓”链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”。
  3. 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。

链路状态数据库

由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。

这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。因此,每一个路由器都知道全网共有多少个路由器,以及哪些路由器是相连的,其代价是多少,等等。每一个路由器使用链路状态数据库中的数据,构造出自己的路由表。

OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。

OSPF 的更新过程收敛得快是其重要优点。

OSPF 的区域

为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫做区域。

每一个区域都有一个 32 位的区域标识符(用点分十进制表示)。

区域也不能太大,在一个区域内的路由器最好不超过 200 个。

划分区域

OSPF 划分为两种不同的区域

划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。

在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。

为了使每一个区域能够和本区域以外的区域进行通信,OSPF 使用层次结构的区域划分。

在上层的区域叫做主干区域。主干区域的标识符规定为0.0.0.0。主干区域的作用是用来连通其他在下层的区域。

其他区域来的信息都由区域边界路由器进行概括。路由器 R3、R4、R7 都是区域边界路由器,而显然,每一个区域至少应当有一个区域边界路由器。在主干区域内的路由器叫做主干路由器,如 R3,R4,R5,R6和R7。一个主干路由器可以同时是区域边界路由器,如 R3,R4 和 R7。在主干区域内还要有一个路由器专门和本自治系统外的其他自治系统交换路由信息。这样的路由器叫做自治系统边界路由器(R6)。

OSPF 不用 UDP 而是直接用 IP 数据报传送(其 IP 数据报首部的协议字段值为 89)。

OSPF 构成的数据报很短。这样做可减少路由信息的通信量。另一好处是可以不必将长的数据报分片传送。分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。

OSPF 分组使用 24 字节的固定长度首部,分组的数据部分可以是五种类型分组中的一种。下面简单介绍 OSPF首部各字段的意义。

  1. 版本:当前的版本号是 2。
  2. 类型:可以是五种类型分组中的一种。
  3. 分组长度:包括 OSPF 首部在内的分组长度,以字节为单位。
  4. 路由器标识符:标志发送该分组的路由器的接口的IP地址。
  5. 区域标识符:分组属于的区域的标识符
  6. 检验和:用来检测分组中的差错。
  7. 鉴别类型:目前只有两种,0(不用)和 1(口令)。
  8. 鉴别:鉴别类型为 0 时就填入 0,鉴别类型为 1 则填入 8 个字符的口令。

除了以上的几个基本特点外,OSPF 还具有下列的一些特点∶

  • OSPF 对不同的链路可根据 IP 分组的不同服务类型而设置成不同的代价。因此,OSPF 对于不同类型的业务可计算出不同的路由。
  • 如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这叫做多路径间的负载平衡。
  • 所有在 OSPF 路由器之间交换的分组都具有鉴别的功能。因而保证了仅在可信赖的路由器之间交换链路状态信息。
  • 支持可变长度的子网划分和无分类编址 CIDR。
  • 由于网络中的链路状态可能经常发生变化,因此 OSPF 让每一个链路状态都带上一个 32 位的序号,序号越大状态就越新。

OSPF 的五种分组类型

  • 类型1,问候 (Hello) 分组,用来发现和维持邻站的可达性。
  • 类型2,数据库描述(Database Description)分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
  • 类型3,链路状态请求(Link State Request)分组,向对方请求发送某些链路状态项目的详细信息。
  • 类型4,链路状态更新(Link State Update)分组,用洪泛法对全网更新链路状态。路由器使用这种分组将其链路状态通知给邻站。
  • 类型5,链路状态确认(Link State Acknowledgment)分组,对链路更新分组的确认。

OSPF 规定,每两个相邻路由器每隔 10 秒钟要交换一次问候分组。这样就能确知哪些邻站是可达的。对相邻路由器来说,”可达”是最基本的要求,因为只有可达邻站的链路状态信息才存入链路状态数据库(路由表就是根据链路状态数据库计算出来的)。在正常情况下,网络中传送的绝大多数 OSPF 分组都是问候分组。若有 40 秒钟没有收到某个相邻路由器发来的问候分组,则可认为该相邻路由器是不可达的,应立即修改链路状态数据库,并重新计算路由表。

其他的四种分组都是用来进行链路状态数据库的同步。所谓同步就是指不同路由器的链路状态数据库的内容是一样的。两个同步的路由器叫做”完全邻接的”路由器。不是完全邻接的路由器表明它们虽然在物理上是相邻的,但其链路状态数据库并没有达到一致。

OSPF 的基本操作

当一个路由器刚开始工作时,它只能通过问候分组得知它有哪些相邻的路由器在工作,以及将数据发往相邻路由器所需的”代价”。如果所有的路由器都把自己的本地链路状态信息对全网进行广播,那么各路由器只要将这些链路状态信息综合起来就可得出链路状态数据库。但这样做开销太大,因此 OSPF 采用下面的办法。

OSPF 让每一个路由器用数据库描述分组和相邻路由器交换本数据库中已有的链路状态摘要信息。摘要信息主要就是指出有哪些路由器的链路状态信息、(以及其序号)已经写入了数据库。经过与相邻路由器交换数据库描述分组后,路由器就使用链路状态请求分组,向对方请求发送自己所缺少的某些链路状态项目的详细信息。通过一系列的这种分组交换,全网同步的链路数据库就建立了。

在网络运行的过程中,只要一个路由器的链路状态发生变化,该路由器就要使用链路状态更新分组,用洪泛法向全网更新链路状态。

设路由器 R 用洪泛法发出链路状态更新分组。图中用一些小的箭头表示更新分组。第一次先发给相邻的三个路由器。这三个路由器将收到的分组再进行转发时,要将其上游路由器除外。可靠的洪泛法是在收到更新分组后要发送确认(收到重复的更新分组只需要发送一次确认)。图中的空心箭头表示确认分组。

为了确保链路状态数据库与全网的状态保持一致,OSPF 还规定每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。

由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。

OSPF 没有“坏消息传播得慢”的问题,其响应网络变化的时间小于 100 ms。

N个路由器连接在一个以太网上,则每个路由器要向其他(N -1)个路由器发送链路状态信息,因而共有N(N-1)个链路状态要在这个以太网上传送。OSPF 协议对这种多点接入的局域网采用了指定的路由器的方法,使广播的信息量大大减少。指定的路由器代表该局域网上所有的链路向连接到该网络上的各路由器发送状态信息。

外部网关协议 BGP

BGP 是不同自治系统的路由器之间交换路由信息的协议。

BGP 较新版本是BGP-4。可以将 BGP-4 简写为 BGP。

互联网的规模太大,使得自治系统之间路由选择非常困难。对于自治系统之间的路由选择,要寻找最佳路由是很不现实的。

当一条路径通过几个不同 AS 时,要想对这样的路径计算出有意义的代价是不太可能的。比较合理的做法是在 AS 之间交换“可达性”信息。

自治系统之间的路由选择必须考虑有关策略。由于相互连接的网络的性能相差很大,根据最短距离(即最少跳数)找出来的路径,可能并不合适。也有的路径的使用代价很高或很不安全。有一种情况,如自治系统 AS1 要发送数据报给自治系统 AS2,本来最好是经过自治系统 AS3。但 AS3 不愿意让这些数据报通过本自治系统的网络,因为”这是他们的事情,和我们没有关系。”但另一方面,自治系统 AS3 愿意让某些相邻自治系统的数据报通过自己的网络,特别是对那些付了服务费的某些自治系统更是如此。因此,自治系统之间的路由选择协议应当允许使用多种路由选择策略。这些策略包括政治、安全或经济方面的考虑。这些策略都是由网络管理人员对每一个路由器进行设置的,但这些策略并不是自治系统之间的路由选择协议本身。

因此,边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。

BGP 采用了路径向量路由选择协议。

每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人”。

一般说来,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往就是 BGP 边界路由器,但也可以不是 BGP 边界路由器。

一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接(端口号为 179),然后在此连接上交换 BGP 报文以建立 BGP 会话,利用 BGP 会话交换路由信息,如增加了新的路由,或撤销过时的路由,以及报告出差错的情况等等。

使用 TCP 连接能提供可靠的服务,也简化了路由选择协议。使用 TCP 连接交换路由信息的两个 BGP 发言人,彼此成为对方的邻站或对等站。

BGP 发言人和自治系统 AS 的关系:

每一个 BGP 发言人除了必须运行 BGP 协议外,还必须运行该自治系统所使用的内部网关协议,如 OSPF 或 RIP。

BGP 所交换的网络可达性的信息就是要到达某个网络所要经过的一系列 AS。

当 BGP 发言人互相交换了网络可达性的信息后,各 BGP 发言人就根据所采用的策略从收到的路由信息中找出到达各 AS 的较好路由。


自治系统 AS2 的 BGP 发言人通知主干网 AS1 的 BGP 发言人:“要到达网络 N1、N2、N3 和 N4 可经过 AS2。” 主干网在收到这个通知后,就发出通知∶”要到达网络N1、N2,N3 和 N4 可沿路径(AS1,AS2)。”

主干网还可发出通知:“要到达网络 N5、N6 和 N7 可沿路径(AS1, AS3)。”

BGP 协议的特点

BGP 协议交换路由信息的结点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多。

每一个自治系统中 BGP 发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂。

BGP 支持 CIDR,因此 BGP 的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。由于使用了路径向量的信息,就可以很容易地避免产生兜圈子的路由。如果一个BGP 发言人收到了其他 BGP 发言人发来的路径通知,它就要检查一下本自治系统是否在此通知的路径中。如果在这条路径中,就不能采用这条路径(因为会兜圈子)。

在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。

BGP-4 共使用四种报文:

  • 打开 (OPEN) 报文,用来与相邻的另一个 BGP 发言人建立关系。
  • 更新 (UPDATE) 报文,用来发送某一路由的信息,以及列出要撤消的多条路由。
  • 保活 (KEEPALIVE) 报文,用来确认打开报文和周期性地证实邻站关系。
  • 通知 (NOTIFICATION) 报文,用来发送检测到的差错。

若两个邻站属于两个不同 AS,而其中一个邻站打算和另一个邻站定期地交换路由信息,这就应当有一个商谈的过程(因为很可能对方路由器的负荷已很重因而不愿意再加重负担)。因此,一开始向邻站进行商谈时就必须发送OPEN报文。如果邻站接受这种邻站关系,就用KEEPALIVE报文响应。这样,两个 BGP 发言人的邻站关系就建立了。

一旦邻站关系建立了,就要继续维持这种关系。双方中的每一方都需要确信对方是存在的,且一直在保持这种邻站关系。为此,这两个 BGP 发言人彼此要周期性地交换KEEPALIVE报文(一般每隔30秒)。KEEPALIVE报文只有 19 字节长(只用 BGP 报文的通用首部),因此不会造成网络上太大的开销。

UPDATE报文是 BGP 协议的核心内容。BGP 发言人可以用UPDATE报文撤销它以前曾经通知过的路由,也可以宣布增加新的路由。撤销路由可以一次撤销许多条,但增加新路由时,每个更新报文只能增加一条。BGP 可以很容易地解决距离向量路由选择算法中的”坏消息传播得慢”这一问题。当某个路由器或链路出故障时,由于 BGP 发言人可以从不止一个邻站获得路由信息,因此很容易选择出新的路由。距离向量算法往往不能给出正确的选择,是因为这些算法不能指出哪些邻站到目的站的路由是独立的。

BGP 报文具有通用首部,其长度为 19 字节。通用首部分为三个字段。标记字段为 16 字节长,用来鉴别收到的 BGP 报文(这是假定将来有人会发明出合理的鉴别方案)。当不使用鉴别时,标记字段要置为全 1。长度字段指出包括通用首部在内的整个 BGP 报文以字节为单位的长度,最小值是 19,最大值是 4096。类型字段的值为 1 到 4,分别对应于四种 BGP 报文中的一种。

OPEN报文共有 6 个字段,即

  • 版本(1 字节,现在的值是 4)
  • 本自治系统号(2 字节,使用全球唯一的 16 位自治系统号,由 ICANN 地区登记机构分配)
  • 保持时间(2 字节,以秒计算的保持为邻站关系的时间)
  • BGP 标识符(4 字节,通常就是该路由器的 IP 地址)
  • 可选参数长度(1 字节)
  • 可选参数。

UPDATE报文共有 5 个字段,即

  • 不可行路由长度(2 字节,指明下一个字段的长度)
  • 撤销的路由(列出所有要撤销的路由)
  • 路径属性总长度(2 字节,指明下一个字段的长度)
  • 路径属性(定义在这个报文中增加的路径的属性)
  • 网络层可达性信息 NLRI (Network Layer Reachability Information)。

最后这个字段定义发出此报文的网络,包括网络前缀的位数、IP 地址前缀。

KEEPALIVE报文只有 BGP 的 19 字节长的通用首部。

NOTIFICATION报文有3个字段,即差错代码(1 字节)、差错子代码(1 字节)和差错数据(给出有关差错的诊断信息)。

打赏
  • Copyrights © 2017-2023 WSQ
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信