简介
本文档介绍边界网关协议(BGP)中的累计内部网关协议(AIGP)度量及其使用案例。
先决条件
要求
Cisco 建议您了解以下主题:
- 调试输出中显示“BGP
- 无缝多协议标签交换(MPLS)网络
使用的组件
本文档不限于特定的软件和硬件版本。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
背景信息
本节概述了AIGP度量以及有关其使用的一些重要注意事项。
如您所知,IGP代表内部网关协议,代表一组在单个管理域中运行的路由协议。IGP根据度量值做出路径选择决策。
BGP旨在通过大量独立的自治系统(AS)提供路由,但相关管理部门之间协调有限甚至不协调。它不会通过使用度量来作出路径选择决定。但是,在一些部署中,单一管理运行多个连续的BGP网络。在这种情况下,可能希望在单个管理域中,BGP可以基于度量选择路径,就像IGP需要做的那样。
累计的内部网关协议属性
AIGP度量(通过RFC7311定义)是可选的非传递BGP路径属性。AIGP属性的值字段定义为一组类型/长度/值元素(TLV)。BGP AIGP TLV包含累积的IGP度量。
注意:不支持可选非传递属性(例如,AIGP)的BGP路由器必须删除此类属性,并且不得将其传递给其他BGP对等体。AIGP度量不能在完全不同的自治系统之间传递(仅跨内部AS边界)。
使用案例示例
1. 多ASN网络
如今,许多网络位于单个管理域中,由于各种原因,这些网络被细分为多个ASN。这可能有许多原因:
- IGP扩展
- 一个提供商网络被另一个网络提供商收购,但他们尚未在内部合并其BGP ASN
- 不同的业务部门在内部都有独立的网络
- 具有子AS的BGP联盟
- 无缝MPLS等
在这样的网络中,允许BGP根据IGP度量做出决策很有用,这样,即使两个节点位于两个不同的ASN中,BGP也会选择两个节点之间的最短端到端路径。
例如:ABC网络,它可细分为两个BGP ASN,即ASN 1和ASN 2。它们在ASBR对等,链路IGP开销代表带宽。目标是在PE11和PE21之间具有端到端最佳路径。
没有AIGP的多ASN网络
注意:
- 假设在RR1/2上启用了Add-path以向PEx通告两个NH。
- 上述场景中使用的设备全部使用Cisco IOS-XE运行。
PE11#sh bgp ipv4 unicast 10.0.21.21/32
BGP routing table entry for 10.0.21.21/32, version 20
Paths: (2 available, best #2, table default)
Not advertised to any peer
Refresh Epoch 3
2
192.168.0.12 (metric 211) from 192.168.11.11 (192.168.11.11)
Origin IGP, metric 0, localpref 100, valid, internal
Originator: 192.168.0.12, Cluster list: 192.168.11.11
rx pathid: 0x1, tx pathid: 0
Refresh Epoch 3
2
192.168.0.11 (metric 201) from 192.168.11.11 (192.168.11.11)
Origin IGP, metric 0, localpref 100, valid, internal, best
Originator: 192.168.0.11, Cluster list: 192.168.11.11
rx pathid: 0x0, tx pathid: 0x0
在拓扑中启用AiGP后(在PE11、PE32、ASBR1x、ASBR2x、RR1、RR2上),PE11现在会选择端到端IGP开销最低的路径。
使用AIGP的多ASN网络
配置
PEx、ASBRx、RRn:
AIGP功能配置:
router bgp ASN
neighbor <NBR_IP> aigp
!
注意:BGP对等会丢弃并重新建立以协商此新功能。因此,建议您在维护窗口中执行此任务。
通告前缀的AIGP度量。
PE21:
route-map SET_AIGP permit 10
set aigp-metric igp-metric
!
router bgp 2
address-family {ipv4|ipv6} unicast
network 10.0.21.21 mask 255.255.255.255 route-map SET_AIGP
!
确认
PE11#sh bgp ipv4 unicast 10.0.21.21/32
BGP routing table entry for 10.0.21.21/32, version 21
Paths: (2 available, best #2, table default)
Not advertised to any peer
Refresh Epoch 3
2
192.168.0.11 (metric 201) from 192.168.11.11 (192.168.11.11)
Origin IGP, aigp-metric 501, metric 0, localpref 100, valid, internal
Originator: 192.168.0.11, Cluster list: 192.168.11.11
rx pathid: 0x1, tx pathid: 0
Refresh Epoch 3
2
192.168.0.12 (metric 211) from 192.168.11.11 (192.168.11.11)
Origin IGP, aigp-metric 201, metric 0, localpref 100, valid, internal, best
Originator: 192.168.0.12, Cluster list: 192.168.11.11
rx pathid: 0x0, tx pathid: 0x0
2. 无缝MPLS(单ASN)
在大型服务提供商核心网络中,传输网络通常被划分成不同的IGP域,使用BGP标记的单播拼接在一起以提供端到端标记交换路径(LSP)。边界路由器在BGP LU AF中执行下一跳自身(NHS)。
IGP/LDP仅在本地区域/域中传输前缀/标签信息。然后,BGP通过在区域边界将路由重分发到BGP来将前缀/标签传送到所有远程区域/域。然后使用LSP通告路由/标签。路由的下一跳在每个ABR上更改为本地路由器,这样就无需跨区域/域边界泄漏IGP路由。
在此拓扑图中,有一个BGP域被划分为2个IGP域(CORE和Access-1)。每条链路旁边显示的数字代表该链路的IGP开销/度量。
无需AIGP的无缝MPLS网络
挑战:从PS-Core到eNB/gNB(连接到CSR15)的下行流量与从eNB/gNB(连接到CSR15)到PS-Core的上行流量相比,采用的是非对称次优路径,这导致了移动流量中的延迟问题。
观察结果
- 主要在地理边界场景中观察到,其中同一个汇聚路由器充当多个接入域的公用边界路由器(例如,前面提到的映像中的AGG102)。
- 对于向上流量,信元站点路由器(CSR)路由器选择最近的边界路由器。例如,CSR15选择AGG102作为NextHop。
- 对于下行流量,服务聚合路由器(SAR)也选择最近的边界路由器。例如,SAR150选择AGG101(cost 180 < 200)。
设备日志-初始
上行流量- CSR15至SAR150
RP/0/0/CPU0:CSR15#traceroute mpls ipv4 10.0.2.150/32 so 10.0.2.15
Tracing MPLS Label Switched Path to 10.0.2.150/32, timeout is 2 seconds
Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
'L' - labeled output interface, 'B' - unlabeled output interface,
'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
'M' - malformed request, 'm' - unsupported tlvs, 'N' - no rx label,
'P' - no rx intf label prot, 'p' - premature termination of LSP,
'R' - transit router, 'I' - unknown upstream index,
'X' - unknown return code, 'x' - return code 0
Type escape sequence to abort.
0 10.15.102.15 MRU 1500 [Labels: explicit-null/16150 Exp: 0/0]
L 1 10.15.102.102 MRU 1500 [Labels: 16150 Exp: 0] 0 ms !!!! AGG102
. 2 * !!!! P112 does not have a route to CSR15
! 3 10.112.150.150 20 ms !!!! SAR150
下行流量- SAR150至CSR15
RP/0/0/CPU0:SAR150#traceroute mpls ipv4 10.0.2.15/32 source 10.0.2.150
Tracing MPLS Label Switched Path to 10.0.2.15/32, timeout is 2 seconds
Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
'L' - labeled output interface, 'B' - unlabeled output interface,
'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
'M' - malformed request, 'm' - unsupported tlvs, 'N' - no rx label,
'P' - no rx intf label prot, 'p' - premature termination of LSP,
'R' - transit router, 'I' - unknown upstream index,
'X' - unknown return code, 'x' - return code 0
Type escape sequence to abort.
0 10.101.150.150 MRU 1500 [Labels: explicit-null/16015 Exp: 0/0]
L 1 10.101.150.101 MRU 1500 [Labels: 16015 Exp: 0] 10 ms !!! AGG101
L 2 10.11.101.11 MRU 1500 [Labels: 16015 Exp: 0] 10 ms !!! CSR11
L 3 10.11.12.12 MRU 1500 [Labels: 16015 Exp: 0] 10 ms !!! CSR12
L 4 10.12.13.13 MRU 1500 [Labels: 16015 Exp: 0] 20 ms !!! CSR13
L 5 10.13.14.14 MRU 1500 [Labels: explicit-null Exp: 0] 30 ms !!! CSR14
! 6 10.14.15.15 30 ms !!! CSR15
AIGP解决方案
此处的目标是在SAR路由器和CSR路由器之间建立端到端最佳路径。BGP标记单播(RFC 3107)用于计算从SAR到CSR路由器的距离。每个核心链路上的可用带宽映射到IGP开销,因此BGP必须在每个PE之间正确传输此开销。此功能通过使用AiGP来实现。
带AIP的无缝MPLS网络
带AIP的无线MPLS网络
注意:
- 假设RR1/2、AGG、CSR和SAR设备上启用了添加路径以通告两个NH。
- 上述场景中使用的所有设备均基于Cisco IOS-XR。
配置
必须在BGP对等体之间商定AiGP路径属性功能。AiGP度量仅包含在启用AiGP的对等体之间的前缀通告中。 为单个BGP对等体和特定BGP地址系列配置AIGP功能。
router bgp ASN
neighbor <NBR_IP>
address-family ipv4 unicast
aigp [disable]
AIGP度量是一个32位(0到4,294,967,295)的值。它可以在重分发、通过network语句发起路由时设置,也可以在使用路由映射/路由策略接收前缀时设置。
route-policy AIGP_POLICY
set aigp-metric igp-cost
end-policy
!
router bgp ASN
address-family {ipv4|ipv6} unicast
network <NETWORK/MASK> route-policy AIGP_POLICY
or
redistribute {ospf|isis} {process-id} route-policy AIGP_POLICY metric VALUE
!
注意:
- 对于重分发的路由,分配给AiGP属性的值是到路由的iGP下一跳的值或根据路由策略设置。
- 对于重分配到BGP中的静态路由,分配的值是路由的下一跳的值或路由策略设置的值。
- 该路由通过network语句导入到BGP中。分配的值是路由的下一跳的值或路由策略设置的值。
配置示例
CSR15:
! Additional config lines related to AIGP are marked in RED color
route-policy SID($SID)
set label-index $SID
set aigp-metric igp-cost
end-policy
!
router bgp 1
address-family ipv4 unicast
network 10.0.2.15/32 route-policy SID(15)
neighbor-group RR
address-family ipv4 labeled-unicast
aigp
!
!
!
设备日志-在AIGP实施之后
下行流量- SAR150至CSR15
RP/0/0/CPU0:SAR150#sh bgp ipv4 labeled-unicast 10.0.2.15/32
BGP routing table entry for 10.0.2.15/32
Versions:
Process bRIB/RIB SendTblVer
Speaker 411 411
Local Label: 16015
Last Modified: Oct 24 11:05:26.796 for 00:00:04
Paths: (2 available, best #1)
Not advertised to any peer
Path #1: Received by speaker 0
Not advertised to any peer
Local
10.0.2.102 (metric 200) from 10.0.2.100 (10.0.2.15)
Received Label 16015
Origin IGP, metric 0, localpref 100, aigp metric 20, valid, internal, best, group-best, labeled-unicast
Received Path ID 1, Local Path ID 1, version 410
Originator: 10.0.2.15, Cluster list: 10.0.2.100, 10.0.2.102
Total AIGP metric 220
Label-Index: 15
Path #2: Received by speaker 0
Not advertised to any peer
Local
10.0.2.101 (metric 180) from 10.0.2.100 (10.0.2.15)
Received Label 16015
Origin IGP, metric 0, localpref 100, aigp metric 60, valid, internal, backup, add-path, labeled-unicast
Received Path ID 8, Local Path ID 7, version 411
Originator: 10.0.2.15, Cluster list: 10.0.2.100, 10.0.2.101
Total AIGP metric 240
Label-Index: 15
RP/0/0/CPU0:SAR150#traceroute mpls ipv4 10.0.2.15/32 so 10.0.2.150
Tracing MPLS Label Switched Path to 10.0.2.15/32, timeout is 2 seconds
Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
'L' - labeled output interface, 'B' - unlabeled output interface,
'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
'M' - malformed request, 'm' - unsupported tlvs, 'N' - no rx label,
'P' - no rx intf label prot, 'p' - premature termination of LSP,
'R' - transit router, 'I' - unknown upstream index,
'X' - unknown return code, 'x' - return code 0
Type escape sequence to abort.
0 10.112.150.150 MRU 1500 [Labels: 16102/16015 Exp: 0/0]
L 1 10.112.150.112 MRU 1500 [Labels: explicit-null/16015 Exp: 0/0] 10 ms !!! P112
L 2 10.102.112.102 MRU 1500 [Labels: explicit-null Exp: 0] 10 ms !!! AGG102
! 3 10.15.102.15 20 ms !!! CSR15
上行流量- CSR15至SAR150
RP/0/0/CPU0:CSR15#traceroute mpls ipv4 10.0.2.150/32 source 10.0.2.15
Tracing MPLS Label Switched Path to 10.0.2.150/32, timeout is 2 seconds
Codes: '!' - success, 'Q' - request not sent, '.' - timeout,
'L' - labeled output interface, 'B' - unlabeled output interface,
'D' - DS Map mismatch, 'F' - no FEC mapping, 'f' - FEC mismatch,
'M' - malformed request, 'm' - unsupported tlvs, 'N' - no rx label,
'P' - no rx intf label prot, 'p' - premature termination of LSP,
'R' - transit router, 'I' - unknown upstream index,
'X' - unknown return code, 'x' - return code 0
Type escape sequence to abort.
0 10.15.102.15 MRU 1500 [Labels: explicit-null/16150 Exp: 0/0]
L 1 10.15.102.102 MRU 1500 [Labels: 16150 Exp: 0] 10 ms !!! AGG102
. 2 * !!! P112 does not have a route to CSR15
! 3 10.112.150.150 30 ms !!! SAR150
注意事项
- 随着IGP开销的变化(例如,由于链路断开等原因而导致的物理拓扑变化),BGP中也会有相应的变化。这可能导致BGP路由发生故障。此融合还取决于为非关键事件配置的BGP下一跳触发延迟值。
- 通过引入AiGP,可以修改BGP的最佳路径选择。它将BGP AIGP置于BGP本地优先级之后和AS_PATH属性之前。因此,如果存在任何有关AS_PATH预置的现有策略,可能需要重新访问这些策略。
- 当存在两条路径(一条具有AIGP度量,另一条没有)时,BGP始终首选具有AIGP度量的路径。
忽略AIGP
还可以将运行边界网关协议(BGP)的设备配置为在两条路径之间的最佳路径选择过程中,当一条路径没有AIGP度量时,忽略AIGP度量。在路由器配置模式下使用bgp bestpath aigp ignore命令要将设备恢复为默认操作,请使用此命令的no形式。
[no] bgp bestpath aigp ignore
默认情况下,BGP始终首选具有AIGP度量的路径。如果有两个路径,一个具有AIGP度量,另一个没有,则执行bgp bestpath aigp ignore命令会使BGP执行最佳路径计算,就像两个路径都不具有AIGP度量一样。
结论
BGP AIGP属性确实用于解决某些小生境使用案例,但必须谨慎使用。
相关信息