专栏名称: SDNLAB
SDNLAB是专注网络创新技术的先锋媒体社区和实践应用平台,涵盖AI 网络、DPU/智能网卡、SD-WAN/SASE、Web3.0、零信任、云网融合等相关领域,提供新闻资讯、技术交流、在线实验、行业分析、求职招聘、教育培训等多元服务。
目录
相关文章推荐
51好读  ›  专栏  ›  SDNLAB

BGP 路由协议之 IBGP 还是 EBGP ?

SDNLAB  · 公众号  ·  · 2025-02-17 15:16

正文

请到「今天看啥」查看全文


图片


*本文编译自ipspace blog。


每当讨论如何构建一个完全基于 EBGP 的数据中心架构时,经常会有人提出疑问:“能否通过 IBGP 实现相同目的呢?”


先说结论:技术上可行,但并不意味着这是最佳选择。


为了满足好奇心,让我们暂时抛开常规设计理念,深入探索一下基于 IBGP 专用网络的未知领域。


乍一看似乎很简单


在网络还没有发展到这么复杂之前,我们曾经采用过一种“朴实”却有效的网络构建方式:


采用专门为此目的而设计的协议构建的 IP 网络


由于 IBGP 的传统设计,中间节点必须充当路由反射器。同时,我们会在环回接口间建立 IBGP 会话,确保 IBGP 不必处理核心链路故障。


随着“BGP 优于 IGP”的理念盛行,人们开始尝试构建每个节点都属于不同自治系统的网络:


仅 EBGP 网络,无 IBGP 或 IGP


现在,让我们将这一思路推向极致,用 IBGP 替代 EBGP。那么,潜在的问题是什么呢?


仅支持 IBGP 的网络,无 IGP


上述图示已透露了些许端倪:
  • 由于没有 IGP 来传播环回前缀,因此必须在直连接口间建立 IBGP 会话。
  • 所有中间节点(如Spine交换机或 P 路由器)均须作为 IBGP 路由反射器。
  • 在大型网络中,可能需要部署一系列路由反射器。


实现这些并不复杂,但还有一个关键问题不容忽视:


BGP 的下一跳在自治系统内不应改变。IBGP 主要用于交换可达性信息,而 IGP 则负责解析下一跳。然而,在纯 IBGP 网络中,路由反射器必须改变 BGP 下一跳以模拟 EBGP 会话的行为,这直接违反了 RFC 4456 第 10 节的“不应”规定,且某些情况下可能不允许调整此规则。


总结来说,若能在直连 IP 地址间配置 IBGP 会话并更改路由反射器上的 BGP 下一跳,便可构建纯 IBGP 网络。


这样能有效吗?


确实有效。20 世纪 90 年代,我们就曾运行过这样的网络,并且随着时间的推移,它变得越来越简洁。


为了验证这一点,我设置了一个简单的 netlab 拓扑,其中包含一个插件,该插件会删除网络中的所有 IBGP 会话,并替换为直连节点间的 IBGP 会话。以下是运行 Arista EOS 的Spine交换机配置的关键部分(完整配置可在 GitHub 上查看,文末附链接):


与传统 IBGP 配置相比,唯一的变化在于:
  • 邻居 IP 地址为接口地址,而非环回地址。
  • 无需邻居更新源命令,出接口的 IP 地址作为 IBGP 会话的源地址。
  • 使用 neighbor next-hop-peer 命令将传入 BGP 更新中的 BGP 下一跳设置为对等 IP 地址,Leaf交换机亦采用相同命令。


以下是其中一台Leaf交换机的 BGP 表:


如你所见:
  • Leaf交换机从两台Spine交换机接收远程路由。
  • BGP 下一跳设置为Spine交换机的 IP 地址。


不出所料,leaf-1 能够 ping 通 leaf-2 的环回 IP 地址,证明了端到端连接的有效性。


想亲自验证吗?


最简单的方法是使用GitHub Codespaces 的 netlab-examples 存储库(如需,导入 Arista EOS 容器并将目录更改为BGP/interface-IBGP)。


这种设计 是否真的应该被采用 ?先来看看它的优缺点:


优点:
  • 无需处理 BGP AS 编号,BGP CLUSTER_LIST 属性替代 AS_PATH 属性作为防环机制。
  • 无需担心 BGP 更新间隔,大多数实现不会延迟/批量处理 IBGP 更新。
  • 无需担心无环路由或路径搜索,Leaf交换机不会反射 IBGP 路由。


缺点:
  • 所依赖的实现偏离了主流推荐做法。
  • BFD 在 IBGP 会话中的适用性尚未测试。
  • 你可能是极少数采用此设计的人,因此也可能是首个发现细微错误的人。除非拥有大额采购订单,否则说服供应商修复这些问题可能颇为棘手。


还有其他看法吗?欢迎留言讨论!


原文:

https://blog.ipspace.net/2025/01/ibgp-better-ebgp/

https://github.com/ipspace/netlab-examples/tree/master/BGP/interface-IBGP/config




【投稿】: SDNLAB原创文章奖励计划
【有奖】: 常读文章有奖活动进行中







请到「今天看啥」查看全文