BGP路由生成与路由表详解:从基础概念到实战配置
BGP路由生成与路由表详解:从基础概念到实战配置
本文将详细介绍BGP(边界网关协议)路由的生成机制和路由表的相关知识。通过对比IGP(内部网关协议)路由的生成方式,深入讲解BGP路由的几种主要生成方式,包括network注入、import-route注入以及路由聚合。同时,文章还将介绍如何查看和分析BGP路由表,帮助读者全面理解BGP路由的工作原理。
一、BGP路由的生成
还记得OSPF是怎样通告路由的吗?通过进入ospf进程,进入区域然后通告自身直连的路由,然后邻居通过SPF算法计算出路由。但是不同于IGP路由协议,BGP自身并不会发现并计算产生路由,BGP将IGP路由表中的路由注入到BGP路由表中,并通过Update报文传递给BGP对等体。
BGP路由注入有如下几种方式:
- network
- import-route
- 路由聚合
二、Network注入路由
Network方式注入的路由必须是已经存在于IP路由表中的路由条目,否则不会被成功注入到BGP路由表中。
IGP路由学习:
- 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路由表中。
示例:
# AR3 配置
interface GigabitEthernet0/0/1
ip address 10.1.13.3 255.255.255.0
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
#
ospf 1
area 0.0.0.0
network 1.1.1.1 0.0.0.0
network 10.1.13.0 0.0.0.255
# AR1配置
interface GigabitEthernet0/0/0
ip address 10.1.12.1 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 10.1.13.1 255.255.255.0
#
interface LoopBack0
ip address 8.8.8.8 255.255.255.255
#
bgp 100
router-id 1.1.1.1
peer 10.1.12.2 as-number 200
#
ipv4-family unicast
undo synchronization
network 1.1.1.1 255.255.255.255 # 这是通过OSPF已经学习到1.1.1.1/32,就算不是自身的路由只要存在路由表都可以network通告给BGP邻居
peer 10.1.12.2 enable
#
ospf 1
area 0.0.0.0
network 8.8.8.8 0.0.0.0
network 10.1.13.0 0.0.0.255
#AR2查看BGP路由表
<AR2>display bgp routing-table
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.1.1.1/32 10.1.12.1 1 0 100i
简单理解BGP不会通过协议学习到路由,只会将存在路由表的路由通过network、import、路由聚合的方式通告给邻居,只要路由表存在的路由都可以。
三、import-route方式注入路由
Network方式注入路由虽然是精确注入,但是只能一条条配置逐条注入IP路由表中的路由,如果注入的路由条目很多配置命令将会非常复杂,为此可以使用import-route方式,将各种路由注入到BGP路由表中。
- 直连路由
- 静态路由
- OSPF路由
- IS-IS路由
- ...
import-route方式:
# 还是以上面示例图为例,AR1的lookback口8.8.8.8是直连路由,可以直接将所有直连路由注入BGP路由
[AR1]dis ip routing-table 8.8.8.8
Route Flags: R - relay, D - download to fib

------------------------------------------------------------------------------
Routing Table : Public
Summary Count : 1
Destination/Mask Proto Pre Cost Flags NextHop Interface
8.8.8.8/32 Direct 0 0 D 127.0.0.1 LoopBack0
[AR1]
bgp 100
router-id 1.1.1.1
peer 10.1.12.2 as-number 200
#
ipv4-family unicast
undo synchronization
network 1.1.1.1 255.255.255.255
network 8.8.8.8 255.255.255.255
import-route direct
peer 10.1.12.2 enable
# AR2查看路由表,会发现所有AR1直连的路由都通告出去了,可以通过路由策略进行过滤,前面已经学过了
<AR2>dis bgp routing-table
BGP Local router ID is 2.2.2.2
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete
Total Number of Routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
*> 1.1.1.1/32 10.1.12.1 1 0 100i
*> 8.8.8.8/32 10.1.12.1 0 0 100i
10.1.12.0/24 10.1.12.1 0 0 100?
*> 10.1.13.0/24 10.1.12.1 0 0 100?
import-route支持批量将一整个类型的IGP路由进行注入BGP路由表。
四、路由聚合
与众多IGP协议相同,BGP同样支持路由的手工聚合,在BGP配置视图中使用aggregate命令可以执行BGP路由手工聚合,在BGP已经学习到相应的明细路由情况下,设备会向BGP注入指定的聚合路由。
路由聚合执行聚合之后,在本地的BGP路由表中除了原本的明细路由条目之外,还会多出一条聚合的路由条目。
如果在执行聚合时指定了detail-suppressed,则BGP只会向对等体通告聚合后的路由,而不通告聚合前的明细路由。
在聚合时配置了抑制明细路由的参数,R3上查看路由表,将只能看到BGP路由:10.1.0.0/22,无法看到聚合前的明细路由。
路由聚合可以减少路由条目,减少设备性能消耗,在BGP进程通过aggregate进行聚合,可以通过detail-suppressed控制是否保留明细路由。
五、BGP路由表
在设备上通过display bgp routing-table查看BGP路由表:
- Network:路由的目的网络地址以及网络掩码
- NextHop:下一跳地址
- Path,自治系统路径,表示到达该网络所经过的自治系统序列,从右到左
- MED,Metric:到该网络的路由成本,数值越小表示路由越优。
- Ogn,路由的起源类型,如IGP(内部网关协议)、EGP(外部网关协议)、Incomplete(不完整)。
BGP路由表:
- 列出本设备发现的所有BGP路由,如果到达同一个目的地存在多条路由,则将路由都进行罗列,但每个目的地只会优选一条路由。
- 代表有效路由,>代表最优路由,如果是最优有效路由,前面带*>号。
如果想要查看某条路由更加详细的信息,可以通过display bgp routing-table ipv4-address { mask | mask-length}查看,该命令会将匹配的BGP路由信息详细展示。
# 通过查看具体路由信息,
<AR2>dis bgp routing-table 8.8.8.8
BGP local router ID : 2.2.2.2 # 当前路由器ID
Local AS number : 200 # 本地AS号
Paths: 1 available, 1 best, 1 select
BGP routing table entry information of 8.8.8.8/32:
From: 10.1.12.1 (1.1.1.1) # 从哪个路由器学习到
Route Duration: 00h09m43s
Direct Out-interface: GigabitEthernet0/0/0 # 下一跳出接口
Original nexthop: 10.1.12.1 # 来源下一跳
Qos information : 0x0
AS-path 100, origin igp, MED 0, pref-val 0, valid, external, best, select, acti
ve, pre 255 # 具体的BGP选路属性,后面我们会学到很多选路规则
Not advertised to any peer yet
总结:BGP不同于IGP路由协议学习到路由条目,而是通过network、import-route、路由聚合等将IGP路由表(直连、静态、OSPF、IS-IS等)通过update报文通告给BGP邻居,进行BGP通告的路由只要存在本地路由表即可。通过display bgp routing-table查看BGP的路由表,如果是最优有效路由,前面带*>号。
本文原文来自CSDN博客,作者:不喜欢热闹的孩子