- BGP概述
- AS
- 使用IGP传递路由
- 使用BGP传递路由
- BGP发展历史
- BGP在企业中的应用
- BGP的基本概念
- BGP概述
- BGP特征
- BGP对等体关系
- BGP对等体关系建立
- TCP连接源地址
- BGP报文类型
- BGP对等体表
- BGP路由表
- BGP路由的生成
- Network注入路由
- import-route方式注入路由
- BGP聚合路由
- 通告原则
- BGP路由通告原则一
- BGP路由通告原则二
- BGP路由通告原则三
- BGP路由通告原则四
- BGP的基本配置
- 配置介绍
- 配置案例
为方便管理规模不断扩大的网络,网络被分成了不同的AS(Autonomous System,自治系统)。早期,EGP(Exterior Gateway Protocol,外部网关协议)被用于实现在AS之间动态交换路由信息。但是EGP设计得比较简单,只发布网络可达的路由信息,而不对路由信息进行优选,同时也没有考虑环路避免等问题,很快就无法满足网络管理的要求。
BGP是为取代最初的EGP而设计的另一种外部网关协议。不同于最初的EGP,BGP能够进行路由优选、避免路由环路、更高效率的传递路由和维护大量的路由信息。
本章节将介绍BGP的基本概念。
BGP概述
AS
OSPF、IS-IS等IGP路由协议在组织机构网络内部广泛应用,随着网络规模扩大,网络中路由数量不断增长,IGP已无法管理大规模网络,AS的概念由此诞生。
AS指的是在同一个组织管理下,使用统一选路策略的设备集合。
不同AS通过AS号区分,AS号存在16bit、32bit两种表示方式。IANA负责AS号的分发。
当不同AS之间需要进行通信时,在AS之间应使用何种路由协议进行路由的传递?
使用IGP传递路由
AS之间需要直连链路,或通过VPN协议构造逻辑直连(例如GRE Tunnel)进行邻居建立。
AS之间可能是不同的机构、公司,相互之间无法完全信任,使用IGP可能存在暴露AS内部的网络信息的风险。
整个网络规模扩大,路由数量进一步增加,路由表规模变大,路由收敛变慢,设备性能消耗加大。
使用BGP传递路由
为此在AS之间专门使用BGP(Border GatewayProtocol,边界网关协议)协议进行路由传递,相较于传统的IGP协议:
BGP基于TCP,只要能够建立TCP连接即可建立BGP。
只传递路由信息,不会暴露AS内的拓扑信息。
触发式更新,而不是进行周期性更新。
BGP发展历史
BGP在企业中的应用
BGP的基本概念
BGP概述
BGP是一种实现自治系统AS之间的路由可达,并选择最佳路由的矢量性协议。早期发布的三个版本分别是BGP-1(RFC1105)、BGP-2(RFC1163)和BGP-3(RFC1267),1994年开始使用BGP-4(RFC1771),2006年之后单播IPv4网络使用的版本是BGP-4(RFC4271),其他网络(如IPv6等)使用的版本是MP-BGP(RFC4760)。
BGP的特点:
BGP使用TCP作为其传输层协议(端口号为179),使用触发式路由更新,而不是周期性路由更新。
BGP能够承载大批量的路由信息,能够支撑大规模网络。
BGP提供了丰富的路由策略,能够灵活的进行路由选路,并能指导对等体按策略发布路由。
BGP能够支撑MPLS/VPN的应用,传递客户VPN路由。
BGP提供了路由聚合和路由衰减功能用于防止路由振荡,通过这两项功能有效地提高了网络稳定性。
BGP特征
BGP使用TCP为传输层协议,TCP端口号179。路由器之间的BGP会话基于TCP连接而建立。
运行BGP的路由器被称为BGP发言者(BGP Speaker),或BGP路由器。
两个建立BGP会话的路由器互为对等体(Peer),BGP对等体之间交换BGP路由表。
BGP路由器只发送增量的BGP路由更新,或进行触发式更新(不会周期性更新)。
BGP能够承载大批量的路由前缀,可在大规模网络中应用。
BGP通常被称为路径矢量路由协议(Path-Vector Routing Protocol)。
每条BGP路由都携带多种路径属性(Path attribute),BGP可以通过这些路径属性控制路径选择,而不像IS-IS、OSPF只能通过Cost控制路径选择,因此在路径选择上,BGP具有丰富的可操作性,可以在不同场景下选择最合适的路径控制方式。
BGP对等体关系
与OSPF、IS-IS等协议不同,BGP的会话是基于TCP建立的。建立BGP对等体关系的两台路由器并不要求必须直连。
BGP存在两种对等体关系类型:EBGP及IBGP:
EBGP(External BGP):位于不同自治系统的BGP路由器之间的BGP对等体关系。两台路由器之间要建立EBGP对等体关系,必须满足两个条件:
两个路由器所属AS不同(即AS号不同)。
在配置EBGP时,Peer命令所指定的对等体IP地址要求路由可达,并且TCP连接能够正确建立。
IBGP(Internal BGP):位于相同自治系统的BGP路由器之间的BGP邻接关系。
BGP对等体关系建立
先启动BGP的一端先发起TCP连接,如左图所示,R1先启动BGP,R1使用随机端口号向R2的179端口发起TCP连接,完成TCP连接的建立。
三次握手建立完成之后,R1、R2之间相互发送Open报文,携带参数用于对等体建立,参数协商正常之后双方相互发送Keepalive报文,收到对端发送的Keepalive报文之后对等体建立成功,同时双方定期发送Keepalive报文用于保持连接。
其中Open报文中携带:
My Autonomous System:自身AS号
Hold Time:用于协商后续Keepalive报文发送时间
BGP Identifier:自身Router ID
BGP对等体关系建立之后,BGP路由器发送BGP Update(更新)报文通告路由到对等体。
TCP连接源地址
一般而言在AS内部,网络具备一定的冗余性。在R1与R3之间,如果采用直连接口建IBGP邻居关系,那么一旦接口或者直连链路发生故障,BGP会话也就断了,但是事实上,由于冗余链路的存在,R1与R3之间的IP连通性其实并没有DOWN(仍然可以通过R4到达彼此)。
缺省情况下,BGP使用报文出接口作为TCP连接的本地接口。
在部署IBGP对等体关系时,建议使用Loopback地址作为更新源地址。Loopback接口非常稳定,而且可以借助AS内的IGP和冗余拓扑来保证可靠性。
在部署EBGP对等体关系时,通常使用直连接口的IP地址作为源地址,如若使用Loopback接口建立EBGP对等体关系,则应注意EBGP多跳问题。
BGP报文类型
BGP对等体表
<R1>display bgp peer
BGP local router ID : 10.0.1.1
Local AS number : 100
Total number of peers : 1 Peers in established state : 1Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv
10.0.12.2 4 100 25719 25714 0 0428h32m Established 1
在设备上通过display bgp peer命令查看BGP对等体表,其中主要参数含义:
Peer:对等体地址
V:version,版本号
AS:对等体AS号
Up/Down:该对等体已经存在up或者down的时间
State:对等体状态,这里显示的为BGP状态机的状态
PrefRcv:prefix received,从该对等体收到的路由前缀数目
BGP路由表
<R1>display bgp routing-table
BGP Local router ID is 10.0.1.1
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 10.0.45.0/24 10.0.4.4 0 100 0 ?
* i 10.0.4.4 0 100 0 ?
在设备上通过display bgp routing-table查看BGP路由表:
Network:路由的目的网络地址以及网络掩码
NextHop:下一跳地址
如果想要查看某条路由更加详细的信息,可以通过display bgp routing-table ipv4-address { mask | mask-length} 查看,该命令会将匹配的BGP路由信息详细展示。
<R1>display bgp routing-table 10.0.45.0 24
BGP local router ID : 10.0.1.1
Local AS number : 100
Paths: 2 available, 1 best, 1 select
BGP routing table entry information of 10.0.45.0/24:
From: 10.0.2.2 (10.0.2.2) #标明路由来源
Route Duration: 06h19m44s
Relay IP Nexthop: 10.0.12.2
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 10.0.4.4 #路由下一跳地址
Qos information : 0x0
AS-path Nil, origin incomplete, MED 0, localpref 100, pref-val 0, valid,
internal, best, select, active, pre 255, IGP cost 2 #路径属性、是否被优选
Originator: 10.0.4.4
Cluster list: 10.0.2.2
Not advertised to any peer yet
BGP routing table entry information of 10.0.45.0/24:
From: 10.0.3.3 (10.0.3.3)
Route Duration: 05h17m56s
Relay IP Nexthop: 10.0.12.2
Relay IP Out-Interface: GigabitEthernet0/0/0
Original nexthop: 10.0.4.4
Qos information : 0x0
AS-path Nil, origin incomplete, MED 0, localpref 100, pref-val 0, valid,
internal, pre 255, IGP cost 2, not preferred for peer address
Originator: 10.0.4.4
Cluster list: 10.0.3.3
Not advertised to any peer yet
BGP路由的生成
不同于IGP路由协议,BGP自身并不会发现并计算产生路由,BGP将IGP路由表中的路由注入到BGP路由表中,并通过Update报文传递给BGP对等体。
BGP注入路由的方式有两种:
Network
import-route
与IGP协议相同,BGP支持根据已有的路由条目进行聚合,生成聚合路由。
Network注入路由
通过Network方式注入路由:
- AS200内的BGP路由器已经通过IGP协议OSPF学习到了两条路由:10.1.0.0/24和10.2.0.0/24,在BGP进程内通过network命令注入这两条路由,这两条路由将会出现在本地的BGP路由表中。
- AS200内的BGP路由器通过Update报文将路由传递给AS300内的BGP路由器。
- AS300内的BGP路由器收到路由后,将这两条路由加入到本地的BGP路由表中。
import-route方式注入路由
Network方式注入路由虽然是精确注入,但是只能一条条配置逐条注入IP路由表中的路由,如果注入的路由条目很多配置命令将会非常复杂,为此可以使用import-route方式,将:
- 直连路由
- 静态路由
- OSPF路由
- IS-IS路由
等协议的路由注入到BGP路由表中。
BGP聚合路由
与众多IGP协议相同,BGP同样支持路由的手工聚合,在BGP配置视图中使用aggregate命令可以执行BGP路由手工聚合,在BGP已经学习到相应的明细路由情况下,设备会向BGP注入指定的聚合路由。
通告原则
BGP通过network、import-route、aggregate聚合方式生成BGP路由后,通过Update报文将BGP路由传递给对等体。
BGP通告遵循以下原则:
只发布最优且有效路由。
从EBGP对等体获取的路由,会发布给所有对等体。
IBGP水平分割:从IBGP对等体获取的路由,不会发送给IBGP对等体。
BGP同步规则指的是:当一台路由器从自己的IBGP对等体学习到一条BGP路由时(这类路由被称为IBGP路由),它将不能使用该条路由或把这条路由通告给自己的EBGP对等体,除非它又从IGP协议(例如OSPF等,此处也包含静态路由)学习到这条路由,也就是要求IBGP路由与IGP路由同步。同步
规则主要用于规避BGP路由黑洞问题。
BGP路由通告原则一
第一条原则:只发布最优且有效(即下一跳地址可达)路由。
通过display bgp routing-table命令可以查看BGP路由表。
Total Number of Routes: 2Network NextHop MED LocPrf PrefVal Path/Ogn
*>i 10.1.0.0/24 11.1.0.1 0 100 0 ?
*i 11.1.0.2 0 100 0 ?
在BGP路由表中同时存在以下两个标志的路由为最优、有效:
- : 代表有效
: 代表最优
BGP路由通告原则二
第二条原则:从EBGP对等体获取的路由,会发布给所有对等体。
R2从EBGP对等体获取的BGP路由,会发布给所有EBGP、IBGP对等体。
BGP路由通告原则三
第三条原则:从IBGP对等体获取的BGP路由,不会再发送给其他IBGP对等体。
该条原则也被称为“IBGP水平分割”。
如图所示,如果IBGP对等体学习到的路由会继续传递给其他的IBGP对等体:
R2将一条路由传递给了IBGP对等体R3
R3收到路由之后传递给IBGP对等体R1
R1继续传递给IBGP对等体R2
路由环路形成。
第三条原则可能会带来新的问题,如左侧所示,当BGP路由器R2将路由传递给BGP路由器R1时,由于第三条原则限制,R1无法将BGP路由传递给R3,R3将无法学习到路由。
为解决该问题可以采用AS内IBGP全互联的方式,即:R2、R3之间建立非直连的IBGP对等体关系,以此让BGP路由器R2将路由传递给BGP路由器R3。
BGP路由通告原则四
第四条原则:当一台路由器从自己的IBGP对等体学习到一条BGP路由时(这类路由被称为IBGP路由),它将不能使用该条路由或把这条路由通告给自己的EBGP对等体,除非它又从IGP协议(例如OSPF等,此处也包含静态路由)学习到这条路由,该条规则也被称为BGP同步原则。
• 如图所示:
- BGP路由器R4上存在一条路由10.0.4.0/24,R4将其传递给了R2。
- R2将路由传递给非直连IBGP对等体R3。
- R3将路由传递给R5。
- 之后R5向10.0.4.4发起访问。
R5访问10.0.4.4:
- R5查找路由表,将报文发送给R3。
- R3收到报文后查找路由表,匹配到一条BGP路由,其下一跳为R2,但是R2为非直连下一跳,需要进行路由迭代,通过IGP学习到的路由迭代出下一跳为R1。R3将报文发送给R1。
- R1收到报文后查找路由表,因为R1并非BGP路由器,未与R2建立IBGP对等体关系,因此R1上并无BGP路由10.0.4.0/24,路由查找失败,R1将报文丢弃。
BGP的基本配置
配置介绍
- 启动BGP进程
[Huawei] bgp { as-number-plain | as-number-dot }
[Huawei-bgp] router-id ipv4-address
启动BGP,指定本地AS编号,并进入BGP视图。使用router-id命令配置BGP的Router ID,建议将BGP Router ID配
置为设备Loopback接口的地址。
2. 配置BGP对等体
[Huawei-bgp] peer { ipv4-address | ipv6-address } as-number { as-number-plain | as-number-dot }
创建BGP对等体,指定对等体地址以及AS号。
3. 配置建立对等体使用的源地址、EBGP对等体最大跳数
[Huawei-bgp] peer ipv4-address connect-interface interface-type interface-number [ ipv4-source-address ]
[Huawei-bgp] peer ipv4-address ebgp-max-hop [ hop-count ]
指定发送BGP报文的源接口,并可指定发起连接时使用的源地址。
指定建立EBGP连接允许的最大跳数。缺省情况下,EBGP连接允许的最大跳数为1,即只能在物理直连链路上建立EBGP连接。
配置案例
BGP对等体关系、AS号、设备互联地址如图所示。
所有设备的Loopback1接口地址为10.0.x.x/32,其中x为设备编号,
所有设备都使用Loopback1地址作为Router ID。
R1、R3之间使用Loopback1地址作为更新源地址建立IBGP对等体关系,R3、R4之间使用互联接口地址作为更新源地址建立EBGP对等体关系。
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
在R3上查看BGP对等体状态:
<R3> display bgp peer
BGP Local router ID : 10.0.3.3
local AS number : 100
Total number of peers : 2
Peers in established state : 2Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv10.0.1.1 4 100 0 0 0 00:00:07 Established 010.0.34.4 4 200 32 35 0 00:17:49 Established 0