BGP 技术详解:邻居、报文、状态与路由全解析
创作时间:
作者:
@小白创作中心
BGP 技术详解:邻居、报文、状态与路由全解析
引用
CSDN
1.
https://blog.csdn.net/m0_74172897/article/details/146773446
目录
BGP邻居
BGP报文
Open关键报文
BGP工作原理
BGP状态
BGP路由
产生方式
得到BGP路由
BGP路由通告原则
BGP的防环机制
BGP同步
BGP下一跳属性
路由黑洞
BGP选路属性
协议首选值(PrefVal)
本地优先级(Local-pref)
修改方式
优选本地生成的路由
优选AS路径(AS_Path)最短的路由
Origin(起源属性)
OSPF,IS-IS,BGP概念区分
BGP邻居
IBGP:邻居的AS号和自身的AS号相同,建立的BGP邻居叫IBGP邻居 默认TTL为255
EBGP:邻居的AS号和自身的AS号不同,建立的BGP邻居叫做EBGP邻居默认TTL为1
BGP报文
- Open报文
- 协商BGP参数
- Update报文
- 交换路由信息
- Keepalive报文
- 保持邻居关系
- Notification报文
- 差错通知
- Route-Refresh报文
- 用于在改变路由策略后请求对等体重新发送路由信息
Open关键报文
- My AS:用于标识自身所处的AS,邻居的open报文中My AS要和本地配置的一致。
- Version:用于标识当前的BGP版本,向下兼容。 BGP4
- Hold Time:默认为180s,即keeplive时间的3倍,双方不一致将会协商使用一个小的。
- Router ID:用于标识自身的BGP Router ID,不能和邻居冲突。
- 认证:认证需要通过
- 地址簇必须要有一种协商成功。(IPv4 单播 IPv4 组播 不能成功 IP四单播 IP四单播 可以成功)
- 默认情况下在华为设备携带了3中可协商能力:1、IPV4单播路由功能 2、路由刷新能力 3、4字节AS号支持能力
BGP工作原理
BGP状态
- Idle状态是BGP初始状态。在Idle状态下,BGP拒绝邻居发送的连接请求。也不会想邻居发送TCP syn,只有32s之才会向邻居发送TCP syn 并且将邻居转为connect状态。
- 卡在idle状态的原因:本地没有去往邻居的路由。
- 在connect状态下,BGP启动连接重传定时器(connect。Retry),等待TCP完成连接
- 如果TCP连接成功,那么BGP向对等体发送open报文,并转至opensent状态。
- 如果TCP连接失败,那么BGP转至Active状态。(邻居开BGP了 但是没配邻居)
- 如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其它BGP对等体进行TCP连接,停留在connect状态。
- 常见卡在connect状态的原因:
- 邻居没有启用BGP协议
- 沿途路径存在流量过滤将TCP SYN拒绝了
- EBGP邻居建立没有配置多跳。
- 在Active状态下,BGP总是在试图建立ICP连接。
- 如果TCP连接成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转至opensent状态
- 如果TCP连接失败,那么BGP停留在Active状态。
- 如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至connect状态。
- opensent状态下,BGP等待对等体的open报文,并对收到的0pen报文中的AS号、版本号、认证码等进行检查。
- 如果收到的open报文正确,那么BGP发送Keepalive报文,并转至openconfirm状态。
- 如果发现收到的open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态。
- 在Established状态下,BGP可以和对等体交换Update、Keepalive、Route-refresh报文和Notification报文
- 如果收到正确的Update或Keepalne报文,那么BGP就认为对端处于正常运行状态,将保持BGP连接。
- 如果收到错误的Update或Keepalive报文,那么BGP发送Notification报文通知对端,并转至ldle状态
- Route-refresh报文不会改变BGP状态。
- 如果收到Notification报文,那么BGP转至ldle状态
- 如果收到TCP拆链通知,那么BGP断开连接,转至ldle状态。
BGP路由
产生方式
- 通过network的方式,将本地路由中的路由发布出去。
- 通过import-route的方式,将其他协议的路由引入到BGP协议中。
- 通过手动聚合的方式,产生一条聚合路由(汇总)
- 通过自动聚合的方式,产生一条聚合路由。
得到BGP路由
- IBGP邻居给我传递
- EBGP邻居给我传递
- 自身产生BGP路由
BGP路由通告原则
BGP只会将有效路由中的最优的BGP路由通告给邻居。
*** -valid 有效 > - best 最优**
- 自身产生的BGP路由通告给所有的BGP邻居。
- 从IBGP邻居收到的路由,不会传递给IBGP邻居。(防环)
- 从IBGP邻居收到的路由,会传递给EBGP邻居
- 从EBGP邻居收到的路由,会传递给IBGP邻居
- 从EBGP邻居收到的路由,会传递给EBGP邻居
- [AR2-bgp] peer 4.4.4.4 next-hop-local //从EBGP邻居接受的路由,发送给IBGP邻居的时候修改下一跳地址。
- @只需要在AS的边界设备上,针对本AS内的IBGP邻居配置。
BGP的防环机制
- AS内的防环使用IBGP水平分割机制(只传一跳),即从IBGP邻居收到的路由不会传递给另一个IBGP邻居
- AS之间的防环原则:利用了BGP的路由属性,即BGP将路由发送给EBGP邻居的时候会将自身的AS号添加到as-path列表中;并且规定,从EBGP邻居收到的路由如果携带自身AS号 则不接受该路由
BGP同步
BGP下一跳属性
- 自身产生的路由发送给所有BGP邻居的时候,下一跳自动修改。
- 从EBGP邻居接受的路由发送给IBGP邻居的时候,下一跳不会自动修改。
- 从EBGP邻居接受的路由发送给EBGP邻居的时候,下一跳自动修改。
- 从IBGP邻居接受的路由发送给EBGP邻居的时候,下一跳自动修改。
- 从IBGP邻居接受的路由不存在发送给IBGP邻居的情况(防环)
自动修改,指的是将路由传递给该邻居的时候,下一跳修改为自身与该其建立邻居的接口IP。
路由黑洞
- BGP同步:用于防止BGP路由黑洞问题。
- BGP同步机制:即从IBGP邻居接受的路由,需要在IGP表中存在,才会发送给EBGP邻居如果IGP表中不存在,则不会发送给EBGP邻居。
- 为什么不使用BGP同步解决路由黑洞问题呢?
1、BGP同步并不能完全解决路由黑洞问题。
2、出现了更好的解决方案: - AS内部采用全互联的IBGP邻居架构,让所有路由器都运行BGP协议,从而使每台路由器都能够学到BGP路防止黑洞产生。
- 在ASBR上将BGP路由引入到IGP协议中。(该方法已被淘汰)
- 在ASBR之间建立GRE隧道,解决路由黑洞问题。(节约成本)
- 通过LSP隧道解决路由黑洞问题。
BGP选路属性
- 如果此路由的下一跳不可达,忽略此路
- 由优选协议首选值(PrefVal)最高的路由
- 优选本地优先级(LocalPref)最高的路由
- 优选本地生成的路由
- 优选AS路径(AS_Path)最短的路由
- 比较Origin属性,依次优选Origin类型为IGP、EGP、Incomplete的路由
- 优选MED值最低的路由
- 优选从EBGP邻居学来的路由(EBGP路由优先级高于IBGP路由)
- 优选到BGP下一跳IGP Metric较小的路由
- 优选Cluster_List最短的路由
- 起源ID
- 优选RouterID最小的路由器发布的路由
- 比较对等体的IP Address,优选从具有较小IP Address的对等体学来的路由
协议首选值(PrefVal)
- 华为BGP私有属性
- 只在本地有效,不会传递给任何的BGP邻居
- 默认等于0
- BGP的选路属性
- 越大越优
- 针对发送给邻居的BGP路由,无法修改协议协议首选值,因为报文中并不携带
- 针对接受BGP邻居的路由,才可修改协议首选值。
- 当不想影响其他设备的选路,只针对单台设备的选路进行控制的时候,建议使用协议首选值。
本地优先级(Local-pref)
- 公认任意属性
- 只在一个AS内部进行传递,不会传递给EBGP邻居。
- 用于BGP路由的路径选择(默认100,越大越优先。)
- 应用在AS内存在多个出口的时候选择一个出口访问外部网络
- EBGP路由不携带本地优先级属性,对于不携带本地优先级属性的BGP路由,设备将会认为这个BGP路由的本地优先级为默认本地优先级(默认的本地优先级为100)
修改方式
- 针对接受或者发送给BGP邻居的路由进行修改(Route-policy)
- EBGP邻居之间out方向不可以修改 (图AR2上 写路由策略的方向)
- EBGP邻居之间in方向可以修改
- IBGP邻居之间in,out方向可以修改
- 修改默认的本地优先级
- [AR2-bgp]default local-preference //修改默认的本地优先级。
- 关键点:在只会在对没有本地优先级属性的路由生效
- 哪些BGP路由没有本地优先级
- 自身产生的:network和import-route指令变成的BGP路由没有本地优先级。
- 邻居传递的:EBGP邻居传递的路由默认没有本地优先级。
优选本地生成的路由
- 手动聚合>自动聚合>etwork>import-route>邻居传递的
- 当下一跳等于127.0.0.1(手动聚合,自动聚合)或者0.0.0.0(network,import-route)的时候,路由即为本地产生的。
优选AS路径(AS_Path)最短的路由
- 公认必遵属性
- 用于AS之间的防环属性
- 用于BGP路由的路径选择。
AS之间防环:
- BGP设备将路由发送给EBGP邻居的时候,将会在路由的as-path属性中添加自身的AS号
- BGP设备从EBGP邻居接受路由的时候,将会检查路由的AS-PATH属性列表,如果存在自身的AS号,那么将忽略这条BGP路由。
- IBGP邻居之间不会做AS-PATH的防环检测。
- 路径选择:当存在去往同一个目的地的多条BGP路由时,比较两条路由的AS-PATH列表,越短越优。
- 修改方式:AS-path在任何BGP邻居之间的in/out方向都可以进行修改。
- @apply as-path 100 100 additive //在原有的As-path列表中添加新的AS号,
- @apply as-path 100 100 overwrite //使用指定的AS-path覆盖原有的as-path
- @apply as-path none overwrite //清空原有的as-path列表。
Origin(起源属性)
- 公认必遵属性
- 描述了这条路由是如何成为BGP路由的
- 用于BGP路径选择
- i:表明该路由是通过network的方式变成的BGP路由。
- ?:表明该路由是通过import-route的方式变成BGP路由。
- e:表明是从EGP协议学到的该路由。
- 选路规则:i > e > ?
MED
- 可选非过渡属性
- 用于BGP路由的路径选择(越小越优)
- 如果报文中不携带MED值,默认认为MED为0.
MED的修改方式:
- 在所有BGP邻居之间 in/out方向均可修改。
MED选路方式:
- @默认情况下,只有当两条BGP路由as-path列表中,最左边的AS号相同的时候,才会进行MED的比较
- @compare-different-as-med //命令用来配置允许比较来自不同自治系统中的邻居的路由的MED值
如何产生MED呢:
当一条路由变为BGP路由的时候,这个路由在IP路由表中的Cost为多少,那么变为BGP路由之后MED为多少。
华为MED通告原则:
- 自身始发的路由,MED会通告为IBGP和EBGP邻居。
- 从IBGP邻居接受的路由,传递给EBGP邻居的时候,不携带MED值
- 从EBGP邻居接受的路由,传递给IBGP邻居的时候,携 带 MED值。
- 从EBGP邻居从EBGP邻居接受的路由传递给EBGP邻居的时候,不携带MED
OSPF,IS-IS,BGP概念区分
概念 \ 协议 | OSPF | IS-IS | BGP |
---|---|---|---|
区域相关 | 区域是将自治系统划分的不同部分,每个区域有独立链路状态数据库,通过 ABR 实现区域间通信 | 区域用于划分网络,减少链路状态信息传播范围和处理复杂度 | 自治系统(AS)是由一个或多个网络运营商或组织管理的一组路由器和网络,具有唯一的自治系统编号(ASN),是 BGP 路由信息交换的基本单位 |
边界路由器 | ABR(区域边界路由器)连接同一个自治系统内的不同区域,负责区域间路由信息传递和汇总ASBR(自治系统边界路由器)连接 OSPF 自治系统与其他自治系统,引入外部路由并通告内部路由到其他自治系统 | Level-1/2 路由器兼具区域内和区域间路由功能,类似 OSPF 的 ABR,连接不同区域Level-2 路由器主要负责区域间路由,维护整个网络拓扑信息 | EBGP(外部边界网关协议)用于不同自治系统之间的 BGP 连接,交换跨自治系统的路由信息IBGP(内部边界网关协议)用于同一个自治系统内部的 BGP 连接,在自治系统内传播路由信息 |
路由信息交换单元 | 链路状态通告(LSA),用于描述网络拓扑结构和链路状态 | 链路状态协议数据单元(LSP),类似于 LSA,描述路由器连接状态和邻居关系等 | BGP 通过路径向量协议交换路由信息,携带丰富的属性来描述路由的特征和策略 |
特殊机制 | 无 | 无 | 路由反射器(RR)用于解决 IBGP 全连接问题,将从一个 IBGP 邻居学到的路由反射给其他邻居联盟(Confederation)将大型自治系统划分为多个子自治系统,简化管理和路由策略配置 |
热门推荐
读懂庄子,迈向超俗之境
洗完牙后第二天是否可以进行补牙治疗?这一问题的解答是什么?
克苏鲁神话中的旧日支配者:哈斯塔
央行新信号!存款利率有变!
妙解中医“四大虚症”:气虚无力、血虚发燥、阳虚怕冷、阴虚内热
中国何时能产出经典音乐剧?听听他们怎么说
顾炎武:思想巨匠的卓越贡献
做面包用什么面粉?哪种面粉做面包好?
《雷雨》的悲剧意蕴:社会、命运与性格的多重交织
如何实践现代家庭教育的理念与方法?
思维导图构建与运用深度剖析
赤小豆是什么东西?健康、营养、奇妙用途全揭秘!
学生思想品德综合素质评价方案
坐标如何保存到数据库
手机内存管理技巧:轻松查看和清理,提升使用体验
揭秘爱情激素:从多巴胺到催产素,爱情背后的生物学密码
中国科学家在碳纳米管研究领域取得重要突破,成果发表于Science
解码快乐密码:科学激活四种幸福激素的日常仪式
扬州古诗词中的自然美景与人文景观
中医千年名方:半夏泻心汤治疗胃病的临床应用
健康小贴士丨酸奶、蜂蜜水……还有啥解酒偏方?
解读面相:从五官的变化洞察命运轨迹
脑卒中患侧肢体沉重、僵硬是大部分偏瘫患者常见问题,如何康复?
从大疆到美的 多家知名企业“反内卷、反加班”
两艘4万吨航母,性能,远不如1艘8万吨级,到底有多大差距?
力量倍增,解放军两艘航母,全部搭载歼35,到底能有多少架?
成都至九寨沟旅行时间及交通方式耗时分析对比
真不推荐你吃纯苦荞麦面,理由不止一个
泰国旅游最佳省钱攻略,揭秘一年中哪个月份最划算出行
把好地图审查关 维护国家主权与安全