- 如果通过默认路由建立的BGP邻居,收到的路由条目是无效的, 需要使用静态路由或者IGP路由建立的邻居关系。
BGP的邻居关系:
- IBGP:是在同一个AS内部建立的BGP邻居关系,它们的AS号是相同的,一般通过逻辑口建立IBGP关系,IBGP发送的报文中TTL=255。
- EBGP:实在不同的AS之间建立的BGP邻居关系,他们的AS号是不相同的,一般使用直连接口建立EBGP邻居关系,EBGP发送的报文中TTL=1。如果EBGP之间需要通过逻辑接口建立邻居关系,就需要手动修改TTL值。如果通过逻辑口建立邻居关系,使用ebgp-max-hop修改跳数。
邻居状态机解析:
- idle
- 没有路由
- EBGP多条
- connect和active
- 认证不匹配(通过TCP的扩展选项来实现的)
- 发送源不匹配
- 流量过滤
- TCP会话连接建立失败
BGP路由通告原则:
- 连接建立时,BGP Speaker只把本身用的最优路由通告给对等体
- 多条路径时,BGP Speaker只选择最优的路由放入路由表
- BGP Speaker从EBGP收到的路由条目,会向它所有的的BGP对等体通告。(EBGP\IBGP)
- 从EBGP邻居收到的路由条目,在通告给其他的EBGP邻居时,会修改下一跳为自己。可以通过next-hop-invariable
- 从EBGP邻居收到的路由条目,在通告给其他的IBGP邻居时,不会修改下一跳。可以通过next-hop-local强制修改下一跳为自己。
- 如果在同一个广播网中,EBGP通过直连接口建立邻居关系,如果路由通告的peer地址,和路由接收的peer地址在同一个网段是不修改下一跳的(第三方下一跳)
- BGP Speaker从IBGP获得的路由条目,是不会通告给其它的IBGP邻居。(目的是为了防止路由环路)
- BGP Speraker从IBGP获得的路由是否通告给它的EBGP对等体要依据IGP和BGP同步的情况来决定
- BGP与IGP同步:BGP Speaker不将从IBGP对等体获得的路由信息通告给它的EBGP对等体,除非该路由信息也能通过IGP获得
针对IBGP水平分割的方案:
- Full-mesh(全互联),所有设备之间进行IBGP全互联
- 路由反射器(RR)
- 联盟