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的被选择