今日目标
01 BGP概述
02 BGP基本概念
03 EBGP配置
04 邻居表和路由表
05 IBGP配置
06 IBGP全互联
1 BGP概述
动态路由分类
- IGP:内部网关协议
√ AS内部使用IGP来计算和发现路由,如OSPF - EGP:外部网关协议
√ AS与AS之间使用BGP来传递和控制路由
AS
- AS:自治系统
√ AS:Autonomous System自治系统
√ 每个自治系统都有唯一的一个编号,即AS号 - 2字节AS号范围是0-65535
√ 1-64511为公有AS,64512-65535为私有AS - 4字节AS号范围是0-4294967295
√ 4200000000-4294967295为私有AS号 - 网络规模扩大,路由数量不断增长,IGP已无法管理,AS的概念诞生
- AS与AS之间通信需要使用哪种路由协议

- 在AS之间使用BGP协议进行路由传递

BGP发展历史

BGP在企业中的应用

BGP概述
- BGP:Border Gateway Protocol边界网关协议
√ 作用:实现在AS与AS之间动态交换路由信息
√ 稳定:BGP是基于TCP协议建立的,使用端口号TCP179,非常稳定
√ 2006年之后单播1PV4网络使用的版本是BGP-4
√ IPV6使用的版本是MP-BGP
BGP特点
- 稳定性非常高
- 传递大量路由
- 丰富的路由控制策略
2 BGP基本概念
BGP特征
- 路由器之间的BGP会话基于TCP连接而建立。
- 运行BGP的路由器被称为BGP发言者(BGP Speaker)),或BGP路由器。
- 两个建立BGP会话的路由器互为对等体(Peer),BGP对等体之间交换BGP路由表。
- BGP路由器只发送增量的BGP路由更新,或进行触发式更新(不会周期性更新)
- BGP能够传递大批量的路由,可在大规模网络中应用。

BGP邻居类型
- BGP邻居类型
√ EBGP:运行于不同AS之间
√ IBGP:运行于同一AS内部

BGP报文
- BGP邻居的建立过程主要有5种报文

BGP邻居关系建立

BGP邻居传递路由

BGP状态机

- BGP状态机

3 EBGP配置
EBGP配置
- 配置EBGP邻居关系

配置命令
- 配置R1
bash
bgp 100 #启动BGP进程,指定AS号
router-id 1.1.1.1 #配置BGP的Router--id
peer192.168.12.2as-number200 #指定邻居地址和AS号
network192.168.1.024 #注入路由
- 配置R2
bash
bgp 200
router-id 2.2.2.2
peer 192.168.12.1 as-number 100
network192.168.2.024
验证与测试
- 验证与测试
bash
display bgp peer
display bgp routing-table
PC1>ping 192.168.2.1
BGP路由的生成
- 如何产生路由
√ 不同于IGP路由协议,BGP并不会发现并计算产生路由
√ BGP只会将GP路由表中已经存在的路由"搬"到BGP路由表中,称为注入路由
√ BGP将注入的路由通过Update:报文"传递"给BGP邻居 - BGP注入路由的方式有两种:
√ Network
√ import-route

BGP注入路由方式
- Network
√ Network只会注入IP路由表中已经存在的路由条目
√ Network优势是精确注入,不足是只能逐条注入路由,配置繁琐 - import-route
import-router可以注入批量路由,可以将其他协议的路由注入BGP路由表
√ 注入直连路由
√ 注入静态路由
√ 注入OSPF路由
4 邻居表和路由表
BGP邻居表

BGP路由表

5 IBGP配置
IBGP配置
- 实现AS100内R4的10.10.4.4和AS300内R5的10.10.5.5互通

IBGP配置步骤
- 配置步骤:
√ R4和R1建立EBGP邻居关系
√ AS200内部R1/R2/R3部署OSPF
√ R1和R3建立IBGP邻居关系
√ R3和R5建立EBGP邻居关系
√ R4和R5中使用network:注入路由
配置命令
- 配置R4
bash
[R4]bgp 100
[R4-bgp]router-id 4.4.4.4
[R4-bgp]peer192.168.14.1as200 #和R1建立EBGP邻居
[R4-bgp]network 10.10.4.432 #注入路由
- 配置R1
bash
[R1]bgp 200
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 192.168.14.4 as 100 #和R4建立EBGP邻居
[R1-bgp]peer 192.168.23.3 as 200 #和R3建立IBGP邻居
[R1-bgp]peer 192.168.23.3 next-hop-local #修改下一跳地址
- 配置R3
bash
[R3]bgp 200
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 192.168.12.1 as 200 #和R1建立内部邻居
[R3-bgp]peer 192.168.12.1 next-hop-local #修改下一跳
[R3-bgp]peer 192.168.35.5 as 300 #和R5建立外部邻居
- 配置R5
bash
[R5]bgp 300
[R5-bgp]router-id 5.5.5.5
[R5-bgp]peer 192.168.35.3 as 200 #和R3建立外部邻居
[R5-bgp]network 10.10.5.5 32 #注入路由
验证与测试
- 验证与测试
bash
dis ospf peer br :查看ospf邻居
dis bgp peer :查看bgp邻居关系
dis bgp routing-table :查看BGP路由表
dis ip routing-table :查看lP核心路由表
在R4中 ping -a 10.10.4.4 10.10.5.5
Next_Hop
- BGP路由中的Next_Hop属性设置规则:
√ BGP路由器在向EBGP邻居发布路由时,会把该路由的下一跳设置为本地与对端建立BGP邻居关系的接口地址。
√ BGP路由器将本地始发路由发布给BGP邻居时,会把该路由的下一跳设置为本地与对端建立BGP邻居关系的接口地址。
√ 路由器在收到EBGP邻居发布的路由后,在将路由传递给自己的BGP邻居时,默认不修改路由的下一跳地址。
Next_Hop的缺省操作
- BGP路由器在向EBGP邻居发布路由时,会把该路由的下一跳设置为本地与对端建立BGP邻居关系的接口地址。

- 路由器在收到EBGP邻居发布的路由后,在将路由传递给自己的BGP邻居时,默认不修改路由的下一跳地址。

- 使用peer next-hop-locali命令可以在设置向BGP对等体通告路由时,把下一跳设为本地与对端建立BGP邻居关系的接口地址。

6 IBGP全互联
IBGP全互联
- 实现AS100内R4的10.10.4.4和AS300内R5的10.10.5.5互通

IBGP配置步骤
- 配置步骤:
√ R4和R1建立EBGP邻居关系
√ AS200内部R1/R2/R3部署OSPF
√ R1/R2/R3建立IBGP全互联
√ R3和R5建立EBGP邻居关系
√ R4和R5中使用network:注入路由
配置命令
- 配置R4
bash
[R4] bgp 100
[R4-bgp]router-id 4.4.4.4
[R4-bgp]peer 192.168.14.1 as 200 #和R1建立EBGP
[R4-bgp]network 10.10.4.4 #注入路由
- 配置R1
bash
[R1]bgp 200
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 192.168.14.4 as 100 #和R4建立EBGP邻居
[R1-bgp]peer 192.168.12.2 as 200 #和R2建立EBGP邻居
[R1-bgp]peer 192.168.12.2 next-hop-local #修改下一跳
[R1-bgp]peer 192.168.23.3 as 200 #和R3建立EBGP邻居
[R1-bgp]peer 192.168.23.3 next-hop-local #修改下一跳
- 配置R2
bash
[R2]bgp 200
[R2-bgp]route-id 3.3.3.3
[R2-bgp]peer 192.168.12.1 as 200 #和R1建立IBGP邻居
[R2-bgp]peer 192.168.23.3 as 200 #和R3建立IBGP邻居
- 配置R3
bash
[R3]bgp 200
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 192.168.23.2 as 200 #和R2建立IBGP邻居
[R3-bgp]peer 192.168.23.2 next-hop-local #修改下一跳
[R3-bgp]peer 192.168.12.1 as 200 #和R1建立IBGP邻居
[R3-bgp]peer 192.168.12.1 next-hop-local #修改下一跳
[R3-bgp]peer 192.168.35.5 as 300 #和R5建立EBGP邻居
- 配置R5
bash
[R5]bgp 300
[R5-bgp]router-id 5.5.5.5
[R5-bgp]peer 192.168.35.3 as 200 #和R3建立EBGP邻居
[R5-bgp]network 10.10.5.5 32 #注入路由
验证与测试
- 验证与测试
bash
dis ospf peer br :查看ospf邻居
dis bgp peer :查看bgp邻居关系
dis bgp routing-table :查看BGP路由表
dis ip routing-table :查看ip核心路由表
在R4中ping -a 10.10.4.4 10.10.5.5
案例
- 配置IBGP邻居
- IBGP配置
- IBGP全互联
1 配置IBGP邻居
1.1 问题
配置EBGP邻居关系、实现网络互通
1.2 方案
搭建实验环境,如图所示。

1.3 步骤
实现此案例需要按照如下步骤进行。
- 1)配置终端设备 - PC1
bash
地址: 192.168.1.1
掩码: 255.255.255.0
网关: 192.168.1.254
- 2)配置终端设备 - PC2
bash
地址: 192.168.2.1
掩码: 255.255.255.0
网关: 192.168.2.254
- 3)配置网络设备 - R1
bash
sysname R1
#
interface GigabitEthernet0/0/0
ip address 192.168.1.254 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 192.168.12.1 255.255.255.0
#
bgp 100
router-id 1.1.1.1
peer 192.168.12.2 as-number 200
network 192.168.1.0 24
- 4)配置网络设备 -- R2
bash
sysname R2
#
interface GigabitEthernet0/0/0
ip address 192.168.12.2 255.255.255.0
#
interface GigabitEthernet0/0/1
ip address 192.168.2.254 255.255.255.0
#
bgp 200
router-id 2.2.2.2
peer 192.168.12.1 as-number 100
network 192.168.2.0 24
- 5)测试
bash
<R1>display bgp peer
<R1>display bgp routing-table
2 IBGP配置
2.1 问题
实现AS100内的10.10.4.4 和AS300内的10.10.5.5互通
2.2 方案
搭建实验环境,如图所示。

2.3 步骤
实现此案例需要按照如下步骤进行。
-
配置网络设备 -- R4
-
R4的配置:
-
1)R4的接口配置:
bash
[R4]int g0/0/0
[R4-G0/0/0]ip add 192.168.14.4 24
[R4-G0/0/0]int lo0
[R4-LoopBack0]ip add 10.10.4.4 32
- 2)R4的BGP配置:
bash
[R4]bgp 100
[R4-bgp]router-id 4.4.4.4
[R4-bgp]peer 192.168.14.1 as 200 //和R1建立外部邻居
[R4-bgp]network 10.10.4.4 32 //注入路由
-
配置网络设备 -- R1
-
R1的配置:
-
1)R1的接口配置:
bash
[R1]int g0/0/0
[R1-G0/0/0]ip add 192.168.12.1 24
[R1-G0/0/0]int g0/0/1
[R1-G0/0/1]ip add 192.168.14.1 24
- 2)R1的OSPF配置:
bash
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]quit
[R1-ospf-1]quit
- 3)R1的BGP配置:
bash
[R1]bgp 200 //开启BGP,配置AS200
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 192.168.14.4 as 100 //和R4建立外部邻居
[R1-bgp]peer 192.168.23.3 as 200 //和R3建立内部邻居
[R1-bgp]peer 192.168.23.3 next-hop-local //修改下一跳
-
配置网络设备 -- R2
-
R2的配置:
-
1)R2的接口配置:
bash
[R2]int g0/0/0
[R2-G0/0/0]ip add 192.168.12.2 24
[R2-G0/0/0]int g0/0/1
[R2-G0/0/1]ip add 192.168.23.2 24
- 2)R2的ospf配置:
bash
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 192.168.23.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]quit
-
配置网络设备 -- R3
-
R3的配置:
-
1)R3的接口配置:
bash
[R3]int g0/0/0
[R3-G0/0/0]ip add 192.168.23.3 24
[R3-G0/0/0]int g0/0/1
[R3-G0/0/1]ip add 192.168.35.3 24
- 2)R3的OSPF配置
bash
[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 192.168.23.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]quit
[R3-ospf-1]quit
- 3)R3的BGP配置:
bash
[R3]bgp 200
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 192.168.12.1 as 200 //和R1建立内部邻居
[R3-bgp]peer 192.168.12.1 next-hop-local //修改下一跳
[R3-bgp]peer 192.168.35.5 as 300 //和R5建立外部邻居
- 配置网络设备 -- R5
- R5的配置:
- 1)R5的接口配置:
bash
[R5]int g0/0/0
[R5-G0/0/0]ip add 192.168.35.5 24
[R5-G0/0/0]int lo0
[R5-LoopBack0]ip add 10.10.5.5 32
- 2)R5的BGP配置:
bash
[R5]bgp 300
[R5-bgp]router-id 5.5.5.5
[R5-bgp]peer 192.168.35.3 as 200 //和R3建立外部邻居
[R5-bgp]network 10.10.5.5 32 //注入路由
- 验证方法:
bash
1)dis ospf peer br :查看ospf 邻居
2)dis bgp peer :查看bgp邻居关系
3)dis bgp routing-table :查看BGP路由表
4)dis ip routing-table :查看IP核心路由表
5)在R4中 ping -a 10.10.4.4 10.10.5.5
3 IBGP全互联
3.1 问题
-
1)配置BGP邻居关系
-
2)实现AS100内R4的10.10.4.4 和AS300内R5的10.10.5.5互通
3.2 方案
搭建实验环境,如图所示。

3.3 步骤
实现此案例需要按照如下步骤进行。
- 1)配置网络设备 -- R4
- 1)R4的接口配置:
bash
[R4]int g0/0/0
[R4-G0/0/0]ip add 192.168.14.4 24
[R4-G0/0/0]int lo0
[R4-LoopBack0]ip add 10.10.4.4 32
- 2)R4的BGP配置:
bash
[R4]bgp 100
[R4-bgp]router-id 4.4.4.4
[R4-bgp]peer 192.168.14.1 as 200 //和R1建立外部邻居
[R4-bgp]network 10.10.4.4 32 //注入路由
- 2)配置网络设备 -- R1
- R1的配置:
- 1)R1的接口配置:
bash
[R1]int g0/0/0
[R1-G0/0/0]ip add 192.168.12.1 24
[R1-G0/0/0]int g0/0/1
[R1-G0/0/1]ip add 192.168.14.1 24
- 2)R1的OSPF配置:
bash
[R1]ospf 1 router-id 1.1.1.1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
[R1-ospf-1-area-0.0.0.0]quit
[R1-ospf-1]quit
- 3)R1的BGP配置:
bash
[R1]bgp 200 //开启BGP,配置AS200
[R1-bgp]router-id 1.1.1.1
[R1-bgp]peer 192.168.14.4 as 100 //和R4建立外部邻居
[R1-bgp]peer 192.168.12.2 as 200 //和R2建立内部邻居
[R1-bgp]peer 192.168.12.2 next-hop-local //修改下一跳
[R1-bgp]peer 192.168.23.3 as 200 //和R3建立内部邻居
[R1-bgp]peer 192.168.23.3 next-hop-local //修改下一跳
-
3)配置网络设备 -- R2
-
R2的配置:
-
1)R2的接口配置:
bash
[R2]int g0/0/0
[R2-G0/0/0]ip add 192.168.12.2 24
[R2-G0/0/0]int g0/0/1
[R2-G0/0/1]ip add 192.168.23.2 24
- 2)R2的ospf配置:
bash
[R2]ospf 1 router-id 2.2.2.2
[R2-ospf-1]area 0
[R2-ospf-1-area-0.0.0.0]network 192.168.12.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]network 192.168.23.0 0.0.0.255
[R2-ospf-1-area-0.0.0.0]quit
- 3)R2的BGP配置:
bash
[R2]bgp 200
[R2-bgp]router-id 2.2.2.2
[R2-bgp]peer 192.168.12.1 as 200 //和R1建立内部邻居
[R2-bgp]peer 192.168.23.3 as 200 //和R3建立内部邻居
- 4)配置网络设备 -- R3
- R3的配置:
- 1)R3的接口配置:
bash
[R3]int g0/0/0
[R3-G0/0/0]ip add 192.168.23.3 24
[R3-G0/0/0]int g0/0/1
[R3-G0/0/1]ip add 192.168.35.3 24
- 2)R3的OSPF配置
bash
[R3]ospf 1 router-id 3.3.3.3
[R3-ospf-1]area 0
[R3-ospf-1-area-0.0.0.0]network 192.168.23.0 0.0.0.255
[R3-ospf-1-area-0.0.0.0]quit
[R3-ospf-1]quit
- 3)R3的BGP配置:
bash
[R3]bgp 200
[R3-bgp]router-id 3.3.3.3
[R3-bgp]peer 192.168.23.2 as 200 //和R2建立内部邻居
[R3-bgp]peer 192.168.23.2 next-hop-local //修改下一跳
[R3-bgp]peer 192.168.12.1 as 200 //和R1建立内部邻居
[R3-bgp]peer 192.168.12.1 next-hop-local //修改下一跳
[R3-bgp]peer 192.168.35.5 as 300 //和R5建立外部邻居
-
5)配置网络设备 -- R5
-
R5的配置:
-
1)R5的接口配置:
bash
[R5]int g0/0/0
[R5-G0/0/0]ip add 192.168.35.5 24
[R5-G0/0/0]int lo0
[R5-LoopBack0]ip add 10.10.5.5 32
- 2)R5的BGP配置:
bash
[R5]bgp 300
[R5-bgp]router-id 5.5.5.5
[R5-bgp]peer 192.168.35.3 as 200 //和R3建立外部邻居
[R5-bgp]network 10.10.5.5 32 //注入路由
- 6)验证与测试
bash
1)<R2>dis ospf peer br //在R2中查看ospf 邻居
2)<R1>ping 192.168.23.3 //在R1 ping R3 通
3)<R1>dis bgp peer //R1和R2 R3 R4 都是BGP邻居
4)<R3>dis bgp peer //R3和R1 R2 R5 都是BGP邻居
5)<R4>dis bgp routing-table //所有的路由器都有这两条路由
6)<R4>ping -a 10.10.4.4 10.10.5.5 //可以通