BGP基础

BGP基础

前言

为方便管理规模不断扩大的网络,网络被分成了不同的AS(Autonomous System,自治系统)。早期,EGP(Exterior Gateway Protocol,外部网关协议)被用于在AS之间动态交换路由信息。但EGP设计简单,存在诸多不足,很快无法满足网络管理的要求。BGP(Border Gateway Protocol,边界网关协议)是为取代EGP而设计的,能够进行路由优选、避免路由环路、更高效地传递路由和维护大量路由信息。

目标

  • 描述BGP基本概念
  • 描述BGP的对等体类型
  • 阐明BGP对等体建立过程
  • 阐明BGP状态机
  • 实现BGP基本配置

目录

  1. BGP概述
    • BGP的基本概念
    • BGP的基本配置

AS(自治系统)

  • AS指的是在同一个组织管理下,使用统一选路策略的设备集合。
  • AS号存在16bit、32bit两种表示方式,由IANA负责分发。
  • 私有AS号范围:16bit为64512-65534,32bit为4200000000-4294967294。

使用IGP传递路由的局限性

  • AS之间需要直连链路或通过VPN协议构造逻辑直连。
  • 使用IGP存在暴露AS内部网络信息的风险。
  • 路由数量增加导致路由表规模变大,路由收敛变慢,设备性能消耗加大。

使用BGP传递路由

  • BGP基于TCP,只要能够建立TCP连接即可建立BGP。
  • 只传递路由信息,不会暴露AS内的拓扑信息。
  • 采用触发式更新,而不是周期性更新。

BGP发展历史

  • 1980年左右提出AS概念,使用EGP。
  • 1989年发布第一个BGP RFC(RFC1105),即BGP-1。
  • 1990年发布的RFC1163提出了路径属性概念。
  • 1994年开始使用BGP-4(RFC1771)。
  • 2006年之后,单播IPv4网络使用的版本是BGP-4(RFC4271),其他网络(如IPv6)使用的版本是MP-BGP(RFC4760)。

BGP在企业中的应用

  • 大型企业分支间采用BGP进行路由传递。
  • 企业与运营商之间可使用BGP进行路由交互。

BGP概述

  • BGP是一种实现自治系统AS之间的路由可达,并选择最佳路由的矢量性协议。
  • 特点:使用TCP(端口号179),触发式路由更新,承载大批量的路由信息,提供丰富的路由策略,支撑MPLS/VPN应用,具备路由聚合和路由衰减功能。

BGP特征

  1. 使用TCP为传输层协议,端口号179。
  2. BGP路由器之间交换BGP路由表,只发送增量的BGP路由更新。
  3. BGP被称为路径矢量路由协议,每条BGP路由都携带多种路径属性。

BGP对等体关系

  • EBGP(External BGP):位于不同自治系统的BGP路由器之间的BGP对等体关系。
  • IBGP(Internal BGP):位于相同自治系统的BGP路由器之间的BGP邻接关系。

BGP对等体关系建立

  1. 先启动BGP的一端发起TCP连接。
  2. 三次握手建立TCP连接后,相互发送Open报文携带参数。
  3. 参数协商正常后双方相互发送Keepalive报文,对等体建立成功。

TCP连接源地址

  • 在部署IBGP对等体关系时,建议使用Loopback地址作为更新源地址。
  • 在部署EBGP对等体关系时,通常使用直连接口的IP地址作为源地址。

BGP报文类型

  • Open:建立BGP对等体连接关系。
  • Update:传递路由信息。
  • Notification:告知对等体错误原因并中断连接。
  • Keepalive:保持连接。
  • Route-refresh:要求对等体重新发送指定地址族的路由信息。

BGP报文格式

  • 报文头:包括Marker(16字节)、Length(2字节)、Type(1字节)。
  • Open报文:包括Version、My AS、Hold Time、BGP Identifier等字段。
  • Update报文:包括Withdrawn Routes、Path attributes、NLRI等字段。
  • Notification报文:包括Error Code、Error subcode、Data等字段。
  • Keepalive报文:只包含报文头。
  • Route-refresh报文:包括AFI、Res.、SAFI等字段。

BGP状态机

  • 状态转换
    • Idle:未启动BGP或无法发起TCP连接。
    • Connect:尝试建立TCP连接。
    • Active:TCP连接长期无法建立。
    • Open Sent:发送Open报文。
    • Open Confirm:收到对端回应的Open报文并发送Keepalive报文。
    • Established:对等体关系建立成功。

BGP对等体表

  • 使用display bgp peer命令查看BGP对等体表,包括对等体地址、版本号、AS号、Up/Down时间、状态、收到的路由前缀数目等。

BGP路由表

  • 使用display bgp routing-table命令查看BGP路由表,包括目的网络地址、网络掩码、下一跳地址等。
  • 可通过display bgp routing-table ipv4-address { mask | mask-length}查看某条路由的详细信息。

BGP路由的生成

  • BGP不会自己发现、计算路由条目,其路由条目由IGP协议路由表中的路由发布得到。
  • 注入路由的方式有两种:Network和import-route。

Network注入路由

  • 使用network命令将IGP路由表中的路由注入到BGP路由表中。

import-route方式注入路由

  • 使用import-route命令将直连路由、静态路由、OSPF路由、IS-IS路由等注入到BGP路由表中。

BGP聚合路由

  • 使用aggregate命令执行BGP路由手工聚合,生成聚合路由。

BGP通告原则

  1. 只发布最优且有效的路由。
  2. 从EBGP对等体获取的路由,会发布给所有对等体。
  3. 从IBGP对等体获取的路由,不会发送给其他IBGP对等体(IBGP水平分割)。
  4. 当从IBGP对等体学习到一条BGP路由时,除非从IGP协议学习到该路由,否则不会通告给EBGP对等 体(BGP同步原则)。

配置介绍

  • 启动BGP进程bgp { as-number-plain | as-number-dot }router-id ipv4 -address
  • 配置BGP对等体peer {ipv4-address | ipv6-address } as-number { as-number-plain | as-number-dot }
  • 配置建立对等体使用的源地址、EBGP对等体最大跳数peer ipv4-address connect-interface interface- type interface-number [ ipv4-source-address ]peer ipv4-address ebgp-max-hop [ hop-count ]

配置案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# R1的配置
[R1] bgp 100
[R1-bgp] router-id 10.0.1.1
[R1-bgp] peer 10.0.3.3 as-number 100
[R1-bgp] peer 10.0.3.3 connect-interface LoopBack1

# R3的配置
[R3] bgp 100
[R3-bgp] router-id 10.0.3.3
[R3-bgp] peer 10.0.1.1 as-number 100
[R3-bgp] peer 10.0.1.1 connect-interface LoopBack1
[R3-bgp] peer 10.0.34.4 as-number 200

# R4的配置
[R4] bgp 200
[R4-bgp] router-id 10.0.4.4
[R4-bgp] peer 10.0.34.3 as-number 100

思考题

BGP使用的TCP目的端口号是多少?
答案:179
BGP对等体关系有哪几种? 划分的依据是什么?
答案:有两种,EBGP和IBGP。 划分的依据是BGP路由器是否位于相同的自治系统。
BGP对等体关系建立、更新路由分别使用什么报文?

答案:建立对等体关系使用Open报文,更新路由使用Update报文。

本章总结

本章节介绍了BGP基础知识,包括BGP产生的背景、AS的概念、BGP的特征、对等体关系建立过程、BGP状态机、路由生成与 通告原则等。 BGP在路由传递中遵循四条原则,对路由传递进行了限制。