上一讲简单介绍了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的优点:

计网学习笔记十  Internet Routing Protocols-小白菜博客

对最后一点稍加补充:

单个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知道它的存在,就需要:

计网学习笔记十  Internet Routing Protocols-小白菜博客

这个BGP报文又被称为路由,一条路由的特征为NEXT-HOP、AS-PATH、prefix三个部分,根据算法的不同还会加上一个优先级。其中,NEXT-HOP信息是该路由到达目标AS前的最后一个路由器出端口的IP地址,AS-PATH是其经过的AS路径信息,prefix就是需要知道的子网前缀。

两种选择算法

我们先来看一个例子,比较两种BGP选择算法:

在这个例子中,从AS1到前缀x有两条路由信息,3d:AS3 x2a: AS2 AS3 x

烫手山芋算法

这是一个自私的算法!我们拿路由器1b来举例。1b收到所有路由信息后,检查路由信息上的NEXT-HOP有2a3d两个,便查阅本地AS内部路由选择信息,找到通往这两个端口分别的最小开销:在图中分别为2和3—>选择开销为2的路由器2a,将这个端口I的地址和前缀x组合起来为(x,I)加到自身的转发表中。可以看到这个算法只顾着自己AS内的最小开销,只想尽快把packet送出AS,而不顾总体上的AS路由,是非常自私的。

路由选择算法

这个算法需要将路由信息加上优先级。(注意只有iBGP信息会加上这个)这个优先级信息是本地配置的,即对于多条路由信息,本地的AS网络管理员会对其进行优先级的区分,以让他们根据自己的policy来进行路由(policy的详细介绍见书本5.4.5):

配好优先级后,具体实现步骤如下:

BGP总结

计网学习笔记十  Internet Routing Protocols-小白菜博客