BGP边界网关协议

1.边界网关协议:

边界网关协议分为内部网关协议外部网关协议

     IGP:内部网关协议(RIP,OSPF)
 ​
     EGP:外部网关协议(BGP)

AS自治系统:

由单一的机构/组织所管理的一系列IP网络及设备所构成的集合。使用AS自治系统来划分内部和外部网关协议

划分AS的原因:

  ①网络范围太大,协议收敛较慢
  ②自治管理
 ​
     为了方便对自治系统的管理,给每个自治系统设置一个号码(AS号:0-2^16)其中0和65535为保留,所以可以范围:1-65534,而其中64512-65534被设定为私有AS号,剩下的为公有AS号。而因为传统的AS号不够用,所以目前大部分设备均支持扩展AS号(32位二进制构成)。
       https://www.cidr-report.org/as2.0/  4134 中国电信  9929中国铁通

2.重发布解决AS间的问题:

AS间相互获取路由信息可以使用重发布,但是重发布存在有很多的问题:

     选路不佳:重发布导入路由时会刷新开销值
 ​
   ASBR的归属问题(ASBR保存两个AS区域的信息,且ASBR的维护成本较高)

3.BGP协议:

BGP协议是无类别路径矢量协议(区别距离矢量链路协议)

     BGP的无类别表示的是传递路由信息携带子网掩码
 ​
     而BGP的路径矢量性体现在:
 ​
     ①距离矢量中的距离指的是协议将一个路由器作为一跳来计算开销,路径矢量是以一个AS作为一个单位来传递信息的
 ​
     ②距离矢量型协议是根据算法来区分,BGP不存在算法的概念,因为BGP不需要去计算路由,只需要将现有路由传递到自己的邻居即可

目前在IPV4环境下主要使用BGPV4,也存在BGPV4+(在BGPV4的基础上,支持多种地址族)

4.BGP的评判标准:

IGP的评判标准是参考选路佳,收敛快,占用资源少

相比之下EGP的评判标准则更加的简单:

     ①可控性:AS区域之间需要传递大量的路由信息(包含了一个AS的所有路由信息),所有需要EGP可以方便的干涉选路,更容易做策略,以弥补重发布的不足
 ​
     为了保证路由传递的可控性,更方便干涉选路,BGP舍弃了开销值,取而代之的是为他选路信息设计了很多路径属性。可以通过属性进行选路,使得选路更加灵活,可控性更高
 ​
     ②可靠性:BGP为了保证传输的可靠性,选择使用TCP协议作为传输层协议来完成数据传输与接收。BGP使用的是TCP的179号端口
 ​
     而使用TCP协议通讯存在传输效率较低,且只能实现单播通讯(TCP需要建立会话),占用资源大的问题,而且使用TCP便不能通过广播和组播去发现邻居进行通信(BGP需要手工建立邻居关系)
 ​
     ③AS-BY-AS:BGP将AS作为一个单位(BY)来看待,并且BGP不支持负载均衡
     在AS内部传递的路由条目属性不变

5.BGP的对等体:

BGP协议可以实现非直连建邻,非直连建邻的前提条件是邻居双方网络可达(BGP的非直连建邻是建立在IGP的基础上)

     而可以根据邻居关系(对等体)的建立情况,将BGP的邻居关系分为两种(AS之间,AS内部)
 ​
     ①AS之间:EBGP对等体(建立对等体的两台路由器位于不同AS中,则他们的关系被称为EBGP对等体关系)
 ​
     ②AS内部:IBGP对等体(建立对等体的两台路由器位于同一个AS中,则他们的关系被称为IBGP对等体关系)
 ​
     EBGP对等体之间的一般采用直连建邻的方式,使用EBGP的TTL为1,IBGP对等体之间需要非直连建邻,所以IBGP对等体之间的TTL为255。
 ​
     如果EBGP对等体之间需要非直连建邻,则需要手工修改TTL    (非直连建邻的前提条件是邻居双方网络可达)

6.BGP的数据包:

BGP的数据包和OSPF的数据包类似,但是又不同,首先OSPF的hello包有周期发现,建立和保活邻居关系的作用,在BGP中,也使用了类似open包和keeplive包来模拟hello包的作用。

     在BGP中由手工指定邻居关系来完成OSPF的邻居发现的任务,在BGP中由OPEN包来表示邻居关系建立的任务,在BGP中由Keeplive包来进行邻居的保活任务(相当于模拟了hello包)
 ​
     BGP的数据包是在TCP连接建立下进行传输的 

Open包

Open包主要用来建立邻居,而建立邻居关系需要几个确认(AS号,认证,RID),只有这三样相同才能建立起邻居关系。OPEN包中也会携带自身是否支持路由刷新,路由纠错等功能的相关参数,然后在邻居双方进行协商,如果双方都支持则开启相关功能

     ①AS号:在手工建立邻居关系时,声明的邻居的AS号,对端收到后,会检查其是否和本地AS号一致,一致则正常建立邻居关系(对等体)
 ​
     ②认证:BGP也可以在建邻时做认证,需要比对双方的认证口令,不一致则无法建立邻居关系(对等体)
 ​
     ③Route-ID:主要为了区分和标定路由器。open包携带RID的目的是为了确保双方的RID不一致(确保其唯一性,如果相同则无法建立邻居关系),主要作用在域内建立对等体
 ​
     RID是由32位二进制构成,并且遵循IP地址的格式,可以通过是手工配置和自动获取。BGP会先在自己的路由器的环回接口中选择最大的IP地址作为RID,如果没有环回接口则再物理接口中选择IP地址最大的作为RID
 ​
     在接受邻居数据包时,其中的源ip必须和手工指定的邻居的ip地址一致才可以正常建立邻居关系(这个地址将作为之后的更新源地址)
 ​
     OPEN包在建立邻居关系的时候会携带保活时间(hold time)这个参数默认为180s(双方建邻时携带这个值,但并不要求必须相同),但是在BGP传输执行时,必须相同(选择保活时间较小的作为执行时间)。若180s内收到对方发送的Keeplive包/Update包,则会刷新计时器;若收不到则判定BGP链接中断(此时会中断TCP连接)

Keeplive包

Keeplive包主要就是周期保活TCP会话,不需要携带太多的参数。Keeplive包还有一个作用就是在接收到对方发送的OPEN包后,临时充当确认包的作用。目的:用来确认OPEN包的数据参数,如果认同对方的参数则回复keeplive包进行确认

     keep包的发送周期为1/3的hold time (hold time默认180s)

Update包

Update更新包,携带路由信息的数据包(包括目标网段,子网掩码信息,以及BGP的各种属性)

     在UPdate包中存在有撤销路由字段,可以在直接不可达的路由信息放在该字段下进行通告,以达到传递失效信息的目的,而不会RIP一样带毒传输(占用路由资源)。

Notification包

BGP数据包中的一个告警机制(错误检查包)

     当BGP检测到一个错误的时候,他将会用这个包进行告警,告知对端错误点在哪

Route-refresh包

不常用,用于改变路由策略后请求对等体重新发送路由信息

     前提要求对等体双方均支持路由刷新

7.BGP的状态机:

BGP的状态机只是描述BGP对等体建立过程中的状态变化。BGP可以做到建立邻居关系和发布路由分开完成(不同于OSPF)

IDLE状态(空闲状态)

一开始启动BGP之后,会先处于IDLE状态,之后手工指定邻居关系

     当手工指定好邻居之后,BGP将会先开启检查步骤。将需要确认指定的IP地址在本地路由表中是否路由可达。如果可达,则开始尝试建立TCP会话,并进入下一个状态;如果不可达,则停留在IDLE状态。

Connect状态(连接状态)

进行TCP会话的连接状态。如果TCP建立成功则进入OPENsent状态;如果TCP建立失败则停留在Active状态

     在建立TCP会话连接时,双方都会尝试连接,一方建立成功则将创建一个双向的TCP通道;双方都建立成功则会出现两个双向通道。需要关闭其中的一个TCP通道,而通过OPENsent状态发送OPEN包,并通过比较其中携带RID,仅保留RID大的一段发起的TCP连接,而RID小的一段发起的TCP通道将会被断开

Active状态

这个状态代表着TCP连接没有建立成功,双方会不断尝试进行TCP连接

OPENsent状态(开始发送状态)

TCP会话建立成功后,邻居开始互相发送OPEN包,包中携带建立邻居关系所需的参数。当收到对端发送的OPEN包,将进行参数效验和检测,如果参数没有问题则会回复一个keeplive包作为确认,此时进入openconfirm状态

OPENconfirm状态(open确认状态)

对端收到本端的OPEN包,在确认参数无误后则发送keeplive包进行确认。此时则代表双方的OPEN包中的参数都确认无误就进入Established状态(open包中的参数协商完成)

Established状态(建立完成状态)

双方的OPEN包中的参数都确认无误---标志对等体建立完成

img

8.BGP的工作过程:

 1.基于IGP(静态,直连)实现ip可达:
 ​
  2.指定邻居关系,邻居间需要建立TCP会话通道。BGP之后发送的所有数据包都是通过TCP会话通道发送,来保证其传输可靠性的。
 ​
  3.使用OPEN报文和KEEPlive报文进行邻居关系建立;生成邻居表
 ​
  4.使用Update报文共享路由信息,信息中携带目标网络号、掩码信息和各种属性;将收集和发送的所有路由信息记录在一张表中---BGP表
 ​
  5.之后,将BGP表中的最优路径加载到路由表中。(到达同一个目标网段可能收到多条路由信息,BGP仅加载一条(不存在负载均衡)最优路径,最优路径是通过属性来选择的)
 ​
  6.收敛完成后,将使用keeplive包进行周期保活,默认保活时间holdtime为180秒,周期发送keepalive时间为60s
 ​
  7.若出现错误信息,将使用notification报文进行告警;这个错误信息可能出现在对等体建立的时候,也可能出现在之后)
 ​
  8.若发生结构突变,则将直接发送UPdate报文进行触发更新。

9.IBGP和EBGP区别

IBGP –内部BGP邻居关系 在同一个AS的BGP设备间的邻居关系

EBGP – 外部的BGP邻居关系 不同AS的BGP设备间建立的邻居关系

10.BGP的路由黑洞

由于BGP协议可以非直连建立邻居关系,故可能出现BGP协议邻居间跨越了未运行BGP协议的路由器;

导致BGP路由传递后,控制层面显示可达,但数据层面,流量经过未运行BGP协议的路由器时,无法通过;

最终不通--- 控制层面可达、数据层面不可达—路由黑洞

解决方案:

1、 物理或逻辑链路全连

2、 BGP邻居关系全连—所有路由器均运行BGP

3、 IGP重发布到BGP

4、 MPLS (推荐做法)

11.BGP的防环机制—水平分割

1、EBGP水平分割—防御EBGP环境下的环路

BGP协议将在路由条目中记录所有经过的AS编号;---as-path属性—装载所有经过的AS编号属性

接收到的BGP条目中,若as-path属性存在本地的AS号将拒绝接收

2、IBGP水平分割—防御IBGP环境下的环路

AS-BY-AS特性—以一个AS为一跳;因此在一个AS内部传递的路由,其属性默认没有任何变化;

IBGP水平分割—从一个IBGP邻居处学习到的路由,不得传递给本地的其他的IBGP邻居;

为了实现所有BGP设备学习到所有路由,在IBGP水平分割的条件下,两两间均需要建立IBGP邻居关系;

IBGP邻居关系的数量成指数上升;

后期可以使用联邦或路由反射器来打破;

12.BGP的基本配置

《1》在BGP协议中,邻居的建立,与路由条目的宣告是分开进行的;

【1】 直连的EBGP邻居间建立

 [r1]bgp 1   启动时需要定义其所在的AS号 没有多进程的概念
 ​
 [r1-bgp]router-id 1.1.1.1     建议配置RID,与OSPF的RID配置规则一致
 ​
 [r1-bgp]peer  12.1.1.2 as-number 2  建立邻居关系,定义对端设备的ip地址,及所在AS编号

【2】 建立IBGP邻居关系

由于IBGP邻居处于同一个AS中,正常一个AS的内部存在大量的备份路径;若使用物理接口建立邻居关系,将浪费这些备份或负载均衡路径;故建议使用环回接口来进行IBGP邻居关系;

  [r2]bgp 2 
 ​
  [r2-bgp]peer  3.3.3.3 as-number 2 -与环回3.3.3.3 建立邻居关系
 ​
  [r2-bgp]peer  3.3.3.3 connect-interface LoopBack 0---源IP为环回口,目标为环回3.3.3.3

切记:一旦使用环回地址做为建邻地址,同时需要修改源ip地址,为本地的环回地址;

【3】 EBGP邻居间,存在多条物理链路的建立方案

建议使用环回来作为源、目标ip地址;便于利用所有物理链路

1) IP可达问题,一般使用静态路由

2) 正常使用环回地址作为源、目来建立邻居关系

 [r5]bgp 3 
 ​
 [r5-bgp]peer  4.4.4.4 as-number 2  
 ​
 [r5-bgp]peer  4.4.4.4 connect-interface LoopBack 0

3) EBGP邻居间,默认TTL值为1,IBGP为255;因为理论上EBGP邻居间没有第三台路由器

故TTL值设定为1,将只能和直连的物理接口建立邻居;一旦使用环回,必须修改TTL值

 [r4-bgp]peer  5.5.5.5 ebgp-max-hop 2  修改EBGP邻居间的TTL值
 ​

两端配置完成后,将基于TCP的三次握手,建立TCP会话

 [r1]display tcp status  ---查看tcp会话建立状况
 ​
 TCPCB   Tid/Soid Local Add:port     Foreign Add:port    VPNID  State
 ​
 b4d0f018 164/5   12.1.1.1:179      12.1.1.2:49877     0    Established

固定端口的使用者为服务端;

会话建立后,邻居间使用open报文,建立BGP的邻居关系;生成邻居表:

 [r1]display  bgp peer ---查看BGP邻居建立
 ​
  BGP local router ID : 1.1.1.1
 ​
  Local AS number : 1
 ​
  Total number of peers : 1         Peers in established state : 1
 ​
  
 ​
  Peer       V      AS  MsgRcvd  MsgSent  OutQ  Up/Down    State PrefRcv---学到的路由条目数量
 ​
  
 ​
  12.1.1.2     4      2     6     8   0 00:04:22 Established    0
 ​
 邻居的ip地址   版本4  对端AS号           状态机(以建立) 从该邻居处学习到的条目数量
 ​
 

《2》BGP路由的宣告

BGP协议可以宣告本地路由表中,任意来源路由;本地直连、静态、IGP动态产生均可;

宣告时,宣告的条目内容必须和本地路由表中完全一致;

 [r1]bgp 1 
 ​
 [r1-bgp]network  1.1.1.0 24

本地将生成BGP表;装载本地接收及发送出去的所有路由信息;

 [r1]display  bgp routing-table 
 ​
  Total Number of Routes: 1
 ​
    Network       NextHop     MED     LocPrf   PrefVal Path/Ogn
 ​
  *>  1.1.1.0/24      0.0.0.0     0           0    i
 ​
 状态  网络号              属性
 * 可用
 > 优秀     
 可用且优,意味着该条目,可以传递(共享给本地的其他BGP邻居);可以加表(可以加载到本地的路由表中)
 ​
 i意味着通过IBGP邻居学习

当下BGP环境,不优主要是因为下一跳不可达;

因为AS-BY-AS 导致,一条路由信息在IBGP邻居传递时,其属性默认不变化;最终时常导致下一跳不可达;

 [r2]bgp 2 
 ​
 [r2-bgp]peer  3.3.3.3 next-hop-local  要求路由条目传递给,下一个邻居时,修改下一跳为本地地址;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网工blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值