BGP路由协议概解....
  

李龙超 7481人觉得有帮助

{{ttag.title}}
1.AS(autonomous system)自治系统(BGP一个路由器只能处于一个AS)
AS是指在一个实体管辖下的拥有相同选路策略的IP网络。BGP网络中的每个AS都被分配一个唯一的AS号,用于区分不同的AS。AS号分为2字节AS号和4字节AS号,其中2字节AS号的范围为1至65535,4字节AS号的范围为1至4294967295。支持4字节AS号的设备能够与支持2字节AS号的设备兼容。
IGP:内部网关路由选择协议:RIP、OSPF、ISIS,
EGP:外部网关路由选择协议
BGP边界网关协议BGP(Border Gateway Protocol)是一种实现自治系统AS(Autonomous System)之间的路由可达,并选择最佳路由的距离矢量路由协议。
不同于最初的EGP,BGP能够进行路由优选、避免路由环路、更高效率的传递路由和维护大量的路由信息。
虽然BGP用于在AS之间传递路由信息,但并不是所有AS之间传递路由信息都需要运行BGP。比如在数据中心上行的连入Internet的出口上,为了避免Internet海量路由对数据中心内部网络的影响,设备采用静态路由代替BGP与外部网络通信。
优点
BGP从多方面保证了网络的安全性、灵活性、稳定性、可靠性和高效性:
• BGP采用认证和GTSM的方式,保证了网络的安全性。
• BGP提供了丰富的路由策略,能够灵活的进行路由选路,并且能指导邻居按策略发布路由。
• BGP提供了路由聚合和路由衰减功能用于防止路由振荡,有效提高了网络的稳定性。
• BGP使用TCP作为其传输层协议(端口号为179),并支持BGP与BFD联动、BGP Tracking和BGP GR和NSR,提高了网络的可靠性。
• 在邻居数目多、路由量大且大部分邻居具有相同出口策略的场景下,BGP使用按组打包技术极大的提高了BGP打包发包性能。
2.BGP特点:
BGP可以跨越多跳路由器建立邻居关系(基于TCP)。可以在BGP路由中携带丰富的属性值。
3.BGP建立邻居关系
单播建邻居,TCP 179端口
BGP工作在OSI 4层
RIP UDP 520端口工作在4层
OSPF IP 89端口工作在3层
ISIS组播mac工作在2层
4.BGP邻居关系
EBGP:运行于不同AS之间的BGP称为EBGP。为了防止AS间产生环路,当BGP设备接收EBGP对等体发送的路由时,会将带有本地AS号的路由丢弃。
IBGP:运行于同一AS内部的BGP称为IBGP。为了防止AS内产生环路,BGP设备不将从IBGP对等体学到的路由通告给其他IBGP对等体,并与所有IBGP对等体建立全连接。为了解决IBGP对等体的连接数量太多的问题,BGP设计了路由反射器和BGP联盟。
BGP必须手动建立邻居。
BGP配置:
EBGP建立邻居关系一般使用直连接口建邻居(优先级255)
IBGP建立邻居关系一般使用环回接口建邻居(提高会话可靠性);(优先级255)
BGP报文交互中角色:speaker、peer
BGP的路由器号(Router ID)
Router ID是一个用于标识BGP设备的32位值,通常是IPv4地址的形式,在BGP会话建立时发送的Open报文中携带。对等体之间建立BGP会话时,每个BGP设备都必须有唯一的Router ID,否则对等体之间不能建立BGP连接。
Router ID在BGP网络中必须是唯一的,可以采用手工配置,也可以让设备自动选取。缺省情况下,BGP选择设备上的Loopback接口的IPv4地址作为BGP的Router ID。如果设备上没有配置Loopback接口,系统会选择接口中最大的IPv4地址作为BGP的Router ID。一旦选出Router ID,除非发生接口地址删除等事件,否则即使配置了更大的地址,也保持原来的Router ID。
5.BGP报文类型
6.BGP的邻居建立过程

7.BGP引入IGP路由
BGP协议本身不发现路由,因此需要将其他路由引入到BGP路由表,实现AS间的路由互通。当一个AS需要将路由发布给其他AS时,AS边缘路由器会在BGP路由表中引入IGP的路由。为了更好的规划网络,BGP在引入IGP的路由时,可以使用路由策略进行路由过滤和路由属性设置,也可以设置MED值指导EBGP对等体判断流量进入AS时选路。
8.BGP对等体之间的交互原则
BGP设备将最优路由加入BGP路由表,形成BGP路由。BGP设备与对等体建立邻居关系后,采取以下交互原则:
从IBGP对等体获得的BGP路由,BGP设备只发布给它的EBGP对等体。
从EBGP对等体获得的BGP路由,BGP设备发布给它所有EBGP和IBGP对等体。
当存在多条到达同一目的地址的有效路由时,BGP设备只将最优路由发布给对等体。
路由更新时,BGP设备只发送更新的BGP路由。
所有对等体发送的路由,BGP设备都会接收。
路由黑洞解决办法:
1.运营商核心网MPLS LDP,完美的解决方案。
BGP使用认证和通用TTL安全保护机制GTSM(Generalized TTL Security Mechanism)两个方法保证BGP对等体间的交互安全。
BGP安全性
BGP使用认证和通用TTL安全保护机制GTSM(Generalized TTL Security Mechanism)两个方法保证BGP对等体间的交互安全。
BGP认证
BGP认证分为MD5认证和Keychain认证,对BGP对等体关系进行认证是提高安全性的有效手段。MD5认证只能为TCP连接设置认证密码,而Keychain认证除了可以为TCP连接设置认证密码外,还可以对BGP协议报文进行认证。
BGP GTSM
BGP GTSM检测IP报文头中的TTL(time-to-live)值是否在一个预先设置好的特定范围内,并对不符合TTL值范围的报文进行允许通过或丢弃的操作,从而实现了保护IP层以上业务,增强系统安全性的目的。
例如将IBGP对等体的报文的TTL的范围设为254至255。当攻击者模拟合法的BGP协议报文,对设备不断的发送报文进行攻击时,TTL值必然小于254。如果没有使能BGP GTSM功能,设备收到这些报文后,发现是发送给本机的报文,会直接上送控制层面处理。这时将会因为控制层面处理大量攻击报文,导致设备CPU占用率高,系统异常繁忙。如果使能BGP GTSM功能,系统会对所有BGP报文的TTL值进行检查,丢弃TTL值小于254的攻击报文,从而避免了因网络攻击报文导致CPU占用率高的问题。
12.BGP属性
公认必遵:rigin、as_path、next_hop
• 公认必须遵循(Well-known mandatory):所有BGP设备都可以识别此类属性,且必须存在于Update报文中。如果缺少这类属性,路由信息就会出错。
所有BGP路由器必须识别,且必须存在于Update消息中。
缺少这种属性路由信息会出错。
公认任意:local pref、atmoic aggregate
• 公认任意(Well-known discretionary):所有BGP设备都可以识别此类属性,但不要求必须存在于Update报文中,即就算缺少这类属性,路由信息也不会出错。
可选过渡:aggregator、community
在BGP对等体之间具有可传递性的属性
BGP路由器可以不支持此属性,但它仍然会接收这类属性,并传递给其他对等体 (不认识,也可以传)
可选非过渡:MED
• 可选非过渡(Optional non-transitive):BGP设备可以不识别此类属性,如果BGP设备不识别此类属性,则会被忽略该属性,且不会通告给其他对等体。
在BGP路由表中,到达同一目的地可能存在多条路由。此时BGP会选择其中一条路由作为最佳路由,并只把此路由发送给其对等体。BGP为了选出最佳路由,会根据BGP的路由优选规则依次比较这些路由的BGP属性。
下面介绍几种常用的BGP路由属性:
• Origin属性
Origin属性用来定义路径信息的来源,标记一条路由是怎么成为BGP路由的。它有以下3种类型:
IGP:具有最高的优先级。通过network命令注入到BGP路由表的路由,其Origin属性为IGP。
EGP:优先级次之。通过EGP得到的路由信息,其Origin属性为EGP。
Incomplete:优先级最低。通过其他方式学习到的路由信息。比如BGP通过import-route命令引入的路由,其Origin属性为Incomplete。
• AS_Path属性
AS_Path属性按矢量顺序记录了某条路由从本地到目的地址所要经过的所有AS编号。在接收路由时,设备如果发现AS_Path列表中有本AS号,则不接收该路由,从而避免了AS间的路由环路。
当BGP Speaker传播自身引入的路由时:
o 当BGP Speaker将这条路由通告到EBGP对等体时,便会在Update报文中创建一个携带本地AS号的AS_Path列表。
o 当BGP Speaker将这条路由通告给IBGP对等体时,便会在Update报文中创建一个空的AS_Path列表。
当BGP Speaker传播从其他BGP Speaker的Update报文中学习到的路由时:
o 当BGP Speaker将这条路由通告给EBGP对等体时,便会把本地AS编号添加在AS_Path列表的最前面(最左面)。收到此路由的BGP设备根据AS_Path属性就可以知道去目的地址所要经过的AS。离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。
o 当BGP Speaker将这条路由通告给IBGP对等体时,不会改变这条路由相关的AS_Path属性。
• Next_Hop属性
Next_Hop属性记录了路由的下一跳信息。BGP的下一跳属性和IGP的有所不同,不一定就是邻居设备的IP地址。通常情况下,Next_Hop属性遵循下面的规则:
o BGP Speaker在向EBGP对等体发布某条路由时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。
o BGP Speaker将本地始发路由发布给IBGP对等体时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。
o BGP Speaker在向IBGP对等体发布从EBGP对等体学来的路由时,并不改变该路由信息的下一跳属性。
• Local_Pref属性
Local_Pref属性表明路由器的BGP优先级,用于判断流量离开AS时的最佳路由。当BGP的设备通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择Local_Pref属性值较高的路由。Local_Pref属性仅在IBGP对等体之间有效,不通告给其他AS。Local_Pref属性可以手动配置,如果路由没有配置Local_Pref属性,BGP选路时将该路由的Local_Pref值按缺省值100来处理。
• MED属性
MED(Multi-Exit Discriminator)属性用于判断流量进入AS时的最佳路由,当一个运行BGP的设备通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED值较小者作为最佳路由。
MED属性仅在相邻两个AS之间传递,收到此属性的AS一方不会再将其通告给任何其他第三方AS。MED属性可以手动配置,如果路由没有配置MED属性,BGP选路时将该路由的MED值按缺省值0来处理。
• 团体属性
团体属性(Community)用于标识具有相同特征的BGP路由,使路由策略的应用更加灵活,同时降低了维护管理的难度。
团体属性分为自定义团体属性和公认团体属性。公认团体属性如表所示。
表 公认团体属性
BGP选路13条:
当到达同一目的地存在多条路由时,BGP依照如下策略顺序进行路由选择:
如果此路由的下一跳不可达,忽略此路由

优选协议首选值(PrefVal)最高的路由(私有属性,仅本地有效,默认0,华为特有)
优选本地优先级(Local_Pref)最高的路由(默认100)
路由生成方式:Aggregate>summary automatic>Network>import>从对等体学到的)
BGP优选AIGP较小的路由(AIGP属性是一种新的BGP路由属性 )
AS路径(AS_Path)最短的路由
比较Origin code,IGP>EGP>incomplete。
优选MED值最小的路由(默认0,越小越优先)
优选从EBGP邻居学来的路由(EBGP>IBGP)
BGP优选达到下一跳IGP Cost较小的路由.
以上全部相同,则为等价路由,可以负载分担
注:AS-PATH必须一致, 当负载分担时,以下3条无效
优选Cluster_List长度最短的路由
Originator_ID最小的路由
优选Router ID最小的路由器发布的路由
优选从具有较小IP地址的对等体学来的路由。
BGP路由聚合
好处:1.减少路由表大小。2.减小网络震荡
聚合方法:
1.静态聚合
路由器通过路由聚合屏蔽明细路由,只将一条聚合后的路由10.1.8.0/22发布给AS200内的RTB。
2.自动聚合
自动聚合只对引入BGP的路由进行聚合,聚合到自然网段后发送给邻居。Summar automatic
自动聚合只能聚合import的路由。 (带来环路)
3.手动聚合
手动聚合既能聚合network的路由,又能聚合import的路由。(最好)
路由聚合带来的问题-潜在环路
解决方法:当发生聚合后,如果需要聚合路由携带所有明细路由经过的AS号来防止环路,则在配置聚合的命令后添加AS-SET参数。
路由反射器
路由反射器RR(Route Reflector):允许把从IBGP对等体学到的路由反射到其他IBGP对等体的BGP设备,类似OSPF网络中的DR。
客户机(Client):与RR形成反射邻居关系的IBGP设备。在AS内部客户机只需要与RR直连。
非客户机(Non-Client):既不是RR也不是客户机的IBGP设备。在AS内部非客户机与RR之间,以及所有的非客户机之间仍然必须建立全连接关系。
始发者(Originator):在AS内部始发路由的设备。Originator_ID属性用于防止集群内产生路由环路。
集群(Cluster):路由反射器及其客户机的集合。Cluster_List属性用于防止集群间产生路由环路。
原理
同一集群内的客户机只需要与该集群的RR直接交换路由信息,因此客户机只需要与RR之间建立IBGP连接,不需要与其他客户机建立IBGP连接,从而减少了IBGP连接数量。
RR向IBGP邻居发布路由规则如下:
从非客户机学到的路由,发布给所有客户机。
从客户机学到的路由,发布给所有非客户机和客户机(发起此路由的客户机除外)。
从EBGP对等体学到的路由,发布给所有的非客户机和客户机。
Cluster_List属性
路由反射器和它的客户机组成一个集群(Cluster),使用AS内唯一的Cluster ID作为标识。为了防止集群间产生路由环路,路由反射器使用Cluster_List属性,记录路由经过的所有集群的Cluster ID。
当一条路由第一次被RR反射的时候,RR会把本地Cluster ID添加到Cluster List的前面。如果没有Cluster_List属性,RR就创建一个。
当RR接收到一条更新路由时,RR会检查Cluster List。如果Cluster List中已经有本地Cluster ID,丢弃该路由;如果没有本地Cluster ID,将其加入Cluster List,然后反射该更新路由。
Originator_ID属性
Originator ID由RR产生,使用的Router ID的值标识路由的始发者,用于防止集群内产生路由环路。
当一条路由第一次被RR反射的时候,RR将Originator_ID属性加入这条路由,标识这条路由的发起设备。如果一条路由中已经存在了Originator_ID属性,则RR将不会创建新的Originator_ID属性。
当设备接收到这条路由的时候,将比较收到的Originator ID和本地的Router ID,如果两个ID相同,则不接收此路由。
备份路由反射器
为增加网络的可靠性,防止单点故障对网络造成影响,有时需要在一个集群中配置一个以上的RR。由于RR打破了从IBGP对等体收到的路由不能传递给其他IBGP对等体的限制,所以同一集群内的RR之间中可能存在环路。这时,该集群中的所有RR必须使用相同的Cluster ID,以避免RR之间的路由环路。
联盟(Confederation)
联盟将一个AS划分为若干个子AS。每个子AS内部建立IBGP全连接关系,子AS之间建立联盟EBGP连接关系,但联盟外部AS仍认为联盟是一个AS。配置联盟后,原AS号将作为每个路由器的联盟ID。这样有两个好处:一是可以保留原有的IBGP属性,包括Local Preference属性、MED属性和NEXT_HOP属性等;二是联盟相关的属性在传出联盟时会自动被删除,即管理员无需在联盟的出口处配置过滤子AS号等信息的操作。

打赏鼓励作者,期待更多好文!

打赏
2人已打赏

一个无趣的人 发表于 2023-7-31 22:09
  
楼主分享的案例很实用,具有典型性,希望有更多这样的干货供我们学习参考,非常感谢!
小鱼儿 发表于 2023-8-13 10:27
  

每天学习一点点,每天进步一点点。
唐三平 发表于 2023-8-13 10:27
  

每天学习一点点,每天进步一点点。
鲤鲤 发表于 2023-8-13 10:33
  

每天学习一点点,每天进步一点点。
小西北 发表于 2023-8-13 10:33
  

每天学习一点点,每天进步一点点。
小德 发表于 2023-8-13 10:42
  

每天学习一点点,每天进步一点点。
日出 发表于 2023-8-13 10:42
  

每天学习一点点,每天进步一点点。
德德 发表于 2023-8-13 10:48
  

每天学习一点点,每天进步一点点。
飞飞侠 发表于 2023-8-13 10:48
  

每天学习一点点,每天进步一点点。
发表新帖
热门标签
全部标签>
每日一问
技术盲盒
技术笔记
干货满满
技术咨询
功能体验
产品连连看
新版本体验
GIF动图学习
2023技术争霸赛专题
自助服务平台操作指引
标准化排查
运维工具
通用技术
秒懂零信任
技术晨报
信服课堂视频
用户认证
安装部署配置
安全攻防
SDP百科
设备维护
深信服技术支持平台
社区帮助指南
答题自测
每日一记
玩转零信任
畅聊IT
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
上网策略
测试报告
日志审计
问题分析处理
流量管理
云计算知识
原创分享
解决方案
sangfor周刊
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选

本版版主

12
185
6

发帖

粉丝

关注

本版达人

LoveTec...

本周分享达人

新手24116...

本周提问达人