bgp 知识点总结
bgp 实现自治系统(AS)之间的路由协议。准确的说是路径向量,使用 TCP 179端口,触发增量更新,不是周期更新。(对比 ospf 运行在ip层, 协议号89; rip 工作在 udp 520端口, isis 工作在二层,协议号 0x22F4)。
BGP的报文
- open: 建立BGP对等体
- keepalive: 保持BGP连接
- Update: 对等体之间交换路由信息
- Notification: 用于中断BGP
- Router-refresh: 路由策略改变后,重新发送。
BGP的邻居状态
- idle: 空闲初始状态,BGP进程未尝试建立连接。
- conncet: BGP尝试通过TCP三次握手建立连接。
- active: BGP持续重试TCP连接(主动发起或被动等待对端连接)。
- opensent: TCP连接已建立,BGP发送 OPEN消息(包含AS号、Hold Time等参数)。
- openConfirm: 双方OPEN消息协商成功,等待 KEEPALIVE 或 NOTIFICATION。
- Established: BGP会话建立完成,开始交换路由更新(UPDATE消息)。
BGP 交换理由的规则
- 将最优的路由发给对等体。(> 最优的, * 有效的)
- ibgp 学到的不发送给其他 ibgp 邻居。其他之间都发送。
bgp 和 ospf 中 network 的区别
- ospf 中的 network 指定哪些接口运行ospf, 本质是匹配接口IP,使用的是 通配符掩码。
- bgp 中的 network 本质是路由重分发,但需精确匹配路由前缀和掩码。配置需要用到 mask
router bgp 100
network 10.1.1.0 mask 255.255.255.0 # 将10.1.1.0/24路由注入BGP
network 192.168.1.0 mask 255.255.255.0
router ospf 1
network 10.1.1.0 0.0.0.255 area 0 # 匹配接口IP在10.1.1.0/24的接口,加入Area 0
network 192.168.1.1 0.0.0.0 area 1 # 精确匹配接口IP为192.168.1.1的接口,加入Area 1
ospf , rip 一般不引入 bgp
# 默认不引入ibgp
import-route bgp permit-ibpg
BGP的路由属性
- 公认必遵: Origin(IGP[network]>EBP>Incomplete[import])、As_Path[as 之间传递携带]、Next_hop[检查是否有效、下一条不能达到,不发送路由]
- 公认任意:Local_preference(只发给IBGP,控制流量怎么出去)、Atomic_aggregate(标记多个路由聚合后的结果)
- 可选过度: Aggregator 用于标记路由聚合发生在那个AS及BGP路由上, Community加标记
- 可选非过度: MED(影响流量怎么进来 ), Cluster-List(集群间的放环)、Originator-ID(集群内的防环)
BGP 如何避免黑洞路由
- 同步规则
- AS内部的转发路径上全部运行BGP协议
- MPLS技术
BGP 联盟
BGP联盟是一种解决大型自治系统(AS)内部IBGP全连接问题的技术方案,它通过将一个大AS划分为多个子AS来减少IBGP对等体之间的全连接需求。
sysname Router
#
router id 1.1.1.1
#
bgp 65001 # 本地子AS号
confederation id 100 # 联盟对外显示的AS号
confederation peer-as 65002 65003 # 联盟内其他子AS
#
peer 10.1.1.2 as-number 65002 # 与子AS65002的对等体
peer 10.1.1.2 ebgp-max-hop 2 # 允许非直连EBGP
peer 10.1.1.2 connect-interface LoopBack0 # 指定源接口
#
peer 10.1.2.2 as-number 65003 # 与子AS65003的对等体
peer 10.1.2.2 ebgp-max-hop 2
peer 10.1.2.2 connect-interface LoopBack0
#
# 本地子AS内部的IBGP配置
peer 192.168.1.1 as-number 65001
peer 192.168.1.1 connect-interface LoopBack0
#
return