bgp 知识点总结

bgp 实现自治系统(AS)之间的路由协议。准确的说是路径向量,使用 TCP 179端口,触发增量更新,不是周期更新。(对比 ospf 运行在ip层, 协议号89; rip 工作在 udp 520端口, isis 工作在二层,协议号 0x22F4)。

BGP的报文

  1. open: 建立BGP对等体
  2. keepalive: 保持BGP连接
  3. Update: 对等体之间交换路由信息
  4. Notification: 用于中断BGP
  5. Router-refresh: 路由策略改变后,重新发送。

BGP的邻居状态

  1. idle: 空闲初始状态,BGP进程未尝试建立连接。
  2. conncet: BGP尝试通过TCP三次握手建立连接。
  3. active: BGP持续重试TCP连接(主动发起或被动等待对端连接)。
  4. opensent: TCP连接已建立,BGP发送 OPEN消息(包含AS号、Hold Time等参数)。
  5. openConfirm: 双方OPEN消息协商成功,等待 KEEPALIVE 或 NOTIFICATION
  6. Established: BGP会话建立完成,开始交换路由更新(UPDATE消息)。

BGP 交换理由的规则

  1. 将最优的路由发给对等体。(> 最优的, * 有效的
  2. ibgp 学到的不发送给其他 ibgp 邻居。其他之间都发送。

bgp 和 ospf 中 network 的区别

  1. ospf 中的 network 指定哪些接口运行ospf, 本质是匹配接口IP,使用的是 通配符掩码。
  2. 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的路由属性

  1. 公认必遵: Origin(IGP[network]>EBP>Incomplete[import])、As_Path[as 之间传递携带]、Next_hop[检查是否有效、下一条不能达到,不发送路由]
  2. 公认任意:Local_preference(只发给IBGP,控制流量怎么出去)、Atomic_aggregate(标记多个路由聚合后的结果)
  3. 可选过度: Aggregator 用于标记路由聚合发生在那个AS及BGP路由上, Community加标记
  4. 可选非过度: MED(影响流量怎么进来 ), Cluster-List(集群间的放环)、Originator-ID(集群内的防环)

BGP 如何避免黑洞路由

  1. 同步规则
  2. AS内部的转发路径上全部运行BGP协议
  3. 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