因特网的路由选择协议

因特网的路由选择协议

一、有关路由选择协议的几个基本概念

1.1.关于“最佳路由”

  • 不存在一种绝对的最佳路由算法。
  • 所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。
  • 实际的路由选择算法,应尽可能接近于理想的算法。
  • 路由选择是个非常复杂的问题
    • 它是网络中的所有结点共同协调工作的结果。
    • 路由选择的环境往往是不断变化的,而这种变化有时无法事先知道。

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

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

一般比较大型的网络,靠人力无法维护使用动态路由协议,比较小的局域网使用静态路由协议

1.3.分层次的路由选择协议

  • 因特网采用分层次的路由选择协议。
  • 因特网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。而所有这些路由器之间交换路由信息所需的带宽就会使因特网的通信链路饱和。

1.4.自治系统 AS(Autonomous System)

  • 自治系统 AS 的定义:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由选择协议用以确定分组在 AS之间的路由。
  • 现在对自治系统 AS 的定义是强调下面的事实:尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略

1.5.因特网有两大类路由选择协议

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

image-20200123113207717

自治系统之间的路由选择也叫做:域间路由选择(interdomain routing);
在自治系统内部的路由选择叫做:域内路由选择(intradomain routing) 。


二、内部网关协议 RIP(Routing Information Protocol)

2.1.特点

  • 路由信息协议 RIP 是内部网关协议属于动态路由协议, 内部网关协议(IGP)中最早得到广泛使用的协议(开放非标准协议)。
  • RIP 是一种分布式的基于距离向量的路由选择协议。
  • 仅和相邻路由器交换信息。
  • 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
  • 按固定的时间间隔交换路由信息(周期性广播),例如,每隔 30 秒。
  • RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录

2.2.“距离”的定义

  • 从一路由器到直接连接的网络的距离定义为 1。
  • 从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加 1。
  • RIP 协议中的“距离”也称为“跳数”(hop count),因为每经过一个路由器,跳数就加 1。
  • 这里的“距离”实际上指的是“最短距离”。
  • RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。
  • RIP 允许一条路径最多只能包含 15 个路由器。
  • “距离”的最大值为16 时即相当于不可达。可见 RIP 只适用于小型互联网。
  • RIP 不能在两个网络之间同时使用多条路由。RIP 选择一个具有最少路由器的路由(即最短路由),哪怕还存在另一条高速(低时延)但路由器较多的路由。

2.3.简化过程举例

image-20200123131427117

  • 网段2的PC1与网段1的PC0通信。

    数据包传输到路由器A处,下一跳可以是D,A就告诉D我连着1网段,然后D就记住了到1网段下一跳给A就行,并且经过1个路由器;

    再下一跳是E,D就告诉E我连着1网段,然后E记住了到1网段下一跳给D就行,并且经过2个路由器。

    再下一跳是F,E就告诉F我连着1网段,然后F记住了到1网段下一跳给E就行,并且经过3个路由器。

    再下一跳是C,F就告诉C我连着1网段,然后C记住了到1网段下一跳给F就行,并且经过4个路由器。最后数据包到达PC1。

    在A处下一跳也可以是B,以此类推只经过了2个路由器。目前为止C学到了从2网段到1网段有两条路径,分别需要经过2个或4个路由器,最后A保留C->B->A这条最佳路径。

  • 假如3处断了,B就不能周期性地告诉C到网段1怎么走了,于是经过4个路由器的路线C->F->E->D->A成为可用的主路径;当3处重新连接,C就会重新使用C->B->A这一路径。这就是动态路由协议的好处,不用手动添加路由表,路由器会自动根据网络变化动态选择最佳路径(由)。

2.4.为什么需要周期性广播?

image-20200123134057977

如图:如果仅广播一次,A告诉B到网段1给我就行,之后A宕机了,B却不知道仍然把从C来的到网段1的数据包传给A,造成错误;如果周期性广播B每30s呼叫一次A,多次呼叫A都无回复,B就认为A去世了并告诉C以后到网段1别走这条路了。

周期性广播交换路由信息确保了能够根据设备故障造成的网络变化来动态更新最佳路由。


三、内部网关协议OSPF (Open Shortest Path First)

3.1.OSPF 协议的基本特点

  • “开放”表明 OSPF 协议不是受某一家厂商控制,而是公开发表的。
  • “最短路径优先”是因为使用了 Dijkstra 提出的最短路径算法SPF
  • OSPF 只是一个协议的名字,它并不表示其他的路由选择协议不是“最短路径优先”。是分布式的链路状态协议

3.2.三个要点

  • 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。
  • 发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息
  • “链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)。
  • 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
  • 由于各路由器之间频繁地交换链路状态信息,因此所有的路由器最终都能建立一个链路状态数据库。
  • 这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的(这称为链路状态数据库的同步)。
  • OSPF 的链路状态数据库能较快地进行更新,使各个路由器能及时更新其路由表。OSPF 的更新过程收敛得快是其重要优点。

3.4.OSPF 的区域(area)

  • 为了使 OSPF 能够用于规模很大的网络,OSPF 将一个自治系统再划分为若干个更小的范围,叫作区域
  • 每一个区域都有一个 32 位的区域标识符(用点分十进制表示)。
  • 区域也不能太大,在一个区域内的路由器最好不超过 200 个。

image-20200127145403163

  • 划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,一个区域内的链路状态发生变化不影响其他区域,这就减少了整个网络上的通信量。
  • 在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。
  • OSPF 使用层次结构的区域划分。在上层的区域叫作主干区域(backbone area)。主干区域的标识符规定为0.0.0.0。主干区域的作用是用来连通其他在下层的区域。

3.5.OSPF 的特点

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

3.6.OSPF的基本操作流程

image-20200127150010492

3.7.OSPF 分组

image-20200127175225259

  • 类型1,问候(Hello)分组。
  • 类型2,数据库描述(Database Description)分组。
  • 类型3,链路状态请求(Link State Request)分组。
  • 类型4,链路状态更新(Link State Update)分组,用洪泛法对全网更新链路状态。
  • 类型5,链路状态确认(Link State Acknowledgment)分组。

3.8.OSPF 的其他特点

  • OSPF 还规定每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。
  • 由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多。
  • OSPF 没有“坏消息传播得慢”的问题,据统计,其响应网络变化的时间小于 100 ms。

3.9.指定的路由器(designated router)

  • 多点接入的局域网采用了指定的路由器的方法,使广播的信息量大大减少。
  • 指定的路由器代表该局域网上所有的链路向连接到该网络上的各路由器发送状态信息。

3.10.与RIP协议的区别

  • 相同点:都是开放式动态路由协议
  • 度量值为带宽,支持多区域,触发式更新(不以固定时间广播式更新)
  • 三个表:邻居表(Hello),链路状态表,计算路由表。

3.11.仿真配置OSPF


四、外部网关协议 BGP

  • BGP 较新BGP 是不同自治系统的路由器之间交换路由信息的协议。
  • 边界网关协议 BGP 只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路由。
  • 每一个自治系统的管理员要选择至少一个路由器作为该自治系统的“ BGP 发言人” 。

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

  • BGP 发言人往往就是 BGP 边界路由器,但也可以不是 BGP 边界路由器

  • 一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息。

  • 使用 TCP 连接能提供可靠的服务,也简化了路由选择协议。

  • 使用 TCP 连接交换路由信息的两个 BGP 发言人,彼此成为对方的邻站或对等站。

  • 不同的自治系统使用的可以是不同的动态/静态协议,可以是RIP也可以是OSPF 。

4.2.AS 的连通图举例

image-20200127185704098

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

4.3.BGP 发言人交换路径向量

图中主干网AS1连接两个自治系统AS2和AS3,它们分别连接两个区域。

image-20200127185858970

  • 自治系统 AS2 的 BGP 发言人通知主干网的 BGP 发言人:“要到达网络 N1, N2, N3 和 N4 可经过 AS2。”

image-20200127190119138

  • 主干网在收到AS2的通知以后就发出通知:“要到达网络N1,N2,N3,N4可沿路径AS1,AS2”。
  • 同理,主干网还可以发出通知:“要到达网络 N5, N6 和 N7 可沿路径(AS1, AS3)。”

4.4.BGP 协议的特点

  • BGP协议支持CIDR
  • BGP建立时,交换整个路由表但之后只交换变化部分。
  • BGP 协议交换路由信息的结点数量级是自治系统的数量级,这要比这些自治系统中的网络数少很多。
  • 每一个自治系统中 BGP 发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂。

4.5.BGP-4 共使用四种报文

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

4.6.BGP 报文具有通用的首部

image-20200210202320529


五、路由器在网际互连中的作用

5.1.路由器的结构

  • 路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。也就是说,将路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。
  • 下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。

5.2.典型的路由器的结构

image-20200210225930894

上图中的序号1,2,3分别表示物理层,数据链路层和网络层。可以看到路由器是在数据传输的网络层对数据报进行分组转发的。

5.3.路由器中的交换结构分类

  • 通过存储器:

image-20200210231339505

  • 通过总线:

image-20200210231356542

  • 通过互连网络:

image-20200210231450847

5.4.“转发”和“路由选择”的区别

  • 转发”(forwarding)就是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。
  • 路由选择”(routing)则是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。

路由表是根据路由选择算法得出的。而转发表是从路由表得出的。在讨论路由选择的原理时,往往不去区分转发表和路由表的区别。

5.5.路由器输入和输出端口对收到分组的处理

  • 输入端口:

数据链路层剥去帧首部和尾部后,将分组送到网络层的队列中排队等待处理。这会产生一定的时延,称为处理时延。

image-20200210230439302

  • 输出端口:将交换结构传送来的分组发送到线路。

交换结构传送过来的分组先进行缓存(排队)。数据链路层处理模块给分组加上数据链路层的首部和尾部,随后交给物理层,物理层处理完后发送到外部线路 。

image-20200210230842865

5.6.分组丢弃

  • 若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃
  • 由于路由器需要处理过多数据,导致输入或输出队列产生溢出是造成分组丢失的重要原因。
posted @ 2020-01-23 16:31  AhuntSun  阅读(2727)  评论(1编辑  收藏  举报