当前位置: 首页 > news >正文

BGP边界网关协议

一、BGP的概述

BGP 是一种实现自治系统(AS)之间的路由可达,并选择最佳路由的距离矢量路由协议。它是外部网关协议。

二、BGP的基础

1.BGP的特点:

(1)BGP是使用TCP作为其传输层协议(端口号为179),使用触发式路由更新,而非周期性路由更新。

(2)BGP能够承载大批量的路由信息,可以支撑大规模网络

(3)BGP能够支撑MPLS/VPN的应用,传递客户VPN路由;

(4)BGP提供了路由聚合和路由衰减功能用于防止路由震荡,同股票这两项功能有效地提高了网络稳定性。

2.BGP的特征

BGP通常被称为路径矢量路由协议

每条BGP路由都携带多种路劲属性,BGP可以通过这些路径属性控制路径选择,而不像IS-IS、OSPF只能通过cos值控制路径选择,因此在路径选择上,BGP具有丰富的可操作性,可以在不同场景下选择最适合的路径控制方式。

3.BGP的工作原理

(1)BGP的报文

BGP对等体间通过以下5种报文进行交互,其中Keepalive报文周期性发送,其余报文为触发式发送:

1)Open报文:用于建立BGP对等体连接。

2)Update报文:用于在对等体之间交换路由信息。

3)Notification报文:用于中断BGP连接。

4)Keepalive报文:用于保持BGP连接。

5)Route-refresh报文:用于在改变路由策略后请求对等体重新发送路由信息。只有支持路由刷新(Route-refresh)能力的BGP设备会发送和响应此报文。

2BGP状态机

BGP对等体的交互过程中存在6种状态机:空闲(Idle)、连接(Connect)、活跃(Active)、Open报文已发送(OpenSent)、Open报文已确认(OpenConfirm)和连接已建立(Established)。

1)Idle(空闲)状态

Idle状态是BGP初始状态。在Idle状态下,BGP拒绝邻居发送的连接请求。只有在收到本设备的Start事件后,BGP才开始尝试和其它BGP对等体进行TCP连接,并转至Connect状态。

2)Connect(连接)状态

BGP启动连接重传定时器(Connect Retry),等待TCP完成连接。

如果TCP连接成功,那么BGP向对等体发送Open报文,并转至OpenSent状态;如果TCP连接失败,那么BGP转至Active状态;如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其它BGP对等体进行TCP连接,停留在Connect状态

3)active(激活)状态

在active状态下,BGP试图建立TCP连接,如果连接成功,则向对等体发送open消息,并进行下一状态。

4)OpenSent(打开发送)状态

BGP等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查。如果收到的Open报文正确,那么BGP发送Keepalive报文,并转至OpenConfirm状态。如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态。

5)OpenConfirm(打开确认)状态

BGP等待Keepalive或Notification报文。如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态。

6)Established(已建立)状态

BGP可以和对等体交换Update、Keepalive、Route-refresh报文和Notification报文。

(3)BGP对等体之间交互原则

BGP设备将最优路由加入BGP路由表,形成BGP路由。BGP设备与对等体建立邻居关系后,采取以下交互原则:

1)从IBGP对等体获得的BGP路由,BGP设备只发布给它的EBGP对等体。

2)从EBGP对等体获得的BGP路由,BGP设备发布给它所有EBGP和IBGP对等体。

3)当存在多条到达同一目的地址的有效路由时,BGP设备只将最优路由发布给对等体。

4)路由更新时,BGP设备只发送更新的BGP路由。

5)所有对等体发送的路由,BGP设备都会接收。

(4)BGP引入IGP交互

BGP引入路由时支持Import和Network两种方式:

Import方式是按协议类型,将RIP、OSPF、ISIS等协议的路由引入到BGP路由表中。为了保证引入的IGP路由的有效性,Import方式还可以引入静态路由和直连路由。

Network方式是逐条将IP路由表中已经存在的路由引入到BGP路由表中,比Import方式更精确。

 三、BGP路径属性

路径属性分类

 

四、BGP路由反射器

1.路由反射宣告原则(1) 

2.路由反射宣告原则(2)

3.路由反射簇(cluster)

如图所示:当一个AS内存在多台RR为Client提供冗余时,RR间的路由更新很有可能会形成环路,为防止该现象,引入了Cluster的概念。

什么是簇:通过4字节的Cluster_ID来标识Cluster,通常会使用Loopback地址作为Cluster_ID。一个Cluster里可以包括一个或多个RR;一个Client可以同时属于多个Cluster。

4.路由反射环路防止机制-Originator_ID

5.路由反射环路防止机制-Cluster_List

 

五、BGP选路原则

当到达同一个目的网段存在多条路由时,BGP通过如下的次序进行路由优选:

丢弃下一跳不可达的路由

【1】优选Preferred-Value属性值最大的路由

【2】优选Local Preference属性值最大的路由。

【3】本地始发的BGP路由优于从其他对等体学习到的路由,本地始发的路由优先级:优选手动聚合>自动聚合>network>import>从对等体学到的。

【4】优选AS Path属性值最短的路由。

【5】优选Origin属性最优的路由。Origin属性值按优先级从高到低的排列是:IGP、EGP及Incomplete。

【6】优选MED属性值最小的路由。

【7】优选从EBGP对等体学来的路由(EBGP路由优先级高于IBGP路由)。

【8】优选到Next Hop的IGP度量值最小的路由。

【9】优选Cluster List最短的路由。

【10】优选RouterID(Orginator ID)最小的设备通告的路由。

【11】优选具有最小IP地址的对等体通告的路由。

总结以上规律就会发现,【1】和【2】取值越大越优,其余的取值越小越优。

注意:前八条属性全部相同时可形成路由负载分担

六、BGP路由聚合概述

BGP在AS之间传递路由信息,随着AS数量的增多,单个AS规模的扩大,BGP路由表将变得十分庞大,因此带来如下两类问题:

存储路由表将占用大量的内存资源,传输和处理路由信息需要消耗大量的带宽资源;

如果传输的路由条目出现频繁的更新和撤销,对网络的稳定性会造成影响。

 七、BGP的简单实验拓扑(配置IBGP和EBGP)

实验要求:

1.基本的配置

2.配置IGP(R1与R2运行OSPF协议)

3.配置IBGP和配置EBGP

4.查看TCP连接和查看对等体的状态

5.在R3上用network宣告的方式产生一条BGP路由、在R1上引入的方式产生一条BGP路由

6.在R1上查看路由表和配置下一跳本地 配置后再次查看路由表

7. 查看R2的BGP路由表//

实验步骤:

1、基本的配置

[AR1]int g0/0/0

[AR1-GigabitEthernet0/0/0]ip add 12.1.1.1 24

[AR1-GigabitEthernet0/0/0]q

[AR1]int LoopBack 0

[AR1-LoopBack0]ip add 1.1.1.1 32

[AR1-LoopBack0]q

[AR2]int g0/0/1

[AR2-GigabitEthernet0/0/1]ip add 12.1.1.2 24

[AR2-GigabitEthernet0/0/1]q

[AR2]int g0/0/0

[AR2-GigabitEthernet0/0/0]ip add 23.1.1.2 24

[AR2-GigabitEthernet0/0/0]q

[AR2]int LoopBack 0

[AR2-LoopBack0]ip add 2.2.2.2 32

[AR2-LoopBack0]q

[AR3]int g0/0/1

[AR3-GigabitEthernet0/0/1]ip add 23.1.1.3 24

[AR3-GigabitEthernet0/0/1]q

[AR3]int LoopBack 0

[AR3-LoopBack0]ip add 3.3.3.3 32

[AR3-LoopBack0]q

2、配置IGP(AR1和AR2运行OSPF)

[AR1]ospf router-id 1.1.1.1

[AR1-ospf-1]area 0

[AR1-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255

[AR1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0

[AR1-ospf-1-area-0.0.0.0]q

[AR1-ospf-1]q

[AR2]ospf router-id 2.2.2.2

[AR2-ospf-1]area 0

[AR2-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255

[AR2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0

[AR2-ospf-1-area-0.0.0.0]q

[AR2-ospf-1]q

3、配置IBGP

[AR1]bgp 100 //启动BGP进程,进程号为100

[AR1-bgp]undo synchronization //关闭同步,默认配置

[AR1-bgp]undo summary automatic //关闭自由汇总

[AR1-bgp]router-id 1.1.1.1 //设置BGP的route-id

[AR1-bgp]peer 2.2.2.2 as-number 100 //指定邻居和邻居AS号

[AR1-bgp]peer 2.2.2.2 connect-interface loopBack 0 //用环回口创建邻居

[AR1-bgp]q

[AR2]bgp 100

[AR2-bgp]undo synchronization

[AR2-bgp]undo summary automatic

[AR2-bgp]router-id 2.2.2.2

[AR2-bgp]peer 1.1.1.1 as-number 100

[AR2-bgp]peer 1.1.1.1 connect-interface LoopBack 0

[AR2-bgp]q

4、配置EBGP

[AR2]bgp 100

[AR2-bgp]peer 23.1.1.3 as-number 200 //EBGP用直连接口创建邻居

[AR2-bgp]q

[AR3]bgp 200

[AR3-bgp]undo synchronization

[AR3-bgp]undo summary automatic

[AR3-bgp]peer 23.1.1.2 as-number 100

[AR3-bgp]q

 5、查看TCP的连接情况

可以看到TCP是连接成功的

6、查看对等体的状态

7、产生BGP路由

[AR3]bgp 200

[AR3-bgp]network 3.3.3.3 32

[AR3-bgp]q

[AR1]bgp 100

[AR1-bgp]import-route ospf 1

[AR1-bgp]q

8、在AR1上查看路由表

*:代表路由条目有效;

>:代表路由条目最优,可以被传递。只有下一条可达路由才会最优

i:代表路由是从IBGP学习到的

可以看到3.3.3.3不是最优的,如果不优就不会再加载进全局路由表,也不会传递给其它路由器,本例不优的原因为下一条不可达,用以下方法

[AR2]bgp 100

[AR2-bgp]peer 1.1.1.1 next-hop-local //配置下一条为本地

[AR2-bgp]q

再次查看AR1的路由表

扩展:什么情况下采用next-hop-local命令?

对从EBGP邻居收到的路由,在传递给IBGP邻居时,修改下一条地址为本地的connect-interface。

9.查看AR2的BGP了路由表

可以看到1.1.1.1这条路由虽然下一条可达,但不是有效和最优的,其原因是为如果IGP路由表里宣告了这条路由,然后再在IBGP里面宣告,路由只能本地有效,二不会传递给邻居。

 

相关文章:

  • 绍兴网站建设服务天津百度网站快速优化
  • 巴音郭楞库尔勒网站建设seo优化怎么做
  • 分销系统价格多少seo优化工作内容
  • 市网站建设手机上如何制作自己的网站
  • 网站建设 天猫 保证金互联网舆情
  • 贵港做网站建设价格费用seo项目培训
  • 深度图聚类DGC—Paper Notes
  • Windows所有系统自带.NET Framework版本win7,win10,win11预装.NET版本
  • CommunityToolkit.Mvvm 重构激光直写控制软件
  • Jenkins 常用定时构建脚本
  • 电商导购app平台的缓存策略与性能优化方案:架构师的实践经验
  • 将Python Tkinter程序转换为手机可运行的Web应用 - 详细教程
  • 激光束修复手机屏任意层不良区域,实现液晶线路激光修复原理
  • wordpress Contact Form 7表单插件设置使用教程
  • Hoare逻辑与分离逻辑:从程序验证到内存推理的演进
  • 智能光学计算成像技术与应用
  • 鸿蒙Next仓颉开发语言中的数据类型总结分享
  • 初识Tomcat
  • 6、做中学 | 三年级下期 Golang值类型相互转换
  • 好用的图标库和字体库
  • 《中国电信运营商骨干网:历史、现状与未来演进》系列 第五篇:新玩家入局——中国广电CBNNET如何构建全国一张网?
  • 在pypi中,yank某个包是什么意思
  • docker start mysql失败,解决方案
  • Python DuckDB 详解:轻量级分析型数据库的革新实践
  • React ref 和 JS 对象的区别
  • nohup选项对jenkins web连接稳定行影响分析总结