BGP nexthop属性

概念

BGP nexthop属性是一个公认必选属性,它是去往目的路由下一跳路由器的IP地址。该地址并不一定是邻居路由器的地址。该属性需要遵守如下规则:

  • 从EBGP邻居学习到的路由会传递给我的EBGP邻居,下一跳改变,变成自己的IP地址。
  • 从EBGP邻居学习到的路由会传递给我的IBGP邻居,下一跳不变,还是EBGP邻居,需要使用next-hop-self改变。
  • 从IBGP邻居学习到的路由会传递给我的EBGP邻居,下一跳改变,变成自己的IP。
  • 特殊协议特殊对待,比如对于evpn协议强制不能修改该属性。因为该属性表示的是源vtep的IP地址,如果修改该属性将会导致vxlan隧道建立错误。

代码分析

/* Allocate new peer object, implicitely locked.  */
struct peer *peer_new(struct bgp *bgp)
{
    ......
    /* set nexthop-unchanged for l2vpn evpn by default */
    /* 默认是不能改变evpn的下一跳地址的 */    
    SET_FLAG(peer->af_flags[AFI_L2VPN][SAFI_EVPN],
         PEER_FLAG_NEXTHOP_UNCHANGED);

    ......
}

ouyangxibao
189 声望161 粉丝

不生产代码,只是代码的搬运工