HCIP第十天(初始BGP边界网关协议)

一、BGP----边界网关协议

AS—自治系统—由单一机构或者组织管理的一系列IP网络及其设备的集合。
        1、网络范围太大,协议跑不过来,需要进行划分:
        2、自治管理

        为了方便区分和标定不同的AS,我们给每个自治系统设计了一个编号-----AS号-----16位二进制-----0 65535;其中0和65535为保留值,不用,所以AS号真正的取值范围为1-65534;我们将64512-65534AS号称为私有AS号。-----因为传统的AS号存在不够用的问题,所以目前也存在拓展版的AS号-----32位构成-----目前绝大多数设备也支持拓展版的AS号

        EGP协议在之前还存在一款协议—EGP,但是由于其功能有限,后来在其基础上进行优化和改进,生成了BGP协议,目前AS之间使用最广泛的协议就是BGP协议。

        在目前IPV4环境下,使用最广泛GBP版本是BGPV4。目前市场上已经存在BGPV4+*。BGP4+又可以称为MP-BGP—可以支持多种地址族的应用。

        在没有BGP协议的情况下,仅使用重发布技术,也可以实现AS之间的路由信息的共享。但是,之所以不采用这种方案,其原因如下:

                1、重发布存在缺陷—在多点重发布中,因为种子度量值问题,必然造成选路不佳
                2、ASBR设备的归属问题。

        BGP自己传递路由信息的方式一定和RIP类似,通过传递路由条目信息来实现。之所以不使用拓扑信息,主要因为:

                1、拓扑信息资源占用量较大,而BGP需要传递的数量是巨大的。
                2、传递拓扑信息将暴露本AS内部的拓扑连接情况。

        BGP-----无类别(//带子网掩码)的路径矢量型协议
        距离矢量----在距离矢量型协议中,距离是开销的体现,将跳数作为开销值的评判标准,将一个路由器看作是一个单位计算距离。
        距离矢量是算法的概念,因为IGP协议本身需要通过算法来计算出未知网段的路由信息。
        路径矢量---将一个AS看作一个整体
        路径矢量不牵扯算法,因为BGP仅仅是计算出来的路由信息发送到其他AS之中,相当于仅将现成的路由进行传递而不需要计算。(//路由的搬运工)

        IGP—选路佳,收敛快,占用资源少

BGP协议的关注点
         1、可控性—AS之间需要传递大量的路由信息,所谓可控,就是可以更方便的干涉选路,更容易做路由策略。
        为了保证可控性,BGP舍弃了开销值,取而代之的是BGP给每条路由信息时,加了很多路径属性。之后,可以通过这些属性来进行选路。因为多种属性的存在,将导致我们的选路变得更加灵活和方便,使得BGP协议具有强大的可操控型

        因为BGP需要传递大量的路由信息,所以,其本身不可能存在周期更新机制。BGP仅存在触发更新

         2、可靠性----需要保证数据传输的可靠。BGP为了保证传输的可靠性,其传输层协议直接选择TCP协议,使用TCP的179号端口进行工作
                IGP协议不选择使用TCP的原因:

1、TCP传输效率较低
2、TCP传输占用资源较大
3、TCP协议只能实现单播,所以,无法通过组播或者广播的形式发送,
   则导致IGP协议无法自动发现邻居关系,只能手工指定。

因为BGP选择使用的是TCP协议,所以,BGP需要手工建立邻居关系

        
BGP因为传输层使用的是TCP协议,所以,只要在TCP协议可以正常建立会话的基础上就可以完成BGP的建邻工作。----BGP支持非直连建邻(前提条件—网络可达)----BGP的非直连建邻建立在IGP(静态)之上。

        在BGP中,我们将邻居关系称为对等体关系

        EBGP对等体关系——如果建立对等体的两台路由器位于不同的AS中,则他们的关系被称为EBGP对等体关系。

        IBGP对等体关系----如果建立对等体的两台路由器位于不同的AS中,则他们的关系被称为IBGP对等体关系。

        因为,EBGP对等体之间一般使用直连建邻,所以,EBGP对等体之间发送的数据包中的TTL值我们设置为1.----如果遇到EBGP对等体之间需要进行非直连建邻,则需要手工修改TTL值。IBGP对等体关系在AS内部一般都是非直连建邻,所以,TTL值设置为255。

        3、AS-BY-AS------在BGP当中,我们将AS看作一个整体.
        在BGP中不支持负载均衡,BGP中如果到达目标网段存在多条路径可以走时,BGP将会根据其中的路径属性来选择一条最优的加载到路由表,而不会进行负载均衡。

二、BGP的数据包

        BGP协议所有的数据包的传输的可靠性均有TCP协议来保证。所有BGP数据包均基于TCP建立的会话通道发送。
        OSPF的hello包-----可以周期性的发现,建立和保活邻居关系。

        在BGP中,发现邻居关系的过程变为由人工指定,主要因为TCP协议需要建立会话通道,之后才会基于通道发送数据包。

open包:

建立BGP对等体关系(邻居)---邻居关系的建立无法就是参数协商的过程,
BGP建立邻居关系需要通过OPEN包来携带参数,进行对比协商。`

AS号:

在创建邻居关系时需要指定邻居所在的AS号,这个参数将被携带在open报文中发送给对方,
对方将比对这个AS号和本地所在的AS号是否一致,如果一致,则可以正常建立邻居关系。

        认证—BGP建邻也可以做认证,做认证后将携带认证口令,认证口令双方需要比对,一致则可以正常建立邻居关系。

ROUTE-ID:

区分和标定路由器,也是由32位二进制构成,按照IP 地址的格式来表示。
1、手工配置;
2、自动获取(先看设备是否存在环回接口,如果存在则将选择环回接口中IP地址最大的作为RID;
如果没有环回接口,则将在物理接口中选择IP地址最大的作为RID。
RID将在open包中携带,发送到对端之后,对端将检测这个RID,如果和本地的RID不同,则将可以正常的建立邻居关系。

        手工建立邻居关系时所指定的建邻的IP地址必须和收到的open包中的源IP地址相同才能正常建立邻居关系,否则,邻居关系建立失败。

holdtime-:

保活时间---默认时间为180S,在保活时间内,
如果没有收到对方发送的Keeplive包或者update包,
则将断开BGP邻居关系。这个参数在open报文中将被携带,
但是,双方不一致不会影响邻居关系的建立,
但是在执行时,这个时间必须是一致的,则将采用双方中较小的保活时间来使用。

        路由器是否支持刷新功能也将成为open报文中所携带的一个协商参数。

Keeplive包:

周期保活----周期发送时间=保活时间的3/1,默认保活时间180s,
则默认周期发送时间为60s。

        除了保活之外,Keeplive包还将在open报文协商参数时临时充当确认包的作用。
         TCP进行确认的目的是为了保证数据传输的可靠性,而Keeplive报文确认的目的是为了确认认可对方发送的open报文中的参数

update包:

更新包---携带需要传递的路由信息的数据包。
表示一条路由条目信息,需要携带的参数主要是目标网络号和子网掩码信息,以及路径属性。

        在更新包中,存在一个撤销路由条目字段,在这个字段下的路由条目将需要对端删除,而不再需要通过带毒传输方式来表达。

notification包:

BGP中设计的一个告警机制(//建立失败时,会告警)。

route-refresh包:

用于改变路由策略变更后请求对等体重新发送路由信息。(前提是双方均支持路由刷新功能才行)

三、BGP的状态机

         BGP的状态机描述的是BGP对等体建立过程中状态的变化,因为BGP这个协议可以将邻居建立过程和路由收发过程分开进行。
         BGP状态机----6种

在这里插入图片描述

   IDLE---空闲状态---路由器启动BGP进程之后,将先处于idle状态,当你手工指定邻居关系后,BGP将进入到一个检查环节,检查指定的IP地址在本地路由表中是否可达,如果可达,则将进入到下一个状态。------connect

   connect----连接状态,该状态完成TCP会话的建立。
     会话建立好之后进入opensent状态,发送open报文。
     如果没有建立成功则进入active状态,尝试重新建立TCP会话。
  在建立TCP会话过程中,因为双方都会主动发起建立会话的过程,而最终建立的都是一个双向的会话,所以,最终只需要保存一个会话通道即可,选择方式通过后续open报文中的RID进行比较,选择保留RID大的设备发起TCP会话。

    opensent----发出本地的open报文。收到对端发送的open报文,查看里面的参数,之后,如果确认参数无误,则将回复Keeplive报文作为确认。

    openconfim---open报文确认状态----对端也收到本地发送的open报文,之后根据里面的参数进行确认,如果确认无误则将发送Keeplive报文。本段收到对方的Keeplive报文后将进入到下一个状态。

  established----建立状态----标志着BGP对等体关系的建立。

在这里插入图片描述

四、BGP的工作过程

     1、基于IGP协议实现IP可达
     2、指定邻居关系,通过三次握手,建立TCP的会话通道,之后所有BGP的数据包都将基于TCP会话通道来进行传递。
     3、使用open报文和Keeplive报文进行邻居关系的建立。之后将邻居关系收集到一张表中---邻居表。
     4、通过update报文传递路由信息。传递的路由条目信息中主要包含目标网络号,掩码信息,以及各种路径属性。之后,设备会将所有自己发出的以及收到的路由信息记录在一张表中----BGP表
     5、之后将BGP表中的最优路径加载到路由表中。最优路径依靠属性选出。
     6、收敛完成后,BGP将周期使用Keeplive报文进行保活。保活时间默认为180s,周期发送时间默认为保活时间的1/3,即60s.
     7、若出现错误信息,将使用notification报文进行告警。
     8、若发生结构突变,则将使用update报文进行触发更新。

五、BGP的路由黑洞

         由于BGP协议支持非直连建邻,故可能出现BGP协议跨越未运行BGP协议的路由器导致BGP路由传递后,控制层面可达,但是数据层面,在经过未运行BGP协议的路由器时无法通过,形成路由黑洞。
        解决方法:

     ways1、在R3上将BGP协议的路由信息重发布到IGP当中
     ways2、直接在R4上运行BGP 协议
     ways3、MPLS      

        为了避免路由黑洞的情况产生,BGP提出了同步机制---------即当一台路由器从自己IBGP对等体学习到一条BGP路由时,他将不能把他通告给自己的EBGP对等体,除非他又从IGP协议当中学习到这条路由。

六、BGP的防环

        1、BGP使用的防环机制----水平分割机制

        2、EBGP的水平分割----一种专门应用在EBGP对等体之间,用来解决EBGP对等体之间可能出现的环路问题。

BGP协议将在路由条目中记录所经过的AS编号
AS_PATH : 记录AS路径的一个属性(这个属性除了可以完成EBGP的水平分割外,还可以作为选路的依据),还可以进行选路。
接收到的BGP路由条目中,其中的AS_PATH属性中,若存在本地的AS号,则拒绝接受。

在这里插入图片描述
//当AS1将网段信息发送给AS2,路由信息离开AS1的那一刻它的AS_PATH属性会+1,当路由信息离开AS2时,会在其AS_PATH前加上21,当路由信息离开AS3时,会在其AS_PATH前加上321,又回到AS1时,其发现AS_PATH里面还有一个1 ,与自己的AS_PATH进行比较,那么AS1将不会重复进行转发了。

      AS_PATH------选路作用

在这里插入图片描述
//当AS1到达AS3时,会经历AS1---->AS2----->AS3这条路,其AS_PATH为21,而另外一条路AS1---->AS3的AS_PATH的值为1 ,那么AS1会优先选择AS_PATH值最小的路径2.

        3、IBGP的水平分割----一种专门应用在IBGP对等体之间,用来解决IBGP对等体之间可能出现的环路问题。

在这里插入图片描述         IBGP水平分割-----当一个路由从一个IBGP对等体处学习到某条BGP路由时,他将不能在这条路由信息通告给其他的IBGP对等体关系。(//即R2在学习到的R1的信息,发送给R4,但是R4不能发送给R3,这样避免了环路的产生)

        因为IBGP水平分割限制,导致IBGP对等体之间的路由信息只能传递一跳,在这情况下,可能会造成通信障碍,解决方案:

        ways1、构建全连的IBGP对等体关系
 缺点:  1、全连建邻会导致资源消耗增加;
        2、可能会导致网络的可拓展性降低。
         ways2:路由反射器
         ways3:联邦
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值