此篇主要对BGP的产生、与IGP的区别、学习方向、核心做一个深入浅出的阐述
提到产生,就需要复习一下动态路由协议的分类
1.按照使用范围(AS 自治系统)
IGP 内部网关路由协议(RIP、OSPF、EIGRP、ISIS)
EGP 外部网关路由协议(EGP V1-V2 BGP V1-V4 V4+)
EGP已经随着历史的潮流消失殆尽了,取代它的是BGP,即边界网关协议,所以就目前而言,动态路由协议分为IGP、BGP两种
什么是自治系统?
自治系统:autonomous system。在互联网中,一个自治系统(AS)是一个有权自主地决定在本系统中应采用何种路由协议的小型单位。这个网络单位可以是一个简单的网络也可以是一个由一个或多个普通的网络管理员来控制的网络群体,它是一个单独的可管理的网络单元(例如一所大学,一个企业或者一个公司个体)。一个自治系统有时也被称为是一个路由选择域(routing domain)。一个自治系统将会分配一个全局的唯一的16位号码,有时我们把这个号码叫做自治系统号(ASN)。
AS自治系统----0-65535 其中1-64511公有 64512-65535私有
以下两种是基于IGP的分类 基于更新时是否携带子网掩码、基于算法的工作特点
2.按照是否携带网络掩码
有类别:通告路由时,携带主类掩码,有ABC类之分
无类别:通告路由时,不携带主类掩码,无ABC之分
3.按照算法特点进行分类
DV (Distance Vector) 距离矢量 邻居间共享路由表 传闻型协议 更新量小
LS (Link State) 链路状态 邻居间共享LSA(链路状态通告)主要共享拓扑信息 更新大 为了防环
分类说完了,只是明确了BGP是一种特殊的动态路由协议,那么BGP到底是干什么的?
1、不同于IGP,即不在于自动发现拓扑;用于在不同AS之间传递并选择最佳路由和控制路由的传播
什么是自治系统?
自治系统:autonomous system。它是一个单独的可管理的网络单元(例如一所大学,一个企业或者一个公司个体)。一个自治系统有时也被称为是一个路由选择域(routing domain)。一个自治系统将会分配一个全局的唯一的16位号码,有时我们把这个号码叫做自治系统号(ASN)。
AS自治系统----0-65535 其中1-64511公有 64512-65535私有
2、基于TCP封装,保证可靠,端口号179,本地端口随意
路由更新时,BGP只发送更新的路由,大大减少了BGP传播所占用的带宽
3、设计上防环
AS内:BGP在AS内学到的路由不再通告给AS内的BGP邻居;
即IBGP之间水平分割;我根本就不传,即设计上防环;下面会对这些属性进行详细的阐述AS内并不是BGP工作的重心,即内部的防环是根据IBGP间完全不传递路由来完成的
如何解决:
- 全互联(不现实)
- 路由反射器
- EBGP联邦
AS间:传进来的路由若携带我的AS号,那么直接丢弃;即AS_Path
4、丰富的路由策略,可以对路由实现灵活的过滤和选择
5、防止路由震荡机制
增量更新:仅触发无周期
6、扩展性:type length value类型、长度、值
总结:高级的距离矢量型协议,路径型;传的是路由表,大量的属性来控制选路
7、BGP是一个多协议的BGP,Mul-BGP
为什么是称作多协议的BGP?
可以扩展出不同类型的子协议,什么协议在BGP中都能搞一个家族,而不是去搞一个版本出来
其实啊,说BGP主要从选路、属性、IBGP/EBGP邻居入手,这里为什么单开一栏与IGP的区别呢,因为,这可以使你更好的融会贯通BGP、IGP的核心
IGP追求的是速度
BGP的追求:稳定性强,操控性强,可靠性强,承载性强;BGP没有追求速度的包袱,不需要有很强的算法;
可靠性:
TCP179端口进行邻居的建立 TCP开销大、速度慢;但是对BGP没有影响
稳定性:
承载性:不使用链路状态型计算;是一种高级的距离矢量型,称作路径矢量型
操控性:AS间的选路需求,必须要有很强的操控性(选路、策略)
明白了以上这些下面开始进入BGP的核心
BGP的核心分为两个方面,即属性、选路
;当然还有小核心,即IBGP/EBGP、同步、联邦
BGP的属性有很多,分为公认必遵、公认任意、可选过度、可选非过度
1、origin
2、AS-path
3、Next-Hop
4、Local-Pre
5、MED
6、aggregater
7、Atomic-aggregate
8、oringintor-id
9、cluster-list
10、community
11、Pre—value
公认必遵:
Origin:从哪起源
Next-hop:到哪去
AS-Path:从哪来,哪不能走
防环 呈现路径 选路
公认任意:
Local_Pref:IBGP间传递,用于选路
Atomic_Aggregate:标明路由有没有聚合
可选过度:
Community;为了标记路由,好处有容易识别;抓路由时更方便,扩展性强
Aggregator:聚合者,即谁给这条路由做的聚合
可选非过度:
MED、Originator_ID、Cluster_List、Pre-Value
Origin
Origin用于BGP路由引入的防环,可以阻止起源于BGP的路由引入给其他路由协议产生的环路问题,能够形成类似OSPF那样的一种水平分割,10-150
起源类型 IGP>EGP>Incomplete。 起源属性 i优于e优于?; 可在控制层面任意接口修
network 宣告本地路由表中的任意路由 i 0
egp 早期的ebg协议学习的路由重发布到BGP协议中 e 1
import 将本地通过其他协议学习的路由重发布到BGP协议中 ? 2
PreVal
协议首选项,仅本地有效,不传递,默认0,大优
优选 Preferenge_Value值最高的路由(私有属性,仅本地有效)。
入向调用,不传递;大优
Cisco叫weight,权重,思科私有
AS_Path
优选 AS_Path短的路由。 EBGP/IBGP关系均可被干涉,但只能在EBGP邻居间修改;
最前端号码为最新经过的AS号;
注意:本地不携带,EBGP邻居传递时才会携带
allow-asloop 允许包含拥有自己AS号的路由进来
subritute-as 允许包含对方AS号的路由出去
底层用的是换号来解决的
Next_Hop
1、将EBGP邻居学习路由传递给IBGP邻居时,下一跳不发生变化(导致下一跳不可达)
下一跳不可达导致路由不能优选
分为如下两种场景
从EBGP邻居传递给IBGP
将自己的路由传递给IBGP邻居
2、将IBGP邻居学习到的路由传递给EBGP邻居时,下一跳发生改变 下一跳属性改成更新源地址
Local_Pref
应用场景:
1、IBGP的import、export
2、EBGP的import
MED
应用场景:
可以对内,也可对外;但是只能用于两个AS间的传递,需要比较也可以,开启一个开关即可
compare-different-as-med
路由聚合
聚合后的路由会去掉原本明细的属性;所以需要标明其是被聚合的路由
聚合的本质:把明细干掉,新生成一条路由
聚合的意义:由于清洗掉了明细,则明细路由的一些防环属性,下一跳属性等就会被清洗,所有聚合属性的意义在于是否要标明聚合,是否要继承
1、聚合者 aggregator
2、有没有聚合 atomic_aggregate
团体属性
该属性为可选过度
团体属性分为:
1、自定义团体属性
a.标准团体值
b.扩展团体值(-target)
2、公共团体属性
a.Internet 可以传递给所有邻居;默认的团体属性
b.No_Advertise 将不会把路由传递给他的邻居 EBGP;不能传递给任何邻居
从IGP传,不能从BGP传
c.No_Export 不能出AS,不能传出本路由器;不能传递出大的AS
举例:当电信与联通间的相通链路出现故障时,不允许绕行百度,那么百度对电信与联通进来的路由打上No_export,这样进来的路由就不能出去
d.No_Export_Subconfed 不能出联邦;不能传递出小的AS
注意:团体值的开启要打开传递的开关
Originator_ID
1、如下情况在RR情况下会产生环路
产生详细:即两个三角结构的两个RR,下图中的R1将A路由反射给R3,R3自己又是一个反射器,即将A路由反射给始发路由器R2,造成环路
解决:Origin_ID
起源的路由将自己的RID携带到路由里,这样通过反射器反射来的路由就不能进来
2、反射器之间成环,即A路由不回到起源A的路由器上
解决:Cluster_List
将RR的RID在反射路由的时候携带,放到Cluster_List里;每经过一个反射器,记录反射器的RID,放到Cluster-list
0、不优不传
1、优选 Preferenge_Value值最高的路由(私有属性,仅本地有效)。入向调用,不传递;默认0,大优
Cisco叫weight,权重,思科私有
2、优选本地优先级 (Local_Prefereace)最高的路由。 最常干涉IBGP关系的选路;只在IBGP邻居关系间传递;用于限制离开本AS的流量;默认100,大优
3、本地起源;(起源于本地最优先,Next-hop为 0.0.0.0 )手动聚合>自动聚合>network>import>从对等体学到的。
4、优选 AS_Path短的路由。 EBGP/IBGP关系均可被干涉,但只能在EBGP邻居间修改;最前端号码为最新经过的AS号; none overwrite
5、起源类型 IGP>EGP>Incomplete。 起源属性 i优于e优于?; 可在控制层面任意接口修改
network 宣告本地路由表中的任意路由 i 0
egp 早期的ebg协议学习的路由重发布到BGP协议中 e 1
import 将本地通过其他协议学习的路由重发布到BGP协议中 ? 2
6、对于来自同一AS的路由,优选MED(多出口的鉴别属性)值小的。 最常用于干涉EBGP选路的属性
MED就是人为的利用路由器优选路径的规则—先比较管理距离(华为为优先级),若一直再比较度量值(华为cost)
7、优选从 EBGP学来的路由(EBGP>IBGP)。
8、优选AS内部IGP的Metric最小的路由。
9、优选 Cluster_List最短的路由。 反射的少
10、优选Orginator_ID最小的路由。
11、优选Router_ID最小的路由器发布的路由。
12、优选具有 较小IP地址的邻居学来的路由。
对等体之间的交互原则
IBGP水平分割
从IBGP对等体获得的路由,只发布给EBGP对等体;
这其实就是AS内部的防环,即完全不转发,把事做绝
EBGP全转发,即给EBGP邻居也给IBGP邻居
1、将EBGP邻居学习路由传递给IBGP邻居时,下一跳不发生变化(导致下一跳不可达)
下一跳不可达导致路由不能优选
2、将IBGP邻居学习到的路由传递给EBGP邻居时,下一跳发生改变 下一跳属性改成更新源地址
只将BGP的最优路由发布给对等体
只发生更新的BGP路由
IBGP与IGP的同步
为了解决数据层面的路由黑洞,在还没有MPLS-VPN的时代有两种解决方案
1、全互联 缺点:不靠谱,低端路由器起不了BGP
2、路由引入,即将BGP引入到IGP中 同步机制
什么是同步?
IGP、BGP中都存在的路由,在之前的BGP版本中如果发现某条路由我BGP有,IGP没有,我就不敢将此路由变成最优路由;当MPLS-为屁嗯杀出来后,就必须关闭同步,因为MPLS-为屁嗯是建立了一条隧道,与同步与否毫无关系