BGP 属性 NextHop
属性分类:
公认必遵属性:
所有BGP设备均识别的属性,且必须存在于update报文中;
如:
AS_PATH、origin、next-hop
傻瓜理解:
设备支持BGP协议,那么就必须支持这个属性;
公认任意属性:
所有BGP设备均识别的属性,但不要求必须存在于update报文中;
如:
local_pref
可选过度属性
BGP设备可不识别此属性,它仍接收此属性,在不识别此属性的情况,接收并传递给其他对等体;
如:
团地属性(community)
可选非过度属性
BGP设备可不识别此属性,它仍接收此属性,不识别情况下会忽略此属性,也不会传递给其它对等体:
如:
MED、originator_id、cluster_list
这里的MED 属性其实就是我们常见的cost ,也就是开销;
NextHop 属性:
是公认必遵属性的一种,在传递路由时,此属性必带;
nexthop 属性是记录的路由下一跳信息,BGP与IGP有所不同,它的下一跳不一定是邻居的IP地址;
属性规则:
1、bgp speaker 在向ebgp 对等体发布路由时,会将路由的下一跳地址设置为本地与对端建立邻居关系的接口地址;
2、bgp speaker 在向ibgp 对等体发布本地路由时,会将路由的下一跳地址设置为本地与对端建立邻居关系的接口地址;
3、bgp speaker 在向ibgp 对等体发布从ebgp邻居学习来的路由时,不会对原路由的nexhop属性进行修改,直接发不出去;
简单理解:
1、从EBGP邻居学习来的路由,发送给EBGP 对等体,需要设置路由的nexthop属性为本地与ebgp 邻居建立关系的接口;
2、从EBGP邻居学习来的路由,发布给IBGP 对等体,不修改nexthop属性,直接发送给IBGP对等体;
3、从IBGP邻居学习来的路由,发送给EBGP对等体,需要设置路由的nexthop属性为本地与ebgp 邻居建立关系的接口;
4、本地出发的路由(本地创建),发送给IBGP或EBGP邻居时,都需要设置路由的nexthop属性为本地与ebgp 邻居建立关系的接口;
总结:
除了从EBGP 对等体学习到路由发给给IBGP邻居不需要对nexthop 属性修改,其余发布路由的情况,均需改变nexthop 属性;
修改nexthop 属性为本地与邻居建立BGP关系的接口(包括loopback 接口);
对nexthop 属性的实验
实验图
说明:
1、相连的路由器建立邻居关系;
2、每个路由器宣告回环地址出去;
3、路由器5、6、7使用环回口建立IBGP 全互联邻居关系;
4、其余路由器建立BGP邻居关系时使用路由器物理接口地址;
功能验证
1、路由器从EBGP 邻居学习来的路由,通告给EBGP邻居时,nexthop 属性设置为本地与EBGP邻居建立连接的接口地址;
上图的R2学习到的1.1.1.1/32的路由,通告给R3 R4,R3R4 学习到的1.1.1.1/32 路由的nexthop 属性为23.1.1.2 与24.1.1.2;
如:
[R3]dis bgp routing-table ipv4 Total number of routes: 6 BGP local router ID is 3.3.3.3 Status codes: * - valid, > - best, d - dampened, h - history, s - suppressed, S - stale, i - internal, e - external a - additional-path Origin: i - IGP, e - EGP, ? - incomplete Network NextHop MED LocPrf PrefVal Path/Ogn * >e 1.1.1.1/32 23.1.1.2 0 200 100i * >e 2.2.2.2/32 23.1.1.2 0 0 200i * > 3.3.3.3/32 127.0.0.1 0 32768 i * >e 5.5.5.5/32 35.1.1.5 0 0 400i * >e 6.6.6.6/32 35.1.1.5 0 400i * >e 7.7.7.7/32 35.1.1.5 0 400i
[R4]dis bgp routing-table ipv4
Total number of routes: 6
BGP local router ID is 4.4.4.4
Status codes: * - valid, > - best, d - dampened, h - history,
s - suppressed, S - stale, i - internal, e - external
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
* >e 1.1.1.1/32 24.1.1.2 0 200 100i
* >e 2.2.2.2/32 24.1.1.2 0 0 200i
* > 4.4.4.4/32 127.0.0.1 0 32768 i
* >e 5.5.5.5/32 45.1.1.5 0 0 400i
* >e 6.6.6.6/32 45.1.1.5 0 400i
* >e 7.7.7.7/32 45.1.1.5 0 400i
2、路由器从EBGP邻居学习来的路由,通告给IBGP邻居时,nexthop 属性 不做设置;
上图的R5 学习R4的4.4.4.4/32 与R3 的 3.3.3.3/32 的路由通告给R6、R7 即是这种情况;
那么查看R6 学习到的4.4.4.4/32与3.3.3.3/32 的nexthop 属性应该为45.1.1.4 与35.1.1.3;
<R5>dis bgp routing-table ipv4 Total number of routes: 9 BGP local router ID is 5.5.5.5 Status codes: * - valid, > - best, d - dampened, h - history, s - suppressed, S - stale, i - internal, e - external a - additional-path Origin: i - IGP, e - EGP, ? - incomplete Network NextHop MED LocPrf PrefVal Path/Ogn * >e 1.1.1.1/32 35.1.1.3 0 300 200 100i * e 45.1.1.4 0 300 200 100i * >e 2.2.2.2/32 35.1.1.3 0 300 200i * e 45.1.1.4 0 300 200i * >e 3.3.3.3/32 35.1.1.3 0 0 300i * >e 4.4.4.4/32 45.1.1.4 0 0 300i * > 5.5.5.5/32 127.0.0.1 0 32768 i
3、路由器从IBGP学习来的路由,通告给EBGP邻居时,nexthop 属性设置为本地与EBGP邻居建立连接的接口地址;
上图的R5 学到的R6 与R7的路由(6.6.6.6/32、7.7.7.7/32),通告给R3、R4的时候,即满足这种情况;
所以R3、R4学习到的路由的nexthop 属性应该为35.1.1.5 与45.1.1.5,查看R3、R4的路由:
[R3]dis bgp routing-table ipv4 Total number of routes: 6 BGP local router ID is 3.3.3.3 Status codes: * - valid, > - best, d - dampened, h - history, s - suppressed, S - stale, i - internal, e - external a - additional-path Origin: i - IGP, e - EGP, ? - incomplete Network NextHop MED LocPrf PrefVal Path/Ogn * >e 1.1.1.1/32 23.1.1.2 0 200 100i * >e 2.2.2.2/32 23.1.1.2 0 0 200i * > 3.3.3.3/32 127.0.0.1 0 32768 i * >e 5.5.5.5/32 35.1.1.5 0 0 400i * >e 6.6.6.6/32 35.1.1.5 0 400i * >e 7.7.7.7/32 35.1.1.5 0 400i
4、路由器本地直接通告的路由,通告到IBGP或EBGP邻居时,nexthop 属性设置为本地与EBGP邻居建立连接的接口地址;
上图的R5 的5.5.5.5/32 是直接通告出去的,那么通告给EBGP邻居R3、R4 、IBGP邻居R6、R7的时候,应该都是用建立邻居关系的接口地址;
即:R3 的nexthop 属性为35.1.1.5、R6的属性为5.5.5.5;
查看路由的信息:
[R3]dis bgp routing-table ipv4 Total number of routes: 6 BGP local router ID is 3.3.3.3 Status codes: * - valid, > - best, d - dampened, h - history, s - suppressed, S - stale, i - internal, e - external a - additional-path Origin: i - IGP, e - EGP, ? - incomplete Network NextHop MED LocPrf PrefVal Path/Ogn * >e 1.1.1.1/32 23.1.1.2 0 200 100i * >e 2.2.2.2/32 23.1.1.2 0 0 200i * > 3.3.3.3/32 127.0.0.1 0 32768 i * >e 5.5.5.5/32 35.1.1.5 0 0 400i * >e 6.6.6.6/32 35.1.1.5 0 400i * >e 7.7.7.7/32 35.1.1.5 0 400[R6]dis bgp routing-table ipv4
Total number of routes: 7
[R6]dis bgp routing-table ipv4
Total number of routes: 7
BGP local router ID is 6.6.6.6
Status codes: * - valid, > - best, d - dampened, h - history,
s - suppressed, S - stale, i - internal, e - external
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Network NextHop MED LocPrf PrefVal Path/Ogn
i 1.1.1.1/32 35.1.1.3 100 0 300 200 100i
i 2.2.2.2/32 35.1.1.3 100 0 300 200i
i 3.3.3.3/32 35.1.1.3 0 100 0 300i
i 4.4.4.4/32 45.1.1.4 0 100 0 300i
* >i 5.5.5.5/32 5.5.5.5 0 100 0 i
* > 6.6.6.6/32 127.0.0.1 0 32768 i
* >i 7.7.7.7/32 7.7.7.7 0 100 0 i