BGP 实验
1. BGP 邻居建立
BGP 邻居分为 IBGP 与 EBGP 两种;
IBGP 邻居通常使用 loopback 接口的地址建立邻居关系,可以非直连。
Router bgp 100
nei 2.2.2.2 remote-as 100
nei 2.2.2.2 update-source loopback 1
EBGP 邻居通常是直连的(也可以非直连),因此使用直连端口的 IP 地址建立邻居关系,
也可以使用 loopback 接口建立邻居关系,但是需要配置 EBGP 多跳,因为 EBGP 默认跳
数是 1。
Router bgp 100
nei 2.2.2.2 remote-as 200
nei 2.2.2.2 ebgp-multihop
nei 2.2.2.2 update-source loopback 1
其中,2.2.2.2 必须是可达的,可以使用静态路由的方式实现。
2. BGP 同步
BGP 的通告原则:BGP Speaker 从 IBGP 获得的路由是否通告给它的 EBGP 相邻体要依 IGP 和
BGP 同步的情况来决定。
如果 R4 上关闭同步,在 R5 上可以看到 R4 传递过来的 1.1.1.1 的路由:
R5#show ip bgp
Network
Next Hop
Metric LocPrf Weight Path
*> 1.1.1.1/32
45.1.1.1
0 200 100 i
在 R4 上开启同步,在 R5 上查看 show ip bgp,看不到 1.1.1.1 路由。
R4 从 IBGP 邻居 2.2.2.2 学到 R1 发布的 1.1.1.1 的路由,是否传递给 EBGP 邻居,要看 BGP 与
IGP 同步的情况而定,也就是说 R4 的 IGP 中没有学习到 1.1.1.1 的路由,那么 BGP 与 IGP 不
同步,所以不会把 1.1.1.1 的路由传递给 EBGP 邻居。
开启 R4 同步,并配置静态路由 ip route 1.1.1.1 255.255.255.255 2.2.2.2 后,或将 BGP 重发布
进 OSPF,R4 会将 1.1.1.1 通告给 R5。
一般在现网中不会有这样的网络结构,因此,为了避免路由不能正确通告,我们一般将同步
功能关掉。
BGP 的属性分为公认属性和可选属性;
公认属性是所有路由器都认识的属性;公认属性有分为公认必遵
和公认自决两种,公认必遵属性是每个 update 报文中传递的路由都必须携带的属性;例如:
路由起源(origin),AS Path,下一跳属性;
公认自决属性可以携带,也可以没有,例如:本地优先属性。
可选属性是 BGP 路由器可以支持,也可以不支持的属性,分为可选传递和可选非传递,可
选传递的属性如 community 属性,可以被 BGP 的路由器一跳一跳的传递下去;
可选非传递属性,如 MED 属性,不能传递给下一跳的 BGP 路由器。
3. BGP 路由起源属性
Network:显示为 i,选路时优先级高;
Redistribute:显示为?
4. BGP AS 属性
1) 过滤私有 AS
应用场景:各地市城域网使用私有 AS 号,连入骨干网后,路由需要传入骨干网,
但私有 AS 号需要隐藏。
在 R3 上配置:
router bgp 100
neighbor 23.1.1.1 remote-as 65501
neighbor 34.1.1.2 remote-as 200
//R3 向 R4 通告时,将私有 AS 号去掉
neighbor 34.1.1.2 remove-private-as
注:私有 AS 需要连续,如果 R1 所在的 AS 是公有 AS 的话,配置此命令,无
法将 R2 所在的私有 AS 号去除。
在 R4 上看到的结果:
R4#show ip bgp
Network
*> 1.1.1.1/32
*> 2.2.2.2/32
Next Hop
34.1.1.1
34.1.1.1
Metric LocPrf Weight Path
0 100 i
0 100 i
2) 增加 AS
使用场景:BGP 通过 AS 路径的距离来决策路由,因此,可以使用增加 AS 号的方式
来改变 BGP 的选路。
在 R3 上配置:
router bgp 100
neighbor 34.1.1.2 route-map aa out
//在 R3 向 R4 传递路由时,应用策略路由 aa
route-map aa
set as-path prepend 10 20
//配置策略路由,设置增加 AS 号 10 和 20
在 R4 上看到的结果:
R4#show ip bgp
Network
*> 1.1.1.1/32
*> 2.2.2.2/32
Next Hop
34.1.1.1
34.1.1.1
Metric LocPrf Weight Path
0 100 10 20 i
0 100 10 20 i
5. BGP 本地优先属性
邻居之间运用 local preference 属性选择路由, 本地优先属性值越大越优先。
在 R4 上配置:
router bgp 200
no synchronization
bgp log-neighbor-changes
neighbor 24.1.1.1 remote-as 200
neighbor 24.1.1.1 route-map aa in
neighbor 34.1.1.1 remote-as 200
no auto-summary
route-map aa permit 10
set local-preference 200
6. BGP MED 属性
//配置策略路由,将本地优先属性配置为 200
邻居之间传递 MED 属性选择路由,不能传递。
在 R2 上配置:
router bgp 200
no synchronization
bgp log-neighbor-changes
neighbor 12.1.1.1 remote-as 100
neighbor 23.1.1.2 remote-as 200
neighbor 24.1.1.2 remote-as 300
neighbor 24.1.1.2 route-map aa out
no auto-summary
route-map aa
set metric 50
在 R4 上查看结果:
R4#show ip bgp
Network
* 1.1.1.1/32
*>
Next Hop
24.1.1.1
34.1.1.1
7. RR 配置
Metric LocPrf Weight Path
50
0 200 100 i
0 200 100 i
R1 和 R2 配置为 RR:
router bgp 100
no synchronization
bgp cluster-id 1.1.1.1
bgp log-neighbor-changes
neighbor 2.2.2.2 remote-as 100
neighbor 2.2.2.2 update-source Loopback1
//两台 RR 配置相同的 Cluster ID,防止 RR 之间路由环路;
neighbor 3.3.3.3 remote-as 100
neighbor 3.3.3.3 update-source Loopback1
neighbor 3.3.3.3 route-reflector-client
neighbor 4.4.4.4 remote-as 100
neighbor 4.4.4.4 update-source Loopback1
neighbor 4.4.4.4 route-reflector-client
neighbor 5.5.5.5 remote-as 100
neighbor 5.5.5.5 update-source Loopback1
neighbor 5.5.5.5 route-reflector-client
no auto-summary
8. 对等体组配置
前例中 R1 的配置可以简化为:
router bgp 100
no synchronization
bgp cluster-id 1.1.1.1
bgp log-neighbor-changes
neighbor CLIENT peer-group
neighbor CLIENT remote-as 100
neighbor CLIENT update-source Loopback1
neighbor CLIENT route-reflector-client
neighbor 3.3.3.3 peer-group CLIENT
neighbor 4.4.4.4 peer-group CLIENT
neighbor 5.5.5.5 peer-group CLIENT
no auto-summary
//创建对等体组 CLIENT,属性配置给 CLIENT
//再将邻居加入到对等体组中,可简化配置
9. BGP 联盟
BGP 的联盟与 RR 作用类似,为了减少大型 AS 内部 IBGP 邻居全部 Full Mesh 连接。将一个大
的 AS 划分成多个子 AS。
子 AS 之间传递路由时,下一跳不更改,类似于 IBGP 邻居之间传递路由。所以需要添加
next-hop-self 的命令。
R1:
router bgp 100
no synchronization
bgp log-neighbor-changes
network 1.1.1.1 mask 255.255.255.255
neighbor 12.1.1.2 remote-as 200
no auto-summary
R2:
router bgp 64512
no synchronization
bgp log-neighbor-changes
bgp confederation identifier 200
neighbor 12.1.1.1 remote-as 100
neighbor 23.1.1.2 remote-as 64512
neighbor 23.1.1.2 next-hop-self
no auto-summary
R3:
router bgp 64512
no synchronization
bgp log-neighbor-changes
bgp confederation identifier 200
bgp confederation peers 64513
neighbor 23.1.1.1 remote-as 64512
neighbor 34.1.1.2 remote-as 64513
neighbor 34.1.1.2 next-hop-self
no auto-summary
R4:
router bgp 64513
no synchronization
bgp log-neighbor-changes
bgp confederation identifier 200
bgp confederation peers 64512
neighbor 34.1.1.1 remote-as 64512
neighbor 45.1.1.2 remote-as 300
no auto-summary
R5:
router bgp 300
no synchronization
bgp log-neighbor-changes
neighbor 45.1.1.1 remote-as 200
no auto-summary
R5:
R5#show ip bgp
Network
*> 1.1.1.1/32
R4:
R4#show ip bgp
Network
*> 1.1.1.1/32
R3#show ip bgp
Network
*>i1.1.1.1/32
Next Hop
45.1.1.1
Metric LocPrf Weight Path
0 200 100 i
Next Hop
34.1.1.1
Next Hop
23.1.1.1
Metric LocPrf Weight Path
0
100
0 (64512) 100 i
Metric LocPrf Weight Path
0 100 i
100
0
10. community 属性配置
no-advertise:不通告路由
no-export:不通告路由给 EBGP 邻居(联盟内的子 AS 成员可以通告)
local-as:只通告给 IBGP 邻居,包括联盟内的子 AS 成员也不通告