BGP 理论.note
1、邻居建立状态:

1)Idle:
BGP 邻居对象存在、策略允许启动,然后准备去建立 TCP/179。
可能卡在Idle状态的原因:
1、没有配置邻居,或者邻居被shutdown
2、remote-as指定的as号不匹配
3、邻居的三层不可他(IGP不通)
4、源地址错误(update-source/使用loopback建立却没有指定源接口)
5、被ACL、防火墙 阻止TCP 1792)Connect:
等待本机向对端建立TCP 179三次握手成功
可能卡在Connect的原因:
1、对端没有配置BGP
2、被ACL、防火墙 阻止TCP 179
3、邻居身份认证不匹配
4、对端地址写错/端口被 NAT 改写
5、没有设置邻居的TTL值(ebgp-multihop)3)Active:
Connect失败后退到Active,等待重试计时器,然后再建立连接
可能卡在Active的原因:
1、IGP不通
2、被ACL、防火墙 阻止TCP 179
3、没有设置邻居的TTL值(ebgp-multihop)4)OpenSent:
TCP 建立成功后,本机发了BGP OPEN,等待对端的 OPEN/KEEPALIVE
可能卡在OpenSent的原因:
1、AS号不匹配
2、邻居身份认证不匹配5)OpenReceive(OpenConfirm):
双方已经交换了OPEN,完成了协商,等待KEEPALIVE进入Established
可能卡在OpenReceive的原因:
1、MTU分片问题导致BGP报文丢失6)Established:
正常工作状态,BGP会话正式建立2、BGP 路径属性:
# 公认强制(well-Known Mandatory)(共三个):
## 必须存在,所有BGP设备必须能够识别,一定会跨AS传递
Origin //反映路由是如何进入BGP路由表的
Next_Hop //BGP路由的下一跳
AS-path //到达目的网络所经过的AS_path的集合
# 公认自选(well-Known Discretionary)(只有一个):
## 所有BGP设备都能识别,但是可以没有
Local_Pref //默认为100,值越大越优先(只有iBGP之间才会有,发给eBGP的路由不携带该属性)
# 可选可传递(Optional Transitive):
## BGP设备不一定认识,但如果不认识,也要继续往下传
community //给路由打上标签,用来进行路由控制(no-export不传出AS、no-advertise谁都不传、local-AS不传给eBGP)
large community //community的IPv6版
aggregator //在BGP汇总路由中使用,标记是谁(AS+router-id)汇总了这条路由(仅在下面的路由丢失发生时才会产生并标记)
atomic_aggregate //表示该路由进行过汇总,并且汇总时没有加as-set参数时(保留汇总路由的所有as-path),就会携带该属性,表示被汇总前缀的原始 AS_PATH丢失且不可恢复
# 可选不可传递(Optional Nontransitive):
## BGP设备不认识可以丢弃,而且不能跨 AS传递
MED(MULTI_EXIT_DISC) //就是BGP的metric,默认为0,值越小越优先(MED只能在AS之间传递,只有在将路由发给eBGP邻居时,才会传递MED,发给iBGP邻居时,值会还原为0)
originator_id //用于反射器(rr)防止环路,标记最初发起该路由的router-id
cluster_list //用于反射器(rr)防止环路,标记反射路径经过哪些RR
# Cisco私有:
Weight //默认为0,范围0~65535,值越大越优先(BGP本地生成的路由,weight值是32768)
dmz-link-bandwidth //用于ASA,告诉对端,我这条前缀后面实际可用的链路带宽是多少3、BGP 最优路径选择、负载均衡路由:
BGP按下面的顺序来选择最优路径:
1、最高Weight值
2、最高LOCAL_PREF值
3、本地发起路由(下一跳为0.0.0.0的路由)
4、最短AS_PATH(使用bgp bestpath as-path ignore可以忽略对AS_PATH的比较)
5、最优Origin类型(IGP优于EGP优于Incomplete[重分发])
6、最小MED值
7、eBGP优于iBGP
8、最优IGP metric值
9、负载均衡(如果开启),如果上面的值全都相同(包括AS-PATH),就会开启负载均衡(最大支持6条,默认为1条),否则,继续比较下一个属性
10、如果下一跳都为eBGP,则选择最早学习到的路由(存在时间最长的路由)
11、最低Router-ID下一跳
12、最短cluster list(只在reflector RR反射器的环境存在,功能如同AS_PATH)
13、最小下一跳的邻居地址4、RIB failure:
被定义为 RIB-failure的原因可能有:
1、该BGP路由在IGP中已经拥有了比BGP更高优先级的AD值
2、内存错误
3、超出vrf中的路由限制数
以第一种最常见的情况举例,假设R1 —— R2,运行了OSPF,并且互相是iBGP邻居,此时R1上在OSPF通告了一条100.1.1.0/24的路由,并且在R1上将它发布进了BGP,此时R2就会同时从OSPF和BGP接收到这条100.1.1.0/24的路由,而从OSPF接收到的路由AD值高于从iBGP接收到的路由,因此路由表优先使用这条OSPF路由,这条BGP路由在BGP路由表中就会被标记为 RIB-Failuer,路由前面有一个:r5、BGP synchronization:
排错时要注意,默认都是 no synchronization(不显示),如果显示了synchronization,那么就会导致bgp之间路由不通
默认都是关闭 synchronization
synchronization的作用:如果从iBGP学习到的BGP路由,没有同时存在于IGP中,那么就不允许使用它,也不允许将它转发给其他iBGP、eBGP邻居
synchronization只对iBGP学到的路由生效,eBGP学到的路由 和 本地产生的路由不受影响