CCIE 课程之 1:BGP 基础与简介
1. 网络规模与 BGP 的诞生
随着网络规模的不断扩大,IGP(Interior Gateway Protocol,内部网关协议)难以承受成千上万的路由条目。因此,在大规模网络管理中,通常需要将网络划分为若干不同的自治系统(AS,Autonomous System)。
最早的 AS 间路由协议是 EGP(Exterior Gateway Protocol,外部网关协议),用于在不同 AS 之间动态交换路由信息。然而,EGP 的设计较为简单,仅发布网络可达性信息,缺乏路由优选和环路避免机制,无法满足现代网络的需求。
为了解决 EGP 的局限性,BGP(Border Gateway Protocol,边界网关协议)应运而生,并逐步取代 EGP,成为目前唯一的主流 AS 间路由协议。当前 BGP 的最新版本是 BGP-4+,具备以下特性:
路由优选:支持路径属性(Path Attributes),实现灵活的路由选择策略。
环路避免:使用 AS_PATH 属性避免路由环路。
策略控制:支持路由策略配置,如路由过滤、权重调整等。
可扩展性:支持路由反射(Route Reflector, RR)、等价多路径(Equal Cost Multi-Path, ECMP)等机制,优化大规模网络环境中的 BGP 运行效率。
IPv6 支持:BGP-4+扩展支持 IPv6 路由信息的传输。
2. 自治系统(AS)与 ASN
在 BGP 中,每个 AS 都有一个唯一的编号,称为自治系统号(ASN, Autonomous System Number),用于标识不同的 AS。
2.1 ASN 分类
ASN 有两种表示方式:
16-bit ASN(1~65535),其中(64512~65535)为私有 ASN。
32-bit ASN(1~4294967295),其中(4200000000~4294967295)为私有 ASN。
32bit 的命令行输入方式分为两种:
<1 - 4294967295>直接输入,所见即所得;
<1.0 - XX.YY>在句点.的左面是 65536 的倍数,最小为 1,最大为 65535,即 65535 * 65536 = 4294901760;
在句点.右面可输入的范围是 0~65535 之间;
最终显示 BGP ASN 所得数字号码为句点.左边(1~65535)的 65536 倍与句点.右边的具体数字相加而成。例如,Router(config)#router bgp 100.200 转换后的数字是 100*65536+200 = 6553800
ASN 由 IANA(Internet Assigned Numbers Authority,互联网号码分配机构)负责分配,公网 AS 需要向 RIR(Regional Internet Registry,区域互联网注册机构)申请。
3. BGP 的邻居关系与基本特性
3.1 邻居关系建立
BGP 不同于 IGP,不会自动发现邻居,需要手动指定对等体(Peer)。
BGP 邻居关系建立的必要条件:
AS 之间需要直连链路,或者通过 VPN 等方式构造逻辑直连。
必须显式配置邻居 IP,BGP 不会主动发现邻居。
3.2 BGP 的传输特性
基于 TCP 传输:BGP 使用 TCP 179 端口建立连接,确保可靠传输。
应用层协议:BGP 依赖应用程序提供服务,类似于 RIP(基于 UDP 520 端口)。
仅传递已知路由:BGP 不会主动产生路由,只是路由信息的搬运工。
AS 间路由传播:BGP 的主要作用是实现 AS 间的路由传播,避免 IGP 在大规模网络环境中的局限性。
4. BGP 的核心机制
4.1 BGP 的路由传输规则
BGP 的路由传播基于以下原则:
仅向邻居发送本地已知的路由信息。
默认情况下,不会向 IBGP 邻居重新传播 IBGP 学到的路由(除非使用路由反射器或全互联方式)。
BGP 路由更新采用增量更新模式,而非周期性刷新。
4.2 BGP 的路径选择
BGP 使用多种属性进行路径选择,主要包括:
AS_PATH(自治系统路径):避免环路,优选路径短的 AS 路径。
NEXT_HOP(下一跳):确保路由可达性。
LOCAL_PREF(本地优先级):IBGP 内部的优选路径机制。
MED(多出口鉴别):用于跨 AS 选择最佳出口。
Weight(权重,仅适用于 Cisco 设备):用于本地优选。
5. BGP 的主要应用场景
BGP 广泛应用于以下场景:
互联网骨干网:全球 ISP(Internet Service Provider,互联网服务提供商)使用 BGP 进行路由交换。
企业级跨 AS 互联:大企业和数据中心使用 BGP 连接多个 AS,进行流量控制。
云计算与 SD-WAN:云服务商通过 BGP 实现跨区域互联,提高网络可用性。
6. 结论
BGP 作为当今唯一的外部网关协议,已成为全球互联网和大型企业网络的核心。通过手动配置邻居、使用路径属性进行精细化路由控制,BGP 能够有效管理大规模网络间的路由信息,实现高效、稳定的跨 AS 通信。
第一课实验略
需要注意的地方是,在做 BGP 实验时,测试连通性要注意源地址/接口的位置。默认情况下去往目的网络的数据包流量会使用本地最近物理出接口为源,这样是不可能有连通性的,因为 BGP 的 TCP 源目路径主要基于已配置的逻辑端口建立 179 端口的应用连接。所以要特别注意测试 BGP 去网点路由时要带源去 ping。
7.课堂实验演示
拓扑图如下:

在 AS65100 和 65200 模拟企业内部网络,分别运行的是 EIGRP-AS88 和 OSPF-区域 0 实现各自的全网互通,然后再 R2 和 R3 之间建立 eBGP 连接,以实现各种内部网络通过 BGP 实现互联。
R1 的基础配置如下:
R2 的基础配置如下:
R3 的基础配置如下:
R4 的基础配置如下:
再做基本验证和测试如下:
1.首先验证 BGP 邻居是否建立,表示数字是表示已经通过 ESTAB 建立,如果是 IDLE 则是未建立邻居,出现 ACTIVE 则表示中途建立时出现问题,尝试后会再次重建。
查看 BGP 的对等体连接状态:

【在 BGP(边界网关协议)建立邻居时,默认情况下,如果 BGP 连接失败 (Connect → Active 状态循环),BGP 会在 6 次(默认值) 连接失败后,进入 Idle 状态。这一行为由 Cisco 设备的 connect-retry timer 和 Active 状态的重试机制决定。】
你可以调整 connect-retry 计时器 来改变 BGP 进入 Idle 的时间:
例如:
keepalive
:BGP Keepalive 时间(默认 60 秒)hold-time
:Hold Time(默认 180 秒)connect-retry
:影响 Active 状态的重试时间(默认 120 秒)
查看 BGP 对等体表的另一种风格的 bgp 验证命令,效果一样。

再查看 BGP 表如下:

Next Hop 是 0.0.0.0 的地址表示为本地路由器生成的路由。

如果对 BGP 表的 Status codes 非常了解的情况下,可以过滤查看最直接简化的表项。
再看运行 BGP 的 R2 和 R3 的 BGP 路由表以及其他路由器 R1 和 R4 的路由表如下:


以上 BGP 的三张表都查看完成(BGP 邻居表、BGP 表和 BGP 路由表)


最测试一下各个站点的连通性。注意!!!BGP 连接的测试要带源!!!

思科路由器测试失败,想中断 ping 测试的按键是 Ctrl+Shift+6,但是一般到第 2 个开始以后不通再中断,不要忙于中断,因为思科路由器通常第一次连接时有第一个 ARP 的探测包,会有一个不通,然后其余会通。


因为 R2 和 R3 是直连 BGP 邻居所测试这个段连通性可以不用带源,其他不带源则不通。(BGP 邻居 IP 地址通常是对端的 loopback 接口 IP,而本地默认的源 IP 是出接口的 IP,两者不匹配时,可能被对端丢弃。默认情况下,ping 会使用直连第一个出接口作为源 IP,而如果 BGP 配置使用了 Loopback0 (1.1.1.1),对端可能没有返回路由。)

R4 ping R3 的 3.3.3.3 是通过 IGP 的 OSPF 识别的网络,所以不用带源,而其他则是通过 BGP 重发布进 OSPF 而得到的路由,R4 的 44.44.44.44 的 loopback1 接口的地址因为没有在 BGP 中发布,所以也无法 ping 通。
这种情况下最好的方法是 IGP 通过邻居 BGP 下发默认路由而能到达对端是比较理想的做法。
版权声明: 本文为 InfoQ 作者【1043】的原创文章。
原文链接:【http://xie.infoq.cn/article/92860d28ca47027469d18ab8a】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论