抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >


BGP

BGP

BGP: 边界网关协议,是目前唯一的一种 EGP 协议。是一种增强型的路径矢量路由协议.

AS: 自治系统,是由同一个技术机构进行管理并且运行相同的选路策略的一组路由设备.

AS 号: 1-65535. 1-64511 共有 AS. 64512-65535 私有 AS.

是一个 16bit 的整数,目前新版本的 BGP 支持 4 字节的 AS 号.

IGP 着重于发现路由和计算路由.

BGP 着重于控制路由,传播路由以及最优的路径选择.

BGP 特征

  • BGP 具备可靠的路由更新机制。基于 TCP 协议传递报文,协议号为 179.
  • BGP 具备丰富的度量值.
  • 从设计上避免了环路.
  • 附带多种路由属性.
  • 支持 CIDR, 具备丰富的路由过滤和路由策略机制.
  • BGP 无周期更新,只会通过周期性发送 Keepalive 报文来检测 TCP 的连通性. (OSPF 有周期性更新,OSPF LSA 周期性更新默认 1800s 老化 3600s)
  • 只进行增量更新.(只更新变化的路由)
  • 所有的报文属性均采用 TLV 结构,增强扩展性.

BGP 路由传递

在两个 AS 之间运行的 BGP PEER 称为 EBGP (外部 BGP)

在两个 AS 内部运行的 BGP PEER 称为 IBGP (内部 BGP)

BGP 的报文

  1. Open: 用于负责建立 BGP 对等体以及协商对等体之间相关参数.
  2. Keepalive: 周期性 (60s) 发送,用于检测 BGP PEER 之间的连通性。如果在 180s 内没有收到对方的 Keepalive 报文则认为邻居失效.
  3. Update: 用于在 BGP 对等体之间来传递路由信息,可以用于新路由的更新,也可以用于老路由的撤销.
  4. Notification: 当 BGP 设备检测到错误信息时,会发送 Notification 报文通知对等体.
  5. Route-refresh: 用来通知对等体路由刷新.

EBGP 基础配置

1. 创建 BGP 进程并设置 RID

2. 指定对等体 IP 地址,以及 AS 号

[R1]bgp ?
INTEGER<1-65535> 2-byte autonomous system number
STRING<3-11> 4-byte autonomous system number
(number<1-65535>.number<0-65535>)

[R1]bgp 100
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 12.1.1.2 as-number 200


[R2]bgp 200
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 12.1.1.1 as-number 100
[R2-bgp]

查看 bgp 状态
[R1-bgp]display bgp peer

BGP local router ID : 1.1.1.1
Local AS number : 100
Total number of peers : 1 Peers in established state : 1

Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv

12.1.1.2 4 200 2 3 0 00:00:23 Established 0
[R1-bgp]


IP协议号
6:TCP
1:ICMP
17:UDP
89:OSPF

[R1-GigabitEthernet0/0/0]shutdown
[R1-GigabitEthernet0/0/0]undo shutdown

BGP 协议头

  1. Marker: 标记信息,共 16 字节,固定全为 1.
  2. Length: 长度,包含 BGP 头部与报文内容的总长度。共 2 字节
  3. Type: 类型,用于标识 BGP 报文类型.
  • 1, 表示 Open
  • 2, 表示 Update
  • 3, 表示 Notification
  • 4, 表示 Keepalive
  • 5, 表示 Route-refresh

Open 报文字段

  • 1.version: 表示当前使用的 BGP 版本。目前使用的 BGP 版本为 BGP 4+, 所以目前该字段固定为 4.
  • 2.my as: 表示当前 BGP 设备自身的 AS 号
  • 3.hold time: 保持时间,用于表示 BGP keepalive 报文的超时时间。如果两台设备时间不一致,则按照较小值为准.
  • 4.RID: 用于标识当前设备的 RID.
  • 5. 可选参数长度:用于标识 BGP 可选参数信息的长度.
  • 6. 可选参数:用于协商 BGP 的能力,以及相关参数.

可选参数由 TLV 结构组成
TLV 结构:通过 TLV 结构可以大大增加协议自身的扩展性.

  • Type: 表示当前 TLV 结构的类型.
  • Length: 表示当前 TLV 结构的长度.
  • Value: 表示当前 TLV 结构的数值.

Keepalive 报文字段

只包含 BGP 的协议头,无报文字段内容.

Update 报文字段

  • Withdrawn routes length: 无效路由长度,用于标识无效路由 (撤销路由) 的长度信息.
  • Withdrawn routes: 用于表明撤销的路由信息.
  • Path attribute length: 用于标识路径属性信息长度.
  • Path attribute: 用于标识 BGP 路由的路径属性.
  • NLRI: 网络层可达信息。用于传递的 BGP 路由.

BGP 传递路由时,一个 Update 报文只能携带一条路由,或多条属性相同的路由.

导入直连路由注入 BGP, 出现 Update 报文

[R1-bgp]import-route direct 

撤销路由,出现 Update 报文

[R1-bgp]undo import-route direct

Notification 报文字段

  1. 错误代码:
  • 1. 表示消息头错误
  • 2. 表示 open 报文错误
  • 3. 表示 Update 报文错误
  • 4. 表示 Keepalive 超时
  • 5. 表示状态机错误
  • 6. 表示终止会话. (管理员关闭,或检测到接口 down)
  1. 子错误代码:
  2. 数据

当收到 Notification 报文后,BGP 会 down 掉邻居的会话.

Route-refresh 报文字段

AFI : (2B) 地址家族
SAFI : (1B) 子地址家族

BGP 状态机

Idle: 空闲状态,表示 BGP 设备的初始状态。当 BGP 进程收到 START 消息后尝试 TCP 连接,并转入 connect 状态.

Connect: 连接状态,此时会主动与 BGP 对等体建立 TCP 会话状态,如果 TCP 会话建立成功则会进入 openset 状态,如果 TCP 会话建立失败则会进入 Active 状态.

Active: 活动状态,在该状态下会等待 PEER 与其建立邻居关系,如果 TCP 会话建立成功,则进入 openset 状态,如果 TCP 重传计时器 (32s) 超时,则回到 connect 状态重新建立 TCP.

Openset: 在该状态下表示 BGP 的 TCP 会话已经建立成功,并且向邻居发送 open 报文,并等等对方的 open 报文。如果收到对方正确的 open 报文,则进入 openconfirm.

Openconfirm: 表示对 open 报文进行了确认,此时会向对方发送 keeepalive 报文,如果收到了对方的 Keepalive 报文,则进入 established 状态.

Established: 表示 BGP 的会话已经建立成功,也是 BGP 最终的稳定状态。在该状态下可以发送 Update Keepalive route-refresh 和 notification 报文.

在任何状态下收到 Notification 报文都会直接回到 Idle 状态.

[R1]display bgp peer

BGP local router ID : 1.1.1.1
Local AS number : 100
Total number of peers : 1 Peers in established state : 0

Peer V AS MsgRcvd MsgSent OutQ Up/Down State Pre
fRcv

12.1.1.2 4 200 0 0 0 00:00:31 Idle
0
[R1]display bgp peer

BGP local router ID : 1.1.1.1
Local AS number : 100
Total number of peers : 1 Peers in established state : 0

Peer V AS MsgRcvd MsgSent OutQ Up/Down State Pre fRcv

12.1.1.2 4 200 1 3 0 00:00:32 OpenConfirm 0
[R1]
Mar 4 2024 11:58:48-08:00 R1 %%01BGP/3/STATE_CHG_UPDOWN(l)[5]:The status of the
peer 12.1.1.2 changed from OPENCONFIRM to ESTABLISHED. (InstanceName=Public, St
ateChangeReason=Up) display bgp peer

BGP 的路由

BGP 的路由:BGP 协议本身无法自动发现路由,需要将现有路由表中的路由注入 BGP 从而形成 BGP 路由.
BGP 所有的路由信息会先加入到 BGP 表,在 BGP 表中最优的路由会进入到 IP 路由表

IBGP 配置

IBGP 配置:

1.AS 内通过 IGP 网络可达

2.IBGP 一般采用环回口作为 BGP 互联接口.

如果 EBGP 需要通过环回口建立 BGP PEER, 则

1. 首先通过静态路由确保环回口可达

2. 在 EBGP 中开启 BGP 多跳功能

EBGP 默认会开启直连检测功能.

开启 EBGP 多跳功能后 EBGP 会自动关闭直连检查功能.

ospf 1 router-id 2.2.2.2 
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 12.1.1.2 0.0.0.0
network 23.1.1.2 0.0.0.0

bgp 100
router-id 2.2.2.2
peer 1.1.1.1 as-number 100
peer 1.1.1.1 connect-interface LoopBack0
peer 3.3.3.3 as-number 100
peer 3.3.3.3 connect-interface LoopBack0


[R1]bgp 100
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 2.2.2.2 as-number 100
[R1-bgp]dis bgp peer

BGP local router ID : 1.1.1.1
Local AS number : 100
Total number of peers : 1 Peers in established state : 0

Peer V AS MsgRcvd MsgSent OutQ Up/Down State Pre fRcv

2.2.2.2 4 100 0 0 0 00:02:00 Active 0


物理接口改成环回接口

[R1-bgp]peer 2.2.2.2 connect-interface LoopBack 0
[R2-bgp]peer 1.1.1.1 connect-interface LoopBack 0



[R1-bgp]dis bgp peer

BGP local router ID : 1.1.1.1
Local AS number : 100
Total number of peers : 1 Peers in established state : 1

Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv

2.2.2.2 4 100 2 3 0 00:00:02 Established 0

[R2-bgp]dis th
bgp 100
router-id 2.2.2.2
peer 1.1.1.1 as-number 100
peer 1.1.1.1 connect-interface LoopBack0
peer 3.3.3.3 as-number 100
peer 3.3.3.3 connect-interface LoopBack0



(TCP可达就可以建立peer)

[R1]bgp 100
[R1-bgp]peer 3.3.3.3 as-number 100
[R1-bgp]peer 3.3.3.3 connect-interface LoopBack0

[R3]bgp 100
[R3-bgp]peer 1.1.1.1 as-path-filter
[R3-bgp]peer 1.1.1.1 as-number 100
[R3-bgp] peer 1.1.1.1 connect-interface LoopBack0
[R1-bgp]dis bgp peer

BGP local router ID : 1.1.1.1
Local AS number : 100
Total number of peers : 2 Peers in established state : 2

Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv

2.2.2.2 4 100 16 17 0 00:14:50 Established 0
3.3.3.3 4 100 2 3 0 00:00:06 Established 0



[R1]ip route-static 4.4.4.4 32 14.1.1.4
[R4]ip route-static 1.1.1.1 32 14.1.1.1

[R1]Ping -a 1.1.1.1 4.4.4.4
PING 4.4.4.4: 56 data bytes, press CTRL_C to break
Reply from 4.4.4.4: bytes=56 Sequence=1 ttl=255 time=60 ms
Reply from 4.4.4.4: bytes=56 Sequence=2 ttl=255 time=30 ms
Reply from 4.4.4.4: bytes=56 Sequence=3 ttl=255 time=20 ms
Reply from 4.4.4.4: bytes=56 Sequence=4 ttl=255 time=20 ms
Reply from 4.4.4.4: bytes=56 Sequence=5 ttl=255 time=30 ms

--- 4.4.4.4 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 20/32/60 ms
[R4-bgp]dis th
[V200R003C00]
#
bgp 200
peer 1.1.1.1 as-number 200
peer 1.1.1.1 connect-interface LoopBack0
peer 4.4.4.4 as-number 200
[R1-bgp]dis th
[V200R003C00]
#
bgp 100
router-id 1.1.1.1
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface LoopBack0
peer 3.3.3.3 as-number 100
peer 3.3.3.3 connect-interface LoopBack0
peer 4.4.4.4 as-number 200
peer 4.4.4.4 connect-interface LoopBack0

[R1-bgp]dis bgp peer

BGP local router ID : 1.1.1.1
Local AS number : 100
Total number of peers : 3 Peers in established state : 2

Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv

2.2.2.2 4 100 28 29 0 00:26:00 Established 0
3.3.3.3 4 100 13 14 0 00:11:16 Established 0
4.4.4.4 4 200 0 0 0 00:00:17 Idle




[R1-bgp]peer 4.4.4.4 ebgp-max-hop 2
[R1-bgp]dis th
[V200R003C00]
#
bgp 100
router-id 1.1.1.1
peer 2.2.2.2 as-number 100
peer 2.2.2.2 connect-interface LoopBack0
peer 3.3.3.3 as-number 100
peer 3.3.3.3 connect-interface LoopBack0
peer 4.4.4.4 as-number 200
peer 4.4.4.4 ebgp-max-hop 2
peer 4.4.4.4 connect-interface LoopBack0

[R4-bgp]dis th
[V200R003C00]
#
bgp 200
peer 1.1.1.1 as-number 100
peer 1.1.1.1 ebgp-max-hop 2



[R1-bgp]dis bgp peer

BGP local router ID : 1.1.1.1
Local AS number : 100
Total number of peers : 3 Peers in established state : 3

Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv

2.2.2.2 4 100 33 34 0 00:31:34 Established 0
3.3.3.3 4 100 18 19 0 00:16:50 Established 0
4.4.4.4 4 200 2 3 0 00:00:01 Established 0

BGP 的路由注入

network 命令:将路由表现有的路由逐条注入到 BGP 表中。注入路由时网络号和掩码必须匹配路由表中的信息.

import-route 命令:可以将某一类路由一次性注入进 BGP 中

[R4]int LoopBack 1
[R4-LoopBack1]ip add 10.4.4.4 24

[R4]bgp 200
[R4-bgp]network 10.4.4.0 24
[R4-bgp]display bgp routing-table

BGP Local router ID is 4.4.4.4
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

*> 10.4.4.0/24 0.0.0.0 0 0 i

[R4-bgp]undo network 10.4.4.0 255.255.255.0
[R4]ip route-static 10.1.1.0 24 NULL 0

[R4]bgp 200
[R4-bgp]network 10.1.1.0 24
[R4-bgp]dis bgp routing-table

BGP Local router ID is 4.4.4.4
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

*> 10.1.1.0/24 0.0.0.0 0 0 i

[R4-bgp]import-route ?
direct Connected routes
isis Intermediate System to Intermediate System (IS-IS) routes
ospf Open Shortest Path First (OSPF) routes
rip Routing Information Protocol (RIP) routes
static Static routes
unr User network routes

[R3]ip route-static 30.1.0.0 24 NULL 0
[R3]ip route-static 30.1.1.0 24 NULL 0
[R3]ip route-static 30.1.2.0 24 NULL 0
[R3]ip route-static 30.1.3.0 24 NULL 0
[R3]bgp 100
[R3-bgp]import-route static
[R3-bgp]dis bgp routing-table

BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete


Total Number of Routes: 5
Network NextHop MED LocPrf PrefVal Path/Ogn

i 10.1.1.0/24 4.4.4.4 0 100 0 200i
*> 30.1.0.0/24 0.0.0.0 0 0 ?
*> 30.1.1.0/24 0.0.0.0 0 0 ?
*> 30.1.2.0/24 0.0.0.0 0 0 ?
*> 30.1.3.0/24 0.0.0.0 0 0 ?

[R3-bgp]import-route ospf 1
[R3-bgp]display bgp routing-table

BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete


Total Number of Routes: 10
Network NextHop MED LocPrf PrefVal Path/Ogn

*> 1.1.1.1/32 0.0.0.0 2 0 ?
*> 2.2.2.2/32 0.0.0.0 1 0 ?
*> 3.3.3.3/32 0.0.0.0 0 0 ?
i 10.1.1.0/24 4.4.4.4 0 100 0 200i
*> 12.1.1.0/24 0.0.0.0 2 0 ?
*> 23.1.1.0/24 0.0.0.0 0 0 ?
*> 30.1.0.0/24 0.0.0.0 0 0 ?
*> 30.1.1.0/24 0.0.0.0 0 0 ?
*> 30.1.2.0/24 0.0.0.0 0 0 ?
*> 30.1.3.0/24 0.0.0.0 0 0 ?


[R1]dis ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 20 Routes : 20

Destination/Mask Proto Pre Cost Flags NextHop Interface

1.1.1.1/32 Direct 0 0 D 127.0.0.1 LoopBack0
2.2.2.2/32 OSPF 10 1 D 12.1.1.2 GigabitEthernet0/0/0
3.3.3.3/32 OSPF 10 2 D 12.1.1.2 GigabitEthernet0/0/0
4.4.4.4/32 Static 60 0 RD 14.1.1.4 GigabitEthernet0/0/1
10.1.1.0/24 EBGP 255 0 RD 4.4.4.4 GigabitEthernet0/0/1
12.1.1.0/24 Direct 0 0 D 12.1.1.1 GigabitEthernet0/0/0
12.1.1.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
12.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
14.1.1.0/24 Direct 0 0 D 14.1.1.1 GigabitEthernet0/0/1
14.1.1.1/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
14.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
23.1.1.0/24 OSPF 10 2 D 12.1.1.2 GigabitEthernet0/0/0
30.1.0.0/24 IBGP 255 0 RD 3.3.3.3 GigabitEthernet0/0/0
30.1.1.0/24 IBGP 255 0 RD 3.3.3.3 GigabitEtherne0/0/0
30.1.2.0/24 IBGP 255 0 RD 3.3.3.3 GigabitEthernet0/0/0
30.1.3.0/24 IBGP 255 0 RD 3.3.3.3 GigabitEthernet0/0/0
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0

BGP 路由不调优的可能性

BGP 只会将 BGP 表中最优的路由加入到 IP 路由表中.

BGP 路由不调优的可能性:

1.BGP 开启 BGP 同步检测功能且路由不同步.(该功能默认关闭,且 ENSP 模拟器中无法开启)

2.BGP 路由的下一跳地址不可达,会导致 BGP 路由失效,造成不调优.

解决方案 1: 在 IGP 中添加对应网络的路由信息,使下一跳地址可达.

ospf 1 router-id 1.1.1.1 
import-route static

解决方案 2: 更改路由的下一跳,使其变为网络中的可达地址,实现路由有效性

bgp 100
peer 2.2.2.2 next-hop-local
<R2>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: 11
Network NextHop MED LocPrf PrefVal Path/Ogn

*>i 1.1.1.1/32 3.3.3.3 2 100 0 ?
*>i 2.2.2.2/32 3.3.3.3 1 100 0 ?
i 3.3.3.3/32 3.3.3.3 0 100 0 ?
i 10.1.1.0/24 4.4.4.4 0 100 0 200i
i 10.4.4.0/24 4.4.4.4 0 100 0 200i
*>i 12.1.1.0/24 3.3.3.3 2 100 0 ?
*>i 23.1.1.0/24 3.3.3.3 0 100 0 ?
*>i 30.1.0.0/24 3.3.3.3 0 100 0 ?
*>i 30.1.1.0/24 3.3.3.3 0 100 0 ?
*>i 30.1.2.0/24 3.3.3.3 0 100 0 ?
*>i 30.1.3.0/24 3.3.3.3 0 100 0 ?
<R2>
<R2>dis ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 17 Routes : 17

Destination/Mask Proto Pre Cost Flags NextHop Interface

1.1.1.1/32 OSPF 10 1 D 12.1.1.1 GigabitEthernet0/0/0
2.2.2.2/32 Direct 0 0 D 127.0.0.1 LoopBack0
3.3.3.3/32 OSPF 10 1 D 23.1.1.3 GigabitEthernet0/0/1
12.1.1.0/24 Direct 0 0 D 12.1.1.2 GigabitEthernet0/0/0
12.1.1.2/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
12.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
23.1.1.0/24 Direct 0 0 D 23.1.1.2 GigabitEthernet0/0/1
23.1.1.2/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
23.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
30.1.0.0/24 IBGP 255 0 RD 3.3.3.3 GigabitEthernet0/0/1
30.1.1.0/24 IBGP 255 0 RD 3.3.3.3 GigabitEtherne0/0/1
30.1.2.0/24 IBGP 255 0 RD 3.3.3.3 GigabitEthernet0/0/1
30.1.3.0/24 IBGP 255 0 RD 3.3.3.3 GigabitEthernet0/0/1
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0

<R2>


[R1]ospf 1
[R1-ospf-1]import-route static

[R2]dis ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 20 Routes : 20

Destination/Mask Proto Pre Cost Flags NextHop Interface

1.1.1.1/32 OSPF 10 1 D 12.1.1.1 GigabitEthernet0/0/0
2.2.2.2/32 Direct 0 0 D 127.0.0.1 LoopBack0
3.3.3.3/32 OSPF 10 1 D 23.1.1.3 GigabitEthernet0/0/1
4.4.4.4/32 O_ASE 150 1 D 12.1.1.1 GigabitEthernet0/0/0
10.1.1.0/24 IBGP 255 0 RD 4.4.4.4 GigabitEthernet0/0/0
10.4.4.0/24 IBGP 255 0 RD 4.4.4.4 GigabitEthernet0/0/0
12.1.1.0/24 Direct 0 0 D 12.1.1.2 GigabitEthernet0/0/0
12.1.1.2/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
12.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
23.1.1.0/24 Direct 0 0 D 23.1.1.2 GigabitEthernet0/0/1
23.1.1.2/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
23.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
30.1.0.0/24 IBGP 255 0 RD 3.3.3.3 GigabitEthernet0/0/1
30.1.1.0/24 IBGP 255 0 RD 3.3.3.3 GigabitEthernet0/0/1
30.1.2.0/24 IBGP 255 0 RD 3.3.3.3 GigabitEthernet0/0/1
30.1.3.0/24 IBGP 255 0 RD 3.3.3.3 GigabitEthernet0/0/1
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0

[R2]


[R2]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: 12
Network NextHop MED LocPrf PrefVal Path/Ogn

*>i 1.1.1.1/32 3.3.3.3 2 100 0 ?
*>i 2.2.2.2/32 3.3.3.3 1 100 0 ?
i 3.3.3.3/32 3.3.3.3 0 100 0 ?
*>i 4.4.4.4/32 3.3.3.3 1 100 0 ?
*>i 10.1.1.0/24 4.4.4.4 0 100 0 200i
*>i 10.4.4.0/24 4.4.4.4 0 100 0 200i
*>i 12.1.1.0/24 3.3.3.3 2 100 0 ?
*>i 23.1.1.0/24 3.3.3.3 0 100 0 ?
*>i 30.1.0.0/24 3.3.3.3 0 100 0 ?
*>i 30.1.1.0/24 3.3.3.3 0 100 0 ?
*>i 30.1.2.0/24 3.3.3.3 0 100 0 ?
*>i 30.1.3.0/24 3.3.3.3 0 100 0 ?
[R2]


[R1-bgp]peer 2.2.2.2 next-hop-local
[R2]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: 11
Network NextHop MED LocPrf PrefVal Path/Ogn

*>i 1.1.1.1/32 3.3.3.3 2 100 0 ?
*>i 2.2.2.2/32 3.3.3.3 1 100 0 ?
i 3.3.3.3/32 3.3.3.3 0 100 0 ?
*>i 10.1.1.0/24 1.1.1.1 0 100 0 200i
*>i 10.4.4.0/24 1.1.1.1 0 100 0 200i
*>i 12.1.1.0/24 3.3.3.3 2 100 0 ?
*>i 23.1.1.0/24 3.3.3.3 0 100 0 ?
*>i 30.1.0.0/24 3.3.3.3 0 100 0 ?
*>i 30.1.1.0/24 3.3.3.3 0 100 0 ?
*>i 30.1.2.0/24 3.3.3.3 0 100 0 ?
*>i 30.1.3.0/24 3.3.3.3 0 100 0 ?

[R2]dis ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 19 Routes : 19

Destination/Mask Proto Pre Cost Flags NextHop Interface

1.1.1.1/32 OSPF 10 1 D 12.1.1.1 GigabitEthernet0/0/0
2.2.2.2/32 Direct 0 0 D 127.0.0.1 LoopBack0
3.3.3.3/32 OSPF 10 1 D 23.1.1.3 GigabitEthernet0/0/1
10.1.1.0/24 IBGP 255 0 RD 1.1.1.1 GigabitEthernet0/0/0
10.4.4.0/24 IBGP 255 0 RD 1.1.1.1 GigabitEthernet0/0/0
12.1.1.0/24 Direct 0 0 D 12.1.1.2 GigabitEthernet0/0/0
12.1.1.2/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
12.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
23.1.1.0/24 Direct 0 0 D 23.1.1.2 GigabitEthernet0/0/1
23.1.1.2/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
23.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
30.1.0.0/24 IBGP 255 0 RD 3.3.3.3 GigabitEthernet0/0/1
30.1.1.0/24 IBGP 255 0 RD 3.3.3.3 GigabitEthernet0/0/1
30.1.2.0/24 IBGP 255 0 RD 3.3.3.3 GigabitEthernet0/0/1
30.1.3.0/24 IBGP 255 0 RD 3.3.3.3 GigabitEthernet0/0/1
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0

[R2]


BGP 路由通告原则

  1. BGP 只通告最优的路由.

* 表示该路由是有效的

> 表示该路由是最优的

  1. 从 EBGP 对等体获取的路由会通告给所有的 BGP 对等体 (EBGP 和 IBGP).

  2. 从 IBGP 对等体获取的路由不会通告给 IBGP 对等体 (IBGP 水平分割原则,用于防止 AS 内路由环路问题)
    为了防止 AS 内部分设备无法收到 BGP 路由,可以通过配置 IBGP 全互联来解决,但 IBGP 全互联可能会导致网络结构复杂,例如关系数量过多等问题,导致扩展性差,此时可以通过 BGP 路由反射器和 BGP 联盟来简化 AS 内的拓扑结构.

  3. 从 IBGP 获取的路由,是否通告给 EBGP 对等体取决于 BGP 的同步规则。默认情况下同步功能关闭,且在 ENSP 中无法手动开启,如果开启,则只有路由同时从 BGP 和 IGP 学习到才可以通告给 EBGP 对等体。同步规则主要是用来防止 BGP 路由黑洞问题.

BGP 路由黑洞实验

R3没有5.5.5.5路由  BGP路由黑洞

BGP注入OSPF
[R2-ospf-1]import-route bgp
[R4-ospf-1]import-route bgp

或者R3运行BGP

<R1>ping -a 1.1.1.1 5.5.5.5
PING 5.5.5.5: 56 data bytes, press CTRL_C to break
Request time out
Request time out
Request time out
Request time out
Request time out

--- 5.5.5.5 ping statistics ---
5 packet(s) transmitted
0 packet(s) received
100.00% packet loss

<R3>dis ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 13 Routes : 13

Destination/Mask Proto Pre Cost Flags NextHop Interface

2.2.2.2/32 OSPF 10 1 D 23.1.1.2 GigabitEthernet0/0/0
3.3.3.3/32 Direct 0 0 D 127.0.0.1 LoopBack0
4.4.4.4/32 OSPF 10 1 D 34.1.1.4 GigabitEthernet0/0/1
23.1.1.0/24 Direct 0 0 D 23.1.1.3 GigabitEthernet0/0/0
23.1.1.3/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
23.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
34.1.1.0/24 Direct 0 0 D 34.1.1.3 GigabitEthernet0/0/1
34.1.1.3/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
34.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0


BGP注入OSPF
[R2-ospf-1]import-route bgp

[R2-ospf-1]dis ospf lsdb

OSPF Process 1 with Router ID 2.2.2.2
Link State Database

Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 4.4.4.4 4.4.4.4 1234 48 80000005 0
Router 2.2.2.2 2.2.2.2 15 48 80000008 0
Router 3.3.3.3 3.3.3.3 1230 60 8000000A 0
Network 34.1.1.3 3.3.3.3 1230 32 80000003 0
Network 23.1.1.2 2.2.2.2 1278 32 80000003 0


AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 1.1.1.1 2.2.2.2 15 36 80000001 1

[R4-ospf-1]import-route bgp

[R4-ospf-1]dis ospf lsdb

OSPF Process 1 with Router ID 4.4.4.4
Link State Database

Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 4.4.4.4 4.4.4.4 23 48 80000006 0
Router 2.2.2.2 2.2.2.2 64 48 80000008 0
Router 3.3.3.3 3.3.3.3 1277 60 8000000A 0
Network 34.1.1.3 3.3.3.3 1277 32 80000003 0
Network 23.1.1.2 2.2.2.2 1326 32 80000003 0


AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 5.5.5.5 4.4.4.4 23 36 80000001 1
External 1.1.1.1 2.2.2.2 63 36 80000001 1

<R3>dis ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 15 Routes : 15

Destination/Mask Proto Pre Cost Flags NextHop Interface

1.1.1.1/32 O_ASE 150 1 D 23.1.1.2 GigabitEthernet0/0/0
2.2.2.2/32 OSPF 10 1 D 23.1.1.2 GigabitEthernet0/0/0
3.3.3.3/32 Direct 0 0 D 127.0.0.1 LoopBack0
4.4.4.4/32 OSPF 10 1 D 34.1.1.4 GigabitEthernet0/0/1
5.5.5.5/32 O_ASE 150 1 D 34.1.1.4 GigabitEthernet0/0/1
23.1.1.0/24 Direct 0 0 D 23.1.1.3 GigabitEthernet0/0/0
23.1.1.3/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
23.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/0
34.1.1.0/24 Direct 0 0 D 34.1.1.3 GigabitEthernet0/0/1
34.1.1.3/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
34.1.1.255/32 Direct 0 0 D 127.0.0.1 GigabitEthernet0/0/1
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
127.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0
255.255.255.255/32 Direct 0 0 D 127.0.0.1 InLoopBack0

[R1]ping -a 1.1.1.1 5.5.5.5
PING 5.5.5.5: 56 data bytes, press CTRL_C to break
Reply from 5.5.5.5: bytes=56 Sequence=1 ttl=252 time=80 ms
Reply from 5.5.5.5: bytes=56 Sequence=2 ttl=252 time=50 ms
Reply from 5.5.5.5: bytes=56 Sequence=3 ttl=252 time=60 ms
Reply from 5.5.5.5: bytes=56 Sequence=4 ttl=252 time=50 ms
Reply from 5.5.5.5: bytes=56 Sequence=5 ttl=252 time=40 ms

--- 5.5.5.5 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 40/56/80 ms

BGP 属性

BGP 的路由中会携带多条属性信息,这些属性信息描述了 BGP 路由的各种特征,可以用于 BGP 最终的选路策略.

BGP 属性分类

公认必遵属性 (well-know mandatory): 该属性可以被所有的 BGP 设备所识别,在 update 报文中必须携带该属性,如果未携带,则认为该报文错误.

公认任意属性 (well-know discretionary): 该属性可以被所有的 BGP 设备所识别,在 update 报文中可以不携带,如果未携带,则不认为该报文错误.

可选过渡属性 (optional transitive): 该属性可能不被 BGP 设备所识别。如果不识别的情况下,依旧可以传递该属性.

可选非过渡属性 (optional non-transitive): 该属性可能不被 BGP 设备所识别。如果不识别的情况下,不会传递该属性。属性信息直接被忽略.

Origin-code

Origin-code : 起源代码或起源属性,是一个公认必遵属性,用于标识一个路由被注入进 BGP 表的方式,在 BGP 路由传递过程中起源代码一般不会改变,共三个值:

i:IGP, 表示该路由是通过 network 命令注入 BGP 得到的

e:EGP, 表示路由通过 EGP 协议学习的,该协议目前已经完全被 BGP 取代,现网中几乎无法见到

?:incomplete, 表示通过其他方式注入得到,一般是通过 import 命令注入得到.

当去往同一个目的地存在多条起源属性不同的路由时,如果其他条件都相同,则按照起源代码 i 优于 e 优于?的顺序加表.

AS_PATH

AS_PATH:AS 路径属性,是一个公认必遵属性,用于描述一个 BGP 路由所经过的 AS 路径信息,本地始发的路由 AS_PATH 属性为空,当路由传递给 EBGP PEER 时,会将自身的 AS 号添加到 AS_PATH 中

AS_PATH 可以用于 BGP 的 AS 间路由防环,当从 EBGP 接收路由时,如果发现路由中的 AS_PATH 已经包含自身的 AS 号,则拒绝接收该路由.

如果从不同的路径收到相同目的地的路由,且其他属性完全相同,此时会优选 AS-PATH 较短的路由.

bestroute as-path-ignore // 通过此命令可以忽略AS-PATH长短的比较
<R2>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: 6
Network NextHop MED LocPrf PrefVal Path/Ogn

*> 1.1.1.1/32 12.1.1.1 0 0 100i
*>i 5.5.5.5/32 4.4.4.4 0 100 0 300i
*> 10.1.0.0/24 12.1.1.1 0 0 100?
*> 10.1.1.0/24 12.1.1.1 0 0 100?
*> 10.1.2.0/24 12.1.1.1 0 0 100?
*> 10.1.3.0/24 12.1.1.1 0 0 100?

<R5>dis bgp routing-table

BGP Local router ID is 5.5.5.5
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete


Total Number of Routes: 6
Network NextHop MED LocPrf PrefVal Path/Ogn

*> 1.1.1.1/32 45.1.1.4 0 200 100i
*> 5.5.5.5/32 0.0.0.0 0 0 i
*> 10.1.0.0/24 45.1.1.4 0 200 100?
*> 10.1.1.0/24 45.1.1.4 0 200 100?
*> 10.1.2.0/24 45.1.1.4 0 200 100?
*> 10.1.3.0/24 45.1.1.4 0 200 100?

所经过的AS路径信息
越靠近后,靠近始发侧
新的AS号在前


---

[R5-bgp]display bgp routing-table peer 56.1.1.6 advertised-routes

BGP Local router ID is 5.5.5.5
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete


Total Number of Routes: 6
Network NextHop MED LocPrf PrefVal Path/Ogn

*> 1.1.1.1/32 56.1.1.5 0 300 200 100i
*> 5.5.5.5/32 56.1.1.5 0 0 300i
*> 10.1.0.0/24 56.1.1.5 0 300 200 100?
*> 10.1.1.0/24 56.1.1.5 0 300 200 100?
*> 10.1.2.0/24 56.1.1.5 0 300 200 100?
*> 10.1.3.0/24 56.1.1.5 0 300 200 100?

Next-hop

next-hop: 下一跳地址是一个公认必遵属性,描述路由到达目标网络的下一台设备的 IP 地址.
当 BGP 设备收到路由时如果下一跳地址是不可达的,则路由不会被调优.

在不同场景中,设备对缺省的 Next-hop 属性设置规则也是不同的:

1.BGP 设备向 EBGP 对等体发布路由时,会把该路由的下一跳属性设置为本地与对端建立 BGP PEER 接口的地址.

2.BGP 设备将本地始发的路由发布给 IBGP 对等体,会将路由的下一跳设置为本地与对端建立 IBGP PEER 接口的地址.

3. 如果从其他 EBGP 学习的路由在通告给 IBGP PEER 时会保持 Next-hop 属性不变

4. 如果路由器收到 BGP 路由,该路由的 Next-hop 字段与 EBGP 对等体在同一个 IP 子网,那么该路由通告给 EBGP PEER 时不修改 Next-hop 属性.

[R1-bgp]display bgp routing-table

BGP Local router ID is 1.1.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

*> 1.1.1.1/32 0.0.0.0 0 0 i
*> 2.2.2.2/32 12.1.1.2 0 0 200i

<R2>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: 2
Network NextHop MED LocPrf PrefVal Path/Ogn

*> 1.1.1.1/32 12.1.1.1 0 0 100i
*> 2.2.2.2/32 0.0.0.0 0 0 i
<R2>




[R3-bgp]display bgp routing-table

BGP Local router ID is 3.3.3.3
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete


Total Number of Routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn

i 1.1.1.1/32 1.1.1.1 0 100 0 i
i 2.2.2.2/32 12.1.1.2 0 100 0 200i
*>i 11.1.1.1/32 1.1.1.1 0 100 0 i

[R2-bgp]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: 3
Network NextHop MED LocPrf PrefVal Path/Ogn

*> 1.1.1.1/32 12.1.1.1 0 0 100i
*> 2.2.2.2/32 0.0.0.0 0 0 i
*> 11.1.1.1/32 12.1.1.1 0 0 100i

Local-preference

本地优先级属性
Local-preference: 本地优先级属性,公认任意属性,用于在 AS 内来确定流量的出口路径。在 AS 内的本地优先级越大越优,缺省值 100,只能在 AS 内传递

【本地优先级属性用于在 BGP AS 内控制出向流量,当 AS 内,存在多个出口时,可以通过控制本地优先级属性实现流量路径的选择,优先级越大越优,优先级默认值为 100.】

本地优先级的注意事项:本地优先级只能在IBGP对等体之间传递,而不能在EBGP对等体之间传递,如果在EBGP对等体之间收到了携带本地优先级属性的路由,则进行错误处理。	  

可以在 AS 边界路由器上使用 import 方向的策略来修改 local preference 属性值。也就是在收到路由之后在本地为路由赋予 local preference。

[R3-bgp]default local-preference 110 // 更改本地优先级

MED

MED(multi-exit): 多出口标识(多出口鉴别器)可选非过度属性

是一种度量值,可以用于控制入向流量,MED 数值越小 BGP 路由越优,缺省情况下不携带 MED 值 (不携带为 0)

[R3]route-policy set-med permit node 10 // 创建策略
[R3-route-policy]apply cost 30 // 更改MED值
[R3-bgp]peer 13.1.1.1 route-policy set-med export // 在BGP应用

在 AS 出口中可以将 IGP 的注入进 BGP,此时 IGP 的 metric 会被添加进 BGP MED 属性,并通告给 EBGP peer,EBGP 对等体可以根据 MED 值或者该路由的 IGP 情况进行选路.

[R2-GigabitEthernet0/0/1]ospf cost 15 // 更改接口ospf 开销值

缺省情况下 BGP 设备只会比较来自同一个相邻 AS 的 MED 值,可以通过命令

[R1-bgp] compare-different-as-med 

让路由器比较来自不同 AS 路由的 MED 值

MED 作用:

在 AS 之间控制入向流量的属性,属性仅在 AS 之间传递,收到此属性的 AS 不会再通告给任何第三方 AS.

路由在通告进 BGP 设备时,路由会将 metric 加入到 MED 属性中,通过 MED 值反应路由的变化类似于 BGP metric,数值越小越优先,不同的 IGP 引入的 MED 无法比较.

如果是本地始发路由,MED 值会被通告给 IBGP 和 EBGP.

如果是从其他的 BGP 对等体学习的路由,则 MED 值只能通告给 IBGP 对等体,不会通告给 EBGP 对等体.
MED 值只能影响相邻的 AS 选路.

MED 更加灵活,当开销发生变动时,MED 也会随之改变

Community

Community: 团体属性,是 BGP 路由中的一种标记信息,使用可以将一些相同策略的路由进行相同的标记加以区分。从而便于后续的策略执行,是一个可选过渡属性,共 32bit 有两种表示形式:

十进制数形式

AA:NN 其中 AA 是 16bit,NN 也为 16bit. 一般情况下,AA 可以使用路由对应的 AS 号,NN 为管理员自定义的标记信息.

常见的 Community 可以分为 2 类:

公认 Community:

1.internet:0x00000000 表示缺省的 Community 信息,默认路由器对该 Community 不做任何的动作.

2.no-advertise:0xFFFFFF02 表示该路由不会通告给任何的 BGP PEER.

3.no-export:0xFFFFFF01 表示该路由不会发出本 AS, 表示不会通告给 EBGP PEER.

4.no-export-subconfed:0xFFFFFF03 表示该路由不会传出联盟子 AS, 同时也不会向其他 AS 传递.

私有 Community

Community-filter: 用于匹配 BGP 中 Community 信息的工具

基本的 filter 范围:1-99

高级的 filter 范围: 00-199

[R3]ip community-filter ?
INTEGER<1-99> Community-filter number (basic)
INTEGER<100-199> Community-filter number (advanced)
advanced Advanced community-filter
basic Basic community-filter
[R3]ip community-filter 1 permit 100:100
[R3]ip community-filter 2 permit 100:200

----
通告Community
[R1-bgp]peer 12.1.1.2 advertise-community

[R1-acl-basic-2001]dis current-configuration configuration acl-basic
acl number 2000
rule 5 permit source 10.1.0.0 0. 0.255.255
acl number 2001
rule 5 permit source 20.1.0.0 0.0.255.255
[R1-route-policy]dis th
route-policy set-com permit node 10
if-match acl 2000
apply community 100:100
#
route-policy set-com permit node 20
if-match acl 2001
apply community 100:200

[R1-bgp]peer 12.1.1.2 route-policy set-com export
[R1-bgp]peer 12.1.1.2 advertise-community

[R2]dis bgp routing-table community 100:100
---
[R2-bgp]peer 23.1.1.3 advertise-community
[R2-bgp]peer 24.1.1.4 advertise-community






[R3]ip community-filter 1 permit 100:100
[R3]ip community-filter 2 permit 100:200

[R4]ip community-filter 1 permit 100:100
[R4]ip community-filter 2 permit 100:200

[R3-route-policy]dis th
route-policy set-lp permit node 10
if-match community-filter 1
apply local-preference 110
#
route-policy set-lp permit node 20
if-match community-filter 2
apply local-preference 50

[R4-route-policy]dis th
route-policy set-lp permit node 10
if-match community-filter 1
apply local-preference 50
#
route-policy set-lp permit node 20
if-match community-filter 2
apply local-preference 110

bgp 300
peer x.x.x.x route-policy set-lp import

[R3-bgp]peer 23.1.1.2 route-policy set-lp import
[R4-bgp]peer 24.1.1.2 route-policy set-lp import


BGP 选路原则

0.BGP 路由的下一跳地址不可达,则路由不会被调优.

1.preferred-value (首选值) 数值越高,路由越优.

是华为设备私有的属性,只能用于 BGP 本地路由控制,该属性不会出现在 update 报文中。缺省值为 0

2. 优选 local-Preference 属性值较高的路由.

3. 本地始发的路由,优于非本地始发路由.

聚合路由优于非聚合路由

手动聚合 > 自动聚合 > network > import > 非本地始发

4. 优选 AS_PATH 路径较短的路由.

5. 优选 origin 最优的路由

i>e>?

6. 优选 MED 数值较小的路由

7. 优选从 EBGP 学习的路由 (EBGP 优于 IBGP 路由)

8. 优选 next-hop 的 IGP 度量值最小的路由

8.5 BGP 设备不开启负载均衡,如果开启了负载均衡条件,且前 8 条内容一致,则实现负载均衡.

9. 优选 cluster_list 较短的路由.

10. 优选 RID (originator-id) 较小路由.

11. 优选具有最小 IP 地址的对等体通告的路由.

BGP 路由反射器

由于 IBGP 水平分割规则的存在,AS 内部如果需要构建 IBGP 全互联,则需要维护大量的 TCP 连接以及 BGP 邻居关系,尤其当路由器数量较多时,会导致扩展性变差,难以维护.

此时可以通过 BGP 的路由反射器技术来简化 BGP 的邻居关系建立.

BGP 路由反射器可以降低水平分割发送路由的限制,让一部分 IBGP 的路由可以发送给 IBGP PEER.

BGP 路由反射器中的角色

RR (rouote reflector): 路由反射器

client:RR 的客户机

non-cient:RR 的非客户机

路由反射规则

当 RR 接收到 BGP 路由时,

如果是反射器从自己的非客户机收到的,则会将其反射给所有的客户机

如果是从客户机收到的路由,则会反射给所有的非客户机和客户机.

如果从 EBGP PEER 收到的路由,则发送给所有 BGP PEER.

peer x.x.x.x reflect-client 

[R1-bgp]peer 2.2.2.2 reflect-client
[R1-bgp]peer 3.3.3.3 reflect-client

反射器簇

一个路由器与其所有的客户机形成一个路由反射器簇.

在一个 AS 内一个路由器有可能属于多个不同的簇.

路由器在不同的簇内角色可能不同

起源者 ID

Originator: 起源者 ID, 用于反射器簇内防环,是一个可选非过渡属性,当路由反射器第一次反射路由时,反射器会将路由发起者的 RID 添加至该属性,在后续传递过程中该属性不变,BGP 设备收到路由时会将起源者 ID 和自身的 RID 进行对比,如果不一致,则正常接收处理该路由,如果一致,则拒绝接收该路由.

簇 id

簇 id: 簇 id 是反射器簇的标识,具备相同簇 id 的反射器在同一个簇内,如果没有配置簇 id, 则缺省用设备的 RID 作为族 id.

[R1-bgp]reflector cluster-id x.x.x.x // 手动设置更改簇id

Cluster_id list

Cluster_id list: 簇 id 列表,用于在 BGP 路由反射器簇直接进行防环,是一个可选非过渡属性,当路由器第一次反射路由时,反射器会创建该属性,并将自身的簇 id 添加到列表中。当路由反射器接收到携带簇 id 列表的路由时,会检查列表是否包含自身的簇 id 信息,如果不包含,则正常接收处理,如果包含自身的族 id, 则拒绝接收该路由.

BGP 路由聚合

BGP 路由聚合:可以将多个 BGP 路由聚合成一条路由,从而减少 BGP 传递的路由条目。来提升 BGP 传输的效率.

自动聚合:将本地 import 命令引入的路由自动聚合成主类网络.

默认会抑制明细路由,只有主类网络会被通告出去.

手工聚合:可以将 BGP 表中任意的路由聚合成任意长度,可以实现更灵活的路由聚合.

默认不抑制明细路由.

detail-suppressed: 可以通过该参数将明细路由进行抑制.

as-set: 将明细路由的 AS 无序添加到 AS_PATH 中,用于聚合后的路由防环.

attribute-policy: 在聚合后将某些属性添加到聚合路由中.

origin-policy: 起源策略,用于匹配路由起源,只有匹配起源策略的路由才会被聚合.

suppress-policy: 在进行路由聚合时,可以通过抑制策略选择被抑制的路由,未被抑制的路由可以正常的被通告.

自动聚合 
[R1-bgp]summary automatic


------
手工聚合
10.1.0.0/24 0000 0000
10.1.1.0/24 0000 0001
10.1.2.0/24 0000 0010
10.1.3.0/24 0000 0011
10.1.4.0/24 0000 0100
10.1.5.0/24 0000 0101
10.1.6.0/24 0000 0110
10.1.7.0/24 0000 0111
10.1.0.0/21 0000 0000

[R5-bgp]aggregate 10.1.0.0 21

-----
detail-suppressed

[R5-bgp]aggregate 10.1.0.0 255.255.248.0 ?
as-set Generate the route with AS-SET path-attribute
attribute-policy Set aggregation attributes
detail-suppressed Filter more detail route from updates
origin-policy Filter the originate routes of the aggregate
suppress-policy Filter more detail route from updates through a Routing
policy
<cr>
[R5-bgp]aggregate 10.1.0.0 255.255.248.0 detail-suppressed

[R5-bgp]aggregate 10.1.0.0 255.255.248.0 detail-suppressed as-set



[R5]route-policy set-com permit node 10
[R5-route-policy]apply community 100:100
[R5-bgp]aggregate 10.1.0.0 255.255.248.0 detail-suppressed as-set attribute-policy set-com
Warning: set-com used as BGP attribute-policy, apply as-path is not supported.
[R5-bgp]dis bgp r community
Total Number of Routes: 1
Network NextHop MED LocPrf PrefVal Community

*> 10.1.0.0/21 127.0.0.1 0 <100:100>

----
origin-policy

[R1]route-policy set-com permit node 10
[R1-route-policy]apply community 100:1
[R1-bgp]import-route static route-policy set-com
[R1-bgp]peer 100.1.1.5 advertise-community

[R5]ip community-filter 1 permit 100:1
[R5]route-policy ori-policy permit node 10
[R5-route-policy]if-match community-filter 1

[R5-bgp]aggregate 10.1.0.0 255.255.248.0 as-set detail-suppressed attribute-poli
cy set-com origin-policy ori-policy

[R5-bgp]dis bgp routing-table community

BGP Local router ID is 5.5.5.5
Status codes: * - valid, > - best, d - damped,
h - history, i - internal, s - suppressed, S - Stale
Origin : i - IGP, e - EGP, ? - incomplete


Total Number of Routes: 9
Network NextHop MED LocPrf PrefVal Community

*> 10.1.0.0/21 127.0.0.1 0 <100:100>
s> 10.1.0.0/24 100.1.1.1 0 0 <100:1>
s> 10.1.1.0/24 100.1.1.1 0 0 <100:1>
s> 10.1.2.0/24 100.1.1.2 0 0 <100:1>
s> 10.1.3.0/24 100.1.1.2 0 0 <100:1>
*> 10.1.4.0/24 100.1.1.3 0 0 <100:2>
*> 10.1.5.0/24 100.1.1.3 0 0 <100:2>
*> 10.1.6.0/24 100.1.1.4 0 0 <100:2>
*> 10.1.7.0/24 100.1.1.4 0 0 <100:2>

----
suppress-policy
10.1.0000 0 001.0/24
10.1.0000 0 011.0/24

10.1.0000 0 0X0.0 0.0.2.0
[R5-acl-basic-2000]rule per source 10.1.1.0 0.0.2.0
[R5-route-policy]dis th
route-policy sup-policy permit node 10
if-match acl 2000
[R5-bgp]aggregate 10.1.0.0 255.255.248.0 as-set detail-suppressed origin-policy
ori-policy attribute-policy set-com suppress-policy sup-policy
[R5-bgp]dis bgp routing-table community
Network NextHop MED LocPrf PrefVal Community

*> 10.1.0.0/21 127.0.0.1 0 <100:100>
*> 10.1.0.0/24 100.1.1.1 0 0 <100:1>
s> 10.1.1.0/24 100.1.1.1 0 0 <100:1>
*> 10.1.2.0/24 100.1.1.2 0 0 <100:1>
s> 10.1.3.0/24 100.1.1.2 0 0 <100:1>
*> 10.1.4.0/24 100.1.1.3 0 0 <100:2>
*> 10.1.5.0/24 100.1.1.3 0 0 <100:2>
*> 10.1.6.0/24 100.1.1.4 0 0 <100:2>
*> 10.1.7.0/24 100.1.1.4 0 0 <100:2>

策略修改 AS_PATH

route-policy add-as permit node 10
apply as-path 123 addivite
route-policy add-as2 permit node 10
apply as-path 123 overwrite

[R2-bgp]peer 23.1.1.3 route-policy add-as export

AS-path-filter

AS-path-filter: AS 路径过滤器,是 BGP 中一个特有的过滤器,可以与路由策略配合使用,对 BGP 的路由进行过滤或属性的调整.

AS-path-filter 在使用时通过正则表达式对 BGP 路由中的 AS-PATH 属性进行配置

正则表达式符号

^: 起始符,表示一个字符串开始

^10
10 20 30
10 11 12
100 110 120

$: 结束符,表示一个字符串的结束.

10$
30 20 10
120 110

_: 匹配任意一个符号,包括括号和空格.

_100$    从AS100始发的路由

.: 可以用于匹配任意的单个字符,包括空格.

0.1
0x1
011
021
0 1

+: 用于匹配前面的序列,可以出现 1 次或多次.

12+
12
122
1222

*: 用于匹配前面的序列,可以出现 0 次或多次.

12*
1
12
122
1222

? : 用于匹配前面的序列,可以出现 0 次或 1 次.

12?
1
12

() : 一个序列优先计算,一般可以与 | 配合使用.

| : 逻辑或

12(3|4)56
12356
12456

[] : 用于匹配一个序列的范围,一般可以与 - 配合使用.

-: 连接符,一般用于表示一个序列范围.

12[3456] 等同于 12[3-6]

123
124
125
126

正则表达式举例:

^100$ : 从相邻的 AS 100 始发的路由.

^$ : 本 AS 始发的路由.

_100$ : 从 AS100 始发的路由

^100_ : 从相邻的 AS 100 传入的路由.

_100_ : 途径 AS 100 的路由.

.*: 匹配任意的 BGP 信息

^[0-9]+$ : 从相邻 AS 始发的路由. [0-9][0-9][0-9][0-9][0-9]

需求1: 在R6中过滤掉始发于AS200 的路由
[R6-bgp]dis bgp routing-table
Total Number of Routes: 6
Network NextHop MED LocPrf PrefVal Path/Ogn

*> 10.1.1.0/24 56.1.1.5 0 500 400 100?
*> 20.1.1.0/24 56.1.1.5 0 500 300 200?
*> 30.1.1.0/24 56.1.1.5 0 500 300?
*> 40.1.1.0/24 56.1.1.5 0 500 400?
*> 50.1.1.0/24 56.1.1.5 0 0 500?
*> 60.1.1.0/24 0.0.0.0 0 0 ?

[R6]ip as-path-filter deny_200 deny ?
TEXT A regular-expression of 1 to 255 characters for matching AS_Path attributes

[R6]ip as-path-filter deny_200 deny _200$ // 拒绝始发于 AS200 的路由
[R6]ip as-path-filter deny_200 permit .* // 未匹配的路由默认为拒绝,这里修改为放行
[R6-bgp]peer 56.1.1.5 as-path-filter deny_200 ?
export Egress distribution list
import Ingress distribution list
[R6-bgp]peer 56.1.1.5 as-path-filter deny_200 import // BGP 调用 as-path-filter
[R6-bgp]dis bgp routing-table
Total Number of Routes: 5
Network NextHop MED LocPrf PrefVal Path/Ogn

*> 10.1.1.0/24 56.1.1.5 0 500 400 100?
*> 30.1.1.0/24 56.1.1.5 0 500 300?
*> 40.1.1.0/24 56.1.1.5 0 500 400?
*> 50.1.1.0/24 56.1.1.5 0 0 500?
*> 60.1.1.0/24 0.0.0.0 0 0 ?


----
AS200始发的路由 MED 修改为 50
[R2-bgp]dis bgp routing-table
Total Number of Routes: 9
Network NextHop MED LocPrf PrefVal Path/Ogn

*> 10.1.1.0/24 12.1.1.1 0 0 100?
*> 20.1.1.0/24 0.0.0.0 0 0 ?
*> 30.1.1.0/24 23.1.1.3 0 0 300?
*> 40.1.1.0/24 12.1.1.1 0 100 400?
* 23.1.1.3 0 300 500 400?
*> 50.1.1.0/24 23.1.1.3 0 300 500?
* 12.1.1.1 0 100 400 500?
*> 60.1.1.0/24 23.1.1.3 0 300 500 600?
* 12.1.1.1 0 100 400 500 600?

[R2]ip as-path-filter AS200 permit ^$ // 本AS始发的路由
[R2-route-policy]dis th
route-policy set-med permit node 10
if-match as-path-filter AS200
apply cost 50
[R2-bgp]import-route static route-policy set-med

[R2-bgp]dis bgp routing-table
Total Number of Routes: 9
Network NextHop MED LocPrf PrefVal Path/Ogn

*> 10.1.1.0/24 12.1.1.1 0 0 100?
*> 20.1.1.0/24 0.0.0.0 50 0 ?
*> 30.1.1.0/24 23.1.1.3 0 0 300?
*> 40.1.1.0/24 12.1.1.1 0 100 400?
* 23.1.1.3 0 300 500 400?
*> 50.1.1.0/24 23.1.1.3 0 300 500?
* 12.1.1.1 0 100 400 500?
*> 60.1.1.0/24 23.1.1.3 0 300 500 600?
* 12.1.1.1 0 100 400 500 600?

-------

BGP 对等体组

BGP 对等体组:是一些具有相同策略的对等体的集合,当一个对等体加入对等体组中,该对等体将获得与所在 BGP 对等体组相同的配置,当对等体组的配置改变时,组内成员的配置也相应改变.

在大型 BGP 网络中,由于对等体的数量很多,其中很多对等体具有相同的策略,在配置时会重复使用一些命令,利用对等体组可以简化配置.

group ibgp internal
peer ibgp connect-interface LoopBack0
peer ibgp password simple huawei123
peer ibgp reflect-client
peer ibgp next-hop-local

peer x.x.x.x group ibgp
----
group ebgp external
peer ebgp as-number 300
peer ebgp ebgp-max-hop 2
peer ebgp connect-interface LoopBack0
peer ebgp password simple huawei123

peer x.x.x.x group ebgp
推荐阅读
IP路由基础 IP路由基础 OSPF路由计算 OSPF路由计算 VRF 虚拟路由转发 VRF 虚拟路由转发 OSPF基础 OSPF基础 BFD协议原理与配置 BFD协议原理与配置 DHCP DHCP

留言区

Are You A Robot?