BGP协议基础_bgp hold time不一致协商-程序员宅基地

技术标签: 笔记  java  网工学习  

BGP 边界网关路由协议
边界:AS的边界
AS:同一个技术管理机构管理,如企业,ISP
IGP:AS内部网关路由协议,实现AS内部的互联互通,如OSPF、ISIS
BGP:AS互联互通的一种路由协议


AS号:取值范围1-65535
64512-65535,私有AS号,用于大型企业内部进行AS的规划
1-64511,公有AS号,需要为用户/企业提供互联网接入服务的时候分配
AS号老的长度:2个字节,16bit
AS号新的长度:4个字节,32bit


IGP:直连邻居之间传递路由信息,逐跳(逐路由器)的传递路由
BGP:是一种工作在应用层的路由协议,只要BGP邻居能够建立,那么就能在邻居之间传递路由信息

BGP的路由属性是人为设计的,是对BGP路由的进一步描述
作用:实现BGP路由的控制,如选路,防环,管理

BGP是一种基于TCP协议的应用层路由协议,所以邻居关系不会自动建立,需要手动配置
BGP采用单播通信,目的IP是事先知道的
BGP使用TCP 179端口号进行工作

BGP协议不产生路由,只是用来传递路由的
BGP只会传输自己正在使用的路由
BGP是一个路径矢量路由协议,并且是一个无环路径:AS内部采用水平分割机制防环,AS之间采用AS-Path防环


80 http
23 telnet
21 ftp
25 smtp
110 pop3
22 ssh


EBGP邻居配置流程
1、通过直连物理接口配置EBGP邻居
peer 10.0.12.2 as-number 2
指定的邻居地址为本端向该邻居发送BGP报文的目的地址,源地址默认情况下为去往改邻居地址路由的出接口IP地址

2、通过Loopback接口配置EBGP邻居
peer 1.1.1.1 as-number 1
peer 1.1.1.1 connect-interface Loopback 0
指定向邻居发送BGP报文的源地址为Loopbak 0接口的IP地址
peer 1.1.1.1 ebgp-max-hop 10
当EBGP邻居之间存在多跳时,指定EBGP邻居发送BGP报文的TTL值,仅在EBGP邻居之间使用,IBGP邻居默认TTL=1


IPv4 单播地址族
IPv6 单播地址族
VPNv4 单播地址族


BGP报文类型
所有BGP报文都有一个相同格式的头部,长度19字节,参数如下:

标记:保留字段,用于协议兼容性
长度:描述该BGP报文的长度(字节数)
类型:描述BGP报文的类型,常见的BGP报文类型与该字段对应关系如下:1-----Open报文;2-------Update报文;3--------Notification报文;4------Keepalive报文

Open报文:邻居建立和能力参数的协商,至少地址族能力要一致
Open报文参数如下:
版本号:描述BGP协议的版本号,对于BGPv4来说,该字段的值为4
AS号:描述BGP报文发送方所处AS的号码
保活时间:描述在多长时间(以秒为单位)内必须收到对方的Keepalive报文或Update报文,否则将该邻居视为无效
路由器标识符:描述BGP路由器的route-id,长度为32bit
可选参数长度:描述BGP报文中可选参数字段的长度(字节数)
可选参数:Open报文中可以包含多个可选参数,每个参数使用类型Type、长度Length以及值Value的三元组格式来描述。在Open报文 中,可选参数主要被用于宣告及协商BGP邻居的某些能力特性

1、邻居参数协商
自身AS号:要和邻居只当的AS号一致,否则邻居无法建立
BGP router id:不能冲突,否则邻居无法建立
Hold time:邻居失效时间,默认180s,如果不一致,则协商使用小的
BGP version:默认运行BGPv4,一般不存在版本不同的情况

2、BGP邻居能力的协商
地址族协商一致:不一致邻居无法建立,默认使用IPv4单播地址族
路由刷新能力:即手动触发更新能力
是否支持4字节AS号能力

双方都开始发送OPEN报文,然后进行一些参数的协商,主要是hold-time,如果双方不同,则选择一个小的hold-time;keepalive interval默认是hold-time时间的1/3;另外协商的参数还包括版本号,AS号,BGP路由器的ID以及其他可选参数

Keepalive报文:
BGP并不依赖TCP的保活机制,而是周期性的发送Keepalive报文来了解邻居的存活状况。默认每隔60s周期性发送,如果180s没有收到keepalive报文,则认为BGP邻居失效,断开TCP连接

如果可以接收OPEN报文中的参数,则发送Keepalive报文,用于对对方发送的OPEN报文的确认,此时意味着BGP邻居关系正式建立;然后开始发送Update报文;以后还要周期性的发送Keepalive报文,一 维持邻居关系

Update报文:用于BGP路由的传递以及撤销。第一次建立邻居后,邻居双方开始交换整个BGP表,后期只做触发式的增量更新
Update报文参数如下:

撤销路由的长度:Update报文中可以包含0条、1条或者多条准备撤销的BGP路由,该字段是一个无符号整数,它描述了Update报文中所包含的“撤销的路由条目”字段的长度
撤销路由条目:该字段用于描述需要被撤销的BGP路由前缀,如果有多条BGP路由需要使用这个Update报文来撤销,则该字段将包含一个BGP路由前缀的列表,每条BGP路由包含两元:前缀长度,路由前缀
总路径属性长度:描述Update报文中路径属性的总长度
路径属性:当BGP路由器使用Update报文向邻居通告BGP路由时,该报文中就包含着路径属性字段。BGP定义了丰富的路径属性类型
网络层科可达信息:该字段描述了需要被被通告的BGP路由前缀,如果有多条BGP路由需要通告,则该字段将包含一个BGP路由前缀的列表,每条BGP路由包含两元:前缀长度,路由前缀,当然,一个Update报文用于通告给你搞拥有相同路径属性的路由前缀

Route-refresh报文:用于手动进行BGP路由的出发更新,或用于ORF功能

Notification报文:通知报文,用于报错,收到该报文只有一个结果,就是断开TCP连接
报文参数:

错误代码:该字段是一个无符号整数,描述错误的类型
错误子代码:在错误代码的基础上进一步指示错误的类型
数据:该字段用于描述错误的原因

BGP状态机
Idle(空闲):Idle是BGP连接的第一个状态,即空闲状态,此时BGP在等待一个启动事件,当启动事件出现后,BGP开始初始化资源,复位连接重试器Connect-Retry,并发起一条TCP连接,同时转入Connect(连接)状态。路由器开始在由表中搜索去往邻居指定的IP 地址的路由,看是否有前往该地址的路由,如果没有明细路由,则邻居状态会一直处于
opensent:代表已经发送open报文,并等待接收邻居的open报文
opencofirm:代表收到邻居的open报文,并发送keepalive报文,等待接收邻居的keepalive报文
established:收到keepalive报文

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


BGP协议产生路由的方式
1、network
@BGP协议的network命令不具备将接口加入到BGP进程的功能
@network就是将路由表中的路由引入到BGP表,并通告给邻居

2、import-route
将路由表的路由引入到BGP中,高效快捷


BGP协议特点:
1、BGP不对路由进行计算
2、BGP只是路由的搬运工


BGP发布路由的逻辑:
你想要别人能够访问某条路由,那么你就需要把这条路由发布出去


BGP传递路由规则
1、仅传递最优路由
2、从EBGP邻居得到的路由可以传递给所有邻居(EBGP邻居、IBGP邻居)
3、从IBGP邻居得到的路由不传递给IBGP邻居
4、从IBGP邻居得到的路由只有当同步检测通过后,才能传递给EBGP邻居(华为设备无此规则,因为默认关闭了同步功能)
5、如果同步功能关闭,从IBGP得到的路由只要下一步可达并最优即可传递给EBGP邻居

注:BGP路由同步功能,仅仅是BGP路由黑洞的检测机制,并不能解决BGP黑洞问题

undo synchronization
华为设备默认关闭同步功能,且不可开启


如何解决BGP路由黑洞问题
@将EBGP路由引入到IGP协议中。比较消耗设备资源,因为BGP路由数量过于庞大,引入到IGP协议,增加了IGP协议计算路由的负担。可能导致BGP路由震荡,IGP路由也会产生震荡
@AS内部所有路由器均运行BGP协议,即IBGP全互联,主流架构,此时不再需要同步检测

总结:只要能解决BGP路由黑洞问题,BGP同步检查功能,开启和关闭就不再重要了


BGP防环机制
1、AS内部防环:IBGP水平分割,通过IBGP邻居得到的路由不会再传递给IBGP邻居


BGP路由传递给EBGP邻居时,下一跳自动修改为向该EBGP邻居发送BGP报文的源地址

从EBGP邻居传来的路由传递给IBGP邻居时,下一跳默认保持不变,这可能导致下一跳不可达大的问题
解决方法:(IBGP邻居配置三步骤)
peer 4.4.4.4 as-number 234
peer 4.4.4.4 connect-interface Loopback 0

peer 4.4.4.4 next-hop-local
该命令仅对IBGP邻居生效,将从EBGP邻居得到的路由传递给指定的IBGP邻居时,下一跳修改为自身向该IBGP邻居发送BGP报文的源地址

    • valid:有效的BGP路由,即下一跳可达的路由

refresh bgp all export
向所有BGP邻居手动触发路由更新


产生BGP路由的方式:
1、network
2、import-route


BGP路由属性的分类
1、公认:所有运行BGP协议的路由都能理解的属性
2、可选:厂家开发的某些满足特殊需求的属性,但并不是所有运行BGP协议的路由器都理解的属性


BGP路由的起源属性有三种
i 表明BGP路由时由network命令发布的
? 即incomplete,表明BGP路由时由import-route发布的
e 表明BGP路由时EGP协议引入的,EGP协议目前已经全面退出网络

起源属性可以被修改,一般起源属性时一种BGP选路属性,可以用于BGP路径的选路,通过修改起源属性可以控制BGP路径
优先级:i > e > ?


AS_PATH作用
1、选路,经过AS数量少的路径最优
2、防环,在AS之间实现BGP环路的防范(AS内部使用IBGP的水平分割实现防环)。从EBGP邻居得到路由时,检查该路由的AS_PATH属性,如果AS_PATH中存在自身的AS号,则丢弃该路由。
@当BGP路由传递给EBGP邻居时,会将自己的AS号添加到AS_PATH属性的最前面
@当BGP路由传递给IBGP邻居时,不会添加自己的AS号
3、防环检测机制
EBGP邻居之间进行AS_PATH检查,IBGP邻居之间不做AS_PATH检测
在这里插入图片描述

BGP团体属性
@限制BGP路由得分传递范围
@给BGP路由添加标记,方便管理
不同于IGP TAG,TAG只能打一个,管理能力优先,不能多维度的标识路由

BGP路由可以拥有多个团体属性,根据管理需求,业务需求等灵活进行路由管理

Internet:缺省属性,所有路由都属于Internet,此属性的路由可以通告给你所有BGP邻居
No_Export:收到此属性的路由后,不讲该路由发布到其他AS
No_Advertise:收到此属性的路由后,不将该路由通告给任何其他的BGP邻居
No_Export_Subconfed:在联盟中使用,仅在成员AS内传递

当路由存在多个公认团体属性时,传递范围最小的生效


BGP路由优选yuanze
一般来说,BGP计算优先级的规则如下:
1、丢弃下一跳不可达的路由
2、优选协议首选值(Preference Value)最高的路由(私有属性,仅本地有效)
3、优选本地优先级(Local Preference)最高的路由
4、优选手动聚合>自动聚合>network>import>从对等体学到的
5、优选AS_Path短的路由
6、起源类型IGP>EGP>Incomplete
7、对于来自同一AS的路由,优先MED值小的
8、优选从EBGP学来的路由(EBGP>IBGP)
9、优选AS内部IGP的Metric最小的路由
10、优选Cluster List最短的路由
11、优选Orginator_ID最小的路由
12、优选Router_ID最小的路由器发布的路由
13、优选具有较小IP地址的邻居学来的路由


BGP网络面临的问题
1、路由数量庞大,占用内存,消耗带宽
2、BGP网络震荡,到时稳定性下降

汇总方法:
1、利用静态路由执行BGP汇总
@并不是真正意义上的BGP路由汇总,只是利用BGP发布路由的特点来实现汇总的效果
@明细路由并不会被抑制,还是会正常的通告给邻居,需要做明细路由的过滤
@会丢失明细路由的某些BGP路由属性,存在路由环路的风险
@明细路由是否存在和汇总路由之间不存在依赖关系,导致汇总路由不能真正反映网络的现状

2、BGP自动汇总,一般不用
@仅对自身通过import-route命令发布的路由生效
@只能汇总成主类网络号
@明细路由会被抑制

3、BGP手动汇总,主流方式
@只要在BGP路由表中存在的路由都能被手动汇总
@可以实现精确汇总,可以支持CIDR
@可以对汇总路由的属性做编辑
@可以继承明细路由的AS_Path属性,防止环路
@明细路由全部失效,汇总路由才会失效

AS_Path 表明路由传递的AS的次序,有序的
as-set { } 无序的AS_Path,防环用的,并不表明路由传递的次序
{ } 中的AS号,只算1个AS长度

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012115895/article/details/120128024

智能推荐

Docker 快速上手学习入门教程_docker菜鸟教程-程序员宅基地

文章浏览阅读2.5w次,点赞6次,收藏50次。官方解释是,docker 容器是机器上的沙盒进程,它与主机上的所有其他进程隔离。所以容器只是操作系统中被隔离开来的一个进程,所谓的容器化,其实也只是对操作系统进行欺骗的一种语法糖。_docker菜鸟教程

电脑技巧:Windows系统原版纯净软件必备的两个网站_msdn我告诉你-程序员宅基地

文章浏览阅读5.7k次,点赞3次,收藏14次。该如何避免的,今天小编给大家推荐两个下载Windows系统官方软件的资源网站,可以杜绝软件捆绑等行为。该站提供了丰富的Windows官方技术资源,比较重要的有MSDN技术资源文档库、官方工具和资源、应用程序、开发人员工具(Visual Studio 、SQLServer等等)、系统镜像、设计人员工具等。总的来说,这两个都是非常优秀的Windows系统镜像资源站,提供了丰富的Windows系统镜像资源,并且保证了资源的纯净和安全性,有需要的朋友可以去了解一下。这个非常实用的资源网站的创建者是国内的一个网友。_msdn我告诉你

vue2封装对话框el-dialog组件_<el-dialog 封装成组件 vue2-程序员宅基地

文章浏览阅读1.2k次。vue2封装对话框el-dialog组件_

MFC 文本框换行_c++ mfc同一框内输入二行怎么换行-程序员宅基地

文章浏览阅读4.7k次,点赞5次,收藏6次。MFC 文本框换行 标签: it mfc 文本框1.将Multiline属性设置为True2.换行是使用"\r\n" (宽字符串为L"\r\n")3.如果需要编辑并且按Enter键换行,还要将 Want Return 设置为 True4.如果需要垂直滚动条的话将Vertical Scroll属性设置为True,需要水平滚动条的话将Horizontal Scroll属性设_c++ mfc同一框内输入二行怎么换行

redis-desktop-manager无法连接redis-server的解决方法_redis-server doesn't support auth command or ismis-程序员宅基地

文章浏览阅读832次。检查Linux是否是否开启所需端口,默认为6379,若未打开,将其开启:以root用户执行iptables -I INPUT -p tcp --dport 6379 -j ACCEPT如果还是未能解决,修改redis.conf,修改主机地址:bind 192.168.85.**;然后使用该配置文件,重新启动Redis服务./redis-server redis.conf..._redis-server doesn't support auth command or ismisconfigured. try

实验四 数据选择器及其应用-程序员宅基地

文章浏览阅读4.9k次。济大数电实验报告_数据选择器及其应用

随便推点

灰色预测模型matlab_MATLAB实战|基于灰色预测河南省社会消费品零售总额预测-程序员宅基地

文章浏览阅读236次。1研究内容消费在生产中占据十分重要的地位,是生产的最终目的和动力,是保持省内经济稳定快速发展的核心要素。预测河南省社会消费品零售总额,是进行宏观经济调控和消费体制改变创新的基础,是河南省内人民对美好的全面和谐社会的追求的要求,保持河南省经济稳定和可持续发展具有重要意义。本文建立灰色预测模型,利用MATLAB软件,预测出2019年~2023年河南省社会消费品零售总额预测值分别为21881...._灰色预测模型用什么软件

log4qt-程序员宅基地

文章浏览阅读1.2k次。12.4-在Qt中使用Log4Qt输出Log文件,看这一篇就足够了一、为啥要使用第三方Log库,而不用平台自带的Log库二、Log4j系列库的功能介绍与基本概念三、Log4Qt库的基本介绍四、将Log4qt组装成为一个单独模块五、使用配置文件的方式配置Log4Qt六、使用代码的方式配置Log4Qt七、在Qt工程中引入Log4Qt库模块的方法八、获取示例中的源代码一、为啥要使用第三方Log库,而不用平台自带的Log库首先要说明的是,在平时开发和调试中开发平台自带的“打印输出”已经足够了。但_log4qt

100种思维模型之全局观思维模型-67_计算机中对于全局观的-程序员宅基地

文章浏览阅读786次。全局观思维模型,一个教我们由点到线,由线到面,再由面到体,不断的放大格局去思考问题的思维模型。_计算机中对于全局观的

线程间控制之CountDownLatch和CyclicBarrier使用介绍_countdownluach于cyclicbarrier的用法-程序员宅基地

文章浏览阅读330次。一、CountDownLatch介绍CountDownLatch采用减法计算;是一个同步辅助工具类和CyclicBarrier类功能类似,允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。二、CountDownLatch俩种应用场景: 场景一:所有线程在等待开始信号(startSignal.await()),主流程发出开始信号通知,既执行startSignal.countDown()方法后;所有线程才开始执行;每个线程执行完发出做完信号,既执行do..._countdownluach于cyclicbarrier的用法

自动化监控系统Prometheus&Grafana_-自动化监控系统prometheus&grafana实战-程序员宅基地

文章浏览阅读508次。Prometheus 算是一个全能型选手,原生支持容器监控,当然监控传统应用也不是吃干饭的,所以就是容器和非容器他都支持,所有的监控系统都具备这个流程,_-自动化监控系统prometheus&grafana实战

React 组件封装之 Search 搜索_react search-程序员宅基地

文章浏览阅读4.7k次。输入关键字,可以通过键盘的搜索按钮完成搜索功能。_react search