当前位置: 首页 > news >正文

BGP笔记整理

一、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(内部网关协议):用于 AS 内部路由,如 RIP、OSPF、IS-IS。

  • EGP(外部网关协议):用于 AS 之间路由,BGP 是目前唯一广泛使用的 EGP。

三、BGP 协议特性

  1. 路由传递范围:仅负责 AS 间路由传递,AS 内部路由扩散依赖 IGP。

  2. 路径矢量协议:一跳代表一个 AS,路由传入 AS 时,下一跳变为上个 AS 的出接口 IP;AS 内部传递时,下一跳不变。

  3. AS 防环机制:通过AS_PATH属性防环,路由每经过一个 AS,会将该 AS 编号按 “右到左” 顺序加入AS_PATH;若收到的路由AS_PATH包含本地 AS 编号,则不学习。

  4. 传输层依赖:基于 TCP 协议,端口号 179,需手动配置邻居。

  5. 更新方式:首次收敛发送完整路由表,后续仅增量更新。

  6. 路由控制:支持多种属性控制选路,支持路由聚合、过滤和策略。

四、BGP 基本术语

  • BGP Speaker:运行 BGP 协议的路由器。

  • BGP Peer(对等体):通过 TCP 连接交换路由信息的 BGP Speaker,分为:

    • EBGP 对等体:跨 AS 的邻居,通常物理直连,从 EBGP 学到的路由会通告给所有对等体(包括 EBGP 和 IBGP)。

    • IBGP 对等体:同一 AS 内的邻居,可非直连,受 “水平分割” 限制(从 IBGP 学到的路由不传给其他 IBGP)。

五、路由黑洞及解决方法

  • 产生原因:IBGP 邻居间存在未运行 BGP 的路由器,无法获取 BGP 路由,导致数据包被丢弃。

  • 解决方法

    1. BGP 引入 IGP;

    2. 在黑洞路由器上配置静态路由;

    3. IBGP 全连接(需所有 IBGP 路由器互建邻居,适用于小规模网络);

    4. 路由反射器(RR,无视 IBGP 水平分割,减少邻居数量);

    5. BGP 联盟(将 AS 划分为子 AS,子 AS 间用 EBGP 连接,减少 IBGP 邻居)。

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

  1. EBGP 水平分割:通过AS_PATH属性,若路由包含本地 AS 编号则拒绝学习。

  2. IBGP 水平分割:从 IBGP 对等体学到的路由,不向其他 IBGP 对等体通告。

七、BGP 消息种类

消息类型

作用

Open

建立对等体连接,携带router-idHold Time(默认 180s)等参数。

Keepalive

周期保活(默认 60s 发送一次),维持连接有效性。

Update

携带路由更新(新增 / 删除),包含Withdrawn Routes(撤销路由)和NLRI(新增路由)。

Notification

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

Router-refresh

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

八、BGP 状态机

  1. Idle:初始化状态,准备 TCP 连接,停留 30 秒。

  2. Connect:TCP 连接建立中,失败则进入 Active 状态。

  3. Active:主动尝试建立 TCP 连接,失败则重试。

  4. OpenSent:TCP 连接建立,发送 Open 报文,等待对方响应。

  5. OpenConfirm:收到 Open 报文,发送 Keepalive,等待对方 Keepalive。

  6. 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 并创建连接

[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. 优化配置

[huawei-bgp] peer <ip-address> connect-interface <interface>  # 指定TCP连接源接口
[huawei-bgp] peer <ip-address> ebgp-max-hop <hop-count>       # 修改EBGP最大跳数

3. 发布路由

# 宣告本地路由
[router-bgp] network <ip-address> [mask <mask-length>] [route-policy <name>]
# 引入其他协议路由
[router-bgp] import-route <protocol> [process-id] [route-policy <name>]

4. 查看命令

display bgp peer        # 查看BGP邻居状态
display bgp routing-table  # 查看BGP路由表

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

  1. 丢弃下一跳不可达的路由。

  2. 优选Preferred-value(首选项)最大的路由(默认 0,华为 / H3C 私有属性)。

  3. 优选Local_Pref(本地优先级)最高的路由(默认 100,仅 IBGP 传递)。

  4. 依次选择network生成、import-route引入、聚合的路由。

  5. 优选AS_PATH最短的路由。

  6. 依次选择ORIGIN为 IGP(i)、EGP(e)、Incomplete(?)的路由。

  7. 优选MED(多出口鉴别器)最小的路由(默认 0,相邻 AS 间传递)。

  8. 依次选择从 EBGP、联盟 EBGP、联盟 IBGP、IBGP 学到的路由。

  9. 优选下一跳 IGP 度量值最低的路由。

  10. 优选CLUSTER_LIST最短的路由。

  11. 优选ORIGINATOR_ID最小的路由。

  12. 优选 Router ID 最小的路由器发布的路由。

  13. 优选 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)

  • 定义:将具有相同属性的对等体分组,简化配置。

  • 配置示例

    [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

  • 手动聚合:精确汇总,可抑制明细路由,命令:

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

3. 路由反射器(RR)

  • 作用:替代 IBGP 全连接,减少邻居数量,允许将从 IBGP 学到的路由反射给其他 IBGP 邻居。

  • 角色:RR(反射器)、Client(客户机)、非客户机。

  • 反射规则

    • 从非客户机学到的路由,仅反射给客户机。

    • 从客户机学到的路由,反射给所有客户机和非客户机(除始发者)。

    • 从 EBGP 学到的路由,反射给所有客户机和非客户机。

  • 防环机制Cluster_list(记录经过的 RR 集群 ID)和Originator_ID(路由始发者 ID)。

  • 配置示例

    [R2-bgp] peer <client-ip> reflect-client  # 配置客户机
    [R2-bgp] reflector cluster-id <id>        # 配置集群ID(可选)
    

4. BGP 联盟(Confederation)

  • 作用:将一个 AS 划分为多个子 AS(用私有 AS 编号),子 AS 间用 EBGP 连接,减少 IBGP 邻居。

  • 配置示例

    [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 间传递)。

  • 配置示例

    [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 分钟)。

  • 配置示例

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

十四、BGP 实验实例

1. 基本配置实验

  • 目标:配置 EBGP 和 IBGP 邻居,宣告业务网段,解决路由黑洞。

  • 关键步骤

    1. 配置 IP 和 OSPF(AS 内部互通)。

    2. 建立 EBGP(直连)和 IBGP(环回口)邻居。

    3. 宣告业务网段,通过import-route bgp将 BGP 路由引入 IGP,解决黑洞。

2. 路由控制实验

  • 目标:通过修改属性控制选路(MED、Preferred-value、AS_PATH、Local-pref)。

  • 示例:修改 MED 使路由优选某路径:

    [R2] acl 2000  # 抓取目标网段
    [R2-route-policy] apply cost 100  # 提高MED值
    [R2-bgp] peer <ip> route-policy <name> export  # 应用策略
    

3. 路由反射器实验

  • 目标:配置 RR 减少 IBGP 邻居,实现路由反射。

  • 关键步骤

    1. 配置 OSPF 确保 TCP 可达。

    2. 建立 IBGP 对等体组,配置 RR 及客户机。

    3. 聚合业务网段,抑制明细路由。

http://www.dtcms.com/a/320227.html

相关文章:

  • Maven高级:继承与聚合实战指南
  • RS485转Profibus网关在QDNA钠离子分析仪与300PLC通信中的应用解析
  • 【OCCT+ImGUI系列】013-碰撞检测-包围盒Bnd_Box
  • 【入门级-C++程序设计:9、函数与递归-函数定义与调用、形参与实参】
  • RESTful 服务概述:从理念到实践的全面解析
  • Coze开放平台综合文档指南
  • 达梦包含OR条件的SQL特定优化----INJECT-HINT优化方法
  • 最新完整内、外期货量化交易系统C#源码可售
  • 【C#补全计划:类和对象(九)】接口
  • redis--黑马点评--用户签到模块详解
  • dubbo源码之编解码逻辑
  • 一场 Dark Theme A/B 测试的复盘与提效实践
  • 聚集索引VS非聚集索引:核心差异详解
  • rebase 和pull的通俗区别是什么
  • 一个基于固定 IP地址查询天气的 C 语言程序,通过调用第三方天气 API:
  • React 多语言(i18n)方案全面指南
  • 计算机英语详细总结
  • 本地化密码恢复工具的技术实现与应用边界
  • RabbitMQ面试精讲 Day 13:HAProxy与负载均衡配置
  • Git `cherry-pick` 工具汇总
  • Docker 加载镜像时出现 “no space left on device” 错误的解决方法
  • Java Lambda表达式:简洁高效的函数式编程
  • 关于光猫研究
  • 【代码随想录day 14】 力扣 101. 对称二叉树
  • 技法笔记3 | 验证交互式shell连接
  • LocalSqueeze(图片压缩工具) v1.0.4 压缩
  • 美图复现|Science:添加显著性的GO富集分析美图
  • Nuxt 4.0 完全指南:Nitro 引擎升级与 Composable API 深度解析
  • 关于Android studio调试功能使用
  • 如何选择适合中小企业的OA系统?XKOA低成本高定制化方案详解