1,BGP的三张表
邻居表(adjancy table)
BGP表(forwarding database):BGP默认不做负载均衡,会选出一条最优的,放入路由表
路由表(routing table)
查询命令:
BGP表:show ip bgp
路由表:show ip route
邻居表:show ip bgp summary(简单邻居),show ip bgp neighbor(详细邻居)
2,BGP表中的路由通告规则
多条路径时,BGP只选最优的使用,以及传给邻居
从EBGP获得的,直接传(包括EBGP和IBGP)
从IBGP获得的,不再传给IBGP(RR除外)
从IBGP获得的,只有优化时才传给EBGP邻居
3,BGP表
status codes是最前面的,包括s,d,h,*,>,i,r,S
origin codes是后面path列,包括i,e,?
*: 可以用(不可用:R,从更小AD值的IGP中学到了该路由,因此不用BGP路由;s,聚合时明细路由被抑制)
>: 优化的(要确保>号出来,才能放进路由表,才能继续传给EBGP邻居)
i: >号后面的i代表从IBGP学到的路由,本地通告的/从EBGP学到的路由不打i
?: 重发布得来的
没有>号的路由非优化的:不会放进路由表,不会给其他邻居传
例子如下:
4,BGP表中路由优化的条件(即出现>号的条件:关同步,next-hop-self)
实际上就是在讨论从IBGP收到的路由,是否有资格放入路由表,是否能传给后面的IBGP/EBGP邻居的问题。
BGP同步规则:从IBGP学到的路由默认不会用,直到从IGP也学到。
只有解决“IBGP下一跳可达性问题,以及路由黑洞问题 ”这2个问题才能优化。
方法:
首先确保下一跳可达,next-hop-self或者静态指向EBGP下一跳地址。
然后:1)同步+BGP重发布到IGP;2)同步+写静态欺骗;3)关同步。
关同步后黑洞问题仍然存在,可以通过fullmesh或者mpls解决。
5,BGP打R路由
*变成R,同时从IGP和BGP学到的路由,IGP管理距离比BGP小,一般发生在IBGP(AD200)
打R的路由不放进路由表,但是会继续传给BGP邻居