一 基本概念
- 默认情况下,在单台Router上只能启动一个BGP进程,并且只能属于一个AS。DUAL AS允许我们在不中断现有BGP连接的情况下,在primary AS下同时运行一个secondary AS,从而提供一种网络迁移的机制。
- 在迁移期间,运行DUAL AS的路由器可以同时使用primary AS及secondary AS与外部AS建立EBGP连接,并且都能进行 BGP路由的更新和传递。
- 在不用断开现有连接的情况下,可缩短网络迁移的时间,且不用大批量的变更设备BGP配置
举个简单的例子:假设R2(AS200)为一个Customer Network,R1(AS100)是R2的ISP,此时BGP邻居关系已经建立起来了,并且路由都已经收敛完毕,突然出现另一个 ISP-R3(AS300),并且它给R2分配的AS号为AS201,这时候R2就很尴尬了,只能重新配置BGP,断开R1的连接并与R3建立BGP连接。
DUAL AS提供我们一种迁移的解决方案:允许R2的BGP进程同时兼顾两个AS号,200及201,其中200为Primary AS,201为Secondary AS,R2可以在保持原有的与R1的BGP连接及路由更新不受影响的情况下,新增与R3的 BGP连接,并且是使用AS201与R3(AS300)建立的EBGP邻居关系。
二 配置命令
R1的配置如下:
router bgp 100
R3的配置如下:
router bgp 300
R2的配置如下:
router bgp 200 // AS200为Primary AS,用于配置BGP进程
三 命令详解
R1发布10.0、R2发布20.0、R3发布30.0的路由,接下去看看R2上分别配置如下不同的命令后(关键字),这几条BGP路由被特定的路由器学习到之后的AS_PATH的变化:
- neighbor 10.1.23.3 local-as 201
- neighbor 10.1.23.3 local-as 201 no-prepend
注意这里的变化:R2将30.0的路由传递给R1时,不再插入seconday AS号
所以,no-prepend关键字的作用是:Do not prepend local-as to updates from ebgp peers,翻过一下:向Primary AS的EBGP邻居通告路由时,不附加secondary AS号
- neighbor 10.1.23.3 local-as 201 no-prepend replace-as
注意变化,replace-as 关键字让R2向secAS的EBGP邻居发送路由时,用local-as201替代真实AS200
所以replace-as关键字的作用是:Replace real AS with local AS in the EBGP updates,翻译一下: 当路由器向secondaryAS的EBGP邻居发送更新时,用secondaryAS号替代Pri AS号。
- neighbor 10.1.23.3 local-as 201 no-prepend replace-as dual-as
Accept either real AS or local AS from the ebgp peer。翻译一下:EBGP对等体既可以使用PriAS也可以使用SecAS对本地指remote-as,例如在R2上配置上述命令后,R3也就是10.1.23.3,在其BGP进程中,即可使用neighbor 10.1.23.2 remote-as 200,亦可使用remote-as 201去指BGP邻居R2