0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

BGP选路规则的实验验证与解析

网络技术干货圈 来源:网络技术干货圈 2024-04-08 10:45 次阅读

顺序也要记住
1.优选协议首选值(Preference_Value)最高的路由。(私有属性,仅本地有效)
2.优选本地优先级(Local_Preference)最高的路由。 (100,IBGP,越大越优)
3.优选本地生成的路由。手动聚合>自动聚合>network>import>从对等体学到的。
4.优选 AS_Path 短的路由。
5.比较 Origin 属性,起源类型 IGP>EGP>Incomplete。 i>e>?
6.优选 MED(Multi Exit Discriminator)值最低的路由。 (0,EBGP,越小越优)
7.优选从 EBGP 学来的路由(EBGP>IBGP)。
8.优选 AS 内部 IGP 的 Metric 最小的路由。
前 8 条选路规则一样,可以实现 BGP 的负载分担
bgp 100
maximum load-balancing 2

9.优选 Cluster_List 最短的路由。 (有做路由反射器RR才考虑)
10.优选 Router_ID 最小的路由器发布的路由。
11.优选具有较小 IP 地址的邻居学来的路由。

如果配置了负载分担,当前8个规则相同,且存在多条AS_Path完全相同的外部路由,则根据配置的路由条数选择多条路由进行负载分担

PreVal

BGP 路由属性的比较过程中,首先要比较的就是路由信息首选值 Preference Value,也简称为 PreVal。相当于BGP选路规则中的Weight值,值越大,优先级越高,默认为 0,不会发送给任何 BGP 邻居,仅作为本地路由器用来选路使用。

ip ip-prefix 1 permit 55.55.55.0 24
route-policy 10 permit node 1
if-match ip-prefix 1
apply preferred-value 100
route-policy 10 permit node 2
bgp 100
peer 2.2.2.2 route-policy 10 import

8fb2b840-e9c2-11ee-a297-92fbcf53809c.png

router id: 1.1.1.1 。根据11条路由选路规则,R1的Router ID更小,他默认会往R1那条路走。
现在我想让他往R2走

1、基本配置
R1:
sys
sysnameR1
intloop0
ipadd1.1.1.132
intg0/0/0
ipadd192.168.13.124
intg0/0/1
ipadd192.168.14.124
q

R2:
sys
sysnameR2
intloop0
ipadd2.2.2.232
intg0/0/1
ipadd192.168.23.224
intg0/0/0
ipadd192.168.24.224
q

R3:
sys
sysnameR3
intloop0
ipadd3.3.3.332
intloop1
ipadd33.33.33.3332
intg0/0/0
ipadd192.168.13.324
intg0/0/1
ipadd192.168.23.324
q

R4:
sys
sysnameR4
intloop0
ipadd4.4.4.432
intloop1
ipadd44.44.44.4432
intloop2
ipadd55.55.55.5532
intg0/0/0
ipadd192.168.14.424
intg0/0/1
ipadd192.168.24.424
q

2.配置RIP协议
R1:
rip
version2
net192.168.13.0
net1.0.0.0

R2:
rip
version2
net192.168.23.0
net2.0.0.0

R3:
rip
version2
net192.168.13.0
net192.168.23.0
net3.0.0.0

3.配置IBGP邻居
R1:
[R1]bgp100
[R1-bgp]router-id1.1.1.1
[R1-bgp]peer3.3.3.3as-n100
[R1-bgp]peer3.3.3.3conloo0
[R1-bgp]peer3.3.3.3next-hop-local
[R1-bgp]peer2.2.2.2as-n100
[R1-bgp]peer2.2.2.2conloo0
[R1-bgp]peer2.2.2.2next-hop-local

R2:
[R2]bgp100
[R2-bgp]router-id2.2.2.2
[R2-bgp]peer1.1.1.1as-n100
[R2-bgp]peer1.1.1.1conloo0
[R2-bgp]peer1.1.1.1next-hop-local
[R2-bgp]peer3.3.3.3as-n100
[R2-bgp]peer3.3.3.3conloo0
[R2-bgp]peer3.3.3.3next-hop-local

R3:
[R3]bgp100
[R3-bgp]router-id3.3.3.3
[R3-bgp]peer1.1.1.1as-n100
[R3-bgp]peer1.1.1.1conloo0
[R3-bgp]peer2.2.2.2as-n100
[R3-bgp]peer2.2.2.2conloo0

4.配置静态路由
解决R1、R2的静态路由,回包路由
[R1]iproute-static4.4.4.432192.168.14.4
[R2]iproute-static4.4.4.432192.168.24.4
[R4]iproute-static1.1.1.132192.168.14.1
[R4]iproute-static2.2.2.232192.168.24.2

5.建立EBGP邻居
现在R1R2来和R4建立邻居
[R1]bgp100
[R1-bgp]peer4.4.4.4as-n200
[R1-bgp]peer4.4.4.4conloo0
[R1-bgp]peer4.4.4.4ebgp-max-hop

[R2]bgp100
[R2-bgp]peer4.4.4.4as-n200
[R2-bgp]peer4.4.4.4conloo0
[R2-bgp]peer4.4.4.4ebgp-max-hop

[R4]bgp200
[R4-bgp]router-id4.4.4.4
[R4-bgp]peer1.1.1.1as-n100
[R4-bgp]peer1.1.1.1conloo0
[R4-bgp]peer1.1.1.1ebgp-max-hop
[R4-bgp]peer2.2.2.2as-n100
[R4-bgp]peer2.2.2.2conloo0
[R4-bgp]peer2.2.2.2ebgp-max-hop

6.宣告网段,传递路由
把R3的条目放到BGP里
[R3-bgp]net33.33.33.3332

[R4]bgp200
[R4-bgp]net44.44.44.4432
[R4-bgp]net55.55.55.5532

[R3-bgp]disbgprouting-table44.44.44.44查看详细参数
发现IGPcost1,notpreferredforrouterID
选择R1是因为是通过RouterID,越小越优先
最优可用的路由条目会放在全局路由表
[R3]disiprouting-table
44.44.44.44/32IBGP2550RD1.1.1.1

7.负载分担
希望在R3的全局路由表有1.1.1.1也有2.2.2.2
选路规则前八条必须一模一样,然后开启负载分担
哪台路由器看,就哪台路由器开
[R3]bgp100
[R3-bgp]maximumload-balancing2
disiprouting-table
44.44.44.44/32IBGP2550RD1.1.1.1GigabitEthernet0/0/0
IBGP2550RD2.2.2.2


8.首选值PreVal
BGP路由默认是1.1.1.1
现在想要55.55.55.55最优选2.2.2.2。
达到一种合理分流的效果
想R3经过R1去44网段,R3经过R2去55网段

8fbbf842-e9c2-11ee-a297-92fbcf53809c.png

R4的路由到R2再进入到R3,import到R3
R2产生的路由条目发给R3import
R3产生的路由条目发给R2export

三步骤:
[R3]acl2000
[R3-acl-basic-2000]rulepermitsource55.55.55.550.0.0.0
[R3]route-policy10permitnode10
[R3-route-policy]if-matchacl2000
[R3-route-policy]applypreferred-value99
[R3]route-policy10permitnode20
[R3]bgp100
[R3-bgp]peer2.2.2.2route-policy10import
如果是R3产生的路由条目发送给R2,那就是export

8fc56c74-e9c2-11ee-a297-92fbcf53809c.png

Local_Preference

BGP属性 —— Local_Preference
Local_Pref属性仅在IBGP邻居之间有效,不通告给其他AS。它表明路由器的BGP优先级,用于判断流量离开AS时的最佳路由,也就是控制流量从哪个出口离开AS。默认为100,越大越优 (EBGP之间路由传递不携带Local_Preference)

修改默认本地优先级
bgp 200
default local-preference 200

修改一条路由的本地优先级
ip ip-prefix 1 permit 1.1.1.0 24
route-policy 10 permit node 1
if-match ip-prefix 1
apply local-preference 500
route-policy 10 permit node 2
8
bgp 200
peer 192.168.12.1 route-policy 10 import

8fd6f9d0-e9c2-11ee-a297-92fbcf53809c.png

R2的Router ID比R3的Router ID小,默认走的是R2路线,现在想R3也要走

1、基本配置
R1:
sys
sysnameR1
intloop0
ipadd1.1.1.124
intloop1
ipadd11.11.11.1124
intg0/0/0
ipadd192.168.12.124
intg0/0/1
ipadd192.168.13.124
q

R2:
sys
sysnameR2
intloop0
ipadd2.2.2.224
intg0/0/0
ipadd192.168.12.224
intg0/0/1
ipadd192.168.24.224
q

R3:
sys
sysnameR3
intloop0
ipadd3.3.3.324
intg0/0/1
ipadd192.168.13.324
intg0/0/0
ipadd192.168.34.324
q

R4:
sys
sysnameR4
intloop0
ipadd4.4.4.424
intloop1
ipadd44.44.44.4424
intg0/0/1
ipadd192.168.24.424
intg0/0/0
ipadd192.168.34.424
q


2.配置OSPF
R2:
ospf1router-id2.2.2.2
area0.0.0.0
network2.2.2.20.0.0.0
network192.168.24.20.0.0.0

R3:
ospf1router-id3.3.3.3
area0.0.0.0
network3.3.3.30.0.0.0
network192.168.34.30.0.0.0

R4:44.44.44.44放在BGP
ospf1router-id4.4.4.4
area0.0.0.0
network192.168.24.40.0.0.0
network192.168.34.40.0.0.0
network4.4.4.40.0.0.0

3.建立BGP
R1:
[R1]bgp100
[R1-bgp]router-id1.1.1.1
[R1-bgp]peer192.168.12.2as-n200
[R1-bgp]peer192.168.13.3as-n200
[R1-bgp]net1.1.1.024
[R1-bgp]net11.11.11.024

R2:
[R2]bgp200
[R2-bgp]router-id2.2.2.2
[R2-bgp]peer192.168.12.1as-n100
[R2-bgp]peer4.4.4.4as-n200
[R2-bgp]peer4.4.4.4conloo0
[R2-bgp]peer4.4.4.4next-hop-local
[R2-bgp]peer3.3.3.3as-n200
[R2-bgp]peer3.3.3.3conloo0
[R2-bgp]peer3.3.3.3next-hop-local

R3:
[R3]bgp200
[R3-bgp]router-id3.3.3.3
[R3-bgp]peer192.168.13.1as-n100
[R3-bgp]peer2.2.2.2as-n200
[R3-bgp]peer2.2.2.2conloo0
[R3-bgp]peer2.2.2.2next-hop-local
[R3-bgp]peer4.4.4.4as-n200
[R3-bgp]peer4.4.4.4conloo0
[R3-bgp]peer4.4.4.4next-hop-local

R4:
[R4]bgp200
[R4-bgp]router-id4.4.4.4
[R4-bgp]peer2.2.2.2as-n200
[R4-bgp]peer2.2.2.2conloo0
[R4-bgp]peer3.3.3.3as-n200
[R4-bgp]peer3.3.3.3conloo0
[R4-bgp]net44.44.44.024

[R4-bgp]disbgprouting-table
R4去往11网段是往R2走,因为R2的RouterID更小
TotalNumberofRoutes:5
NetworkNextHopMEDLocPrfPrefValPath/Ogn

*>i1.1.1.0/242.2.2.201000100i
*i3.3.3.301000100i
*>i11.11.11.0/242.2.2.201000100i
*i3.3.3.301000100i
*>44.44.44.0/240.0.0.000i
[R4-bgp]


4.修改优先级
单单改R3default(换汤不换药)
可以disdefault-parameterbgp查看默认
如果想走R3,就在R3上改
[R3]bgp200
[R3-bgp]defaultlocal-preference200
改了之后,在R4上查看disbgprouting-table
TotalNumberofRoutes:3
NetworkNextHopMEDLocPrfPrefValPath/Ogn

*>i1.1.1.0/243.3.3.302000100i
*>i11.11.11.0/243.3.3.302000100i
*>44.44.44.0/240.0.0.000i
刚才是都走2.2.2.2,现在都走3.3.3.3
换汤不换药,没达到分流效果


在上面R3改了本地优先级的基础上,再改R2
R2上做了后通过IBGP邻居传给R4
[R2]ipip-prefix1permit1.1.1.024
[R2]route-policy10permitnode10
[R2-route-policy]if-matchip-prefix1
[R2-route-policy]applylocal-preference299
[R2]route-policy10permitnode20

[R2]bgp200
[R2-bgp]peer192.168.12.1route-policy10import
关键:路由条目是R1产生的,针对R1进入(import)到R2的时候改变属性值为299,然后通过IBGP传给R4,从而影响R4离开当前AS200选R2

[R4]disbgprouting-table
TotalNumberofRoutes:3
NetworkNextHopMEDLocPrfPrefValPath/Ogn

*>i1.1.1.0/242.2.2.202990100i
*>i11.11.11.0/243.3.3.302000100i
*>44.44.44.0/240.0.0.000i

AS-Path

AS_Path 属性顺序记录了某条 BGP 路由所经过的 AS 信息,BGP 在比较
AS_Path 属性后,会优选 AS_Path 长度较短的那条路由。另外,AS_Path 还可以用来防止路由之间的环路。当路由器从 EBGP 邻居收到 BGP 路由时,如果该路由的 AS_Path 中包含了自己的 AS 编号,则该路由将会直接丢弃。

ip ip-prefix asp permit 2.2.2.0 24
route-policy 10 permit node 1
if-match ip-prefix asp
apply as-path 500 500 additive
9
route-policy 10 permit node 2
bgp 100
peer 192.168.15.5 route-policy 10 import
apply as-path 500 500 additive
apply as-path 300 500 500 100 overwrite
Warning: The AS-Path lists of routes to which this route-policy is applied
will be overwritten. Continue? [Y/N] y

8fe9ead6-e9c2-11ee-a297-92fbcf53809c.png

1、基本配置
R1:
sys
sysnameR1
intloop0
ipadd1.1.1.124
intg0/0/1
ipadd192.168.15.124
intg0/0/0
ipadd192.168.13.124
q

R2:
sys
sysnameR2
intloop0
ipadd2.2.2.224
intg0/0/1
ipadd192.168.26.224
intg0/0/0
ipadd192.168.24.224
q

R3:
sys
sysnameR3
intg0/0/0
ipadd192.168.13.324
intg0/0/1
ipadd192.168.34.324
q

R4:
sys
sysnameR4
intg0/0/0
ipadd192.168.24.424
intg0/0/1
ipadd192.168.34.424
q

R5:
sys
sysnameR5
intg0/0/1
ipadd192.168.15.524
intg0/0/0
ipadd192.168.56.524
q

R6:
sys
sysnameR6
intg0/0/0
ipadd192.168.56.624
intg0/0/1
ipadd192.168.26.624
q


2.配置BGP
R1:
bgp100
router-id1.1.1.1
peer192.168.15.5as-n500
peer192.168.13.3as-n300
net1.1.1.024

R2:
bgp200
router-id2.2.2.2
peer192.168.26.6as-n500
peer192.168.24.4as-n400
net2.2.2.024

R3:
bgp300
router-id3.3.3.3
peer192.168.13.1as-n100
peer192.168.34.4as-n400

R4:
bgp400
router-id4.4.4.4
peer192.168.34.3as-n300
peer192.168.24.2as-n200

R5:
bgp500
router-id5.5.5.5
peer192.168.15.1as-n100
peer192.168.56.6as-n500
peer192.168.56.6next-hop-local

R6:
bgp500
router-id6.6.6.6
peer192.168.26.2as-n200
peer192.168.56.5as-n500
peer192.168.56.5next-hop-local

[R1]disbgprouting-table
TotalNumberofRoutes:3
NetworkNextHopMEDLocPrfPrefValPath/Ogn

*>1.1.1.0/240.0.0.000i
*>2.2.2.0/24192.168.15.50500200i
*192.168.13.3030040020

[R1]disbgprouting-table2.2.2.2
可以查看详细为什么到达2.2.2.2下一跳是15.5
AS-path300400200,originigp,pref-val0,valid,external,pre255,notpreferredforAS-Path.
因为下面要经过3个AS号,上面只需要经过2个AS号

3.增加AS,修改优先级
希望R1走13.3,下面走,增加AS号
针对R5发送给R1的路由,import
[R1]ipip-prefix2permit2.2.2.024
[R1]route-policy10permitnode10
[R1-route-policy]if-matchip-prefix2
[R1-route-policy]applyas-path499599additive也可以覆盖overwrite
[R1]route-policy10permitnode20
[R1-route-policy]bgp100
[R1-bgp]peer192.168.15.5route-policy10import

[R1]disbgprouting-table选择AS-Path更短的13.3
TotalNumberofRoutes:3
NetworkNextHopMEDLocPrfPrefValPath/Ogn

*>1.1.1.0/240.0.0.000i
*>2.2.2.0/24192.168.13.30300400200i
*192.168.15.50499599500200i

4.R2查看回包,来包回包路径要一样才正常。
R2还是默认在上面,刚才的改动对R2没影响,因此也要对R2进行修改,一样的方法
disbgprouting-table
TotalNumberofRoutes:3
NetworkNextHopMEDLocPrfPrefValPath/Ogn

*>1.1.1.0/24192.168.26.60500100i
*192.168.24.40400300100i
*>2.2.2.0/240.0.0.000i

[R2]acl2000
[R2-acl-basic-2000]rulepermitsource1.1.1.00.0.0.255
[R2-acl-basic-2000]q
[R2]route-policy10permitnode10
[R2-route-policy]if-matchacl2000
[R2-route-policy]applyas-path199299399499overwrite
Warning:TheAS-Pathlistsofroutestowhichthisroute-policyisappliedwill
beoverwritten.Continue?[Y/N]y
[R2-route-policy]q
[R2]route-policy10permitnode20
[R2-route-policy]q
[R2]bgp200
[R2-bgp]peer192.168.26.6route-policy10import针对R6进入到R2的路由调用

disbgprouting-table
TotalNumberofRoutes:3
NetworkNextHopMEDLocPrfPrefValPath/Ogn

*>1.1.1.0/24192.168.24.40400300100i
*192.168.26.60199299399499i
*>2.2.2.0/240.0.0.000i

Metric

优选 AS 内部 IGP 的 Metric 最小的路由。
BGP 在比较 Next Hop 属性时,会优选去往 Next Hop 属性中 IP 地址的 IGP开销最小的路由。
通信双方的往返报文选用不同路径的现象称为不对称路由。对于某些特定的应用,以及部署了某些特别的安全设备和安全策略的情况下,不对称路由的存在可能会导致通过中断的现象。
int g0/0/0
ospf cost 2000

Med

可选非过渡,内容不一定识别到,识别不到就不会传递。
MED 多出口区分器
MED(Multi-exit-disc)也称为多出口鉴别器,它是一个 4 字节的整数,默认 MED值为 0,MED 值越小,表明相应的路由优先级越高。MED属性仅在相邻两个AS之间传递,收到此属性的AS不会再将其通告给任何其他第三方AS。 MED 属性主要作用是用来控制来自邻居 AS 的流量从哪个入口进入到本 AS 中。用于判断流量进入AS时的最佳路由

MED俗称是BGP的cost值

这里是前缀列表的做法,代码块写的是ACL做法
ip ip-prefix 1 permit 172.16.1.0 24
ip ip-prefix 2 permit 172.16.2.0 24
route-policy 10 permit node 1
if-match ip-prefix 1
apply cost 100
route-policy 10 permit node 2
if-match ip-prefix 2
apply cost 200
route-policy 10 permit node 3
route-policy 20 permit node 1
if-match ip-prefix 1
apply cost 200
route-policy 20 permit node 2
if-match ip-prefix 2
apply cost 100
route-policy 20 permit node 3
bgp 100
peer 192.168.12.2 route-policy 10 export
peer 192.168.13.3 route-policy 20 export
bgp 400
compare-different-as-med

8ffb911e-e9c2-11ee-a297-92fbcf53809c.png

903d836c-e9c2-11ee-a297-92fbcf53809c.png

R2和R3去往172.16.1.1,都走12网段
R2和R3去往172.16.2.1,都走23网段

R5接收学习R2路由,因为R2的Router ID更小,我现在需要优选R4路由发送给R5,该怎么做。

1、基础配置
R1:
sys
sysnameR1
intloop0
ipadd1.1.1.124
intloop1
ipadd172.16.1.124
intloop2
ipadd172.16.2.124
intloop3
ipadd192.168.1.124
intg0/0/2
ipadd192.168.12.124
intg0/0/0
ipadd192.168.13.124
intg0/0/1
ipadd192.168.14.124
q

R2:
sys
sysnameR2
intloop0
ipadd2.2.2.224
intg0/0/2
ipadd192.168.12.224
intg0/0/0
ipadd192.168.23.224
intg0/0/1
ipadd192.168.25.224
q

R3:
sys
sysnameR3
intloop0
ipadd3.3.3.324
intg0/0/1
ipadd192.168.13.324
intg0/0/0
ipadd192.168.23.324
intg0/0/2
ipadd192.168.35.324
q

R4:
sys
sysnameR4
intloop0
ipadd4.4.4.424
intg0/0/0
ipadd192.168.14.424
intg0/0/1
ipadd192.168.45.424
q

R5:
sys
sysnameR5
intloop0
ipadd5.5.5.524
intg0/0/2
ipadd192.168.25.524
intg0/0/1
ipadd192.168.35.524
intg0/0/0
ipadd192.168.45.524
q


2.建立BGP
R1:
R1的192.168.1.1是针对R5来看的
[R1]bgp100
[R1-bgp]router-id1.1.1.1
[R1-bgp]peer192.168.12.2as-n200
[R1-bgp]peer192.168.13.3as-n200
[R1-bgp]peer192.168.14.4as-n300
[R1-bgp]net172.16.1.024
[R1-bgp]net172.16.2.024
[R1-bgp]

R2:
[R2]bgp200
[R2-bgp]router-id2.2.2.2
[R2-bgp]peer192.168.12.1as-n100
[R2-bgp]peer192.168.25.5as-n400
[R2-bgp]peer192.168.23.3as-n200
[R2-bgp]peer192.168.23.3next-hop-local
因为没有用环回口来建立IBGP邻居,所以ebgp多跳和connect不需要。

R3:
[R3]bgp200
[R3-bgp]router-id3.3.3.3
[R3-bgp]peer192.168.13.1as-n100
[R3-bgp]peer192.168.35.5as-n400
[R3-bgp]peer192.168.23.2as-n200
[R3-bgp]peer192.168.23.2next-hop-local

R4:
[R4]bgp300
[R4-bgp]router-id4.4.4.4
[R4-bgp]peer192.168.14.1as-n100
[R4-bgp]peer192.168.45.5as-n400

R5:
[R5]bgp400
[R5-bgp]router-id5.5.5.5
[R5-bgp]peer192.168.25.2as-n200
[R5-bgp]peer192.168.35.3as-n200
[R5-bgp]peer192.168.45.4as-n300
查看邻居状态是否为Established

验证:
[R2]disbgprouting-table

TotalNumberofRoutes:4
NetworkNextHopMEDLocPrfPrefValPath/Ogn

*>172.16.1.0/24192.168.12.100100i
*i192.168.23.301000100i
*>172.16.2.0/24192.168.12.100100i
*i192.168.23.301000100i
为什么最优是12.1呢,可以查看原因
[R2]disbgprouting-table172.16.1.0
AS-path100,originigp,MED0,localpref100,pref-val0,valid,internal,pre
255,notpreferredforpeertype
R1和R2之间是EBGP邻居,R2和R3是IBGP邻居
EBGP邻居的优先级>IBGP邻居的优先级
如果在R3上查看bgp路由表也是一样道理


3.现在要求R2R3去往172.16.1.0都往12网段走
去往172.16.2.0都往13网段走
R1修改完成后,发给EBGP邻居R2和R3,从而让R2和R3影响选路。
R1自己修改后export给R2和R3

第一步:匹配ACL,应用策略
[R1]acl2001
[R1-acl-basic-2001]rulepermitsource172.16.1.00.0.0.255
[R1-acl-basic-2001]acl2002
[R1-acl-basic-2002]rulepermitsource172.16.2.00.0.0.255
[R1-acl-basic-2002]

配置R2和R3策略
R2:
route-policyR2permitnode10
if-matchacl2001
applycost20
#
route-policyR2permitnode20
if-matchacl2002
applycost30
#
route-policyR2permitnode30

R3:
route-policyR3permitnode10
if-matchacl2001
applycost30
#
route-policyR3permitnode20
if-matchacl2002
applycost20
#
route-policyR3permitnode30

R1上调用:
bgp100
peer192.168.12.2route-policyR2export
peer192.168.13.3route-policyR3export


R2查看bgp路由表

9047f0ea-e9c2-11ee-a297-92fbcf53809c.png

MED属性仅在相邻两个AS之间传递,收到此属性的AS不会再将其通告给任何其他第三方AS。
MED值只会传给一个 EBGP邻居,AS100传给了AS200,不会再传给AS400。
[R5]dis bgp routing-table 验证

9060aa2c-e9c2-11ee-a297-92fbcf53809c.png

MED和LocPrf 为空,都是默认值

4.R5优选学习
[R1]bgp100
[R1-bgp]net192.168.1.024
R1宣告网段,发送给R2R3R4,然后再发送给R5

在R5这台路由器上有三个邻居,默认会优选R2,因为R2的RouterID更小
[R5]disbgprouting-table192.168.1.0
.......dforrouterID

RouterID是选路规则的第十条,现在我要优选R4
MED是选路规则的第六条,匹配网段,然后改MED值
R2的MED是100,R3的MED是50,R4的MED是10
R2:
[R2]ipip-prefix1permit192.168.1.024
[R2]route-policyR5permitnode10
[R2-route-policy]if-matchip-prefix1
[R2-route-policy]applycost100
[R2-route-policy]route-policyR5permitnode20
[R2-route-policy]q
[R2]bgp200
[R2-bgp]peer192.168.25.5route-policyR5export

R3、R4都这样做,不同的是applycost5010
还有bgp调用,peer的地址。
验证:[R5]disbgprouting-table

为什么不选R4,因为来自不同的表项

907388a4-e9c2-11ee-a297-92fbcf53809c.png

因为BGP只比较来自同一个AS的路由的MED值。 它会在AS 200里选。

如果真的想要选R4,在R5上启用一个特殊,谁查看就在谁的路由器上做
[R5]bgp 400
[R5-bgp]compare-difference-as-med

90836422-e9c2-11ee-a297-92fbcf53809c.png

Community

可选过渡advertise-community,让别的路由器也识别到。
Community 属性
BGP 路由的团体属性 Community 的主要作用是简化路由策略的实现过程,例如,可以将拥有团体属性的若干路由视为同一个团体,当需要对该团体中所有路由的某个特定属性进行修改时,就没必要逐一对每条路由单独进行修改。 团体属性是 BGP 路由的一种可选属性,路由器在向 BGP 对等体传递路由时,如果希望所传递的路由携带团体的属性,则需要额外的配置

两个作用: ①限定路由的传播范围 ②打标记,便于对符合相同条件的路由进行统一处理

4 个特殊的团体:
internet ,no-export , no-advertise , no-export-Subconfed

internet : 可以向任何 BGP 对等体发布路由
no-export: 不会发给 EBGP 对等体,但可以发布给联盟(Confederation)EBGP 对等体
no-advertise: 不会发给任何 BGP 对等体,谁都不发
no-export-Subconfed :不会发给 EBGP 对等体,也不会发布给联盟
(Confederation)EBGP 对等体
aa:nn 自定义团体属性

909261c0-e9c2-11ee-a297-92fbcf53809c.png

1、基本配置
R1:
sys
sysnameR1
intloop0
ipadd1.1.1.124
intloop1
ipadd10.0.100.132
intloop2
ipadd10.0.100.232
intloop3
ipadd10.0.100.332
intloop4
ipadd10.0.100.432
intloop5
ipadd10.0.100.532
intg0/0/0
ipadd192.168.12.124
q

R2:
sys
sysnameR2
intloop0
ipadd2.2.2.224
intg0/0/0
ipadd192.168.12.224
intg0/0/1
ipadd192.168.23.224
intg0/0/2
ipadd192.168.24.224
q

R3:
sys
sysnameR3
intloop3
ipadd3.3.3.324
intg0/0/1
ipadd192.168.23.324
q

R4:
sys
sysnameR4
intloop0
ipadd4.4.4.424
intg0/0/2
ipadd192.168.24.424
intg0/0/0
ipadd192.168.45.424
q

R5:
sys
sysnameR5
intloop0
ipadd5.5.5.524
intg0/0/0
ipadd192.168.45.524
q


2.建立BGP
R1:
[R1]bgp100
[R1-bgp]router-id1.1.1.1
[R1-bgp]peer192.168.12.2as-n200
[R1-bgp]net10.0.100.132
[R1-bgp]net10.0.100.232
[R1-bgp]net10.0.100.332
[R1-bgp]net10.0.100.432
[R1-bgp]net10.0.100.532

R2:
[R2]bgp2001
[R2-bgp]router-id2.2.2.2
[R2-bgp]conf
[R2-bgp]confederationid200
[R2-bgp]confederationpeer-as2002
[R2-bgp]peer192.168.12.1as-n100
[R2-bgp]peer192.168.24.4as-n2001
[R2-bgp]peer192.168.24.4next-hop-local
[R2-bgp]peer192.168.23.3as-n2002
[R2-bgp]peer192.168.23.3next-hop-local

R3:
[R3]bgp2002
[R3-bgp]router-id3.3.3.3
[R3-bgp]confederationid200
[R3-bgp]confederationpeer-as2001
[R3-bgp]peer192.168.23.2as-n2001

R4:
[R4]bgp2001
[R4-bgp]router-id4.4.4.4
[R4-bgp]confederationid200
[R4-bgp]peer192.168.24.2as-n2001
[R4-bgp]peer192.168.45.5as-n300
[R4-bgp]peer192.168.45.5next-hop-local
也可以不加next-hop-local。因为这个实验只宣告R1的,R5没有宣告

R5:
[R5]bgp300
[R5-bgp]router-id5.5.5.5
[R5-bgp]peer192.168.45.4as-n200
[R5-bgp]disbgprouting-table
TotalNumberofRoutes:5
NetworkNextHopMEDLocPrfPrefValPath/Ogn

*>10.0.100.1/32192.168.45.40200100i
*>10.0.100.2/32192.168.45.40200100i
*>10.0.100.3/32192.168.45.40200100i
*>10.0.100.4/32192.168.45.40200100i
*>10.0.100.5/32192.168.45.40200100i


3.advertise-community
[R1]bgp100
[R1-bgp]peer192.168.12.2advertise-community

[R2]bgp2001
[R2-bgp]peer192.168.23.3advertise-community
[R2-bgp]peer192.168.24.4advertise-community

[R4]bgp2001
[R4-bgp]peer192.168.45.5advertise-community

4.配置策略
第一种:no-export
[R1]ipip-prefix2permit10.0.100.232
[R1]route-policy10permitnode2
[R1-route-policy]if-matchip-prefix2
[R1-route-policy]applycommunityno-export不发给R5
[R1]route-policy10permitnode10
[R1]bgp100
[R1-bgp]peer192.168.12.2route-policy10export

R2验证:dis bgp routing-table community

90b6d104-e9c2-11ee-a297-92fbcf53809c.png

R5验证:dis bgp routing-table 收不到100.2

9118ae4c-e9c2-11ee-a297-92fbcf53809c.png

R5收不到,R3能收到吗? 肯定的,因为是R3是联盟的EBGP

9127fbb8-e9c2-11ee-a297-92fbcf53809c.png


R4也可以去 dis bgp routing-table

如果我希望 100.3 ,R5收不到,R3也收不到 —— no-export-subconfed

第二种:no-export-subconfed
R1:刚才已经调用过了,可以直接配置看
[R1]ipip-prefix3permit10.0.100.332
[R1]route-policy10permitnode3
[R1-route-policy]if-matchip-prefix3
[R1-route-policy]applycommunityno-export-subconfed

R2:
[R2]dis bgp routing-table community

91404e66-e9c2-11ee-a297-92fbcf53809c.png

R3和R5上可以查看是否有没 dis bgp routing-table
R3:

9154cdaa-e9c2-11ee-a297-92fbcf53809c.png

第三种:no-advertise只告诉R2,让R2别发100.4
[R1]ipip-prefix4permit10.0.100.432
[R1]route-policy10permitnode4
[R1-route-policy]if-matchip-prefix4
[R1-route-policy]applycommunityno-advertise

在R2上查看是否有属性,disbgprouting-tablecommunity
在R3R4R5disbgprouting-table验证

第四种:打标记,对符合相同的条件路由做统一处理
希望100.5不要给R4和R5收到
[R1]ipip-prefix5permit10.0.100.532
[R1]route-policy10permitnode5
[R1-route-policy]if-matchip-prefix5
[R1-route-policy]applycommunity100:5

直接在R4上收到标记100:5的拒绝deny
拒绝来我R4,自然也不会去R5。
[R4]ipcommunity-filter1permit100:5
[R4]route-policy10denynode10
[R4-route-policy]if-matchcommunity-filter1
[R4-route-policy]route-policy10permitnode20
调用策略:拒绝R2来R4的路由
[R4]bgp2001
[R4-bgp]peer192.168.24.2route-policy10import


第五种:internet
[R1]ipip-prefix1permit10.0.100.132
[R1]route-policy10permitnode6
if-matchipip-prefix1
applycommunityinternet
internet可以向任何BGP对等体发布路由

最终结果

915c8054-e9c2-11ee-a297-92fbcf53809c.png

BGP 路由反射器

916c5902-e9c2-11ee-a297-92fbcf53809c.png

内部路由器过多的时候,通过IBGP收到的路由条目不会反射给另一个IBGP,IBGP邻居太多了,两两配置比较麻烦

如何解决IBGP邻接关系过多的情况?
RR 路由反射器 (防环:origintor-id cluster-list)
通过IBGP收到的路由条目,发送给另一个IBGP邻居

3 条规则
①从一个非客户端那里接收到的路由,反射器会将它只传递给所有的客户端,
②从一个客户端那里接收到的路由,反射器会将它传递给所有其它的客户端以及非客户端,
③从 EBGP 对等体那里接收到的路由,反射器会将它传递给所有客户端和非客户端

禁止客户机之间的路由反射
bgp 100
undo reflect between-clients

主要的配置
bgp 100
group 1
peer 2.2.2.2 group 1
peer 1 reflect-client
peer 1 next-hop-local
reflector cluster-id 1

91c226ca-e9c2-11ee-a297-92fbcf53809c.png

9210f516-e9c2-11ee-a297-92fbcf53809c.png

IBGP通过环回口建立,IGP协议为OSPF,EBGP通过物理接口建立

123在组1
456在组2
7不属于任一组

1.基本配置
2.OSPF配置
3.建立IBGP邻居
R2R3是客户端,R1是服务器端(路由反射器)
R1:
bgp100
router-id1.1.1.1
group1
peer2.2.2.2group1
peer3.3.3.3group1
peer1next-hop-local表示peer这个组1
peer1reflect-client表示这个组是客户端
reflectorcluster-id1组1编号

peer4.4.4.4as-n100
peer4.4.4.4conloo0
peer4.4.4.4next-hop-local
如果按之前的配置,R2需要指3,R3需要指2
现在R2R3直接经过R1反射给R3R2
[R1]bgp100
net1.1.1.024

R2:
bgp100
router-id2.2.2.2
peer1.1.1.1as-n100
peer1.1.1.1conloo0
不需要指3
net2.2.2.024

R3:
bgp100
router-id3.3.3.3
peer1.1.1.1as-n100
peer1.1.1.1conloo0
net3.3.3.024

[R1]disbgppeer发现和2、3都建立起来了
这是谁发的?disbgprouting-table3.3.3.0
路由反射器的功能
[R1-bgp]undoreflectbetween-clients关闭路由反射器


R4:只有内部邻居,因此不用加next-hop-local
bgp100
router-id4.4.4.4
peer1.1.1.1as-n100
peer1.1.1.1conloo0
net4.4.4.024

group2
peer5.5.5.5group2
peer6.6.6.6group2
peer2reflect-client
peer192.168.47.7as-n100

R5:
bgp100
router-id5.5.5.5
peer4.4.4.4as-n100
peer4.4.4.4conloo0
net5.5.5.024

r6:
BGP100
router-id6.6.6.6
peer192.168.46.4as-n100
peer192.168.47.7as-n100
net6.6.6.024
______
R7
bgp100
router-id7.7.7.7
peer192.168.47.4as-n100
net7.7.7.7024

R8
bgp200
router-id8.8.8.8
peer192.168.18.1as-n100
net8.8.8.024

[R1]bgp200
peer192.168.18.1as-n100


R1:[R7]net7.7.7.0R7是非客户,宣告网段的路由更新能到R4,不能传到R1
R1没有7.7.7.7怎么办?如何实现全网互通
R1和R7单独建立个邻居
[R7]bgp100
peer1.1.1.1as-n100
peer1.1.1.1conloo0

[R1]bgp100
peer7.7.7.7as-n100
peer7.7.7.7conloo0
peer7.7.7.7next-hop-local


BGP 联盟(Condeferation)

BGP 路由反射器可以用来减少大型 AS 中 IBGP 邻居关系的数量和简化 IBGP 邻居关系的管理和维护,BGP 联盟(Condeferation)也可以用来实现类似的目的

一个 BGP 联盟是一个具有内部层次结构的 AS,一个 BGP 联盟由若干个子 AS组成。对于一个 BGP 联盟,其成员 AS 内部的路由器之间需要建立全互联的IBGP 邻居使用 BGP 路由反射器,而成员之间需要建立 EBGP 邻居关系。从联盟外的 EBGP 对等体来看,整个联盟无异于一个普通的 AS,联盟内部的结构对于联盟外的 EBGP 对等体来说是完全透明的。

bgp 2001
router-id 2.2.2.2
confederation id 200 标识自己的联盟号
confederation peer-as 2002 2003 子成员,联盟内的
先完成以上两步,再去peer 外部EBGP
peer 192.168.12.1 as-n 100

联盟内的EBGP
peer 192.168.25.5 as-n 2003
peer 192.168.25.5 next-hop-local 对于整体也要next-hop-local

922f8e90-e9c2-11ee-a297-92fbcf53809c.png

R1:
bgp100
router-id1.1.1.1
peer192.168.12.2as-n200
net1.1.1.024
net11.11.11.024

R2:
bgp2001
router-id2.2.2.2
confederationid200标识自己的联盟号
confederationpeer-as20022003子成员,联盟内的AS
要先配置上面两步再peer外部EBGP
peer192.168.12.1as-n100外部的EBGP
peer192.168.25.5as-n2003内部的EBGP
peer192.168.25.5next-hop-local为了让R5能够学习到R2传过来的路由
peer192.168.23.3as-n2002
peer192.168.23.3next-hop-local

R3:
bgp2002
router-id3.3.3.3
confederationid200
confederationpeer-as2001
peer192.168.23.2as-n2001
peer192.168.34.4as-n2002
peer192.168.34.4next-hop-local不起作用

R4:
bgp2002
router-id4.4.4.4
confederationid200
peer192.168.34.3as-n2002

R5:
bgp2003
router-id5.5.5.5
confederationid200
confederationpeer-as2001
peer192.168.25.2as-n2001
peer192.168.56.6as-n2003
peer192.168.56.6next-hop-local不起作用

R6:
bgp2003
router-id6.6.6.6
confederationid200
peer192.168.56.5as-n2003

邻居能够建立,但路由传递有点问题。
在R3和R5上的next-hop-local不起作用
R3传不到R4,R5传不到R6

92536446-e9c2-11ee-a297-92fbcf53809c.png

学不到,下一跳不可达。为什么下一跳不可达?为什么不起作用?
让R4、R6到达,跑一个OSPF协议,让他们路由表有 下一跳的网段。
[R2]ospf
area 0
net 192.168.23.2 0.0.0.0
net 192.168.25.2 0.0.0.0

R3:
ospf
area 0
net 192.168.23.3 0.0.0.0
net 192.168.34.3 0.0.0.0

R4:
ospf
area 0
net 192.168.34.4 0.0.0.0

R5:
ospf
area 0
net 192.168.25.5 0.0.0.0
net 192.168.56.5 0.0.0.0

R6:
ospf
area 0
net 192.168.56.6 0.0.0.0

结果验证:

926ffd18-e9c2-11ee-a297-92fbcf53809c.png

公司网络规模需要扩大,则一般只需要在相应的成员 AS 中添加路由器并进行相关的配置即可,配置工作量远远小于不使用 BGP 联盟的情形。

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 路由器
    +关注

    关注

    22

    文章

    3505

    浏览量

    111349
  • 反射器
    +关注

    关注

    0

    文章

    46

    浏览量

    12172

原文标题:BGP 选路规则实验

文章出处:【微信号:网络技术干货圈,微信公众号:网络技术干货圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    bgp配置实例讲解 如何配置Cilium和BGP协同工作

      背景 官方提供了多篇文档说明如何配置 Cilium 和 BGP 协同工作,本文主要对以下部分功能进行验证: Using BIRD to run BGP[1] Using kube-router
    的头像 发表于 08-15 09:15 1273次阅读
    <b class='flag-5'>bgp</b>配置实例讲解 如何配置Cilium和<b class='flag-5'>BGP</b>协同工作

    测量BGP传递时间

    测量BGP传递时间
    发表于 07-22 08:46

    测量BGP传递时间

    测量BGP传递时间
    发表于 07-22 10:06

    PCB布线规则解析

    PCB布线规则解析 铺设通电信号的道路以连接各个器件,即PCB布线。在PCB设计中,布线是完成产品设计的重要步骤。PCB布线有些规则相关知识,用此文来和大家分享一番: 走线的方向控制规则
    发表于 11-14 16:06

    动态BGP与静态BGP的区别

    动态BGP与静态BGP的区别 动态BGP与静态BGP的区别 1.静态BGP功能简单,其带宽功能,可以实现多网接入,但路径上只有通向几大运营商
    发表于 12-01 16:55

    PCB设计时应该遵循的规则

    PCB设计时应该遵循的规则 1) 地线回路规则: 环路最小
    发表于 12-12 14:48 1107次阅读
    PCB设计时应该遵循的<b class='flag-5'>规则</b>

    BGP协议的路由选择原则

    BGP(Border Gateway Protocol)是一种自治系统间的动态路由发现协议,目前在互联网中使用非常广泛,BGP协议有非常丰富的属性,路由选择的过程也相对复杂。在使用CISCO设备的网络中BGP路由协议按以下的
    发表于 01-24 09:52 3007次阅读

    基于集合理论的规则间包含关系的解析方法

    和分类规则之间的关系,简化了分析规则间相互关系的过程。并且使用高效的函数式编程语言Haskell实现了所提出的方法,整体代码简洁、易于维护和扩展。实验结果表明,对于中小规模的防火墙规则
    发表于 12-28 09:55 0次下载

    什么是BGP高防,BGP高防的优势是什么

    什么是BGP高防?BGP全称是Border Gateway Protocol,即边界网关协议,是用来连接Internet上的独立系统的路由选择协议。
    发表于 12-28 11:22 891次阅读

    动态BGP是什么,如何判定它的真假

    一、什么叫动态BGP: 中国电信 、中国联通、中国移动和一些拥有AS自治域的大型民营IDC运营商可以通过BGP协议来实现多线互联,这个唯一能够妥善处理不相关路由域间的多路连接的边界网关协议,是运行
    发表于 04-18 09:47 863次阅读

    BGP路由优选规则的深入了解

    BGP路由优选呢?BGP定义了一整套详细的选路规则,使得BGP路由器能够在任何复杂的、冗余的网络环境下,决策出一条最优(Best)的路径:
    的头像 发表于 11-14 09:54 2203次阅读

    如何配置Cilium和BGP协同工作呢?

    官方提供了多篇文档说明如何配置 Cilium 和 BGP 协同工作,本文主要对以下部分功能进行验证
    的头像 发表于 08-15 09:15 817次阅读
    如何配置Cilium和<b class='flag-5'>BGP</b>协同工作呢?

    BGP路由计算选路规则13条

    当到达同一目的地存在多条路由时,BGP依照如下策略顺序进行路由选择
    的头像 发表于 10-08 10:35 612次阅读

    华为路由器BGP基础配置实验记录

    配置BGP的前提是要保证各个自治区域的路由均可达,所以要首先在AS 2 配置OSPF使AS 2 通畅,然后再配置BGP。由于BGP的路由黑洞问题,需要在BGP路由经过的所有路由器上配置
    发表于 01-06 10:07 195次阅读
    华为路由器<b class='flag-5'>BGP</b>基础配置<b class='flag-5'>实验</b>记录

    华为BGP十一条选路规则盘点

    优选router ID最小的设备发布的路由(如果路由携带originator_ID属性,选路过程中将比较originator_ID的大小,不再比较router ID,并优选originator_ID最小的路由)
    发表于 04-28 12:18 49次阅读
    华为<b class='flag-5'>BGP</b>十一条选<b class='flag-5'>路规则</b>盘点