文章目录

  • 深入浅出BGP
  • 说明
  • 一、BGP的产生
  • 1.1 动态路由的分类
  • 1.2 BGP概述
  • 二、与IGP的区别
  • 三、BGP核心
  • 3.1 属性
  • 3.1.1 属性特点
  • 3.2 选路规则
  • 3.3 对等体


深入浅出BGP

说明

此篇主要对BGP的产生、与IGP的区别、学习方向、核心做一个深入浅出的阐述

一、BGP的产生

提到产生,就需要复习一下动态路由协议的分类

1.1 动态路由的分类

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到底是干什么的?

  • BGP是一种用于自治系统(AS)之间的动态路由协议,主要用于AS之间的可达路由信息,构建AS域间的传播路径,目前使用的版本是BGP-4
  • BGP主要用于ISP之间的传递,即在骨干网中使用
  • BGP是一种无算法,但是存在大量的属性以及选路规则,可以称为高级的距离矢量型协议,或路径矢量型

1.2 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中都能搞一个家族,而不是去搞一个版本出来

二、与IGP的区别

其实啊,说BGP主要从选路、属性、IBGP/EBGP邻居入手,这里为什么单开一栏与IGP的区别呢,因为,这可以使你更好的融会贯通BGP、IGP的核心

IGP追求的是速度

  • 如RIP的计时器,用于加快路由的更新与触发更新的速度;
  • OSPF的触发更新,周期更新,用于加快收敛速度;
  • EIGRP的DUAL,即弥散算法(分布式计算)用于加快收敛速度;

BGP的追求:稳定性强,操控性强,可靠性强,承载性强;BGP没有追求速度的包袱,不需要有很强的算法;

  • 可靠性:
    TCP179端口进行邻居的建立 TCP开销大、速度慢;但是对BGP没有影响
  • 稳定性:
  1. 不做触发更新,也不周期更新,只做增量更新;
  2. 工作的环境本身就是稳定态;工作在骨干网上,骨干网是被做聚合了的路由进行传输,所以是稳定的;
  3. TCP也是稳定的
  • 承载性:不使用链路状态型计算;是一种高级的距离矢量型,称作路径矢量型
  • 操控性:AS间的选路需求,必须要有很强的操控性(选路、策略)

明白了以上这些下面开始进入BGP的核心

三、BGP核心

BGP的核心分为两个方面,即属性、选路;当然还有小核心,即IBGP/EBGP、同步、联邦

3.1 属性

BGP的属性有很多,分为公认必遵、公认任意、可选过度、可选非过度

ibgp与ebgp互通 ibgp与ebgp区别_List

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

公认必遵:

  • 去哪都带;所有路由器都要遵守的规定;
  • 所有BGP路由器都必须识别,且必须存在于Update消息中;
  • 如果缺少这种属性,路由信息就会出错
Origin:从哪起源
Next-hop:到哪去
AS-Path:从哪来,哪不能走
防环 呈现路径  选路

公认任意:

  • 所有BGP路由器都可以识别,但不要求必须存在于Update消息中;
  • 就算缺少这类属性,路由信息也不会出错
Local_Pref:IBGP间传递,用于选路
Atomic_Aggregate:标明路由有没有聚合

可选过度:

  • 在BGP对等体之间具有可传递性的属性
  • BGP路由器可以不支持此属性,但它仍然会接收这类属性,并传递给其他对等体
Community;为了标记路由,好处有容易识别;抓路由时更方便,扩展性强
Aggregator:聚合者,即谁给这条路由做的聚合

可选非过度:

  • 如果BGP路由器不支持此属性,则相应的这类属性会被忽略,不会传递给其他对等体
MED、Originator_ID、Cluster_List、Pre-Value

3.1.1 属性特点

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与ebgp互通 ibgp与ebgp区别_路由协议_02

将自己的路由传递给IBGP邻居

ibgp与ebgp互通 ibgp与ebgp区别_自治系统_03

2、将IBGP邻居学习到的路由传递给EBGP邻居时,下一跳发生改变 下一跳属性改成更新源地址

ibgp与ebgp互通 ibgp与ebgp区别_List_04

Local_Pref

  • 优选本地优先级 (Local_Prefereace)最高的路由;
  • 最常干涉IBGP关系的选路;只在IBGP邻居关系间传递;
  • 用于限制离开本AS的流量;大优;
  • 进来的路由的选路 对内import 不能对外,因为传不出去,只在IBGP间传播,可以对IBGPexport

应用场景:

1、IBGP的import、export

2、EBGP的import

MED

  • 对于来自同一AS的路由,优选MED(多出口的鉴别属性)值小的;
  • 最常用于干涉EBGP选路的属性,干涉别人对我的选路;即出去的路由的选路 对外export;
  • MED就是人为的利用路由器优选路径的规则—先比较管理距离(华为为优先级),若相同再比较度量值(华为cost)

应用场景:

可以对内,也可对外;但是只能用于两个AS间的传递,需要比较也可以,开启一个开关即可

compare-different-as-med

路由聚合

聚合后的路由会去掉原本明细的属性;所以需要标明其是被聚合的路由

聚合的本质:把明细干掉,新生成一条路由

聚合的意义:由于清洗掉了明细,则明细路由的一些防环属性,下一跳属性等就会被清洗,所有聚合属性的意义在于是否要标明聚合,是否要继承

1、聚合者 aggregator

2、有没有聚合 atomic_aggregate

团体属性

该属性为可选过度

团体属性分为:

1、自定义团体属性

a.标准团体值

b.扩展团体值(vpn-target)

2、公共团体属性

a.Internet 可以传递给所有邻居;默认的团体属性

b.No_Advertise 将不会把路由传递给他的邻居;不能传递给任何邻居

c.No_Export 不能出AS

举例:当电信与联通间的相通链路出现故障时,不允许绕行百度,那么百度对电信与联通进来的路由打上No_export,这样进来的路由就不能出去

d.No_Export_Subconfed 不能出联邦;

注意团体值的开启要打开传递的开关

具体看如下路由器的解释

[Router-route-policy]apply  community ?
  INTEGER<0-4294967295>  Specify community number
  STRING<3-11>           Specify aa<0-65535>:nn<0-65535>
  internet               Internet(well-known community attributes)
  no-advertise           Do not advertise to any peer (well-known community attributes)
  no-export              Do not export to external peers(well-known community attributes)
  no-export-subconfed    Do not send outside a sub-confederation(well-known community attributes)
  none                   No community attribute

Originator_ID

1、如下情况在RR情况下会产生环路

产生详细:即两个三角结构的两个RR,下图中的R1将A路由反射给R3,R3自己又是一个反射器,即将A路由反射给始发路由器R2,造成环路

解决:Origin_ID

起源的路由将自己的RID携带到路由里,这样通过反射器反射来的路由就不能进来

ibgp与ebgp互通 ibgp与ebgp区别_ibgp与ebgp互通_05

2、反射器之间成环,即A路由不回到起源A的路由器上

解决:Cluster_List

将RR的RID在反射路由的时候携带,放到Cluster_List里;每经过一个反射器,记录反射器的RID,放到Cluster-list

ibgp与ebgp互通 ibgp与ebgp区别_List_06

3.2 选路规则

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.优选Router ID最小的设备发布的路由。
如果路由携带Originator_ID属性,选路过程中将比较Originator_ID的大小(不再比较Router ID),并优选Originator_ID最小的路由。
11、优选具有 较小IP地址的邻居学来的路由。

3.3 对等体

对等体之间的交互原则

  • 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-为屁嗯是建立了一条隧道,与同步与否毫无关系