«

HCIP-Datacom(BGP)

myluzh 发布于 阅读:778 Huawei


BGP概述

概述

一、 协议定位与属性

二、 核心技术特征

  1. 高可靠性:承载于 TCP 179 端口。利用 TCP 的确认和重传机制,协议本身不设计复杂的可靠性校验。
  2. 增量更新:仅在初次建立连接时交换全量路由,后续仅发送触发式增量更新,极大地节省了带宽和 CPU 资源。
  3. 高扩展性:支持承载全球级(数十万条)路由条目,具备路由聚合(Summary)路由衰减(Dampening)功能,增强网络稳定性。

三、 对等体关系(Neighbor/Peer)对比

特性 EBGP (External BGP) IBGP (Internal BGP)
部署范围 不同自治系统(AS)之间 同一自治系统(AS)内部
AS 号 必须不同 必须相同
物理连接 通常直连(非直连需配置 ebgp-multihop 无需直连(逻辑可达即可)
核心作用 AS 间路由交换 AS 内部 BGP 路由透传

四、 邻居建立三阶段

1. 传输层连接 (TCP Connection)
2. 参数协商 (Open Packet Exchange)
3. 状态确认与维护 (Keepalive)

AS(自治系统)

AS 号由 IANA(因特网地址分配组织)统一负责分发。

编号格式

AS 号有两种表示方式:

公有 vs 私有

类似于私有 IP 地址,AS 号也分为公有和私有。私有 AS 号仅限在企业内部或特定环境使用,不能在互联网上发布。

AS 号长度 私有 AS 号范围
16 bit 64512 - 65535
32 bit 4200000000 - 4294967294

BGP报文格式

BGP 的五种报文(Open, Update, Notification, Keepalive, Route-refresh)都共享相同的报文头格式,总长度为 19 Byte。以下是各字段的具体含义:

block-beta
  columns 3
  Marker["Marker (16 Bytes)"]:3
  Length["Length (2 Bytes)"]:1
  Type["Type (1 Byte)"]:1

  %% 下方是 Type 的注释说明
  block:TypeDetail:1
    direction LR
    t1["1: Open<br/>2: Update<br/>3: Notification<br/>4: Keepalive<br/>5: Route-refresh"]
  end

  %% 连线效果
  Type -- "类型定义" --> TypeDetail

BGP五种报文

报文名称 作用 发送时刻
Open 协商 BGP 对等体参数,建立对等体关系 BGP TCP 连接建立成功之后
Update 发送 BGP 路由更新 BGP 对等体关系建立之后有路由需要发送或路由变化时向对等体发送 Update 报文
Notification 报告错误信息,中止对等体关系 当 BGP 在运行中发现错误时,发送 Notification 报文将错误通告给 BGP 对等体
Keepalive 标志对等体建立,维持 BGP 对等体关系 BGP 路由器收到对端发送的 Keepalive 报文,将对等体状态置为已建立,同时后续定期发送 keepalive 报文用于保持连接
Route-refresh 用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新能力的 BGP 设备会发送和响应此报文 当路由策略发生变化时,触发请求对等体重新通告路由

BGP六种状态机

状态名称 描述 / 含义 关键动作与后续
Idle 初始状态。BGP 拒绝任何连接请求。 启动后开始查找路由,尝试发起 TCP 连接,转入 Connect
Connect 连接状态。BGP 等待 TCP 三次握手完成。 握手成功则发送 Open 报文并转入 OpenSent;若失败则转入 Active
Active 活跃状态。TCP 连接未能建立,正尝试重新握手。 持续尝试 TCP 建立。成功则转入 OpenSent;多次失败可能退回 Idle
OpenSent 报文已发送。TCP 已通,已向对端发送 Open 报文。 等待并检查对方的 Open 报文。若参数匹配则发送 Keepalive 并转入 OpenConfirm
OpenConfirm 报文确认。收到对方正确的 Open 参数,等待最终确认。 等待对方的回应。收到对方的 Keepalive 报文后,立即转入 Established
Established 连接已建立。对等体关系正式成立,可以交换路由。 开始交互 Update 报文交换路由信息;周期性发送 Keepalive 维持连接。

BGP 邻居建立的完整时序图

sequenceDiagram
    participant RTA as RTA (1.1.1.1)
    participant RTB as RTB (2.2.2.2)

    Note over RTA, RTB: 状态:Idle / Connect

    rect rgb(240, 248, 255)
    Note right of RTB: TCP 三次握手
    RTB->>RTA: TCP SYN
    RTA->>RTB: TCP ACK + SYN
    RTB->>RTA: TCP ACK
    end

    rect rgb(255, 250, 240)
    Note right of RTB: BGP 报文交换
    RTB->>RTA: Open 报文
    Note right of RTB: 状态:OpenSent
    RTA->>RTB: Open 报文
    Note left of RTA: 状态:OpenSent
    end

    rect rgb(240, 255, 240)
    RTA->>RTB: Keepalive 报文
    Note left of RTA: 状态:OpenConfirm
    RTB->>RTA: Keepalive 报文
    Note right of RTB: 状态:OpenConfirm
    end

    Note over RTA, RTB: 状态:Established (建立成功)

    loop 数据交互
        RTA-->>RTB: Update / Keepalive / Route-refresh / Notification
        RTB-->>RTA: Update / Keepalive / Route-refresh / Notification
    end

BGP邻居建立的方式

默认情况下EBPG邻居之间的BGP报文ttl=1,如果跨链路建立邻居,ttl超时导致EBGP邻居无法正常
1 最常见的直连物理接口建立邻居
2 Loopback接口建立邻居

双方都收到 Keepalive 后,状态变为 Established(正式脱单,可以开始传路由了)。

直连物理接口建立EBGP(一般不太用)

[r1]bgp 100
 peer 10.1.12.2 as-number 200

[r2]bgp 200
 peer 10.1.12.1 as-number 100

loopback接口建立ebgp

理接口一旦 Down,邻居就断;但只要网络中有冗余路径,Loopback 接口永远是 Up 的,能极大提高邻居关系的稳定性。

[r1]ip route-static 2.2.2.2 32 10.1.12.2
[r1]ip route-static 2.2.2.2 32 10.1.21.2

[r2]ip route-static 1.1.1.1 32 10.1.12.1
[r2]ip route-static 1.1.1.1 32 10.1.21.1

[r1]bgp 100
 peer 2.2.2.2 connect-interface LoopBack 0 #BGP 报文的源 IP 必须等于对方配置的 peer IP。如果不指定 connect-interface,路由器默认用出接口 IP 发包,会导致对方校验失败
 peer 2.2.2.2 as-number 200
 peer 2.2.2.2 ebgp-max-hop 255

[r2]bgp 200
 peer 1.1.1.1 as-number 100
 peer 1.1.1.1 ebgp-max-hop 255
 peer 1.1.1.1 connect-interface LoopBack0
 peer 1.1.1.1 timer keepalive 20 hold 60 # hold time 时间需要是keepalive的三倍,默认是60 180,两边open报文协商后,按照数值小的来。

Loopback接口建立ibgp

bgp 100
peer 2.2.2.2 as-number 100
peer 2.2.2.2  connect-interface LoopBack 0

BGP路由产生

BGP 协议没有路由计算的机制:无法像 IGP(如 OSPF/IS-IS)那样通过算法自动计算出拓扑路由,它本身不产生路由信息。
BGP 只是路由的搬运工:它负责在不同的自治系统(AS)之间传递路由条目。
BGP 路由管理手动发布:必须将 IP 路由表中已经存在的路由,通过 BGP 协议手动发布出去。

network

最为精确的发布方式,要求发布的网络前缀和掩码必须与路由表中的条目完全一致
注意: network 将路由表中的路由引入bgp转发表network引入路由时,路由需在路由表中存在,且引入时掩码需要和路由表中保持一致。

graph LR
    subgraph AS100 ["AS 100 (OSPF Area 0)"]
        direction LR
        RTA["RTA (1.1.1.1)"]
        RTB["RTB (2.2.2.2)"]

        Net_Routes["100.0.0.0/24<br/>100.0.1.0/24"] -.-> RTA
        RTA -- "10.1.12.0/24" --- RTB
    end

    subgraph AS200 ["AS 200"]
        RTC["RTC (3.3.3.3)"]
    end

    RTB -- "EBGP (10.1.23.0/24)" --> RTC

    %% 配置标注
    style RTB fill:#f96,stroke:#333
    Note_RTB["<b>RTB Network 注入:</b><br/>network 10.1.12.0 24<br/>network 100.0.0.0 24<br/>network 100.0.1.0 24"]
    RTB --- Note_RTB

Network命令是逐条将IP路由表中已经存在的路由引入到BGP路由表中。
bgp 200
network 10.1.12.0 255.255.255.0

import-route

注入方式,可以将 IGP 路由或其他协议路由批量引入 BGP。
bgp 200
import-route ospf 1

手动汇总

在 BGP 视图下手动配置聚合路由,减少明细路由数量。

自动汇总

针对自然网段进行聚合(现网中已较少使用,通常建议手动控制)。

BGP 通告路由规则

  1. BGP 只通告最优路由
  2. 从 EBGP 邻居得到的路由,传递给所有邻居。
  3. 从 IBGP 邻居得到的路由,不会传递给 IBGP 邻居。
    • 原因: IBGP 水平分割,用于在 AS 内部防止 BGP 路由环路。
    • AS 内部 IBGP 邻居架构: IBGP 全互联 + IBGP 水平分割 = 路由传递 + 路由防环。
    • 简化 IBGP 全互联架构的方法:
      1. 使用路由反射器 (Route Reflector)
      2. 使用联盟技术 (Confederation)
  4. 当不存在 BGP 路由黑洞时,从 IBGP 邻居得到的路由,只要下一跳可达,就可以传递给 EBGP 邻居,不要求同步。

hcip BGP


正文到此结束
版权声明:若无特殊注明,本文皆为 Myluzh Blog 原创,转载请保留文章出处。
文章内容:https://itho.cn/huawei/250.html
文章标题:《HCIP-Datacom(BGP)