Dzming.Li

网络层

4.5 路由协议

4.5.1 自治系统

各种各样的算法都需要在路由器之间交换网络信息,当网络的规模大到一定程度,会极大的消耗带宽和时间,难以收敛。而且个个组织也通常有自治性的需要,规定所有网络用一种算法并不现实。

我们会按照组织边界,管理边界或者技术边界等把网络分为多个自治系统(AS),每个AS内路由器使用相同的协议,我们让网关路由器负责的负责与其他自治系统交换路由可达信息。

一个AS并不一定是一个网络。相反,它可以有宣告多个IP前缀。

4.5.2 域内路由与域间路由

自治系统之间的路由被称为域间路由或内部网关协议,也就是IGP,自治系统内部的路由被称为域内路由,也就是EGP。

4.5.3 RIP路由协议

RIP是最早的IGP

RIP使用DV算法,度量跳数,也就是每条链路权值均为1

RIP封装到UDP中传输。

在RIP中,相邻路由器通过RIP响应报文来交换距离向量,也称为RIP通告,交换频率约为30s一次

RIP被限制在两点间最短距离不超过15的AS间使用,因为距离16在RIP中被视作无穷大。

超过RIP如果超过180s还没收到邻居的信息,则视为不可达。

4.5.4 OSPF路由协议

与RIP不同,OSPF的权值不只是跳数,也可以是链路带宽

OSPF报文直接封装到IP数据报中进行传输。

OSPF有以下相较于RIP的优点。

  • 支持多播路由

    也有一些缺点:

  • 对路由器处理器要求高:
  • 占用一定带宽: 因为需要频繁的发送和应答广播信息

4.5.5 BGP路由协议

BGP是Internet事实上的EGP。BGP通过179端口建立的TCP实现。

BGP协议非常非常复杂,暂且不要去思考一个子网中为什么需要多台BGP路由器,以及非网关的BGP路由器等等问题,教科书不要求我们掌握细节。所以我们只要记住下面的基本概念即可。

BGP要求在每个系统内指定对应的路由器作为BGP路由器,而BGP路由器之间并不是发现的,而是网络管理员会选择让哪些合适的路由器。这些BGP路由器通过IGP协议把路由表信息传播到普通的路由器。

一个AS内部的多个BGP使用内部BGP会话(记为iBGP)来彼此交换子网可达性信息。

通常来说eBGP会寻找相邻的路由器交换信息。

BGP有四类报文

  • OPEN:开启BGP连接,也就是紧随着TCP握手之后进行
  • UPDATE
  • KEEPALIVE:即使没有新的更新,也要发保活消息,不然对方不知道自己是否下线了。
  • NOTIFICATION:用来报错,发了NOTIFICATION之后BGP连接就终止了。

你可能会好奇都有TCP连接了干嘛还要维护自己的open和keepalive机制呢。因为负责TCP的是操作系统中的TCP协议栈,就算它没问题,BGP应用程序本身可能是有问题的。所以高层协议必须总是建立自己的连接机制。

在使用BGP的网络中,每个AS都有一个全局唯一的自治系统号ASN作为AS的表示。

BGP UPDATE消息时包含两类内容

  • 前缀
  • 属性

前缀加上属性通常称为一条路由。 其中属性又包括

  • AS-PATH:到达某子网需要遍历的AS集合
  • NEXT-HOP:一个开始某AS-PATH的路由器接口。

    我们举个例子,一个最简单的三个AS1,AS2,AS3,A首先会发送自己的网络前缀,然后把自己的ASN加上入到这个前缀的AS-PATH里,然后发给B然后B收到之后会把自己的ASN加入AS-PATH之前,然后AS2又发给AS3,现在AS3知道了有了(AS2,AS1)这条路径可以到AS1的子网前缀,对于AS2来说,它收到的next-hop是就是AS1面向AS2的网关的出口地址,而AS2转发给AS3的时候,无论是AS1还是AS2的子网的next-hop都会是AS2面向AS3的网关的出口地址

存的路由器采用以下优先级过滤路由:

  • AS网络的管理员设置的本地偏好值
  • 本地偏好值相同,AS-PATH最短
  • AS-PATH相同,具备最近NEXT-HOP的被选择