今天继续学习下BGP的路由生成和路由表的知识。
一、BGP路由的生成
还记得OSPF是怎样通告路由的吗?通过进入ospf进程,进入区域然后通告自身直连的路由,然后邻居通过SPF算法计算出路由。但是不同于IGP路由协议,BGP自身并不会发现并计算产生路由,BGP将IGP路由表中的路由注入到BGP路由表中,并通过Update报文传递给BGP对等体。
有如下几种方式产生BGP路由:
-
network -
import-route -
路由聚合
二、Network注入路由
Network方式注入的路由必须是已经存在于IP路由表中的路由条目,否则不会被成功注入到BGP路由表中。
-
AS200内的BGP路由器已经通过IGP协议OSPF学习到了两条路由:10.1.0.0/24和10.2.0.0/24,在BGP进程内通过network命令注入这两条路由,这两条路由将会出现在本地的BGP路由表中。
2. AS200内的BGP路由器通过Update报文将路由传递给AS300内的BGP路由器。 3. 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路由 -
...
# 还是以上面示例图为例,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路由,如果到达同一个目的地存在多条路由,则将路由都进行罗列,但每个目的地只会优选一条路由。 -
-
代表有效路由,>代表最优路由,如果是最优有效路由,前面带*>号。
-
如果想要查看某条路由更加详细的信息,可以通过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的路由表,如果是最优有效路由,前面带*>
号。
如果对文章感兴趣欢迎微信搜索公众号:不喜欢热闹的孩子
本文由 mdnice 多平台发布