BGP分层路由
定义
BGP分层路由是指将一台设备上BGP路由分成基础路由和分层路由。部署BGP分层路由功能可为数据中心网络的故障场景提供更快的路由收敛速度,特别是在分层路由数量远大于基础路由的场景中能够达到较好的收敛效果。为了能够实现BGP分层路由收敛功能,新增了一种分层收敛属性,属性介绍详见分层收敛属性。这里,基础路由也可以理解为设备可达性路由,携带分层收敛属性,标志高优先级,当其他设备收到基础路由时,按高优先级迭代、收敛、下发转发、对外发布。分层路由也可以理解为业务路由,例如从外部BGP邻居学习来的路由,也携带分层收敛属性,当其他设备收到分层路由时,直接依赖基础路由的迭代结果,减少对分层路由的处理开销。最终达到只要基础路由可以收敛,那么分层路由则可以根据基础路由收敛结果而随之收敛的目的。
分层收敛属性
为了使BGP路由携带分层收敛属性,这里采用预留值(type=255)用来扩展新的属性,并定义为可选可传递属性。
在与其他厂商设备对接时,若因为其他厂商设备不能正确处理type为255的这个属性导致两边设备无法对接成功,那么需要关闭此扩展属性。
BGP分层收敛属性格式定义如图1所示,BGP分层收敛属性格式字段解释如表1所示:
图1 BGP分层收敛属性格式
字段名 |
含义 |
---|---|
HUAWEI Private Number |
固定值为2011。若该值不等于2011,则暂时忽略对整个type 255属性的处理。但是若报文中同时含有正确(值为2011)和不正确(值不为2011)的HUAWEI Private Number属性时,会继续处理整个type 255属性。 |
Feature Code Point |
固定值为2。若该值不等于2,则不在分层收敛特性处理范围,需按照相应的特性进行解析处理。 |
Version Number |
固定值为1。在Feature Code Point为2的情况下,如果该值不等于1,则不在分层收敛特性处理范围,跳过整个组进行下一个组的解析处理。 |
Length |
属性长度。 |
subval |
属性内容。 |
如表1所示,由以上五个字段共同构成一组私有属性,一个type 255的报文中可能存在多组私有属性,仅当组合满足上述的定义才认为是分层收敛属性,且不支持收到多组私有属性,如果收到的路由带有多组私有属性,仅处理第一个Feature Code Point为2的内容,忽略后续的Feature Code Point为2的私有属性,即使第一个Feature Code Point为2的私有属性出现错误,也不继续处理后续Feature Code Point为2的私有属性了。且一个Feature Code Point下只能带一个基础路由或分层路由属性。如果收到的路由带有多个基础路由属性或分层路由属性,或者同时带有基础路由和分层路由属性,均为异常情况,这样的路由只能按普通路由处理。
另外BGP分层收敛属性详细定义格式如所示,通过此定义可以区分基础路由和分层路由等信息,BGP分层收敛属性详细定义字段解释如表2所示:
图2 BGP分层收敛属性详细定义格式
字段名 |
含义 |
---|---|
sub-type |
固定值为1。 |
len |
本sub-type后续内容长度。对于基础路由该值为固定值2,非2则为非法情况,此时则忽略该属性。 |
Flag |
标记位,当前定义为S | T | R(2~7) |。其中S bit为协议栈类型,不置位则表示IPv4,置位则表示IPv6。T bit为属性类型,不置位表示为基础路由,置位表示为分层路由。 |
mask |
掩码长度。 |
Prefix |
IPv4或IPv6前缀,其长度由掩码长度确定。 |
图4 IPv6基础路由样例
图5 IPv4分层路由样例
图6 IPv6分层路由样例
BGP分层路由发布处理过程
如图7所示,为数据中心网络的跨物理网络分区POD的等效组网,一个POD内部署了Spine-Leaf网络,平面是用来连接不同POD。在DeviceA上引入大量外部路由时,为保证设备或链路故障时,设备能够快速收敛,在DeviceA上部署BGP分层路由功能,其他节点部署分层路由收敛功能。
图7 数据中心的跨物理网络分区POD场景在DeviceA上部署BGP分层路由功能,其路由发布流程为:
1、在DeviceA上选择一条路由10.1.1.1/32,配置为基础路由。对于从外部邻居学习来的BGP路由,配置为分层路由。DeviceA将基础路由、分层路由都发布给spine11和spine12。
2、spine11收到DeviceA发布的基础路由,下一跳为spine11的BGP邻居地址。
3、spine11收到DeviceA发布的分层路由,分层属性的Prefix为10.1.1.1/32,则spine11使用10.1.1.1/32作为下一跳地址,进行路由迭代。其他设备的发布过程一样,不再一一赘述。
故障时收敛过程
如图8所示,当发生故障时,可能的故障点及路由收敛过程如表3所示。
图8 故障场景
故障点 |
收敛过程 |
---|---|
1 |
DeviceA和spine11之间链路发生故障: 1、spine11通过感知接口Down触发EBGP邻居Down,或者下一跳不可达感知此故障。 spine11优先处理基础路由,DeviceA发布的基础路由更新为不可达状态,向P11和P12发布撤销。 spine11也会感知DeviceA的分层路由不可达,将其更新为不可达状态,向P11和P12发布撤销。 2、P11先收到spine11发布的基础路由撤销,对基础路由进行收敛,向spine21发布撤销。 随后P11也会收到spine11发布的分层路由撤销,收敛完成后,向spine21发布撤销。P12与之处理相同。 3、spine21先收到P11发布的基础路由撤销后,对基础路由进行收敛,基于此收敛结果,所有的分层路由也随之收敛。 随后spine21也会收到P12发布的基础路由撤销,收敛完成后,向DeviceB发布撤销。 4、DeviceB收到spine21发布的基础路由撤销,收敛完成后,到DeviceA的基础路由仅能从spine22转发,之后分层路由也都随基础路由收敛而收敛,收敛完成后到DeviceA的分层路由也仅能从spine22转发,此时即完成业务的收敛。 |
2 |
spine11发生故障: 1、P11通过感知接口Down触发EBGP邻居Down,或者下一跳不可达感知此故障。 P11优先处理基础路由,DeviceA发布的基础路由更新为不可达状态,向spine21发布撤销。P12也同样处理 2、spine21收到P11发布的基础路由撤销后,对基础路由进行收敛,基于此收敛结果,所有的分层路由也随之收敛。 随后spine21也会收到P12发布的基础路由撤销,收敛完成后,向DeviceB发布撤销。 3、DeviceB收到spine21发布的基础路由撤销,收敛完成后,到DeviceA的基础路由仅能从spine22转发,之后分层路由也都随基础路由收敛而收敛,收敛完成后到DeviceA的分层路由也仅从spine22转发,此时即完成业务的收敛。 |