BGP笔记及综合大实验报告册

发布于:2025-08-15 ⋅ 阅读:(20) ⋅ 点赞:(0)

一、BGP 基础概念解析​

1. 产生背景​

BGP(Border Gateway Protocol,边界网关协议)作为自治系统(AS)之间的动态路由协议,属于外部网关协议(EGP)的范畴。它的主要功能是在不同的自治系统之间传递路由信息,从而实现跨 AS 的网络通信。​

2. 自治系统(AS)​

  • 定义:自治系统是由一组被统一管理的路由器构成的集合,这些路由器运行相同的内部网关协议(IGP),并且通常采用相同的路由策略。​
  • AS 编号:​
  • 2 字节编号:范围在 0-65535 之间,其中 0 和 65535 为保留编号。公有 AS 编号为 1-64511,私有 AS 编号为 64512-65535。​
  • 4 字节编号:公有 AS 编号范围是 65536–4199999999,私有 AS 编号范围是 4200000000–4294967294。​

二、路由协议分类情况​

  • IGP(内部网关协议):主要用于自治系统内部的路由管理,常见的有 RIP、OSPF、IS-IS 等协议。​
  • EGP(外部网关协议):用于不同自治系统之间的路由交互,目前在实际应用中,BGP 是唯一被广泛使用的 EGP 协议。​

三、BGP 协议特性说明​

  • 路由传递范围:BGP 仅负责在自治系统之间传递路由信息,而自治系统内部的路由扩散则依赖于 IGP 协议。​
  • 路径矢量协议:在 BGP 中,一跳代表一个自治系统。当路由传入某个 AS 时,下一跳会变为上个 AS 的出接口 IP;而在 AS 内部传递时,下一跳保持不变。​
  • AS 防环机制:借助 AS_PATH 属性来防止环路。路由每经过一个 AS,该 AS 的编号会按 “右到左” 的顺序加入 AS_PATH。如果收到的路由的 AS_PATH 中包含本地 AS 编号,路由器则不会学习该路由。​
  • 传输层依赖:BGP 基于 TCP 协议运行,使用的端口号为 179,并且需要手动配置邻居关系。​
  • 更新方式:在首次收敛时,BGP 会发送完整的路由表;后续的更新则仅进行增量更新,即只发送变化的路由信息。​
  • 路由控制:BGP 支持通过多种属性来控制路由选择,同时也支持路由聚合、过滤和策略配置等功能。​

四、BGP 基本术语解释​

  • BGP Speaker:指运行 BGP 协议的路由器。​
  • BGP Peer(对等体):通过 TCP 连接交换路由信息的 BGP Speaker,可分为以下两种:​
  • EBGP 对等体:处于不同 AS 的邻居,通常物理上直接连接。从 EBGP 学到的路由会通告给所有对等体,包括 EBGP 和 IBGP 对等体。​
  • IBGP 对等体:位于同一 AS 内的邻居,可以非直接连接。但受 “水平分割” 限制,即从 IBGP 学到的路由不会传递给其他 IBGP 对等体。​

五、路由黑洞及解决方法​

  • 产生原因:当 IBGP 邻居之间存在未运行 BGP 的路由器时,这些路由器无法获取 BGP 路由,从而导致数据包被丢弃,形成路由黑洞。​
  • 解决方法:​
  • 将 BGP 路由引入 IGP。​
  • 在黑洞路由器上配置静态路由。​
  • 实现 IBGP 全连接,即所有 IBGP 路由器之间互相建立邻居关系,这种方法适用于小规模网络。​
  • 使用路由反射器(RR),它可以无视 IBGP 水平分割,减少邻居数量。​
  • 采用 BGP 联盟,将一个 AS 划分为多个子 AS,子 AS 之间通过 EBGP 连接,以减少 IBGP 邻居数量。​

六、BGP 环路问题(水平分割)​

  • EBGP 水平分割:通过 AS_PATH 属性来实现,若收到的路由包含本地 AS 编号,则拒绝学习该路由。​
  • IBGP 水平分割:从 IBGP 对等体学到的路由,不会向其他 IBGP 对等体通告,以此避免环路。​

七、BGP 消息种类介绍​

消息类型​

作用​

Open​

用于建立对等体连接,携带 router-id、Hold Time(默认 180s)等参数。​

Keepalive​

周期性发送(默认每 60s 发送一次),用于维持连接的有效性。​

Update​

携带路由更新信息,包括新增和删除的路由,包含 Withdrawn Routes(撤销路由)和 NLRI(新增路由)。​

Notification​

当检测到错误时发送,随后会关闭连接。​

Router-refresh​

在更改路由策略后,请求对等体重发指定地址族的完整路由表。​

八、BGP 状态机流程​

  • Idle:初始化状态,准备建立 TCP 连接,在此状态停留 30 秒。​
  • Connect:TCP 连接建立过程中,若失败则进入 Active 状态。​
  • Active:主动尝试建立 TCP 连接,若失败则会重试。​
  • OpenSent:TCP 连接建立后,发送 Open 报文,等待对方响应。​
  • OpenConfirm:收到对方的 Open 报文后,发送 Keepalive 报文,等待对方的 Keepalive 报文。​
  • Established:收到对方的 Keepalive 报文,邻居关系建立,开始交换路由信息。​

九、BGP 邻居建立条件​

1. IBGP 邻居​

  • 物理口建邻:建议使用直连接口的地址。​
  • 环回口建邻:需要保证 TCP 可达(即路由可达),同时要修改更新源为环回口(使用命令 peer connect-interface LoopBack 0),默认的 TTL 为 255。​

2. EBGP 邻居​

  • 物理口建邻:建议使用直连接口的地址。​
  • 环回口建邻:需要保证 TCP 可达,并且要修改最大跳数(使用命令 ebgp-max-hop),默认的 TTL 为 1(需改为更大的值,如 2)。​

注意事项​

若路由器同时存在 EBGP 和 IBGP 邻居,需要修改 IBGP 邻居的下一跳为本机(使用命令 next-hop-local),否则可能导致路由不可达。​

十、BGP 基本配置步骤​

1. 启动 BGP 并创建连接​

TypeScript取消自动换行复制

[huawei] bgp <as-number> # 启动BGP,指定AS编号​

[huawei-bgp] router-id <router-id> # 配置Router-id(可选,建议配置)​

[huawei-bgp] peer <ip-address> as-number <as-number> # 指定对等体及AS​

[huawei-bgp] address-family ipv4 unicast # 进入IPv4地址族(华三设备)​

[huawei-bgp-ipv4] peer <ip-address> enable # 使能对等体路由交换​

2. 优化配置​

TypeScript取消自动换行复制

[huawei-bgp] peer <ip-address> connect-interface <interface> # 指定TCP连接源接口​

[huawei-bgp] peer <ip-address> ebgp-max-hop <hop-count> # 修改EBGP最大跳数​

3. 发布路由​

TypeScript取消自动换行复制

# 宣告本地路由​

[router-bgp] network <ip-address> [mask <mask-length>] [route-policy <name>]​

# 引入其他协议路由​

[router-bgp] import-route <protocol> [process-id] [route-policy <name>]​

4. 查看命令​

TypeScript取消自动换行复制

display bgp peer # 查看BGP邻居状态​

display bgp routing-table # 查看BGP路由表​

十一、BGP 选路原则(13 条)​

  1. 丢弃下一跳不可达的路由。​
  1. 优选 Preferred-value(首选项)最大的路由(默认 0,华为 / H3C 私有属性)。​
  1. 优选 Local_Pref(本地优先级)最高的路由(默认 100,仅 IBGP 传递)。​
  1. 依次选择 network 生成、import-route 引入、聚合的路由。​
  1. 优选 AS_PATH 最短的路由。​
  1. 依次选择 ORIGIN 为 IGP(i)、EGP(e)、Incomplete(?)的路由。​
  1. 优选 MED(多出口鉴别器)最小的路由(默认 0,相邻 AS 间传递)。​
  1. 依次选择从 EBGP、联盟 EBGP、联盟 IBGP、IBGP 学到的路由。​
  1. 优选下一跳 IGP 度量值最低的路由。​
  1. 优选 CLUSTER_LIST 最短的路由。​
  1. 优选 ORIGINATOR_ID 最小的路由。​
  1. 优选 Router ID 最小的路由器发布的路由。​
  1. 优选 IP 地址最小的对等体发布的路由。​

十二、BGP 属性分类​

1. 公认必遵属性(所有路由必须携带)​

  • AS_PATH:记录路由经过的 AS 编号,用于防环和选路(短路径优先)。​
  • Next-hop:路由的下一跳 IP,EBGP 邻居间传递时更新,IBGP 邻居间传递时不变(需手动修改为本地)。​
  • ORIGIN:路由来源,优先级:IGP(i)> EGP(e)> Incomplete(?)。​

2. 公认可选属性(所有路由器识别,非必须携带)​

  • Local_Pref:本地优先级,仅 IBGP 传递,值越大越优先(默认 100)。​
  • Atomic-aggregate:自动聚合标记。​

3. 可选传递属性(可不识别,但会传递)​

  • Community(团体属性):标记路由,用于批量控制,如 no-export(不传出 AS)、no-advertise(不向任何对等体通告)。​

4. 可选非传递属性(可不识别,不传递)​

  • MED:多出口鉴别器,用于相邻 AS 间选路,值越小越优先。​
  • Cluster_list:路由反射器集群列表,用于防环。​
  • Originator_ID:路由反射器中路由的始发者 ID,用于防环。​

十三、大规模 BGP 网络优化手段​

1. 对等体组(Peer Group)​

  • 定义:将具有相同属性的对等体分组,以简化配置操作。​
  • 配置示例:​

TypeScript取消自动换行复制

[R2-bgp] group <group-name> internal # 创建IBGP对等体组​

[R2-bgp] peer <ip1> group <group-name> # 加入对等体​

[R2-bgp] peer <group-name> connect-interface LoopBack 0 # 统一配置更新源​

2. 路由聚合​

  • 自动聚合:仅对引入的 IGP 路由聚合到主类,这种方式可能产生黑洞,命令为 summary automatic。​
  • 手动聚合:可以精确汇总,并且能够抑制明细路由,命令为:​

TypeScript取消自动换行复制

[router-bgp] aggregate <network> <mask> detail-suppressed # 抑制明细路由​

3. 路由反射器(RR)​

  • 作用:替代 IBGP 全连接,减少邻居数量,允许将从 IBGP 学到的路由反射给其他 IBGP 邻居。​
  • 角色:包括 RR(反射器)、Client(客户机)、非客户机。​
  • 反射规则:​
  • 从非客户机学到的路由,仅反射给客户机。​
  • 从客户机学到的路由,反射给所有客户机和非客户机(除始发者)。​
  • 从 EBGP 学到的路由,反射给所有客户机和非客户机。​
  • 防环机制:通过 Cluster_list(记录经过的 RR 集群 ID)和 Originator_ID(路由始发者 ID)来防止环路。​
  • 配置示例:​

TypeScript取消自动换行复制

[R2-bgp] peer <client-ip> reflect-client # 配置客户机​

[R2-bgp] reflector cluster-id <id> # 配置集群ID(可选)​

4. BGP 联盟(Confederation)​

  • 作用:将一个 AS 划分为多个子 AS(使用私有 AS 编号),子 AS 之间通过 EBGP 连接,以减少 IBGP 邻居数量。​
  • 配置示例:​

TypeScript取消自动换行复制

[R2] bgp <子AS编号>​

[R2-bgp] confederation id <主AS编号> # 声明主AS​

[R2-bgp] confederation peer-as <其他子AS编号> # 声明联盟内其他子AS​

5. 团体属性(Community)​

  • 作用:对路由进行标记,以便批量控制路由的发布范围。​
  • 公认团体属性:​
  • Internet:默认属性,路由可通告给所有对等体。​
  • no-advertise:路由不向任何对等体通告。​
  • no-export:路由不传出 AS(但可在联盟内子 AS 间传递)。​
  • 配置示例:​

TypeScript取消自动换行复制

[R1] route-policy <name> permit node 10​

[R1-route-policy] apply community no-export # 标记为no-export​

[R1-bgp] peer <ip> route-policy <name> export # 应用策略​

[R1-bgp] peer <ip> advertise-community # 允许传递团体属性​

6. 路由衰减(Route Dampening)​

  • 作用:解决路由振荡(频繁上下线)问题,通过惩罚值来抑制不稳定的路由。​
  • 参数:抑制阈值(默认 2000)、重用阈值(默认 750)、半衰期(默认 15 分钟)。​
  • 配置示例:​

TypeScript取消自动换行复制

[router-bgp] dampening # 启用默认参数​

十四、BGP 实验实例​

1. 基本配置实验​

  • 目标:配置 EBGP 和 IBGP 邻居,宣告业务网段,解决路由黑洞问题。​
  • 关键步骤:​
  • 配置 IP 地址和 OSPF(实现 AS 内部互通)。​
  • 建立 EBGP(直连)和 IBGP(环回口)邻居关系。​
  • 宣告业务网段,通过 import-route bgp 将 BGP 路由引入 IGP,以解决路由黑洞问题。​

2. 路由控制实验​

  • 目标:通过修改属性来控制选路(如 MED、Preferred-value、AS_PATH、Local-pref)。​
  • 示例:修改 MED 使路由优选某路径:​

TypeScript取消自动换行复制

[R2] acl 2000 # 抓取目标网段​

[R2-route-policy] apply cost 100 # 提高MED值​

[R2-bgp] peer <ip> route-policy <name> export # 应用策略​

3. 路由反射器实验​

  • 目标:配置 RR 以减少 IBGP 邻居,实现路由反射功能。​
  • 关键步骤:​
  • 配置 OSPF 确保 TCP 可达。​
  • 建立 IBGP 对等体组,配置 RR 及客户机。​
  • 聚合业务网段,抑制明细路由。​


网站公告

今日签到

点亮在社区的每一天
去签到