TCP-IP-part11-路由协议

前言

TCP/IP相关内容第十一部分,包含:

  • 路由控制
  • 路由算法
  • RIP
  • OSPF
  • BGP
  • MPLS

一、路由控制

路由控制即路由表制作的过程。路由控制分为静态动态两个类型。静态路由是事先设置好路由信息并固定不再更改。而动态路由是让控制信息在路由协议执行过程中自动设置。

静态路由通常由使用者手工操作完成。其缺点在于管理者负担大,需要对所有路由器进行维护,且发生故障时无法自动绕过。动态路由只需设置好路由协议,在新增网络的时候只需设置一个路由器而不用更改所有路由器,减少管理员负担。且网络发生故障时会绕过节点。缺点是交换路由信息给网络带来负荷。

动态路由的基础是路由器给相邻的路由器发送自己已知的网络连接信息,并不断依次传播。直至整个网络都了解之后即制作完成路由表。

自治系统(AS)或路由选择域,是指一个制定自己的路由策略的小型单位,ISP、区域网络都是典型的AS。在AS内部,一组路由器会被制定同样的路由协议、度量,路由范围不会离开AS,其对外接口是统一的,通过接口与各个AS相连。AS内部信息对外部是屏蔽的。

AS内部动态路由的协议为:内部网关协议IGP,包括RIP(适用于小范围)、OSPF(适用于大范围)。AS间的路由控制为:外部网关协议EGP,包括BGP

二、路由算法

路由算法分为两类:距离向量算法(DV)和链路状态算法(LS)。

1、距离向量算法

根据距离(代价——经过的路由器个数)和方向决定路由控制。路由器之间可以互换目标网络的方向及距离的相关信息,并以这些信息为基础制作路由控制表。这种方法弊端在于获得稳定路由信息之前可能要耗费很多时间。且极易发生路由循环问题。

2、链路状态算法

路由器在了解网络整体连接状态的基础上生成路由控制表。每个路由器必须保持同样的信息,因此每一台路由器总能够保持正确的路由信息、进行稳定的路由选择。付出的代价就是如何才能从网络代理获取路由信息表。当网络结构复杂时,信息处理非常昂贵。

3、主要路由协议

协议 下一层协议 方式 范围
RIP UDP 距离向量 AS内
OSPF IP 链路状态 AS内
BGP TCP 路径向量 AS间

三、RIP协议

广泛应用于LAN,在UNIX系统上有守护进程。

RIP规定每个路由器(AS内的)每隔30s向邻居发送一次距离方向信息,记录着自己到所有目的网络的距离(注意不是路由器)和下一跳路由器。收到邻居的路由信息会更新自己的路由信息并制作路由表。目的网络不可达的距离将标记为16(毒性逆转)。当路由器在6个周期(180s)都收不到邻居发来的信息时,将标记所有通过此路由器到达的目的网络(注意不是路由器)为不可达(距离16)。

更新时会走距离小的路由,若距离相等,可以随机轮换选择。

RIP中存在的问题是坏消息传的慢。当某网络发生故障不可达,由于路由器更新的滞后性会导致无限计数问题。采用最长距离16跳可以从时间上控制,使多次更新后收敛发现故障。通常采用毒性逆转好触发更新计数,当路由信息变化时不再是等待30s而是立刻发送出去,防止错误信息被发送出来。这样可以更快的收敛。

OSPF是不会出现无限计数的问题。因为所有路由器所知道的链路状态信息都是一致的,某处断开了全网都能立刻知道,并制定合适的路由策略。不像RIP只有断开网络连接的一个路由器知道网络不可达,要通知所有的路由器收敛时间很长。

RIP2是改良后的RIP协议,使用多播(RIP用广播),支持子网掩码(类似OSPF)、路由选择域(类似OSPF)、身份验证秘钥(类似OSPF)、外部路由标志。

四、OSPF协议

OSPF是一种链路状态型路由协议,网络中即使有环路也能够进行稳定的路由。其支持子网掩码,支持区域路由。

路由器之间交换链路状态生成的网络拓扑信息,包括某网络连接着哪些路由器,某个路由器连接着哪些网络,并且可以手动给每条链路手动赋予一个权重,然后路由器根据这个带权的图,通过Dijkstra算法得到任两点的最短路径。

OSPF中可分为5中类型的包:hello、DBD数据库描述(会相互发送确认版本)、LSR链路状态请求、LSU链路状态更新、LSACK。

hello包是用来确认邻居路由器的,会不断向邻居发,用来建立邻居关系。若超时(重发第四次:40s)则宣告邻居断开,链路状态(LSA)改变,此时这个路由器需要发送LSU告知自己的邻居链路状态的变化,LSU中包含具体网络LSA(哪个网络连着哪些路由器)和路由器LSA(某个路由器连接着哪些网络)两个通告,路由器收到通告后修改自己的链路状态数据库,并逐渐泛洪至所有路由器,路由器收到后用LASK确认。另一方面,当hello包发现新的路由器接入,链路状态也会发生变化,需要发送LSU泛洪链路信息。而新来的路由器从发来的DBD包中了解到最新的链路信息后,意识到自己需要更新,因此发送LSR包给邻居,邻居会返回LSU告知LSA,新人再返回LSACK。

LSU会在两种情况下发送:

  1. 通过hello包发现网络变化,自己更新了LSA后通过LSU泛洪告知所有人。
  2. 邻居通过发来的DBD发现自己的链路状态数据库需要更新会发送LSR请求,必须响应邻居发来的LSR返回LSU。

OSPF的缺点在于网络规模越大,算法的处理时间越长,对CPU和内存消耗越大。

为减少计算负荷,OSPF引入区域的概念,一个AS内可以拥有多个区域。拥有多个区域的AS必须要有一个主干区域,所有区域必须都与这个主干区域相连接。因此会出现有四种路由器:

  1. 区域边界路由器:连接区域和主干区域的路由器。
  2. 内部路由器:只在区域内部的路由器。
  3. 主干路由器:只在主干区域内的路由器。
  4. AS边界路由器:与外部连接的路由器,可以是内部路由器,也可以是主干路由器。

每个区域内的路由器只持有本区域内的链路状态数据库,关于区域之外的路径信息,只能从边界路由器那里获知它们的距离,网络LSA和路由器LSA都不了解。区域边界路由器也不会把区域内的链路状态信息发给其他区域,同样只发送自己到区域内路由器的距离。如此区域内的路由器可以减少计算量。

当需要向区域外的网络发送时,若区域出口的区域边界路由器只有一个(末端路由),则不需要比较其他信息,表项统统设为此路由器即可。而多个区域边界路由器时就需要选出到目标网络更近的路径的路由器了。

五、BGP协议

BGP协议即边界网关协议,属于EGP外部网关协议,用于ISP之间相互连接。BGP、RIP、OSPF共通工作完成路由控制。

BGP的最终路由控制表也是由网络地址和下一站路由器的IP地址,这个表是路径信息访问列表,根据所要经过的AS个数进行路由控制最终生成的。每个自治系统(AS)会分配一个16比特的AS编号。BGP根据这个编号进行路由控制。每个AS内部的链路状态信息对于外部是未知的(技术、政治原因),其拥有一个AS代表(BGP扬声器),数据包只能通过BGP扬声器进入或离开AS,且各个AS通过它来交换BGP路由控制信息,告诉对方自己与哪些AS相连可达。AS需要签署合约再进行连接。合约规定了哪些AS可以作为哪些连接的中转等信息。

BGP是路径向量协议

AS间的BGP扬声器建立连接(TCP)之后用EBGP协议交换BGP信息。在同一个AS内的多个BGP扬声器建立连接(TCP)之后用IBGP协议交换BGP信息。BGP基于AS之间的合约进行数据包的转发。在符合合约的规定下,BGP一般选择AS数最少的路径。在通信前发送BGP数据包,AS据此生成一个中途经过所有AS的编号列表,即AS路径信息访问表。它不仅包含了转发方向、距离,还包含了路径,因此是路径向量型协议有了路径,就可以检测出环路,避免无限计数问题BGP扬声器根据路径信息访问列表生成路由表

BGP数据包是TCP报文,端口号179,只有BGP扬声器有应用程序去解析它,得到路径信息访问列表,更新路由表。

六、MPLS

“多协议标记交换”技术。数据包在进入MPLS网络时,边缘路由器会对每个IP包打上标记,MPLS网络内的标记交换路由器会根据标记进行转发,而不是IP地址。出网络时删除标记。

MPLS网络内实现路由功能的路由器叫做标记交换路由器,在网络边界对数据包追加和删除标记的路由器叫标记边缘路由器。附加标记有两种方式,一种是如果数据链路首部包含标记信息,则直接映射。一种是数据链路不包含标记信息(以太网),则追加一个全新的32比特垫片头,其中20比特是标记值,8比特TTL。垫片头被加在IP首部和数据链路首部之间。其会在每次转发时更换

IP包在进入MPLS网络根据其IP地址打上标记时,它的路径就已经设定好了,即标记交换路径LSP。MPLS内转发类似路由表,根据标签确定路径,并在每次转发更换一次标签。标记的分配和LSP的设置是根据下游(出mpls网络的地方)的标记边缘路由器的路由表分配标记,然后通告给上游的各个标记交换路由器来分配标记信息。然后最上游的路由器(进入MPLS网络的地方)设置这个方向的LSP。

MPLS的优点

第一个是转发速度快,不需要用IP地址最长匹配路径,而是用固定长度标记信息,处理更加简单。

第二个是利用标记生成虚拟路径。

您的支持是我创造源源不断地动力