AS与BGP

AS

AS(自治系统;Autonomous System)。一个自治系统就是处于一个管理机构控制之下的路由器和网络群组。它可以是一个路由器直接连接到一个LAN上,同时也连到Internet上;它可以是一个由企业骨干网互连的多个局域网。在一个自治系统中的所有路由器必须相互连接,运行相同的路由协议,同时分配同一个自治系统编号。

AS 号码划分为公有 AS 和私有 AS,公有 AS 的范围是 1-64511,私有 AS 范围是 64512-65534;公有 AS 只能用于互联网,并且全球唯一,不可重复;而私有 AS 可以在得不到合法 AS 的企业网络使用,可以重复:

image-20220913200830074

BGP

BGP(Border Gateway Protocol)属于外部网关路由协议,可以实现自治系统间无环路的域间路由。

BGP是沟通Internet广域网的主用路由协议,例如不同省份、不同国家之间的路由大多要依靠BGP协议。

BGP可分为IBGP(Internal BGP, AS内部的路由)和EBGP(External BGP, AS之间的路由)。

image-20220913200224933

BGP的工作原理如下,假设有四个AS, 它们之间的拓扑如下:

image-20240608164617912

初始路由表如下,每个AS只维护了自己的网段的路由:

image-20240608164754882

通过与相邻的AS进行通讯,学习到了到相邻AS的路由:

image-20240608164928558

AS 100(10.10.0.1)并不直接与AS 300有直接网络连接,但AS 400AS 200会将到达AS 300的路由传播给AS 100。通过邻居间的互相信息交换,一个AS就逐渐学习到了到达整个互联网AS的路由:

image-20220913204053390

i代表internal

BGP的选路

在BGP中有多条路由可以到达目的地,例如上图中,AS 100要与 AS 300通讯,它可以先经过AS 400, 也可以先经过AS 200。应当如何进行选择呢?哪一条路径是比较优先的呢?这就引出了BGP选路的规则。

最短ASPATH

AS-PATH公认必遵(well-known mandatory)属性,该属性用一串AS号来描述去往的指定目的地AS间路径或路由(例如上图中 200,300,i)。

当BGP speaker发起一条路由,这条路由每经过一个AS区域,就会加上一个AS号,用来标示路径。AS号叠加得越多,说明经过的AS越多,那么这个路由的优先级也越低。相反,经过的AS越少,那么说明路由越优先。而且AS-Path还可以防止BGP的环路。

例如,AS 100(10.10.0.1)AS 400学习到了到达AS 200的路径400, 200, i, 但它原始也有一条到达AS 200的路径200,i。很明显第二条路径长度更短,所以BGP会选择走第二条路径:

image-20220913205702145

AS PATH Prepending

其实在真实的网络环境中,不一定AS号越少的链路质量越高。而AS-PATH这个功能又是根据AS号来判断路由的优先的,AS号越少越优先。

那么这个时候我们可能会用到AS-path的一个功能,来增加AS号的长度,从而实现选路的功能。

例如上图中,AS 100 -> AS 400 -> AS 200这条路径的带宽都是10M,而AS 100 -> AS 200路径的带宽为2M。虽然路径长,但是网络质量好

**一个路由的AS号附加得越多,路由的优先级越低。可以修改AS的附加,称为path-prepending。**在原来有的AS号前再进行人为的添加,让这条路劣于其他的路由。例如给AS 100 -> AS 200路径再多加几个AS,让它的长度变长:

image-20220913210319884

local preference

本地优先级用来AS内部选路,通过改变BGP路由流入本地路由器的优先级来达到。

看文字比较难理解,我们以下图为例,AS 100到达AS 300有两条路可以走,一个是先到AS 400,另一个是先到AS 200,该怎么选择呢?

假设我们以黑色路由器为例,如果为它设置到达上面路由器的LOCAL_PREF = 200, 那么它会选择本地优先级最高的路由方向来传递,因为到达下面的LOCAL_PREF是100。值越大优先级越高:

image-20220913211551463

默认的本地优先级是100,只在AS内传递

MED - Multi Exit Discriminator

适用场景:两个AS之间有多条路径(如下图)

控制数据怎么进入AS,通过告诉其他AS路由器到达我这条链路的开销值是多少来影响数据进入的方向,MED值越小链路越优先。med默认值为0,只在AS内传递。MED值的比较只能是对与同个AS

例如下面AS 100到达AS 400有两条路径,它们的LOCAL_PREFAS_PATH都相同。此时下面路径的MED值较小,那么就会选择它来走:

image-20220913212432154

BGP选路顺序

上面介绍了三种规则,AS PATHLOCAL_PREFMED,那么BGP是如何决定顺序的呢。其实规则不止这三种,针对这三种规则,顺序如下:

  1. LOCAL_PRERENCE - 越大优先级越高
  2. AS PATH - 越小优先级越高
  3. MED - 越小优先级越高