前言
我们平常接触的OSPF、RIP等动态路由协议是用于AS(Autonomous System)自治系统内,BGP(Border Gateway Protocol)边界网关协议是专门为大型互联网络而设计,在AS之间通过TCP连接传达信息。
一、BGP概述
- 首先讲一下AS,AS中的所有路由器必须相互连接,运行相同的路由协议,同时分配同一个自治系统编号,编号可以取1至65535,其中私有AS编号为64512至65535,由IANA分配。
- 路径矢量协议
- 在TCP179端口上运行
- 仅增量式、触发式更新
- 使用Keeplive消息以验证TCP连接性,60秒发一次,等待周期是180秒
- 运行BGP的路由器称为BGP Speaker,邻居称为BGP Peer
- 建立邻居关系只要是TCP连接可达就行,可以通过IGP或静态路由连通
使用BGP的理由
- 可以承载大量路由
- 可以支撑MPLS/VPN的应用
- 可以很好的实现路由决策与数据控制
BGP与IGP的区别
- IGP会自动获取邻居的信息,而BGP必须手动指定邻居
- IGP(如OSPF)的边界路由器可以运行在不同的区域(如area0和area1的边界),但是一台BGP路由器只能运行在一个AS内。
二、BGP报文类型
类型 | 备注 |
---|
open | 类似Hello包,建立邻居关系 |
keeplive | 类似Hello包,维护邻居关系 |
update | 路由更新 |
notification | 当检测到错误,发送后关闭BGP连接 |
route-refresh | 当路由策略发生变化时,触发请求邻居重新通告路由 |
三、BGP的几种状态
类型 | 备注 |
---|
idle | 初始状态,查找是否有到达邻居的路由 |
connect | 发起TCP连接,等待TCP连接完成 |
active | TCP连接失败,继续尝试TCP连接 |
open sent | TCP连接成功,已发送open包 |
open confirm | 已收到对方正确的open包,如果没有收到会进入active状态 |
established | 邻居建立完成,开始传递路由 |
四、BGP邻居配置命令
命令 | 备注 |
---|
bgp 100 | 声明所在AS号 |
router-id 1.1.1.1 | 配置RID,必须唯一 |
peer 12.0.0.2 as-number 100 | 配置邻居IP地址和所在AS号 |
display bgp peer | 显示BGP邻居状态 |
IBGP | 内部BGP邻居,位于相同AS |
EBGP | 外部BGP邻居,位于不同AS |
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/bfa1308a784907e2c04551343fde9834.png)
BGP邻居建立条件
- 邻居地址可达
- 自身配置中的邻居所在AS号=邻居配置中的声明所在AS号
- 数据包源IP=对方配置的邻居IP(这个源IP也叫更新源,也将作为路由的下一跳IP)
有时候邻居IP会改变或邻居路由器端口down,导致BGP断开连接,所以为了增加稳定性,通常建议使用回环口来建立邻居,有以下两个注意点:
- 需要更新源:peer 2.2.2.2(对方的id)connect-interface lo 1(自己的回环口)
- EBGP邻居建立默认需要直连,因为TTL=1,如果非直连,必须修改TTL,通常情况下建议EBGP邻居之间采用直连接口建立邻居关系
命令 | 备注 |
---|
peer 2.2.2.2 connect-interface lo 1 | 配置更新源 |
peer 2.2.2.2 ebgp-max-hop[2] | 配置TTL,默认是1 |
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6697bc69ee04a313c437ca0a9ddcc6f6.png)
BGP身份验证
注意会在所有的包内启用
命令 | 备注 |
---|
peer 2.2.2.2 password cipher 123 | 配置身份验证,MD5加密算法,用于确保信息传输完整一致 |
总结
本文介绍了BGP与IGP的区别,BGP的几种报文类型与连接状态,以及BGP的配置命令,图片上也很清楚地标注了命令用法,非常适合初学者学习掌握,会对以后的进阶学习提供很大的帮助。