BGP路由协议解析与论证

  • BGP 特点
  • IGP 与 EGP 比对
  • BGP 邻居关系与路由传递
  • BGP 防环原则
  • BGP 路由控制
  • BGP 负载分担
  • BGP 常用命令
  • BGP 路由属性
  • 路由属性的类型
  • Origin 属性
  • 附录
  • 自治系统 AS 号规则


BGP 特点

  • BGP(BGP/BGP4:Border Gateway Protocol,边界网关协议),是外部网关路由协议(EGP)
  • 外部网关协议,不擅长路由计算,擅长路由控制
  • OSPF、ISIS 等内部网关协议(IGP),擅长路由计算,不擅长路由控制
  • OSPF、ISIS 可以根据 cost 控制路由
  • BGP 没有 cost 值(待核实)
  • BGP 运行在传输层(TCP 179号端口提高可靠性)上的一种自治系统的路由协议(应用层)
  1. 无类别路径矢量 -----距离矢量的升级版—AS–BY–AS
  2. 使用单播更新来发送所有信息;基于TCP 179端口工作
  3. 增量更新–仅触发无周期
  4. 具有丰富的属性来取代IGP中度量进行选路----多个参数控制协议
  5. 可以在进项和出项对流量实施强大的策略–可控性
  6. 默认不被用于负载均衡-----通过各种选路规则仅仅产生一条最佳路径
  7. BGP支持认证和聚合(汇总)

IGP 与 EGP 比对

  • IGP 的优点与缺点
    优点:
    1. 收敛速度快
    2. 自动选择最优路径(前提无环)
    3. 占用资源少
    缺点:
    4. 存在工作半径瓶颈。
  • EGP 的特点
    1. 可控性好,通过属性方便进行选路
    2. AS 与 AS 之间交互大量路由
    3. 协议本身无法优选路径
    4. 由于 AS 之间更新量巨大,故而设计为增量更新(仅触发更新,无周期)
    5. 把整个 AS 看作一个大的路由器,以一个 AS 为一跳
    6. BGP 本身不产生路由,而是转发本地路由表中其他协议生成的路由条目
    7. 具有可靠性(BGP协议设备间需要交互大量的路由条目,但又不能选择周期更新来占用链路资源,故只能进行触发更新;且BGP协议工作环境中为节约成本,必然出现非直连需要建立邻居关系—单播邻居)
    8. 基于TCP工作 -三次握手四次断开 4种可靠传输机制 – TCP只能基于单播工作
    9. AS-BY-AS 以一个AS为一跳

BGP 邻居关系与路由传递

  • 创建邻居关系,确定邻居类型
  • EBGP 外部邻居,通过物理口创建邻居
  • IBGP 内部邻居,通过 loopback 口创建邻居
  • 远程建立邻居关系,通过手动创建(待核实)
  • 路由宣告(注入)
  • 通过 network 命令,一条一条进行精细宣告,现网多采用
  • 通过 import-route 命令,引入外部路由到BGP,有产生环路的风险
  • 邻居间路由传递
  • 从本路由器宣告的路由,发送给 EBGP 邻居和 IBGP 邻居,没有限制
  • 从 EBGP 传来的路由,发送给 EBGP 邻居和 IBGP 邻居,因下一跳地址为 EBGP 邻居的互联地址,所以传到 IBGP 邻居的路由下跳有 可能不可达(通过调整 next-hop-local 参数修改下一跳)
  • 从 IBGP传来的路由,发送给 EBGP 邻居( IGP 和 BGP 同步情况去顶是否发送),不发送给 IBGP 邻居(防止路由环路产生)

IGP 和 BGP 同步:BGP学来的路由,IGP 是否可达,如不过可达,将会出现路由黑洞。华为默认不检查。

BGP 防环原则

  • AS 间防环使用 AS-PATH 属性
  • AS 内防环使用水平分割原则
  • 通过 全连接RR反射器解决 “水平分割”

BGP 路由控制

路由器发送关于目标网络的BGP更新消息,更新的度量值被称为路径属性。属性可以是公认的或可选的、强制的或自由决定的、传递的或非传递的。属性也可以是部分的。并非组织的和有组合的都是合法的,路径属性分为4类:公认必遵、公认自决、可选过渡、可选非过渡。

BGP 负载分担

  • 多条不同下一跳的BGP路由同时出现在IP路由表中
  • BGP默认仅下发一条最好的BGP路由到IP路由表
  • 但这种行为可以通过 maximumload-balancing [ eBGP | iBGP ] mumber 命令来配置 BGP 负载分担的最大等价路由条数。

BGP 常用命令

查看 BGP 路由条目详情

<R3>dis bgp routing-table 3.3.3.0 24
 BGP local router ID : 23.1.1.3
 Local AS number : 200
 Paths:   1 available, 1 best, 1 select
 BGP routing table entry information of 3.3.3.0/24:
 Network route. 
 From: 0.0.0.0 (0.0.0.0)
 Route Duration: 00h51m53s  
 Direct Out-interface: LoopBack0
 Original nexthop: 3.3.3.3
 Qos information : 0x0
 AS-path Nil, origin igp, MED 0, pref-val 0, valid, local, best, select, pre 0
 Advertised to such 2 peers:
    4.4.4.4
    2.2.2.2

可以看出 3.3.3.0/24 这条路由通告给了邻居 4.4.4.4 和 2.2.2.2
描述了直连出接口为 LoopBack0 ,原始下一跳:3.3.3.3

BGP 路由属性

路由属性的类型

BGP 路径属性两大类:

  1. 公认:所有BGP路由器必须都能够识别的路径属性
  • 必遵:当BGP路由器使用Update报文通告路由更新时必须携带的路径属性
  • 任意:不要求Update报文中必须携带
  1. 可选:不要求所有的BGP路由器都必须能够识别
  • 过度:如果BGP路由器不能够识别该路径属性,那么也应该接受携带该路径属性的BGP路由更新,并且当路由器将该路由通告给其他对等体时必须携带该路由属性
  • 非过度:如果BGP路由器不能够识别该属性,那么该路由器将会忽略携带该路径属性的BGP路由更新且不将该路由通告给其他BGP对等体

Origin 属性

Origin 属性用来定义路径信息的来源,标记一条路由是怎么成为 BGP 路由的,该属性为 公认必遵 有三种类型:

  1. IGP:具有最高的优先级。通过network命令注入到BGP路由表的路由,其Origin属性为IGP。
  2. EGP:优先级次之。通过EGP得到的路由信息,其Origin属性为EGP。说明:此处EGP指的是一个具体的路由协议,其名称为EGP。这个路由协议现在已经不再被使用。
  3. Incomplete:优先级最低。如果路由是通过其他方式学习到的,则Origin属性为Incomplete(不完整的)。例如通过import-route命令引入到BGP的路由。

附录


自治系统 AS 号规则

  • 标准编号 16位 0-65535
  • 公有 1-64511
  • 私有 64512-65535
  • 扩展AS号 32 二进制