BGP笔记
此笔记根据视频来写的。
来源于:https://www.bilibili.com/video/BV12k4y167uT
动态路由协议可以按照工作范围分成IGP与EGP
IGP:内部网关协议 :工作在一个AS内,主要用来提供路由信息的交换。
EGP:外部网关协议 :工作在AS与AS之间,在AS间提供无环路的路由,BGP是EGP的一种。
AS:自治系统
有同一个技术管理机构管理,使用统一选路策略的一些路由的集合。
BGP概述:
路由更新时,BGP只发送更新的路由,大大减少了BGP的传播路由所占用的带宽,适用于在internet上传播大量的路由信息。
BGP从设计上避免了环路的发生。 因为什么?
因为BGP是通过携带AS路径信息来标记沿途的AS。
AS之间:BGP通过携带的AS路径信息来标记途径的AS,带有本地AS号的路由将被丢弃,从而避免了域间产生环路。
AS内部:BGP在AS内学到的路由不在通告给AS内的BGP邻居,避免了AS内产生环路。
EBGP与IBGP
当BGP运行在同一AS内部时,被称为IBGP
当BGP运行于不同AS之间时,被称为EBGP
基本前提:因为要建立TCP连接,所以两端的路由器必须知道对方的IP地址,可以通过直连端口,静态路由或者IGP学习
BGP工作原理—报文类型
Open报文
协商BGP参数;主要包括BGP版本,AS号等消息。试图建立BGP邻居关系的两个路由器在建立了TCP会话之后开始交换open信息已确认能否行成邻居关系,是TCP建立后发送的第一个消息。
Update(更新)报文
交换路由消息;该报文则是邻居之间用于交换路由信息的报文,其中包括撤销路由消息和可达路由信息及其各种路由属性。
Keep alive(保持连接)报文
保持邻居关系;该报文用于BGP邻居关系的维护,为周期性交换的报文,用于判断对等体之间的可达性。
Notification(通告)报文
差错通知;BGP的差错检测机制,一旦检测到任何形式的差错,BGP speaker(BGP发言者)会发送一个NOTIFICATION报文,随后与之相关的邻居关系将被关闭。
Route-Refresh(路由更新)报文
用于在改变路由策略后请求对等体重新发送路由信息。
BGP工作原理-BGP协议中消息应用
1.通过TCP建立BGP连接时,发送OPEN消息
2.连接建立后,如果有路由需要发送或路由变化时,发送UPDATE消息通告对端
3.稳定后要定时发送KEEPALIVE消息保持BGP连接的有效性
4.当本地BGP在运行中发现错误时,要发送NOTIFICATION消息通告BGP对等体ROUTE-REFRESH消息用来通知对等体刷新
BGP路由通告原则
- 连接一建立,BGP Speaker将把自己产生的所有BGP路由通告给对等体多条路径时,BGP Speaker只选择最优的给自己使用
BGP Speaker 只把自己使用的最优路由通告给对等体。
- BGP Speaker从BGP获得的路由会向他所有BGP对等体通告(包括EBGP和IBGP)
- BGP Spekerr 从IBGP获得的路由不会通告给它的IBGP邻居。
- BGP Speaker 从IBGP获得的路由是否通告给它的EBGP对等体要依IGP和BGP同步的情况来决定。
BGP属性特点
BGP路由属性是一套参数,它是对特定的路由进一步的描述;简单来说就是一组描述BGP前缀特性的参数(四大类)
公认必遵(Well-known mandatory)
所有BGP路由器都可以识别,且必须存在与Update消息中。
如果缺少这种属性,路由信息就会出错。
公认任意(Well-known discretionary)
所有BGP路由都可以识别,但不要求必须存在与Updata消息中。
即就算缺少这类属性,路由消息也不会出错。
可选过渡(Optional transitive)
在AS之间具有可传递性的属性。
BGP路由可以选择是否在Update中携带这种属性,接受的路由如果不识别这种属 性,可以转发给邻居路由器,邻居路由器可能会识别并使用到这种属性。
可选非过渡(Optional non-transitive)
BGP路由器可以选择是否在Update消息中携带这种属性,如果接受的BGP路 由 器不支持此属性,则相应的这类属性被忽略,且不会传递给其他对等体。
BGP属性 |
类别 |
1.Origin |
Well-known mandatory |
2.AS-Path |
Well-known mandatory |
3.Next_Hop |
Well-known mandatory |
4.Multi_Exit_Disc |
Optional transitive |
5.Local_Pref |
Well-known discretionary |
6.Atomic_Aggregate |
Well-known discretionary |
7.Aggregator |
Optional transitive |
8.Community |
Optional transitive |
9.Originator ID |
Optional non-transitive |
10.ClusterList |
Optional non-transitive |
BGP属性特点-Origin
Origin属性用来定义路径信息的来源,该属性为公认必遵
IGP
通过路由始发AS的IGP得到的路由信息(通过network命令注入的路由)
标识符为“ i ”
EGP
通过EGP得到的路由信息
标识符为” e ”
Incomplete
通过其他方式学习的路由信息(通过redistribute命令注入的路由)
标识符为” ? ”
BGP属性特点-AS_Path
AS_Path属性按照矢量顺序记录某条路由从本地到目的地址所要经历的所有AS编号。该属性为公认必遵。
经过了 700 和 800的AS号。
只有传出本AS才会打上AS path。
AS_PATH路径属性的四种类型
AS_SEQUENCE:有序AS号集合
AS_SET:无序AS号集合
AS_CONFED_SEQUENCE:联邦有序AS号集合
AS_CONFED_SET:联邦无序AS号集合
BGP属性特点-Next_Hop
Next_Hop属性记录了路由的下一跳信息,该属性为公认必遵。
BGP属性特点-Local_Pref
Local_Pref属性表明路由器的BGP优先级,用于判断流量离开AS时的最佳路由。该属性为公认任意。
Local_pref数值越大优先级越高。
BGP属性特点-MED
MED属性相当于IGP的代价值(cost),用于判断流量进入AS时最佳路由,即用来影响邻居AS流量进入本AS的最佳路径,该属性为可选非过渡。
MED数值越小优先级越高。
BGP属性特点-团队属性
团体属性用于标识具有相同特征的BGP路由,该属性为可选过渡。
团体属性分为:
自定义团体属性
公共团体属性
Internet
No_Advertise
No_Export
No_Export_Subconfed
团体属性是有一系列4字节(0x00000000-0xFFFFFFFF)数值所组成
保留的团体属性:
0x00000000-0x0000FFFF
0xFFFF0000-0xFFFF0000
公认团体属性:
NO_ADVERTISE(0xFFFFFF01)
NO_EXPORT(0xFFFFFF02)
NO_EXPORT_SUBCONFED(0xFFFFFF03)
私有团体属性:
AS(2B):Number(2B)
公共团体属性是公认的,具有全球意义。公认的团体有:
NO_ADVERTISE(0xFFFFFF01): 路由器收到带有这一团体值的路由后,不应把该路由通告给任何给BGP对等体。‘
NO_EXPORT(0xFFFFFF02): 路由器收到带有这一团体值的路由后,不应把该路由通告给一个联盟之外的对等体(本AS传递)
NO_EXPORT_SUBCONFED(0xFFFFFF03): 路由器收到带有这一团体值的路由后,可以把该路由通告给它的IBGP对等体,但不应通告给任何EBGP对等体(包括联盟内的EBGP对等体,本AS传递)。
BGP选路规则(十三条)
当到达同一个目的地存在多条路由时,BGP采取如下策略进行路由选择:
(从上到下)
l 如果此路由的下一跳不可达,忽悠此路由。
l 优选协议首选值(PrefVal)最高的路由. (华为私有)
l 优选本地优先级(Loca_Pref)最高的路由
l 优选本地生成的路由
l 优选AS路径(AS_Path)最短的路由
l 比较Origin属性,依次优选Originnn类型为IGP、EGP、incomplete的路由 I>E>?
l 优选MED值最低的路由
l 优选从EBGP邻居学来的路由(EBGP路由优先级高于IBGP路由)
l 优选到BGP下一跳IGP Metric较小的路由
l 当以上全部相同时,则视为等价路由,可以负载分担 (神州数码不支持)
注:AS_PATH必须一致;当负载分担时,以下3条原则无效
l 优选Cluster List 最短的路由
l 优选Originator_ID 或者Router ID最小的路由器发布的路由
l 比较对等体的IP Address,优选从具有较小IP Address的对等体学来的路由
BGP选路规则2-Preferred Value(首选值)(华为私有)
Preferred Value值越大优先级越高。
BGP选路规则3-local-Preference(本地优先级)
BGP default local-preference命令来配置BGP的缺省本地优先级,该值越大则优先级越高。
缺省值为100
配置不同本地优先级会影响BGP的路由选择。当一个运行BGP的路由器有多条路由到达同一目的地址时,会优先选择本地优先级最高的路由。
本地优先级属性仅在IBGP对等体之间交换,不通告给其他AS。
从EBGP收到的,会被剥掉Local-Preference 在打上本地的local-preference传给其他IBGP.
BGP选路规则4-优选本地生成(0.0.0.0)
优选聚合路由(聚合路由优先级高于非聚合路由)
通过aggregate命令生成的手动聚合路由的优先级高于通过summary automatic 命令生成的自动聚合路由。
通过network命令引入的路由的优先级高于通过redistribute命令引入的路由
BGP选路规则5-AS Path
AS-PATH是公认必遵属性,该属性用一串AS号来描述去往的指定目的地AS间路 径或路由,当BGP speaker发出一条路由,将在AS_Path中增加自己的AS号。也就是 说,这条路由每经过一个AS区域,就会加上一个AS号,用来标示路径的优先级。
As号叠加得越多,说明经过的AS越多,那么这个路由的优先级也越低。相反,经过的AS越少,那么说明路由越优先.
而且AS-Path还可以防止BGP的环路。工作原理比较简单,如果某台BGP路由器从其外部对等体接收到的某条路由的AS-Path中包含已有的自己的AS号,那么该路由器就知道该路由出现了环路,因为需要丢包处理。
BGP选路规则6-Origin(起源)
IGP
通过路由始发AS的IGP得到的路由信息(通过network命令注入的路由)
标识符为“ i ”
EGP
通过EGP得到的路由信息
标识符为” e ”
Incomplete
通过其他方式学习的路由信息(通过redistribute命令注入的路由)
标识符为” ? ”
如果通过三种方式同时学习到一条相同的BGP路由前缀,那么优选的顺序为I>E>?
BGP选路规则7-MED
多出口区分MED(Multi-Exit Discriminators)
MED属性仅在相邻两个AS之间传递,收到此属性的AS一方不会再将其通告给任 何其他第三方AS。
越小越优先。
缺省情况下,不允许比较来自不同AS邻居的路由信息的MED值。但是,我们可以通过配置BGP always-compare-med(总是比较MED)命令来允许比较来自不同自制 系统中邻居路由的MED值 。不过,除非能够确认不同的自制系统采用了同样的IGP 和路由选择方式,否则不要使用此命令。
BGP选路规则8-EBGP路由优先于IBGP
BGP选路规则9-BGP下一跳IGP metric较小的路由
BGP选路规则10-当以上全部相同,则为等价路由(神州数码不支持)
注:AS-Path必须一致;当负载分担时,选路即刻结束
BGP选路规则11-12-和RR相关
优选Cluster_List最短的路由
优选Originator_ID或者Router ID最小的路由器发布的路由
关于BGP originator-id 与 cluster-list id 属性
这两个属性是用于BGP路由反射器RR,防止环路用的。
BGP选路规则13-对等体IP地址小的
这说明什么,说明以上都相同,才比较最后一条。
连router id 都相同,说明它是两个路由器之间是两条或两条以上的线连接起来的, 所以才比较ip地址。
BGP扩展特性-安全特性
BGP安全特性:
l MD5
l GTSM
l 限制从对等体接受的路由数量
l AS_Path长度保护
BGP扩展特性-MD5认证
neighbor password
使用 neighbor password 命令可以配置用 TCP 的 MD5 选项进行 BGP 邻居间 的密码认证。使用 no neighbor password 取消认证。
neighbor {ip-address | peer-group-name} password LINE
no neighbor {ip-address | peer-group-name} password
参数
参数 |
参数说明 |
ip-address |
邻居IP地址。 |
peer-group-name |
BGP对等体组名。 |
password |
使用MD5密码认证。 |
LINE |
明文密码 |
使用说明
使用本命令前必须使用 neighbor remote-as 命令指定邻居。
邻居双方必须都配置了该命令,并且双方配置的密码相同,才能成功通过 MD5 认证建立邻居连接。密码中可以包含空格以外的任意字符,密码长度必 须在 1 到 20 个字符之 间。
如果使用 peer-group-name 参数指定 BGP 对等体组,该对等体组的所有成员都将继承用该命令配置的特征。
示例
下面的例子把 abcd 设置为邻居 120.23.4.1 的验证密码:
router bgp 109
neighbor 120.23.4.1 remote-as 108
neighbor 120.23.4.1 password abcd
BGP扩展特性-GTSM
相关的命令:
BGP扩展特性-限制路由数量
bgp inbound-max-route-num
命令:bgp inbound-max-route-num <0-500000>
no bgp inbound-max-route-num
功能:限制 bgp 进程从其邻居学到的路由的数量。
参数:具体限制的路由数量,取值范围为<0-500000>。
缺省情况:缺省限制数量为 50000 条。
命令模式:BGP 路由配置模式和地址族配置模式。
使用指南:可以通过该命令,限制 bgp 进程从其邻居学到的路由的数量。
举例:经过如下配置,bgp 进程最多可以从其邻居接受 20000 条路由。
Switch(config-router)#bgp inbound-max-route-num 20000
相关命令:无
BGP扩展属性-As_Path长度保护
BGP扩展特性-路由衰减(EBGP)
bgp dampening
命令:bgp dampening [<1-45>] [<1-20000> <1-20000> <1-255>] [<1-45>]
no bgp dampening
功能:配置路由衰减。其 no 形式取消路由衰减功能。
参数:<1-45>:分别为可达和不可达路由的惩罚半衰期,即惩罚值减小到原来一半的时间,单位为分钟。 <1-20000>:分别为惩罚的再使用界限和抑制界限。 <1-255>:抑制路由的最大抑制时间,单位为分钟。 缺省情况:可达路由的半衰期为 15 分钟,不可达路由的半衰期为 15 分钟。抑制界限为 2000, 再使用界限为 750,最大抑制时间为 60 分钟。
命令模式:BGP 路由配置模式。
使用指南:使用路由衰减技术可以减少不稳定路由带来的过多的路由更新,路由衰减的算法是当路由波动时对路由进行惩罚,惩罚超过抑制界限时就不再对路由进行广告,路由若不再波动则按时间减小惩罚值,其减小按指定半衰期的指数规律进行,当惩罚值小于再使用界限后路由再次被广告,或者抑制时间超过最大抑制时间也将再次广告该路由。本指令就是启动/取消路由衰减并配置所需的参数。
举例:启动路由衰减,并且采用缺省的参数配置。
Switch(config-router)# bgp dampening
最大抑制上限计算公式(华为的,不知道神州数码是不是这样算的)
最大抑制上限=重用时间*2(最大上限时间/半衰期)
BGP联盟
将一个AS划分为若干个子AS,每个子AS内部建立IBGP全连接关系,子AS之间 建立EBGP连接关系
bgp confederation identifier
命令:bgp confederation identifier <as-id>
no bgp confederation identifier [<as-id>]
功能:创建/删除一个联盟配置。其 no 形式删除一个联盟。
参数:<as-id>:联盟 AS 的 ID 号,取值范围为 1-4294967295。可用十进制表示, 如 6553700; 也可用分隔符方式表示,如 100.100。
缺省情况:没有联盟。
命令模式:BGP 路由配置模式。
使用指南:使用联盟可以把大的 AS 分为若干小 AS,而对外仍然只识别大的 AS。使 用这个命令创建大的 AS 号。
举例:
Switch(config-router)# bgp confederation identifier 600
bgp confederation peers
命令:bgp confederation peers <as-id> [<as-id>..]
no bgp confederation peers <as-id> [<as-id>..]
功能:添加/删除一个或多个 AS 到一个联盟。其 no 形式从联盟删除一个或多个 AS。
参数:< as-id>:联盟包含的 AS 的 ID 号,取值范围为 1-4294967295。可用十进制 表示,如 6553700;也可用分隔符方式表示,如 100.100。可以是多个。
缺省情况:没有成员。
命令模式:BGP 路由配置模式。
使用指南:使用联盟可以把大的 AS 分为若干小 AS,而对外仍然只识别大的 AS。使 用这个命令向联盟里添加/删除联盟的成员。
举例:创建 1 个联盟,ID 号为 600,添加成员 100,200,100.300。
Switch(config-router)# bgp confederation identifier 600
Switch(config-router)#bgp confederation peers 100 200 100.300
BGP联盟-放缓机制
AS_CONFED_SEQUENCE 联邦有序AS号集合
AS_CONFED_SET 联邦无序AS号集合
路由反射器
允许将从IBGP邻居学习到的路由发送给特定的IBGP邻居,打破了IBGP邻居关系全互联的需求,减少了IBGP会话数量。
括路由反射器(RR) 和客户机(Client)。
对等体之间的关系
Client只需维护与RR之间的IBGP会话
RR与RR之间需要建立IBGP的全互联
Non-CLient与Non-Client之间需要建立IBGP全互连
RR与Non-Client之间需要建立IBGP全互连
路由反射器-反射规则
在向IBGP邻居发布学习到的路由信息时,RR按照以下规则发布路由
从EBGP对等体学到的路由,发布给所有的非客户机和客户机。
从非客户机的IBGP对等体学到的路由,发布给此RR的所有客户机。
从客户机学到的路由,发布给此RR的所有非客户机和客户机(发起此路由的客户机除外)。
路由反射器-防环机制
Originator ID属性
该属性为可选非过渡
用于集群内的防环
有路由反射器(RR)产生,携带了本地本地AS内该路由发送者的Router ID
Cluster_List属性
该属性为可选非过渡
用于集群内的防环
有路由反射器(RR)产生,记录反射路由经过的集群
Originator ID属性用于防止在反射器和客户机/非客户机之间产生环路
Originator ID属性长4字节,可选非过渡属性,属性类型为9,是由路由反射器(RR)产生的,携带了本地AS内部路由发起者的Router ID当一条路由第一次被RR反射的时候, RR将OriginatorID属性加入到这条路由,标识这条路由的始发路由器。
如果一条路由中已经存在了Originator ID属性,则RR将不会创建新的Originator ID当其它BGP Speaker接收到这条路由的时候,将比较收到的OriginatorID和本地的Router ID,如果两个ID相同, BGPSpeaker会忽略掉这条路由,不做处理
路由反射簇(Cluster)
当一个AS内存在多台RR为Client提供冗余时, RR间的路由更新很有可能会形成环路,为防止该现象,引人了Cluster的概念
什么是簇?
用过4字节的Cluster_ID来标识Cluster,通常会使用Loopback 地址作为Cluster_ID。
一个Cluster里可以包括一个或多个RR; 一个Client可以同时属于Cluster
Cluster List属性用于防止AS内部的环路
Cluster-List是可选非过渡属性,属性类型编码为10
ClusterList由一系列的Cluster-ID组成,描述了一条路由所经过的反射器路径,这和描述路由经过的As路径的AS-Path属性有相似之处, Cluster_List由路由反射器产生当RR在它的客户机之间或客户机与非客户机之间反射路由时, RR会把本地Cluster_ID添加到Cluster-List的前面。
如果Cluster-List为空, RR就创建当RR接收到一条史新路由时, RR会检查Cluster List。如果ClusterList中已经有本地ClusterID,丢弃该路由;如果没有本地ClusterID,将其加入Cluster List,然后反射该更新路由
路由器反射器–备份RR
相同集群中的路由反射器要共享相同的Cluster_ID
Cluster_List的应用保证了同一AS内的不同RR之间不出现路由循环
路由反射器–分类
同级反射器
分级反射器
路由聚合原则
十进制 |
二进制 |
|
192.168.1.16 |
11000000.10101000.00000001.00 |
010000 |
192.168.1.32 |
11000000.10101000.00000001.00 |
100000 |
192.168.1.48 |
11000000.10101000.00000001.00 |
110000 |
|
26位 |
6位 |
聚合后的路由:192.168.1.0/26
自动聚合
对BGP引入的路由进行有类聚合。
配置聚合后,明细路由在路由表中将被抑制。
不能对network发布的路由进行聚合。
只对BGP引入的路由进行聚合。
自动聚合注意事项
该命令对BGP引入的路由进行聚合,引入的路由可以是直连路由、静态路由、RIP路由、OSPF路由、IS-IS路由。配置聚合后,BGP将按照自然网段聚合路由,明细路由在BGP表中将被抑制。该命令对network命令引入的路由无效。
BGP只向对等体发生聚合后的路由。
缺省情况下BGP不启用自动聚合。
手动聚合
对BGP本地路由进行聚合,手动聚合可以控制聚合路由的属性,以及决定是否发布具体路由。
聚合路由不会携带AS_PATH属性。
通过AS_SET属性来携带AS号,以避免环路。SET和SEQUENCE的不同之处在于,SET选择下的AS列表通常用于路由聚合,将来自不同AS的AS号无序排列在AS列表里,而SEQUENCE选择下的AS列表是有序的,没经过一个AS都会将其AS号排列在列表前端。
聚合路由中添加AS_SET有可能产生路由震荡。
BGP的增强特性-BGP ORF
使能BGP基于前缀的ORF(Outbound Route Filtering)功能
基于本地的入口策略构建对端的出口策略,实现BGP按需发布路由
包括基于前缀的ORF和VPN ORF
BGP的增强特性-Active-Route-Advertise
Active-Route-Advertise
路由必须同时满足在BGP协议层面优选与在路由管理层面活跃两个条件才能向邻居发布。
Active-Route-Advertise默认情况下路由只需在BGP中优选即可向邻居发布。配置了此特性之后,路由必须同时满足在BGP协议层面优选与在路由管理层面活跃两个条件,才能向邻居发布。
与命令bgp-rib-only (用来禁止BGP路由下发到P路由表)互斥
BGP增强特性-BGP按组(对等体)
BGP按组打包按组打包技术将所有拥有共同出口策略的BGP邻居当作是一个打包组。
每条待发送路由只被打包一次然后发给组内的所有邻居。
BGP增强特性-4字节AS号概念
4字节AS号·4字节AS号特性是将AS号的编码范围由2字节扩大为4字节协议扩展
定义了一种新的Open能力码用于进行BGP连接的能力协南。
2种新的可选过渡属性, AS4Path和AS4Aggregator属性。
定义AS-TRANS (保留值为23456)用于衔接2字节AS和4字节AS。
4字节A5号定义的角色
New Speaker ;支4字节A5号扩展能力的对等体。
Old Sneaker不支持4字节A5号扩展能力的对等体。
New Session : New Speaker之间建文的BGP连接。
Old Session : New Sppakon 和 old Speaker之间或者old Speaker之间建立的BGP连接。
协议扩展
定了2种新的可选过渡性A54 Path (属性码为0x11 )和A54 Aggregator性(属性码为0x12)用于在oldSession上传 4字节AS信息。
如果New Speaker和old Speaker建立连接,定义AS-TRANS (保留传为23456 )用于衔接2字节AS和4字节AS.
拓扑描述
R2收到R1的 条四字节AS的路由AS弓码为10.1 ;
R2与R3建立邻居,需要令R3认为R2的AS号为AS-TRANS ;R2发送路由给R3的时候把AS-TRANS记录在AS-Path里面,把10.1与自己的AS号码20.1按照BGP要求的顺序记录在AS4 Path;
R3对于不识别的愿性AS4 Path不作处母依然保留,它只按账BGP的规则来发送路由给R4。当然它认为R4的AS号码也是AS-TRANS :
这样当R4收到从R3米的路由会把AS-TANS按照顶字米苔换为AS4 Path里所记录的相应的地址,在R4上把AS4_PATH属性还原为30 20.1 10.1。