计网学习笔记十 Internet Routing Protocols
上一讲简单介绍了routing和两种最小路径算法的使用,这节课讲了两种算法是如何糅合进协议中来实现具体使用的。
这一讲内容有AS的介绍,以及IGP和BGP协议。
Autonomous Systems
Internet具有的IP地址数量高达40亿..其中需要对20亿的地址做路由,这是非常可怕的事情!(根本存不下这么大的路由表)
Internet只是一个联合体,就像第一节说的有很多的ISP,他们互联起来组成一个大网,每个ISP独立网络的管理者希望控制自己内部的网络路由。所以,便产生了AS。
Autonomous Systems: Set of routers and networks managed by single ISP or large organization.
Hierarchical Routing
对路由器做一个区域上的聚合,称这个聚合为AS(自治系统);同一个AS内的路由器使用相同的路由协议进行路由,而从自治系统出去要经过网关(gateway)路由器,和其它网关进行对话。每个AS都分配了一个独一无二的16位或32位的AS number。(具体见RFC 1930)
AS内部使用common routing protocol(inter-AS routing),外部intra-AS routing;
对自治域的比喻:一个国家内的路由,内部路由是自己任意调度,外部需要海关进行全球协议性的沟通
ISP级别的互连太多了,所以需要peer center(互联中心),大家都把光缆拉到这里。(大公司为了获得更好的服务,往往将自己接入transit AS或者peering center)
Intra-AS and Inter-AS routing
IGP and EGP
IGP,内部网关协议,属于内部AS协议;需要内部信息;关注更多的是性能;
EGP,外部网关协议,属于外部AS协议;需要外部信息;很多时候关注的是可达性;会有较大因素受外界影响而改变,”Policy may dominate over performance“(即现在两个大AS之间的“政治策略”) 。
Common Protocols
IGP有RIP,OSPF,IGRP(思科私有协议);
EGP有BGP,BGP的重要程度堪比IP协议,它将所有的ISP粘合起来。
为什么需要BGP?
Link-state and distance-vector not effective for exterior gateway protocol.
DV连自己经过了哪几个AS都不知道,而LS的洪泛对这么大的网络是难以控制的。
所以EGP用的是PV(path vector)路由算法,抽象出来就是bellman-ford。"The most concern is the ASs passed through."而且EGP的运行不单单依据PV,还依据policy。
IGP
RIP
RIP用的是DV路由算法。Distance metric的标准是跳数或者是router端口中的queue长度;Distance vectors每隔30秒就以RIP update message的形式发送出去;180s判断超时,即链路断开;DV通告使用UDP,周期性重复;
RIP路由表由应用级进程routed (daemon)管理;
OSPF
OSPF用的是LS路由算法,取代了RIP;详见RFC 2328;
每台路由器都保存到邻居的本地链路状态列表;路由器每10秒通过flooding将更新后的状态信息(advertisement)发送到整个AS;OSPF的信息是在IP层上而不是UDP。
OSPF的优点:
对最后一点稍加补充:
单个AS被继续划分为小的Area(用一个32位的ID表示),路由器只知道当前area的拓扑,这样可以限制路由器的flooding范围;
OSPF中链路权值的设置如下:
两种协议的比较
BGP
具体标准参见:RFC 8271
BGP为由AS的需求而提出的协议:隐私(如隐藏拓扑)、自主性、自由选择AS间路由等。
BGP的行为可划分为两个步骤:
-
从邻居AS获取某个prefix的可达性信息;
-
对包含了可达性信息的众多条路由信息进行选择,选出“最好”的路由;
-
basic idea:
-
BGP信息要做的事情:
在进行路由选择之前,某个AS中的路由器A想要知道另一个AS中的一个子网的前缀,则需要使用iBGP连接和eBGP连接将该前缀信息进行通告。(注意一条BGP连接并不直接对应物理上的一条链路)如下图,如果AS3想让附近的AS知道它的存在,就需要:
这个BGP报文又被称为路由,一条路由的特征为NEXT-HOP、AS-PATH、prefix三个部分,根据算法的不同还会加上一个优先级。其中,NEXT-HOP信息是该路由到达目标AS前的最后一个路由器出端口的IP地址,AS-PATH是其经过的AS路径信息,prefix就是需要知道的子网前缀。
两种选择算法
我们先来看一个例子,比较两种BGP选择算法:
在这个例子中,从AS1到前缀x有两条路由信息,3d:AS3 x 和 2a: AS2 AS3 x。
烫手山芋算法
这是一个自私的算法!我们拿路由器1b来举例。1b收到所有路由信息后,检查路由信息上的NEXT-HOP有2a和3d两个,便查阅本地AS内部路由选择信息,找到通往这两个端口分别的最小开销:在图中分别为2和3—>选择开销为2的路由器2a,将这个端口I的地址和前缀x组合起来为(x,I)加到自身的转发表中。可以看到这个算法只顾着自己AS内的最小开销,只想尽快把packet送出AS,而不顾总体上的AS路由,是非常自私的。
路由选择算法
这个算法需要将路由信息加上优先级。(注意只有iBGP信息会加上这个)这个优先级信息是本地配置的,即对于多条路由信息,本地的AS网络管理员会对其进行优先级的区分,以让他们根据自己的policy来进行路由(policy的详细介绍见书本5.4.5):
配好优先级后,具体实现步骤如下: