BGP常用属性
公认必遵
Origin
AS_Path
Next_hop
公认任意
Local_Pref
可选非过渡
MED
可选过渡
Community
Origin
Origin属性定义路径信息的来源,标记一条路由是怎么成为BGP路由的。
BGP在AS之间传递信息,承载大量的路由。如果到达同一目的IP有多条路径,且BGP学到这些路由通过不同的方式,则Origin属性是决定最优路径的一个因素,用于标明路由的起源。
Origin的3种属性:
i表明BGP路由通过network命令注入;
e表明BGP路由是从EGP学来的,EGP协议在现网中很难见到,但可以通过路由策略将路由的Origin属性修改为e;
? 即Incomplete表明BGP路由通过其它方式学到路由信息,如使用import命令引入的路由。
3种Origin属性的优先级为:i>e>Incomplete(?)。
AS_Path
属性记录了路由经过的所有AS的编号:图中RTA从RTB收到100.0.0.0/24的路由时,AS_Path为(2,4),RTA从RTC收到100.0.0.0/24的路由时,AS_Path为(3,5,4)。规定AS_Path越短(记录的AS编号越少),路径越优,因此RTA会优选从RTB收到的100.0.0.0/24的路由。
以RTE为例,通过BGP发布100.0.0.0/24的路由,路由可能通过RTE->RTB->RTC->RTD->RTE形成环路。为了防止环路的产生,RTE在收到RTD发来的路由时会检查AS_Path(该路由携带的)属性,如果发现该路由的AS_Path中包含自己的AS号,则丢弃该路由。
AS_Path的4种类型:AS_Sequence,AS_Set,AS_Confed_Sequence,AS_Confed_Set
Next_hop
Local_Pref
Local_Pref属性仅在IBGP邻居之间有效,不通告给其他AS。它表明路由器的BGP优先级,用于判断流量离开AS时的最佳路由。
如图所示,AS 200内有一个200.0.0.0/24的用户网段,通过BGP发布给AS 100。AS 100内的管理员如何设置才可以实现通过高带宽链路访问200.0.0.0/24的网络?
解决办法:
在RTC上设置ip-prefix匹配200.0.0.0/24的路由,使用route-policy调用该ip-prefix,并设置Local_Preference为200,将策略应用在对RTA发布路由的export方向。
Local_Pref属性仅在IBGP邻居之间有效,不通告给其他AS。它表明路由器的BGP优先级,值越大越优。
Local_Pref属性用于判断流量离开AS时的最佳路由。当BGP路由器通过不同的IBGP邻居获得目的地址相同但下一跳不同的多条路由时,将优先选择Local_Pref属性值较高的路由,其默认值为100。
MED
MED(Multi-Exit-Discriminator)属性仅在相邻两个AS之间传递,收到此属性的AS不会再将其通告给任何其他第三方AS,用于判断流量进入AS时的最佳路由。
如图所示,AS 300内的管理员希望在AS 300内操作影响AS 200通过高带宽链路访问100.0.0.0/24,如何实现?
解决方法:
在RTE上设置ip-prefix匹配100.0.0.0/24的路由,再设置route-policy调用该ip-prefix,并设置MED为100,将策略应用在对RTC发布路由的export方向。
如图所示,AS100内并不会收到AS 300内设置的MED值,但是AS 200内会收到AS 300内设置的MED值,因此AS 200内可以选择高带宽的路由。
MED属性相当于IGP使用的度量值(Metric),它用于判断流量进入AS时的最佳路由。当一个运行BGP的路由器通过不同的EBGP邻居获得目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED值较小者作为最佳路由,其默认值为0。
Community
BGP的Community属性的两个作用:
限定路由的传播范围。
打标记,便于对符合相同条件的路由进行统一处理。
公认团体属性分为4类:
Internet:缺省属性,所有路由都属于Internet,此属性的路由可以通告给所有BGP邻居;
No_Export:收到此属性的路由后,不将该路由发布到其他AS。如图,RTB上希望10.1.11.0/24的路由发布给AS 12之后,不再发布给其他AS,则可将10.1.11.0/24的Community属性设置为No_Export;
No_Advertise:收到此属性的路由后,不将该路由通告给任何其他的BGP邻居。如图,RTB上希望只将10.1.11.0/24的路由发布给RTC,并且不再通告给任何其他的BGP邻居,则可将10.1.11.0/24的Community属性设置为No_Advertise;
No_Export_Subconfed:在联盟中使用,这里不做介绍。
实验
要求
本实验模拟A公司与B公司因项目合作,使用AS65012传递私网路由。
其中AS100与AS200是A/B公司合作向ISP购买的专用网络,用于传递AB公司的路由并承载AB公司之间的流量。
1.如图所示,IP地址已配置,请自行测试直连。
所有设备都有Loopback0,用于建立ibgp邻居。
2.AS100中运行OSPF
2.1 进程号为1,手动设置RID为Loopback0地址。
2.2 全部属于区域0
2.3 network命令使用通配符0.0.0.0
2.4 不允许宣告与其他AS互联的网段。
3.AS200中运行ISIS
3.1 进程号为1
3.2 区域号为49.0200
3.3 系统ID分别为
R5:0000.0000.0005
R6:0000.0000.0006
R7:0000.0000.0007
3.4 所有isis路由器均为level-2.
3.5 不允许激活与其他AS互联的接口。
4.运行BGP
4.1 R1和R2属于AS65012
R3和R4属于AS100
R5/6/7属于AS200,配置ibgp全互联。
4.2 所有路由器手动设置BGP的router-id为Loopback0地址
4.3 所有ibgp都使用Loopback0建立邻居关系,所有ebgp都使用直连接口建立邻居关系。
4.4 确认各路由的bgp邻居关系建立完成。
5.发布BGP路由
5.1 在R1上引入直连路由192.168.1.0/24,过滤其他路由,策略如下:
5.1.1 使用ip-prefix,名称1,index 10 ,仅匹配192.168.1.0/24
5.1.2 使用route-policy,名称toBGP(注意大小写),node 10,匹配prefix。
5.1.3 BGP中引入直连路由,调用route-policy。
5.2 在R2上使用network命令直接宣告192.168.2.0/24。
6.修改起源属性Origin
6.1 在R3上查看bgp路由表,确认192.168.1.0/24的起源属性为“?”
6.2 R3上部署策略,将所有来自R1的路由,全部修改起源属性为 “i”:
6.2.1 使用route-policy,名称formR1(注意大小写),node 10
6.2.2 匹配所有路由,修改起源属性为igp。
6.2.3 R3的bgp视图下,接收R1路由时调用route-policy。
6.3 再次查看R3的bgp路由表,确认192.168.1.0/24的起源属性为“i”
7.修改AS-path
7.1 查看R2路由表,无法收到192.168.1.0/24;查看R1路由表,无法收到192.168.2.0/24
而R3/4/5/6/7都能收到以上两条路由,请分析原因。
7.2 R2配置以下命令,当从R7接收路由时,允许接收有本地AS号的路由,而不丢弃。
bgp 65012
peer 27.1.1.7 allow-as-loop
7.3 再次查看R2路由表,确认已收到192.168.1.0/24
7.4 R7部署策略,当从R2接收路由时,覆盖AS号,删除AS65012(不是丢弃路由)。
7.4.1 使用route-policy,名称为formR2(注意大小写),node 10
7.4.2 匹配所有路由,修改as-path为空。
7.4.3 R7从R2收路由时调用此策略。
7.5 再次查看R1路由表,确认已收到192.168.2.0/24
8.修改本地优先Local-preference
8.1 在R7上查看路由192.168.1.0/24,发现最佳下一跳为R5
8.2 修改R6的默认本地优先为106。
8.3 再次查看R7路由表,确认去往192.168.1.0/24选择R6为下一跳。
9.修改MED
在R3上查看路由192.168.2.0/24,发现最佳下一跳为R5
此时R2去往R1路径为2-7-6-4-3-1,而R1去往R2路径为1-3-5-7-2
为确保来回路径一致,在R5上部署以下策略:
9.1 使用ip-prefix,名称2,index 10,匹配路由192.168.2.0/24
9.2 使用route-policy,名称toR3,node 10,调用ip-prefix,修改cost为100。
node 100,放过其他路由。
9.3 当R5发送路由给R3时调用此策略。
9.4 再次在R3上查看路由192.168.2.0,确认已选择下一跳为R4,且从R5收到的MED为100.
分别在R1和R2上使用追踪命令,确认来回路径一致。
具体过程
本实验模拟 A 公司与 B 公司因项目合作,使用 AS65012 传递私网路由。
其中 AS100 与 AS200 是 A/B 公司合作向 ISP 购买的专用网络,用于传递 AB 公司的路由并
承载 AB 公司之间的流量。
1.如图所示,IP 地址已配置,请自行测试直连。
所有设备都有 Loopback0,用于建立 ibgp 邻居。
2.AS100 中运行 OSPF
2.1 进程号为 1,手动设置 RID 为 Loopback0 地址。
2.2 全部属于区域 0
2.3 network 命令使用通配符 0.0.0.0
2.4 不允许宣告与其他 AS 互联的网段。
R3:
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 3.3.3.3 0.0.0.0
network 34.1.1.3 0.0.0.0
R4:
ospf 1 router-id 4.4.4.4
area 0.0.0.0
network 4.4.4.4 0.0.0.0
network 34.1.1.4 0.0.0.0
3.AS200 中运行 ISIS
3.1 进程号为 1
3.2 区域号为 49.0200
3.3 系统 ID 分别为
R5:0000.0000.0005
R6:0000.0000.0006
R7:0000.0000.0007
3.4 所有 isis 路由器均为 level-2.
3.5 不允许激活与其他 AS 互联的接口。
R5:
isis 1
is-level level-2
network-entity 49.0200.0000.0000.0005.00
interface LoopBack0
isis enable 1
interface GigabitEthernet0/0/1
isis enable 1
R6:
isis 1
is-level level-2
network-entity 49.0200.0000.0000.0006.00
interface LoopBack0
isis enable 1
interface GigabitEthernet0/0/1
isis enable 1
R7:
isis 1
is-level level-2
network-entity 49.0200.0000.0000.0007.00
interface GigabitEthernet0/0/0
isis enable 1
interface GigabitEthernet0/0/1
isis enable 1
interface LoopBack0
isis enable 1
4.运行 BGP
4.1 R1 和 R2 属于 AS65012
R3 和 R4 属于 AS100
R5/6/7 属于 AS200,配置 ibgp 全互联。
4.2 所有路由器手动设置 BGP 的 router-id 为 Loopback0 地址
4.3 所有 ibgp 都使用 Loopback0 建立邻居关系,所有 ebgp 都使用直连接口建立邻居关系。
4.4 确认各路由的 bgp 邻居关系建立完成。
R1:
bgp 65012
router-id 1.1.1.1
peer 13.1.1.3 as-number 100
R2:
bgp 65012
router-id 2.2.2.2
peer 27.1.1.7 as-number 200
R3:
bgp 100
router-id 3.3.3.3
peer 4.4.4.4 as-number 100
peer 4.4.4.4 connect-interface LoopBack0
peer 4.4.4.4 next-hop-local
peer 13.1.1.1 as-number 65012
peer 35.1.1.5 as-number 200
R4:
bgp 100
router-id 4.4.4.4
peer 3.3.3.3 as-number 100
peer 3.3.3.3 connect-interface LoopBack0
peer 3.3.3.3 next-hop-local
peer 46.1.1.6 as-number 200
R5:
bgp 200
router-id 5.5.5.5
peer 6.6.6.6 as-number 200
peer 6.6.6.6 connect-interface LoopBack0
peer 6.6.6.6 next-hop-local
peer 7.7.7.7 as-number 200
peer 7.7.7.7 connect-interface LoopBack0
peer 7.7.7.7 next-hop-local
peer 35.1.1.3 as-number 100
R6:
bgp 200
router-id 6.6.6.6
peer 5.5.5.5 as-number 200
peer 5.5.5.5 connect-interface LoopBack0
peer 5.5.5.5 next-hop-local
peer 7.7.7.7 as-number 200
peer 7.7.7.7 connect-interface LoopBack0
peer 7.7.7.7 next-hop-local
peer 46.1.1.4 as-number 100
R7:
bgp 200
router-id 7.7.7.7
peer 5.5.5.5 as-number 200
peer 5.5.5.5 connect-interface LoopBack0
peer 5.5.5.5 next-hop-local
peer 6.6.6.6 as-number 200
peer 6.6.6.6 connect-interface LoopBack0
peer 6.6.6.6 next-hop-local
peer 27.1.1.2 as-number 65012
5.发布 BGP 路由
5.1 在 R1 上引入直连路由 192.168.1.0/24,过滤其他路由,策略如下:
5.1.1 使用 ip-prefix,名称 1,index 10 ,仅匹配 192.168.1.0/24
ip ip-prefix 1 index 10 permit 192.168.1.0 24
5.1.2 使用 route-policy,名称 toBGP(注意大小写),node 10,匹配 prefix。
route-policy toBGP permit node 10
if-match ip-prefix 1
5.1.3 BGP 中引入直连路由,调用 route-policy。
bgp 65012
import-route direct route-policy toBGP
5.2 在 R2 上使用 network 命令直接宣告 192.168.2.0/24。
bgp 65012
network 192.168.2.0
6.修改起源属性 Origin
6.1 在 R3 上查看 bgp 路由表,确认 192.168.1.0/24 的起源属性为“?”
6.2 R3 上部署策略,将所有来自 R1 的路由,全部修改起源属性为 “i”
6.2.1 使用 route-policy,名称 formR1(注意大小写),node 10
6.2.2 匹配所有路由,修改起源属性为 igp。
route-policy formR1 permit node 10
apply origin igp
6.2.3 R3 的 bgp 视图下,接收 R1 路由时调用 route-policy。
bgp 100
peer 13.1.1.1 route-policy formR1 import
6.3 再次查看 R3 的 bgp 路由表,确认 192.168.1.0/24 的起源属性为“i”
[R3]dis bgp routing-table
7.修改 AS-path
7.1 查看 R2 路由表,无法收到 192.168.1.0/24;查看 R1 路由表,无法收到 192.168.2.0/24
而 R3/4/5/6/7 都能收到以上两条路由,请分析原因。
7.2 R2 配置以下命令,当从 R7 接收路由时,允许接收有本地 AS 号的路由,而不丢弃。
bgp 65012
peer 27.1.1.7 allow-as-loop
7.3 再次查看 R2 路由表,确认已收到 192.168.1.0/24
dis bgp routing-table
7.4 R7 部署策略,当从 R2 接收路由时,覆盖 AS 号,删除 AS65012(不是丢弃路由)。
7.4.1 使用 route-policy,名称为 formR2(注意大小写),node 10
7.4.2 匹配所有路由,修改 as-path 为空。
route-policy formR2 permit node 10
apply as-path none overwrite
7.4.3 R7 从 R2 收路由时调用此策略。
bgp 200
peer 27.1.1.2 route-policy formR2 import
7.5 再次查看 R1 路由表,确认已收到 192.168.2.0/24
dis bgp routing-table
8.修改本地优先 Local-preference
8.1 在 R7 上查看路由 192.168.1.0/24,发现最佳下一跳为 R5
[R7]dis bgp routing-table
8.2 修改 R6 的默认本地优先为 106。
bgp 200
default local-preference 106
8.3 再次查看 R7 路由表,确认去往 192.168.1.0/24 选择 R6 为下一跳。
[R7]dis bgp routing-table
9.修改 MED
在 R3 上查看路由 192.168.2.0/24,发现最佳下一跳为 R5
此时 R2 去往 R1 路径为 2-7-6-4-3-1,而 R1 去往 R2 路径为 1-3-5-7-2
为确保来回路径一致,在 R5 上部署以下策略:
9.1 使用 ip-prefix,名称 2,index 10,匹配路由 192.168.2.0/24
ip ip-prefix 2 index 10 permit 192.168.2.0 24
9.2 使用 route-policy,名称 toR3,node 10,调用 ip-prefix,修改 cost 为 100。
node 100,放过其他路由。
route-policy toR3 permit node 10
if-match ip-prefix 2
apply cost 100
route-policy toR3 permit node 100
9.3 当 R5 发送路由给 R3 时调用此策略。
bgp 200
peer 35.1.1.3 route-policy toR3 export
9.4 再次在 R3 上查看路由 192.168.2.0,确认已选择下一跳为 R4,且从 R5 收到的 MED 为
100.
dis bgp routing-table