概述
学习边界网关协议BGP的关键在于如何理解和应用协议的“属性”,因此,本期文章将向小伙伴总结分享BGP的第三个属性——AS_Path属性。
BGP组网案例-AS_Path属性
组网拓扑图
组网拓扑图和地址规划如下图所示。
备注:模拟器采用HCL 5.5.0
组网设备基础配置
组网设备基础配置主要涉及设备命名和接口IP地址配置。
#SW_1设备基础配置
[H3C]sysname SW_1
[SW_1]interface LoopBack0
[SW_1-LoopBack0] ip address 10.10.0.1 255.255.255.255
[SW_1-LoopBack0]quit
[SW_1]interface LoopBack1
[SW_1-LoopBack1] ip address 192.168.10.1 255.255.255.255
[SW_1-LoopBack1]#
[SW_1-LoopBack1]interface LoopBack2
[SW_1-LoopBack2] ip address 192.168.10.2 255.255.255.255
[SW_1-LoopBack2]#
[SW_1]interface GigabitEthernet1/0/2
[SW_1-GigabitEthernet1/0/2] port link-mode route
[SW_1-GigabitEthernet1/0/2] ip address 10.10.12.1 255.255.255.252
[SW_1-GigabitEthernet1/0/2]quit
#SW_2设备基础配置
[H3C]sysname SW_2
[SW_2]interface LoopBack0
[SW_2-LoopBack0] ip address 10.20.0.1 255.255.255.255
[SW_2-LoopBack0]quit
[SW_2]interface GigabitEthernet1/0/2
[SW_2-GigabitEthernet1/0/2] port link-mode route
[SW_2-GigabitEthernet1/0/2] ip address 10.10.12.2 255.255.255.252
[SW_2-GigabitEthernet1/0/2]quit
[SW_2]interface GigabitEthernet1/0/3
[SW_2-GigabitEthernet1/0/3] port link-mode route
[SW_2-GigabitEthernet1/0/3] ip address 10.20.23.1 255.255.255.252
[SW_2-GigabitEthernet1/0/3]quit
#SW_3设备基础配置
[H3C]sysname SW_3
[SW_3]interface LoopBack0
[SW_3-LoopBack0]ip address 10.30.0.1 255.255.255.255
[SW_3-LoopBack0]quit
[SW_3]interface GigabitEthernet1/0/3
[SW_3-GigabitEthernet1/0/3] port link-mode route
[SW_3-GigabitEthernet1/0/3] ip address 10.20.23.2 255.255.255.252
[SW_3-GigabitEthernet1/0/3]quit
[SW_3]interface GigabitEthernet1/0/4
[SW_3-GigabitEthernet1/0/4] port link-mode route
[SW_3-GigabitEthernet1/0/4] ip address 10.30.34.1 255.255.255.252
[SW_3-GigabitEthernet1/0/4]quit
[SW_3]
#SW_4设备基础配置
[H3C]sysname SW_4
[SW_4]interface LoopBack0
[SW_4-LoopBack0] ip address 10.40.0.1 255.255.255.255
[SW_4-LoopBack0]quit
[SW_4]interface GigabitEthernet1/0/4
[SW_4-GigabitEthernet1/0/4] port link-mode route
[SW_4-GigabitEthernet1/0/4] ip address 10.30.34.2 255.255.255.252
[SW_4-GigabitEthernet1/0/4]quit
[SW_4]
组网设备BGP配置
#SW_1设备BGP配置
[SW_1]bgp 10
[SW_1-bgp-default] router-id 10.10.0.1
[SW_1-bgp-default] peer 10.10.12.2 as-number 20
[SW_1-bgp-default] address-family ipv4 unicast
[SW_1-bgp-default-ipv4] network 192.168.10.1 255.255.255.255
[SW_1-bgp-default-ipv4] network 192.168.10.2 255.255.255.255
[SW_1-bgp-default-ipv4] peer 10.10.12.2 enable
[SW_1-bgp-default-ipv4]quit
[SW_1-bgp-default]quit
[SW_1]save f
Validating file. Please wait...
Saved the current configuration to mainboard device successfully.
[SW_1]
#SW_2设备BGP配置
[SW_2]bgp 20
[SW_2-bgp-default] router-id 10.20.0.1
[SW_2-bgp-default] peer 10.10.12.1 as-number 10
[SW_2-bgp-default] peer 10.20.23.2 as-number 30
[SW_2-bgp-default] address-family ipv4 unicast
[SW_2-bgp-default-ipv4] peer 10.10.12.1 enable
[SW_2-bgp-default-ipv4] peer 10.20.23.2 enable
[SW_2-bgp-default-ipv4]quit
[SW_2-bgp-default]quit
[SW_2]save f
Validating file. Please wait...
Saved the current configuration to mainboard device successfully.
[SW_2]
#SW_3设备BGP配置
[SW_3]bgp 30
[SW_3-bgp-default] router-id 10.30.0.1
[SW_3-bgp-default] peer 10.20.23.1 as-number 20
[SW_3-bgp-default] peer 10.30.34.2 as-number 40
[SW_3-bgp-default] address-family ipv4 unicast
[SW_3-bgp-default-ipv4] peer 10.20.23.1 enable
[SW_3-bgp-default-ipv4] peer 10.30.34.2 enable
[SW_3-bgp-default-ipv4]quit
[SW_3-bgp-default]quit
[SW_3]save f
Validating file. Please wait...
Saved the current configuration to mainboard device successfully.
[SW_3]
#SW_4设备BGP配置
[SW_4]bgp 40
[SW_4-bgp-default] router-id 10.40.0.1
[SW_4-bgp-default] peer 10.30.34.1 as-number 30
[SW_4-bgp-default] address-family ipv4 unicast
[SW_4-bgp-default-ipv4] peer 10.30.34.1 enable
[SW_4-bgp-default-ipv4]quit
[SW_4-bgp-default]quit
[SW_4]save f
Validating file. Please wait...
Saved the current configuration to mainboard device successfully.
[SW_4]
查看SW_4设备BGP路由表
从SW_4设备BGP路由表可得知:它学习到了两条路由条目,并且,两条路由的AS_PATH均为“30 20 10”。因此,它要到达这个两个目的地,则需要经过AS30、AS20和AS10才能到达。
此处,AS_PATH是有序的,它的类型被称为:AS_SEQENCE。它是到目的地的路径上所经过的AS号的有序集合,按照顺序记录了路由经过的所有AS。
修改SW_3设备的BGP配置
修改SW_3设备的BGP配置-detail-suppressed
在SW_3设备上,配置手动聚合,将192.168.10.1/32和192.168.10.2/32两条明细路由聚合成192.168.0.0/16,并且只将这条聚合路由通告给SW_4。
[SW_3]bgp 30
[SW_3-bgp-default]address-family ipv4 unicast
#detail-suppressed关键字代表SW_3只会向SW_4发送聚合路由
[SW_3-bgp-default-ipv4]aggregate 192.168.0.0 16 detail-suppressed
完成上述配置后,分别查看SW_3和SW_4的BGP路由表,如下图所示;
SW_3设备学习到两条明细路由条目,并且该明细路由都存在“小写s”标识符(用于标识SW_3设备阻止该明细路由通告给SW_4),两条路由条目的AS_PATH是一样的(20 10)。然而,SW_3设备生成的聚合路由192.168.0.0/16,它的AS_PATH是空。
从SW_4设备仅从SW_3设备上学习到聚合路由192.168.0.0/16,并且其AS_PATH只剩下30。
产生这种现象的原因是:在SW_3设备上,该聚合路由192.168.0.0/16的AS_PATH是空,当SW_3设备将聚合路由发送给SW_4时,也就仅携带了自身的AS号。
SW_2和SW_4之间建立EBGP关系-路由环路
SW_2和SW_4之间增加建立EBGP关系,组网拓扑如下图所示;
# SW_2设备增加的配置
[SW_2]interface GigabitEthernet1/0/14
[SW_2-GigabitEthernet1/0/14] port link-mode route
[SW_2-GigabitEthernet1/0/14] ip address 10.20.24.1 255.255.255.252
[SW_2-GigabitEthernet1/0/14]quit
[SW_2]
[SW_2]bgp 20
[SW_2-bgp-default] peer 10.20.24.2 as-number 40
[SW_2-bgp-default]address-family ipv4 unicast
[SW_2-bgp-default-ipv4]peer 10.20.24.2 enable
[SW_2-bgp-default-ipv4]
# SW_4设备增加的配置
[SW_4]interface GigabitEthernet1/0/14
[SW_4-GigabitEthernet1/0/14] port link-mode route
[SW_4-GigabitEthernet1/0/14] ip address 10.20.24.2 255.255.255.252
[SW_4-GigabitEthernet1/0/14]quit
[SW_4]bgp 40
[SW_4-bgp-default]peer 10.20.24.1 as-number 20
[SW_4-bgp-default]address-family ipv4 unicast
[SW_4-bgp-default-ipv4]peer 10.20.24.1 enable
[SW_4-bgp-default-ipv4]
完成上述配置后,分别查看SW_2、SW_3和SW_4的BGP路由表,如下图所示;
SW_2设备分别从SW_3和SW_4设备学习到了聚合路由192.168.0.0/16;
SW_3设备分别从SW_2和SW_4设备学习到了两条明细路由192.168.10.1/32和192.168.10.2/32;
SW_4设备从SW_2设备学习到了两条明细路由192.168.10.1/32、192.168.10.2/32和一条聚合路由192.168.0.0/16;
SW_4设备从SW_3设备学习到一条聚合路由192.168.0.0/16;
小节:综合查看SW_2和SW_4设备BGP路由表发现,对于聚合路由192.168.0.0/16,两台设备形成了路由环路。
EBGP本身依赖AS_PATH来进防止路由环路,然而,在上述的路由聚合场景下,导致路由环路的产生,那么应该如何解决这个问题呢?
修改SW_3设备的BGP配置-detail-suppressed as-set
[SW_3]bgp 30
[SW_3-bgp-default]address-family ipv4 unicast
#detail-suppressed关键字代表SW_3只会向SW_4发送聚合路由
#as-set关键字代表SW_3设备生成的聚合路由含有与明细路由一样的AS_PATH
[SW_3-bgp-default-ipv4]aggregate 192.168.0.0 16 detail-suppressed as-set
完成上述配置后,分别查看SW_2、SW_3和SW_4的BGP路由表,如下图所示;
SW_2设备仅从SW_1设备学习到两条明细路由,无聚合路由条目;
SW_3设备生成的聚合路由192.168.0.0/16,它的AS_PATH是20 10。
SW_3设备又从SW_4设备学习到明细路由192.168.10.1/32和192.168.10.2/32。
备注:此时参与聚合的路由具有相同的AS_Sequence,则聚合后路由的AS_Sequence中也包含参与聚合路由的AS_Sequence,并且此时AS_Set为空。
SW_4设备从SW_3设备学习到聚合路由192.168.0.0/16,并且其AS_PATH是30 20 10。
SW_4设备从SW_2设备学习到明细路由192.168.10.1/32和192.168.10.2/32。
小节:SW_3设备配置聚合路由并添加detail-suppressed as-set配置后,解决聚合路由而产生地路由环路。
删除SW_2和SW_4之间的链路、增加SW_5设备
删除SW_2和SW_4之间的链路、增加SW_5设备后的组网拓扑,如下图所示;
# SW_2设备增加的配置
[SW_2]interface GigabitEthernet1/0/5
[SW_2-GigabitEthernet1/0/5] port link-mode route
[SW_2-GigabitEthernet1/0/5] ip address 10.20.25.1 255.255.255.252
[SW_2-GigabitEthernet1/0/5]quit
[SW_2]bgp 20
[SW_2-bgp-default]peer 10.20.25.2 as-number 50
[SW_2-bgp-default]address-family ipv4 unicast
[SW_2-bgp-default-ipv4]peer 10.20.25.2 enable
[SW_2-bgp-default-ipv4]quit
[SW_2-bgp-default]quit
[SW_2]
# SW_5设备增加的配置
[SW_5]interface LoopBack0
[SW_5-LoopBack0] ip address 10.50.0.1 255.255.255.255
[SW_5-LoopBack0]#
[SW_5-LoopBack0]interface LoopBack1
[SW_5-LoopBack1] ip address 192.168.50.1 255.255.255.255
[SW_5-LoopBack1]#
[SW_5-LoopBack1]interface LoopBack2
[SW_5-LoopBack2] ip address 192.168.50.2 255.255.255.255
[SW_5-LoopBack2]#
[SW_5-LoopBack2]interface GigabitEthernet1/0/5
[SW_5-GigabitEthernet1/0/5] port link-mode route
[SW_5-GigabitEthernet1/0/5] ip address 10.20.25.2 255.255.255.252
[SW_5-GigabitEthernet1/0/5]#
[SW_5-GigabitEthernet1/0/5]bgp 50
[SW_5-bgp-default] router-id 10.50.0.1
[SW_5-bgp-default] peer 10.20.25.1 as-number 20
[SW_5-bgp-default] #
[SW_5-bgp-default] address-family ipv4 unicast
[SW_5-bgp-default-ipv4] network 192.168.50.1 255.255.255.255
[SW_5-bgp-default-ipv4] network 192.168.50.2 255.255.255.255
[SW_5-bgp-default-ipv4] peer 10.20.25.1 enable
[SW_5-bgp-default-ipv4]quit
[SW_5-bgp-default]quit
[SW_5]
完成上述配置后,分别查看SW_3和SW_4的BGP路由表,如下图所示;
SW_3设备学习到四条明细路由条目,并且四条明细路由都存在“小写s”标识符(用于标识SW_3设备阻止该明细路由通告给SW_4)。其中,两条明细路由条目的AS_PATH是一样的(20 10),另外两条明细路由条目的AS_PATH是一样的(20 50)。SW_3设备生成的聚合路由192.168.0.0/16,它的AS_PATH是20 {10 50}。
备注:此时参与聚合的路由具有不同的AS_Sequence,则聚合后这些AS_Sequence中包含的AS号都会进入AS_Set,即由“{}”标识的10和50。
此种AS_Path类型被称为AS_Set:它是到目的地的路径上所经过的AS号的无序集合。AS_Set通常用在路由聚合的场景。
SW_4设备仅从SW_3设备学习到聚合路由192.168.0.0/16,并且其AS_PATH是30 20 {10 50}。
注意:AS_SET类型的AS_PATH在设备上都是用“{}”符号表示,并且在BGP路由选路中,所有AS_SET类型的AS_PATH都算作长度1。.例如:“30 20 {10 50}”在选路中AS_PATH长度算做3。
联盟中的AS_PATH类型
将AS10、AS20、AS30和AS50作为子AS加入BGP联盟中,联盟AS号是100,组网拓扑如下图所示;
# SW_1设备BGP配置
[SW_1]bgp 10
[SW_1-bgp-default] confederation id 100
[SW_1-bgp-default] confederation peer-as 20 30 50
[SW_1-bgp-default] router-id 10.10.0.1
[SW_1-bgp-default] peer 10.10.12.2 as-number 20
[SW_1-bgp-default] #
[SW_1-bgp-default] address-family ipv4 unicast
[SW_1-bgp-default-ipv4] network 192.168.10.1 255.255.255.255
[SW_1-bgp-default-ipv4] network 192.168.10.2 255.255.255.255
[SW_1-bgp-default-ipv4] peer 10.10.12.2 enable
[SW_1-bgp-default-ipv4]quit
[SW_1-bgp-default]quit
[SW_1]
# SW_2设备BGP配置
[SW_2]bgp 20
[SW_2-bgp-default] confederation id 100
[SW_2-bgp-default] confederation peer-as 10 30 50
[SW_2-bgp-default] router-id 10.20.0.1
[SW_2-bgp-default] peer 10.10.12.1 as-number 10
[SW_2-bgp-default] peer 10.20.23.2 as-number 30
[SW_2-bgp-default] peer 10.20.25.2 as-number 50
[SW_2-bgp-default] #
[SW_2-bgp-default] address-family ipv4 unicast
#配置聚合路由
[SW_2-bgp-default-ipv4] aggregate 192.168.0.0 255.255.0.0 detail-suppres as-set
[SW_2-bgp-default-ipv4] peer 10.10.12.1 enable
[SW_2-bgp-default-ipv4] peer 10.10.12.1 next-hop-local
[SW_2-bgp-default-ipv4] peer 10.20.23.2 enable
[SW_2-bgp-default-ipv4] peer 10.20.23.2 next-hop-local
[SW_2-bgp-default-ipv4] peer 10.20.25.2 enable
[SW_2-bgp-default-ipv4] peer 10.20.25.2 next-hop-local
[SW_2-bgp-default-ipv4]quit
[SW_2-bgp-default]quit
[SW_2]
# SW_3设备BGP配置
[SW_3]bgp 30
[SW_3-bgp-default] confederation id 100
[SW_3-bgp-default] confederation peer-as 10 20 50
[SW_3-bgp-default] router-id 10.30.0.1
[SW_3-bgp-default] peer 10.20.23.1 as-number 20
[SW_3-bgp-default] peer 10.30.34.2 as-number 40
[SW_3-bgp-default] #
[SW_3-bgp-default] address-family ipv4 unicast
[SW_3-bgp-default-ipv4] peer 10.20.23.1 enable
[SW_3-bgp-default-ipv4] peer 10.30.34.2 enable
[SW_3-bgp-default-ipv4]quit
[SW_3-bgp-default]quit
[SW_3]
# SW_4设备BGP配置
[SW_4]bgp 40
[SW_4-bgp-default] router-id 10.40.0.1
[SW_4-bgp-default] peer 10.30.34.1 as-number 100
[SW_4-bgp-default] #
[SW_4-bgp-default] address-family ipv4 unicast
[SW_4-bgp-default-ipv4] peer 10.30.34.1 enable
[SW_4-bgp-default-ipv4]quit
[SW_4-bgp-default]quit
[SW_4]
# SW_5设备BGP配置
[SW_5]bgp 50
[SW_5-bgp-default] confederation id 100
[SW_5-bgp-default] confederation peer-as 10 20 30
[SW_5-bgp-default] router-id 10.50.0.1
[SW_5-bgp-default] peer 10.20.25.1 as-number 20
[SW_5-bgp-default] #
[SW_5-bgp-default] address-family ipv4 unicast
[SW_5-bgp-default-ipv4] network 192.168.50.1 255.255.255.255
[SW_5-bgp-default-ipv4] network 192.168.50.2 255.255.255.255
[SW_5-bgp-default-ipv4] peer 10.20.25.1 enable
[SW_5-bgp-default-ipv4]quit
[SW_5-bgp-default]quit
[SW_5]
完成上述配置后,分别查看SW_2、SW_3、SW_4、SW_1和SW_5设备的BGP路由表,如下图所示;
SW_2设备从SW_1设备学习到两条明细路由,其AS_PATH是(10),并且该路由被标识了“小写s”;
SW_2设备从SW_5设备学习到两条明细路由,其AS_PATH是(50),并且该路由被标识了“小写s”;
SW_2设备生成的聚合路由192.168.0.0/16,它的AS_PATH居然是[10 50];
AS_PATH标识“()”属于AS_Confed_Sequence类型,它是联盟内子AS的一个有序集合。
AS_PATH标识“[]”属于AS_Confed_Set类型,它是是联盟内子AS的一个无序集合,主要用在联盟内路由聚合的场景。
标识了“小写s”的明细路由,说明SW_2设备阻止通告该路由给其它设备。对比查看SW_1和SW_5设备的BGP路由,即可发现它们未学习到对方的明细路由。
SW_2设备仅把聚合路由192.168.0.0/16通告给SW_3。SW_3设备学习到了该聚合路由,该聚合路由的AS_PATH是(20)[10 50]。
SW_4设备从SW_3设备学习到聚合路由,聚合路由的AS_PATH是100;
联盟子AS号是不会传到联盟之外,因此,在SW_4上,这条聚合路由的AS_PATH只有100。
注意:AS_CONFED_SEQUENCE类型的AS_PATH和AS_CONFED_SET类型的AS_PATH均只是为了防止路由环路而存在,在BGP选路中,不作为AS_PATH长度考虑在内。
SW_1设备未学习到SW_5设备的明细路由;
SW_5设备也未学习到SW_1设备的明细路由;
总结
本期文章,通过不同的组网拓扑,向各位小伙总结分享了AS_Path属性中的四种类型,它们分别是AS_Sequence、AS_Set、AS_Confed_Sequence和AS_Confed_Set,它们具体含义是:
AS_Sequence:它是到目的地的路径上所经过的AS号的有序集合,按照顺序记录了路由经过的所有AS;
AS_Set:它是到目的地的路径上所经过的AS号的无序集合。AS_Set通常用在路由聚合的场景;
AS_Confed_Sequence:是联盟内子AS的一个有序集合;
AS_Confed_Set:是联盟内子AS的一个无序集合,主要用在联盟内路由聚合的场景。