众所周知,BGP中的MED属性是一个公认、可选、非传递属性,用于判断进入自治系统的最佳路径。当一台运行BGP的路由器从另一自治系统得到前缀与掩码均相同、但下一跳不同的多条路由时,在其他优先级高于MED的条件均相同的情况下,MED值最小的路由将被优选。

然而,MED属性如何传递呢?

在解答这个问题之前,先引入一个问题:

BGP中MED属性的传递_3c

如图所示,RT1RT2AS100RT3AS200RT1RT2IBGP邻居,RT2RT3EBGP邻居。RT1RT2发布一条MED值为100的路由192.168.1.0/24RT3RT2发布一条MED值为200的路由192.168.2.0/24。那么,在RT3上观察192.168.1.0/24,其MED值为多少?在RT1上观察192.168.2.0/24,其MED值又是多少?

给几个选择:A、无/B100/C、无/200 D100/200

MED传递套路分析

套路一、如果一台路由器给一条路由设置了MED属性,则会传递给所有邻居,不论该邻居是IBGP还是EBGP。如上图,RT1192.168.1.0/24设置了MED值为100RT3192.168.2.0/24设置了MED值为200,它们都会传递给RT2。因此,在RT2上观察两条路由的MED值分别为100/200

套路二、如果路由器没有设置MED属性,则在传递路由时是否携带MED属性取决于邻居关系。对于IBGP邻居,依然携带MED值;对于EBGP邻居,则不携带。如上图,RT2192.168.2.0/24 传递给RT1时,由于与RT1IBGP邻居,故携带MED属性,在RT1上观察该路由的MED值为200RT2192.168.1.0/24传递给RT3时,由于与RT3EBGP邻居,故不携带MED属性,在RT3上观察该路由无MED值。

所以,正确答案是C

一般情况下,MED属性用于自治系统之间多路径时的选路。如果我们在RT2上将192.168.1.0/24这条路由设置了MED属性,根据传递套路一,它将传递给RT3

那么,是不是说一台路由器只要不设置MED,它在将路由传递给EBGP邻居时一定不会携带MED属性呢?

请看下图:

BGP中MED属性的传递_3c_02

RT1RT2RT3AS100RT1RT3之间没有物理连接;RT4AS200,并与RT3建立EBGP邻居。RT1/RT2/RT3运行OSPF路由协议,使RT1RT3通过Loopback口建立IBGP邻居。RT2没有运行BGP协议。在RT1上有一条直连路由192.168.1.0/24。假设AS100中两条链路在OSPF中开销均为10,那么:

问题1、如果RT1OSPF进程中将192.168.1.0/24路由发布,并在RT3BGP中通过Network命令将此路由变为BGP路由,在RT4观察此BGP路由的MED值是多少?

问题2、如果RT1没有在OSPF进程中发布192.168.1.0/24,而在BGP中发布此路由,那么在RT4上观察此路由的MED值又是多少?

套路三、如果路由器通过networkimport命令注入到BGP中的路由是来自于IGP路由协议,那么BGP MED=IGP COST,并将MED值传递给EBGP邻居。所以,对于问题1,在RT4上观察192.168.1.0/24路由的MED值为20

套路四、如果路由器通过networkimport命令注入到BGP中的路由是来自于直连路由的,那么BGP MED=0。对于问题2RT1BGP中发布直连的192.168.1.0/24,则MED值为0,传递给RT3后的MED也为0RT3传递给RT4时沿用套路二,在RT4上观察此路由无MED值。

对于套路四,在此场景下可以进行变化。

RT3上配置一条路由策略如下:

[H3C]route-policy aa permit node 10

[H3C-route-policy-aa-10]apply cost-type internal

[H3C-route-policy-aa-10]quit

[H3C]

并在BGP中应用该策略:

[H3C]bgp 100

[H3C-bgp-default]address-family ipv4

[H3C-bgp-default-ipv4]peer RT4 route-policy aa export

此时,在RT4上观察该路由的MED值为20







转载自​​https://www.sohu.com/a/236903524_99906077​