IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> BGP路由技术 -> 正文阅读

[网络协议]BGP路由技术

目录

BGP的概念

BGP邻居关系

BGP报文:

BGP状态机:

BGP数据库

BGP的交互原则

BGP的选路原则

配置实例:


BGP的概念

BGP是一种运行在AS与AS之间的动态路由协议,主要作用是在AS之间自动交换无环路由信息,以此来构建AS的拓扑图,从而消除路由环路并实施用户配置的路由策略。

BGP的特性
1. 传输协议:TCP ,端口号179
2. BGP是外部路由协议,用来在AS之间传递路由信息
3. 是一种增强的路径矢量路由协议
4. 拥有可靠的路由更新机制
5. 具备丰富的Metric度量方法
6. 无环路协议设计
7. 为路由条目附带多种属性信息
8. 支持CIDR(无类别域间选路)
9. 丰富的路由过滤和路由策略
10. 无须周期性更新
11. 路由更新时只发送增量路由
12.周期性发送keepAlive 报文,以保持TCP连通性

BGP邻居关系

运行BGP的路由器通常被称为BGPSPeaker(发言者),互相之间传递报文的Speaker之间互相称为对等体peer。BGP邻居关系的建立、更新和删除是通过对等体之间交互5种报文、6种状态机和5个表等信息来完成的,最终形成BGP邻居。

BGP报文:

1.OPEN:该报文负责和对等体建立领居关系,主要包括BGP版本,AS号等信息;试图建立BGP邻居关系的两个路由器在建立了TCP链接之后开始交互OPEN信息以确认能否形成领居关系。

2.keepAlive:该报文在对等体之间周期性地发送,用于判断对等体之间的可达性,实现BGP领居关系的维护

3.update:该报文用于在 BGP对等体之间用于交互路由信息;其中包括撤销路由信息和可达路由信息及各种路由属性,是BGP五个报文中最重要的报文

4.Notification:BGP的差错检测机制;一旦检测到任何形式的差错,BGPSpeaker会发送一个Notification报文,随后与之相关的邻居关系将被关闭

5.Route-refresh:用来通知BGP对等体自己支持路由刷新能力

BGP状态机:

1.idle状态
idle是BGP连接的第一个状态,在空闲状态,BGP在等待一个启动事件,启动事件出现以后,BGP初始化资源,复位连接重试计时器(connect-Retryl)发起一条TCP连接,同时转入Connect(连接)状态。

2.connect状态
在connect状态,BGP发起一个TCP连接,如果连接重试计时器(connect-retry)超时,就重新发起TCP连接,并继续保持在Connect状态,如果TCP连接成功,就转入Opensent状态,如果TCP连接失败,就转入Active状态。

3.active状态:
在Active状态,BGP总是在试图建立TCP连接,如果连接重试计时器超时,就退回到connect状态,如果TCP连接成功就转入Opensent状态,如果TCP连接失败,就继续保持在Active状态,并继续发起TCP连接。

4.Opensent状态
在Opensent状态下,TCP连接已经建立BGP也已经 建立,BGP也已经发送了第一个Open报文,剩下的工作,BGP就在等待其对等体发送Open报文。并对收到的Open报文进行正确性检查,如果有错误,系统就会发送一条出错通知信息并退回到idle状态,如果没有错误就继续发送keeplive并服务keeplive 计时器,开始计时,同时转入Openconfirm状态。

5.Openconfirm状态
在该状态下,BGP会发送一个Keepalive 报文,同时复位保持计时器,如果收到了一个keepalive,就转入Establish状态,BGP邻居关系已经建立,这时BGP将和它的邻居们交换UPdate报文,同时复位保持计时器。

BGP数据库

1.IP路由表(IP-RIB)
全局路由信息库,包括所有最优的IP路由信息
2.BGP路由表(Loc-RIB)
BGP路由信息库,包括本地BGPSpeaker通告的路由信息,将其中最优路由最优路由添加IP路由表中
3.邻居表
对等体邻居清单列表,包括对等体两端的邻居信息及邻居列表。
4.Adi-RIB-in
对等体宣告给本地Speaker的未处理的路由信息库
5.Adi-RIB-out
本地Speaker宣告给指定对等体的路由信息库

BGP的交互原则

1.从IBGP对等体获得的BGP路由,BGP设备只传递给它的EBGP对等体
2.从EBGP对等体获得的BGP路由,BGP设备传递给它的所有EBGP和IBGP对等体(对等体是IBGP只能传一跳,对等体是EBGP则不限制)
3.当存在多条到达通一目的地址的有效路由时,BGP设备只将最优路由发布给对等体
4.路由更新时,BGP设备只发送更新的BGP路由
5.所有对等体发送的路由,BGP设备都会接收
6.所有EBGP对等体在传递过程中下一跳改变
7.所有IBGP对等体在传递过程中下一跳不变
8.默认EBGP传递时,TTL值为1
9.默认IBGP传递时,TTL值为255

BGP的选路原则

1.若去往目的的网络的路由下一跳不可达,则可以忽略此路由
2.Preferred-Value 优先级以数值高的路由优先
3.Local-Preference 优先级以数值高的路由优先
4.聚合路由优先级高于非聚合路由
5.本地手动聚合路由的优先级高于本地自动聚合的路
6.本地通过Network命令引入的路由的优先级高于本地通过Import-route 引入的路由
7.AS路径长度最短(最少个数)的路径优先级高
8.比较ORigin属性,IGP优先级高于EGP,EGP优先级高于Incomplete
9.选择MED优先级小的路由
10.BGP路由优先级高于IBGP路由
11.BGP优先选择到BGP下一跳的IBGP度量低的路径

当以上全部相同,则为等价路由,可以负载分担,当负载分担时以下三条无效
1.比较Cluster-list长度,短者优先
2.比较Originator_ID(如果没有Originator_ID,则用Router ID比较),选择数值小的优先
3.比较对等体的IP地址,选择IP地址数值小的路径

配置实例:

需要保证IGP内部网络能互通

AR1BGP配置:
[AR1]ip route-static 2.2.2.2 32 12.1.1.2? 因为用的是回环口所有要配置静态保证网络互通
[AR1]ip route-static 2.2.2.2 32 13.1.1.3??
[AR1]bgp 100? ?创建BGP,AS号为100
[AR1-bgp]router-id 1.1.1.1
[AR1-bgp]peer 2.2.2.2 as-number 200? ?共同体2.2.2.2 as号为200
[AR1-bgp]peer 2.2.2.2 ebgp-max-hop 2 设置EBGP最大跳数默认为1?
[AR1-bgp]peer 2.2.2.2 connect-interface loopback 0 以回环口和共同体建立链接
[AR1-bgp]peer 3.3.3.3 as-number 200?共同体3.3.3.3 as号为200
[AR1-bgp]peer 3.3.3.3 ebgp-max-hop 2?设置EBGP最大跳数
[AR1-bgp]peer 3.3.3.3 connect-interface loopback 0 以回环口和共同体建立链接
[AR1-bgp]network 10.0.0.0 24 宣告工作的网络
[AR1-bgp]network 10.0.1.0 24?宣告工作的网络
[AR1-bgp]network 10.0.2.0 24?宣告工作的网络

AR2 BGP配置:
[AR2]ip route-static 1.1.1.1 32 12.1.1.1 配置静态
[AR2]bgp 200? ?创建BGP AS号为200
[AR2-bgp]router-id 2.2.2.2??
[AR2-bgp]peer 1.1.1.1 as-number 100? 共同体1.1.1.1 as号为100
[AR2-bgp]peer 1.1.1.1 connect-interface loopback 0 以回环口和共同体建立链接
[AR2-bgp]peer 1.1.1.1 ebgp-max-hop 2??设置EBGP最大跳数?
[AR2-bgp]peer 3.3.3.3 as-number 200? 共同体3.3.3.3?as号为 200
[AR2-bgp]peer 3.3.3.3 connect-interface loopback 0 以回环口和共同体建立链接
[AR2-bgp]peer 3.3.3.3 next-hop-local? 保证IBGP下一跳可达
[AR2-bgp]peer 4.4.4.4 as-number 200 共同体4.4.4.4 as号为 200
[AR2-bgp]peer 4.4.4.4 connect-interface loopback 0 以回环口和共同体建立链接
[AR2-bgp]peer 4.4.4.4 next-hop-local 保证IBGP下一跳可达
[AR2-bgp]quit

AR3BGP配置:
[AR3]ip route-static 1.1.1.1 32 13.1.1.1 配置静态
[AR3]bgp 200 创建BGP AS号为200
[AR3-bgp]router-id 3.3.3.3?
[AR3-bgp]peer 1.1.1.1 as-number 100 邻居1.1.1.1 as号为 100
[AR3-bgp]peer 1.1.1.1 connect-interface loopback 0 以回环口和邻居建立关系
[AR3-bgp]peer 1.1.1.1 ebgp-max-hop 2 配置ebgp最大跳数
[AR3-bgp]peer 2.2.2.2 as-number 200 邻居2.2.2.2 as号为200
[AR3-bgp]peer 2.2.2.2 connect-interface loopback 0 以回环口和邻居建立关系
[AR3-bgp]peer 2.2.2.2 ?next-hop-local 保证IBGP下一跳可达
[AR3-bgp]peer 4.4.4.4 as-number 200 邻居4.4.4.4 as号为 200
[AR3-bgp]peer 4.4.4.4 connect-interface loopback 0 以回环口和邻居建立关系
[AR3-bgp]peer 4.4.4.4 next-hop-local?保证IBGP下一跳可达
[AR3-bgp]quit

AR4 BGP配置:
[AR4]bgp 200
[AR4-bgp]router-id 4.4.4.4?
[AR4-bgp]peer 2.2.2.2 as-number 200 邻居2.2.2.2 as号为200
[AR4-bgp]peer 2.2.2.2 connect-interface loopback 0 以回环口和邻居建立关系
[AR4-bgp]peer 2.2.2.2 next-hop-local 保证IBGP下一跳可达
[AR4-bgp]peer 3.3.3.3 as-number 200 邻居3.3.3.3 as号为200
[AR4-bgp]peer 3.3.3.3 connect-interface loopback 0 以回环口和邻居建立关系
[AR4-bgp]peer 3.3.3.3 next-hop-local?保证IBGP下一跳可达
[AR4-bgp]peer 5.5.5.5 as-number 300?邻居5.5.5.5?as号为300
[AR4-bgp]peer 5.5.5.5 ebgp-max-hop 2?配置ebgp最大跳数
[AR4-bgp]peer 5.5.5.5 connect-interface loopback 0?以回环口和邻居建立关系
[AR4-bgp]peer 6.6.6.6 as-number 300?邻居6.6.6.6?as号为300
[AR4-bgp]peer 6.6.6.6 connect-interface loopback 0?以回环口和邻居建立关系
[AR4-bgp]peer 6.6.6.6 ebgp-max-hop 2?配置ebgp最大跳数
[AR4-bgp]quit?

AR5 BGP配置:
[AR5]bgp 300 创建BGP? AS号为300
[AR5-bgp]router-id 5.5.5.5?
[AR5-bgp]peer 4.4.4.4 as-number 200? 共同体4.4.4.4as号为200?
[AR5-bgp]peer 4.4.4.4 connect-interface loopback 0?以回环口和邻居建立关系
[AR5-bgp]peer 4.4.4.4 ebgp-max-hop 2?配置ebgp最大跳数
[AR5-bgp]peer 6.6.6.6 as-number 300 共同体6.6.6.6as号300
[AR5-bgp]peer 6.6.6.6 connect-interface loopback 0?以回环口和邻居建立关系?
[AR5-bgp]peer 6.6.6.6 next-hop-local?保证IBGP下一跳可达
[AR5-bgp]peer 7.7.7.7 as-number 300 共同体7.7.7.7as号300
[AR5-bgp]peer 7.7.7.7 connect-interface loopback 0?以回环口和邻居建立关系
[AR5-bgp]peer 7.7.7.7 next-hop-local ?保证IBGP下一跳可达
[AR5-bgp]quit

AR6BGP配置:
[AR6]bgp 300
[AR6-bgp]router-id 6.6.6.6
[AR6-bgp]peer 4.4.4.4 as-number 200
[AR6-bgp]peer 4.4.4.4 connect-interface loopback 0
[AR6-bgp]peer 4.4.4.4 ebgp-max-hop 2
[AR6-bgp]peer 5.5.5.5 as-number 300
[AR6-bgp]peer 5.5.5.5 connect-interface loopback 0
[AR6-bgp]peer 5.5.5.5 next-hop-local?
[AR6-bgp]peer 7.7.7.7 as-number 300
[AR6-bgp]peer 7.7.7.7 connect-interface loopback 0
[AR6-bgp]peer 7.7.7.7 next-hop-local?
[AR6-bgp]quit

AR7BGP配置:
[AR7]bgp 300 创建BGP AS号为300
[AR7-bgp]peer 5.5.5.5 as-number 300 共同体5.5.5.5 AS号为 300
[AR7-bgp]peer 5.5.5.5 connect-interface loopback 0 以回环口和邻居建立关系
[AR7-bgp]peer 6.6.6.6 as-number 300 共同体6.6.6.6 AS号为300
[AR7-bgp]peer 6.6.6.6 connect-interface loopback 0?以回环口和邻居建立关系
[AR7-bgp]network 70.0.0.0 24 宣告工作的网络
[AR7-bgp]network 70.0.1.0 24 宣告工作的网络
[AR7-bgp]network 70.0.2.0 24 宣告工作的网络
[AR7-bgp]quit

通过在AR2 和AR5配置属性
[AR2]acl 2000 创建ACL 抓取流量
[AR2-acl-basic-2000]rule permit source 101.0.0.0 0.0.0.255
[AR2-acl-basic-2000]rule permit source 101.0.1.0 0.0.0.255
[AR2-acl-basic-2000]quit
[AR2]acl 2002 创建ACL抓取流量
[AR2-acl-basic-2002]rule permit source 101.0.2.0 0.0.0.255
[AR2-acl-basic-2002]quit
[AR2]route-policy as-path permit node 10 创建路由策略列表号10
[AR2-route-policy]if-match acl 2000? 当匹配acl2000
[AR2-route-policy]apply as-path 200 300 additive 添加 AS号200 和300
[AR2-route-policy]quit
[AR2]route-policy as-path permit node 11. 列表11
[AR2-route-policy]if-match acl 2002 单匹配 acl2002
[AR2-route-policy]apply cost 60 添加med值为60
[AR2-route-policy]quit
[AR2]route-policy as-path permit node 20 制作白名单
[AR2-route-policy]bgp 200
[AR2-bgp]peer 4.4.4.4 route-policy as-path export 应用在出方向
[AR2-bgp]

[AR5]acl 2000? 抓取流量
[AR5-acl-basic-2000]rule permit source 101.0.0.0 0.0.0.255
[AR5-acl-basic-2000]rule permit source 101.0.1.0 0.0.0.255
[AR5-acl-basic-2000]rule permit source 101.0.2.0 0.0.0.255
[AR5-acl-basic-2000]quit
[AR5]route-policy local permit node ?10? 创建路由策略,列表10
[AR5-route-policy]if-match acl 2000 当匹配ACL2000
[AR5-route-policy]apply local-preference 40? 更改local-preference为 40 默认为100越高优先级越高
[AR5-route-policy]quit
[AR5]route-policy local permit node ?20 制作白名单
[AR5-route-policy]bgp 300
[AR5-bgp]peer 7.7.7.7 route-policy local export 应用在出方向

测试:

?

?

BGP应用TCP179端口号需要保证网络可达才能建立共同体关系。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章           查看所有文章
加:2021-11-30 15:58:44  更:2021-11-30 16:01:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年7日历 -2024/7/6 8:34:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码