目录:
一:BGP概述
1,什么是BGP
2,自治系统——AS
3,BGP特征
4,动态路由分类
二:BGP的工作原理
1,BGP报文
2,BGP状态机
3,BGP数据库
4,BGP邻居类型
三:配置BGP
1,配置思路
2,实验拓扑
3,配置R1
4,配置R2
5,配置R3
6,配置R5
7,查看路由及ping测试
一:BGP概述
1,什么是BGP
- BGP,Border Gateway Protocol,边界网关协议。
- 运行在AS与AS之间的动态路由协议。
- 主要作用是在AS之间自动交换无环路由信息,消除路由环路。
- 以此构建AS拓扑图,可以实施用户配置的路由策略
2,自治系统——AS
一个技术管理机构管理,使用统一选路策略的一组路由器集合。
自治系统编号范围:1——65535 ,其中1——64511 是互联网上注册公有AS号,类似于公网IP
申请AS编号地址:http://www.iana.org/
3,BGP特征
- 传输协议使用TCP协议,端口号为179
- BGP是动态外部路由协议,用来在AS之间传递路由信息
- 是一种增强的路径矢量路由协议
- 拥有可靠的路由更新机制
- 具备丰富的Metric度量方法
- 无环路协议设计
- 为路由条目附带多种属性信息
- 支持CIDR(无类别域间选路)
- 丰富的路由过滤和路由策略
- 无需周期性更新
- 路由更新时只发送增量路由
- 周期性发送KeepAlive 报文以保持TCP连接畅通
4,动态路由分类
(1)按照自治系统分类
IGP:自治系统内部路由协议,主要有:RIP,OSPF,ISIS,EIGRP(思科私有)
IGP是运行在AS内部的路由协议,主要哦解决AS内部的选路问题,发现和计算路由
EGP:自治系统之间的路由协议,BGP
EGP是运行在AS与AS之间的路由协议,它解决AS之间的选路问题
(2)按照协议类型分类
距离矢量路由协议:RIP,BGP(路径矢量),EIGRP(高级路径矢量)
链路状态路由协议:OSPF,ISIS ###使用最短路径树算法SPF
二:BGP的工作原理
1,BGP报文
- Open报文:TCP建立后发送的第一个报文,用于建立BGP对等体之间的连接关系,主要包含BGP版本号,本地AS编号,Holdtime等信息
- Update报文:用来在BGP之间更新路由信息。可以通告多条属性相同的可达路由信息
- Notification 报文:当BGP检测到错误状态时,立即向对等体发送该报文,之后BGP就会中断。只要收到Notification报文就会返回idle状态
- Route-refresh :用来告知对等体所支持的路由的刷新能力,BGP的入口策略路由发生变化,本地的BGP路由会向对等体发送Router-Refresh报文。收到信息后,对等体将其路由信息发给本地BGP路由器
- KeepAlive:在对等体之间周期发送的报文,用以保持连接的有效性并维护其连接,KeepAlive报文只有一个BGP报文头,默认KeepAlive报文发送周期为60s,保持时间为180s。
####OPEN报文####
####UPDATE报文####
####KEEPALIVE报文####
2,BGP状态机
BGP对等体的建立过程中存在6种状态机,
空闲(Idle)、连接(Connect)、活跃(Active)、Open报文已发送(OpenSent)、Open报文已确认(OpenConfirm)和连接已建立(Established)。
在BGP对等体建立的过程中,通常可见的3个状态是:Idle、Active和Established。
3,BGP的数据库
- IP路由表(IP-RIB):全局路由信息库,包括最优的IP路由信息
- BGP路由表(Loc-RIB):BGP路由信息库,包括本地BGPDpeak通告的路由信息,将其最优的添加到路由表中
- 邻居表:对等体邻居信息库,包括对等体两端的邻居信息及信息库
- ADi-RIB-In:对等体宣告给本地Speak的未处理的路由信息库。
- ADjust-RIB-OUT:本地Speak宣告给指定的对等体的信息库
###路由器通过ADi-RIB-In跟新路由信息。
###本地路由信息跟新数据写入ADjust-RIB-OUT
4,BGP邻居类型
- IBGP邻居:自治系统AS内部的BGP邻居关系,IBGP邻居是指运行BGP协议的对等体两端在一个AS域内,属于BGP AS内部
- EBGP邻居:AS之间的BGP邻居关系,EBGP通常指运行BGP的对等体两端在不同AS内部
三,配置BGP
1,配置思路
- 启用BGP,后面跟本机AS系统号
- 宣告Router-id,建立邻居关系用
- 宣告和谁建立邻居关系
- 通告BGP路由(可以使用Network方式逐条引入,也可以使用import 按照协议类型引入)
2,实验拓扑:
- R1 , R2, R5 先使用ospf 建立连接
- R1,R2,R5 三个路由器,配置bgp时需要互相建立对等体关系
- R1,R2,R5为 IBGP。R3与R2为EBGP 。
- R3与R2使用静态路由建立连接
- 使用回环口配置EBGP时,跳数是两跳。ebgp-max-hop 2
3,配置R1
[R1]router id 1.1.1.1 ###配置router id (全局)
[R1]ospf 1
[R1-ospf-1]area 0
[R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
[R1-ospf-1-area-0.0.0.0]network 15.0.0.0 0.0.0.3
[R1-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.3 ###配置ospf ,宣告网络
[R1]bgp 100 ###进入编号100的AS域(本地)
[R1-bgp]peer 2.2.2.2 as-number 100 ###和AS编号100的域里 router id 为2.2.2.2 的路由建立对等体关系
[R1-bgp]peer 2.2.2.2 connect-interface LoopBack 0 ###用本机的回环地址loopback 0 接口 和对方建立关系(用虚拟接口建立,不会物理断开)
[R1-bgp]peer 5.5.5.5 as-number 100 ###和AS编号100的域里 router id 为5.5.5.5 的路由建立对等体关系
[R1-bgp]peer 5.5.5.5 connect-interface LoopBack 0 ###用本机的回环地址loopback 0 接口 和对方建立关系
4,配置R2
[R2]router id 2.2.2.2 ###全局 router id 2.2.2.2
[R20ospf-1] area 0
[R2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
[R2-ospf-1-area-0.0.0.0]network 12.0.0.0 0.0.0.3 ###配置OSPF,宣告网络(23.0.0.1/30 不用宣告,这是EBGP)
[R2]ip route-static 3.3.3.3 32 23.0.0.2 ###配置静态路由到达R3的回环口,将R2和R3连接,建立控制层数据流量通道
[R2]bgp 100 ###进入编号为100 的AS域(本地)
[R2-bgp]peer 1.1.1.1 as-number 100 ###和 100 域里的 router id 为 1.1.1.1 的路由建立对等体关系
[R2-bgp]peer 1.1.1.1 connect-interface LoopBack 0 ###用本地的回环口 loopback 0 和对方建立关系
[R2-bgp]peer 5.5.5.5 as-number 100
[R2-bgp]peer 5.5.5.5 connect-interface LoopBack 0
[R2-bgp]peer 3.3.3.3 as-number 200 ###3.3.3.3 和 本机属于两个域。和 域 200里的router ID为 3.3.3.3的路由建立对等体关系
[R2-bgp]peer 3.3.3.3 connect-interface LoopBack 0 ###使用loopback 0 接口建立关系
[R2-bgp]peer 3.3.3.3 ebgp-max-hop 2 ###设置bgp的 dbpg-max-hop属性,下一跳步数为2 (从3.3.3.3 到2.2.2.2 需要2 跳)
[R2-bgp]network 23.0.0.0 30
[R2-bgp]import-route static ###R2与R3的回环口3.3.3.3 是使用静态路由相连,在R2上注入静态路由,可以使得R1和R5 学习到到达3.3.3.3 的路由
###不管是注入到BGP还是注入到OSPF都是可以
[R3]router id 3.3.3.3 ###配置全局router id
[R3]ip route-static 2.2.2.2 32 23.0.0.1 ###R3配置到达R2的2.2.2.2 的静态路由
[R3]bgp 200 ###进入AS域 200
[R3-bgp]peer 2.2.2.2 as-number 100 ###和100域里router id 为2.2.2.2 的路由器建立对等体关系
[R3-bgp]peer 2.2.2.2 connect-interface LoopBack 0 ###用回环口 loopback0 建立关系
[R3-bgp]peer 2.2.2.2 ebgp-max-hop 2 ###设置下一跳属性为2
6,配置R5
[R5]router id 5.5.5.5 ###设置全局router id 5.5.5.5
[R5]ospf 1
[R5-ospf-1]area 0
[R5-ospf-1-area-0.0.0.0]network 5.5.5.5 0.0.0.0
[R5-ospf-1-area-0.0.0.0]network 15.0.0.0 0.0.0.3
[R5-ospf-1-area-0.0.0.0]network 202.0.0.0 0.0.0.255 ###配置OSPF,及宣告网路。(将业务网段202.0.0.0/24 宣告在ospf中,是为了等会使用import 注入)
[R5]bgp 100 ###进入域100 (本地)
[R5-bgp]peer 1.1.1.1 as-number 100 ###和100 域里 router id 为 1.1.1.1 的路由建立对等体关系
[R5-bgp]peer 1.1.1.1 connect-interface LoopBack 0 ### 用回环口loopback 0 建立关系
[R5-bgp]peer 2.2.2.2 as-number 100 ###和 200 域里 router id 为2.2.2.2 的路由建立对等体关系
[R5-bgp]peer 2.2.2.2 connect-interface LoopBack 0 ###用回环口loopback 0 建立关系
[R5-bgp]network 202.0.1.0 24
###宣告业务网段
[R5-bgp]import-route ospf 1 ###将ospf 1 的网段注入
###bgp宣告网段,可以是精确指定,network 宣告。这种宣告优先级最高。 也可以是import 注入,注入各种协议,如ospf,rip,直连,静态 等等
7,查看路由及测试
dis ip routing-table protocol bgp ###查看通过bgp学到的路由
####可以看到,R3通过EBGP学到了 AS100 里的路由
ping测试