BGP ---边界网关协议

BGP ---边界网关协议
AS ---自治系统---由单一机构或组织管理的一些列IP网络及其设备的集合。
      1,网络范围太大,协议跑不过来,需要进行划分;
      2,自治管理
      为了方便区分和标定不同的AS,我们给每个自治系统设计了一个编号---AS号---16位二进制构成--- 0 - 65535;其中0和65535为保留值,不用,所以,AS号真正的取值范围为1 - 65534;我们将64512- 65534AS号称为私有AS号。-J因为传统的AS号存在不够用的问题,所以目前也存在拓展版的AS号--- 32位构成---目前绝大多数设备已经支持拓展版的AS号
      EGP协议在之前还存在一款协议---EGP,但是由于其功能有限,后来在其基础上进行优化和改进,生成了现在的BGP协议。目前AS之间使用最广泛的协议就是BGP协议。
      在目前IPV4环境下,使用最广泛的BGP版本是BGPV4.目前市场上已经存在BGPV4+。BGPV4+又可以称为MP-BGP---可以支持多种地址族的应用。
      在没有BGP协议的情况下,仅使用重发布技术,也可以实现AS之间的路由信息的共享。但是,之所以不采用这种方案,原因如下:
               1、重发布技术本身存在缺陷---在多点重发布中,因为种子度量值的问题,必然造成选路不佳。
               2、ASBR设备的归属问题。
      BGP之间传递路由信息的方式一定是和RIP类似,通过传递路由条目信息来实现。----之所以不使用拓扑信息,主要原因:
                              1、拓扑信息资源占用量太大,而BGP需要传递的数量是巨大的。
                              2、传递拓扑信息将暴露本AS内部的拓扑连接情况。

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

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

BGP协议的关注点:
      一,可控性---AS之间需要传递大量的路由信息,所谓可控,就是可以更方便的干涉选路,更容易做路由策略。
      为了保证可控型,BGP舍弃了开销值。取而代之的是BGP给每条路由信息附加了很多路径属性。之后,可以通过这些属性来进行选路。因为多种属性的存在,将导致我们的选路变的更加的灵活和方便。使得BGP协议具有强大的可操控型。
 
     因为BGP协议需要传递大量的路由信息,所以,其本身不可能存在周期更新机制。BGP仅存在触发更新。
     二、可靠性---需要保证数据传输的可靠,BGP为了保证传输的可靠性,其传输层协议直接选择使用TCP协议。使用TCP的179号端口进行工作。
            IGP协议不选择使用TCP的原因:
                  1、TCP传输效率较低。
                  2、TCP传输占用资源较大。
                  3、TCP协议只能实现单播,所以,无法通过组播或者广播的形式发送,将导致IGP协议无法自动发现邻居关系,只能手工认证。

     BGP因为传输层使用的是TCP协议,所以,只要在TCP协议可以正常建立会话的基础上就可以完成BGP的建邻工作。
              ----BGP支持非直连建邻(网络可达)。
              ----BGP的非直连建立在IGP(静态)之上。
     在BGP中,我们将邻居关系称为对等体关系。
            EBGP对等体关系
                     ---如果建立对等体的两台路由器位于不同的AS中,们的关系被称为EBGP对等体关系。
            IBGP对等体关系
                     ---如果建立对等体的两台路由器位于同一个的AS中,贝他们的关系被称为IBGP对等体关系。
            因为,EBGP对等休之问般使用直连建邻,所以,EBGP对等体之间发送的数据包中的L值我们将其设置为。如果遇到EBGP对等体之间需要进行非直连建邻,则需要手工修改TT业值。VP对等体夭系在AS内部一般都是非直连建邻不D值设霞为255。

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


BGP
       1.数据包
             BGP协议所有数据包的传输的可靠性均由TCP协议来保证。所有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包---周期保活
                       --周期时间等于保活时间的1/3。默认保活时间180s,则默认周期发送时间为60s。
                       --除了保活之外,keeplive包还将在open报文协商参数时临时充当确认包的作用。 
          TCP协议进行确认的目的是为了保证数据传输的可靠性,而keeplive报文确认的目的是为了确认认可对方发送的open报文中的参数。      
              update包---更新包
                        --携带需要传递的路由信息的数据包,表示一条路由条目信息,需要携带的参数主要就是目标网络号和子网掩码信息,以及路径属性。
                       --在更新包中,存在一个撤销路由条目字段,在这个字段下的路由条目将需要对端删除,而不再需要通过带毒传输的方式来表达。

              notification包---BGP中设计的一个告警机制
              route-refresh包---用于改变路由策略变更后请求对等体重新入送路由信息。(前提条件是双方均支持路由刷新功能才行。)
       2.状态机
           BGP的状态机描述的是BGP对等体建立过程中状态的变化。因为BGP这个协议可以将邻居建立过程和路由收发过程分开进行。
           BGP的状态机---6种
               1、IDLE---空闲状态---路由器启动BGP进程之后,将先处于idle状态。当你手工指定邻居关系后,BGP将进入到一个检查环节,检查指定的IP地址在本地路由表中是否可达。如果可达,则将进入到下一个状态---connect。
               2、Connect ---连接状态,该状态完成TCP会话的建立。
                      如果TCP会话建立成功,则将进入到opensent状态,发送open报文。
                      如果TCP会话建立失败,则将进入ACTIVE状态,尝试重新建立TCP会话。
                      在建立TCP会话过程中,因为双方都会主动发起建立会话的过程,而最终建立的都是一个双向的会话。所以,最终只需要保持一个会话通道即可。选择方式是通过后续open报文中的RID进行比较,选择保留RID大的设备发起的TCP会话。
                3、Opensent ---发出本地的open报文。收到对端发送的open报文,查看里面的参数,之后,如果确认参数无误。则将回复keeplive报文作为确认。
                4、Openconfirm --- open报文确认状态---对端也收到本地发送的open报文,之后根据里面的参数进行确认。如果确认无误则将发送keeplive报文。本段收到对方发送的keeplive报文之后将进入下一个状态。

                5、Etablished---建立状态--标志着BGP对等体关系的建立


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

     由于BGP协议支持非直连建邻,故可能出现BGP协议跨越未运行BGP协议的路由器。导致BGP路由传递后,控制层面可达,但是数据层面,在经过未运行BGP协议的路由器时无法通过。形成路由黑洞。
             1,在R3上将BGP协议的路由信息重发布到IGP当中。
             2,直接在R4上运行BGP协议
             3, MPLS
        为了避免路由黑洞的情况产生,BGP提出了同步机制---即当一台路由器从自己的IBGP对等体学习到一条BGP路由时,他将不能把他通告给自己的EBGP对等体,除非他又从IGP协议当中学习到这条路由。
5, BGP的防环
              BGP使用的防环机制---水平分割机制
              EBGP的水平分割---一种专门应用在EBGP对等体之间,用来解决EBGP对等体之间可能出现的环路问题。
                  BGP协议将在路由条目中记录所经过的AS编号----AS_PATH--记录AS路径的一个属性。(这个属性除了可以完成EBGP的水平分割外,还可以作为选路的依据。)---接收到的BGP路由条目中,其中的AS_PATH属性中,若存在本地的AS号,则将拒绝接受。
             IBGP的水平分割---一种专门应用在IBGP对等体之间,用来解决IBGP对等体之间可能出现的环路问题。

            IBGP水平分割---当一个路由器从一个IBGP对等体处学习到某条BGP路由时,他将不能在将这条路由信息通告给其他的IBGP对等体关系。R2
            因为IBGP水平分割的限制,导致IBGP对等体之间的路由信息只能传递一跳,在这情况下,可能会造成通信障碍。解决方案∶
                    1,构建全连的IBGP对等体关系---这样的方法弊端在于
                             1,全连建邻会导致资源消耗增加;
                             2,可能会导致网络的可拓展性降低。

6,BGP的基本配置 
     1,BGP建邻的基本配置 
              1,EBGP对等体关系直连建邻 
              [r1]bgp 1 ----启动BGP进程----后面的1不是进程号,而 是配置路由器所在AS的AS号 
              [r1-bgplrouter-id 1.1.1.1 ---配置RID 
              [r1-bgp]peer 12.0.0.2 as-number 2 ---手工指定对等体关系 
              [r1ldisplay bgp peer ---查看BGP邻居表的命令 
            2,IBGP对等体关系之间的环回建邻 由于IBGP邻居处于同一个AS中,一般情况下,一个AS中存在 大量的备份路径,若使用物理接口建立邻居关系,将浪费这些备 份或者负载均衡资源,故建议使用环回接口来进行IBGP对等体关 系的建立。 
             [r2-bgplpeer 3.3.3.3 as-number 2 
             [r2-bgp]peer 3.3.3.3 connect-interface LoopBack 0 ---指定在给 3.3.3.3发包时使用的源IP地址为环回接口0的IP地址。 注意:在使用环回接口建立对等体关系时,一定要修改发送 接口。 
          3,EBGP对等体关系之间的非直连建邻 注意:在EBGP对等体关系之间,一般是不具备非直连建邻的 路由基础的,所以,需要先保证地址可达才行。 
             [r4-bgp]peer 5.5.5.5 as-number 3 
             [r4-bgp]peer 5.5.5.5 connect-interface LoopBack O  
             [r4-bgplpeer 5.5.5.5 ebgp-max-hop 2 ---因为EBGP对等体之间 一般是直连建邻,所以,数据包中的TTL值设置为1,要想非 直连建邻,则需要将这个值改大。 
             [r5-bgp]peer 4.4.4.4 ebgp-max-hop ---如果后面不跟参数,则 代表将TTL值修改为最大值255 
   2,发布路由 
         1,network ---在BGP中只能用来发布路由条目信息 注意:只要是路由表中存在的路由条目信息,BGP都可以通过 Network来进行发送。 
            [r1-bgp]network 1.1.1.0 24 ---目标网段信息及掩码必须和路由表 中的完全一致才行。 
            [r1-bgp]display bgp routing-table ---查看BGP表 
             Network               NextHop   MED    LocPrf PrefVal Path/Ogn 
             *> 1.1.1.0/24           0.0.0.0     0             0       i
      Network ---目标网段信息及掩码信息 
      NextHop --- BGP的一个路径属性----谁发的路由信息,下一跳 就是谁,如果是自己发的,则下一跳为0.0.0.0。 状态码 
         *---代表可用---设备每收到一跳路由信息,都会检查其下一跳 的可达性。即根据下一跳在路由表中递归查询,只要可达,则改 路由信息可用。 
         >---代表优选---当收到到达相同网段存在多条路由信息时, BGP将在其中根据属性优选出一条加载到路由表中。这条优选路 由将赋予这个标记。 
注意:只有一条路由条目是可用且优选的,他才能够被加到路由表中,也才能够被传递给其他的BGP对等体。

          1.1.1.0/24 EBGP 255 ---通过EBGP对等体学到的BGP路由信 息,其标记为EBGP,默认的优先级为255。 
         I ---状态码I ---代表BGP路由信息是从自己IBGP对等体处学到的 
           i 1.1.1.0/24 12.0.0.1 ---因为在AS内部存在AS-BY-AS规则,所以,默认情况下传递的属性信息是一致的,因为这个下一跳也属于路径属性之一,默认情况下也不会传递,则将可能导致 路由可用性校验失败。 
          [r2-bgp]peer 3.3.3.3 next-hop-local---在给3.3.3.3传递路由信息是 将下一跳属性改为本地 
          1.1.1.0/24 IBGP 255 ---通过IBGP对等体学到的BGP路由信 息,其标记为IBGP,默认的优先级为255。 
             路由表中的NextHop直接使用的是BGP属性中的下一跳,因为之前 进行过可用性校验,所以,可以保证能够递归查找找到这个下一 跳. 
2,重发布 [r2-bgpJimport-route ospf 1 ---将OSPF的路由信息导入到 BGP当中。 
         OGN ---起源码--- I,e,?---用来标识路由条目的起源 
                    I---代表该路由信息起源于IGP协议(不局限于IGP协议, 包括静态,直连),代表该路由条目起源于AS内部--- 通过network发布出来的路由信息其起源码为I 
                   E ---代表该路由信息起源于EGP协议--- EGP指的是 BGP之前使用的外部网关协议 
                   ?---通过除了以上两种方式学习到的路由---重发布 导入的路由起源码都是? 
7,BGP的路由聚合 
            自动聚合--- 
               1,该方法只能针对重发布发布的路由信息生效。
               2,自 动聚合的路由只能按照主类进行聚合,将造成巨大的路由黑洞。所以,华为设备BGP的自动聚合功能是默认关闭的。 
                 1,抓取流量 
                          [r1]ip ip-prefix aa permit 172.16.0.0 22 greater-equal 24 less- equal 24」 
                 2,做路由策略 
                         [r1]route-policy aa permit node 10 

                        [r1-route-policy]if-match ip-prefix aa 
                        [r1-route-policylq]
              3,在重发布过程中调用路由策略 
                        [r1-bgpJimport-route direct route-policy aa 
                        [r1-bgp]summary automatic ---开启自动聚合的方法 
                        *> 172.16.0.0 127.0.0.1 ---通过自动聚合会发布一条新的汇总路由,他是不携带子网掩码的,因为按照主类汇总,则子网掩码取主类默认值。而且通过聚合发布的路由信息其下一跳属性为127.0.0.1 
注意:自动聚合之后,发布的汇总路由信息将在本地路由表中产 生一条指向汇总的空接口,自动防环。 
                      状态码--- S --- suppressed ---抑制---抑制路由条目的传递 .
           手工聚合---
                因为自动聚合存在两个缺陷,所以,如果需要对汇总进 行精准把控时,手工聚合将是更理想的方案。 
                       [r1-bgp]aggregate 172.16.0.0 22 ---手工聚合 
                      *> 172.16.0.0/22 127.0.0.1 ---手工聚合后发布的路由条目将 携带掩码信息,并且下一跳也是指向127.0.0.1,则其也会自动生 成一条到达汇总网段指向空接口的路由进行防环。 
          手工聚合的问题:
                1,发布聚合路由的情况下,不会抑制明细路 由,导致汇总操作并没有减少路由条目数量,反而增加了。 
                2,在进行汇总的时候,发布的汇总路由不会继承明细路由的属 性,尤其是AS_PATH,则将导致汇总路由部分属性缺失,甚至可 能出现环路。 
        为了避免以上两个问题的产生,我们必须在配置过程中增加命令来完成。 
                   [r4-bgplaggregate 172.16.0.0 22 detail-suppressed ---在发布汇总路由条目的同时将抑制所有的明细路由 
           但是,因为BGP协议的一些特殊性,我们往往不能将其所有的明 细路由全部抑制。只能够抑制部分的路由信息---所以我们需要使用到suppressed- policy。 
             1,抓取流量,使用前缀列表
                   [r4]ip ip-prefix aa permit 172.16.1.0 24 
             2,使用路由策略匹配流量 
                   [r4]route-policy aa permit node 10 
                   [r4-route-policy]if-match ip-prefix aa 
            3,使用抑制策略调用路由策略 
                   [r4-bgp]aggregate 172.16.0.0 22 suppress-policy aa 
           对于第二个问题,我们专门设计了一个AS_SET关键字,如果在配置命令的时候,将这个关键字激活,则BGP在汇总路由时,将携带上明细的AS_PATH属性,来进行防环。 
                           [r4-bgp]aggregate 172.16.0.0 22 suppress-policy aa as-set 
 
              明细路由携带的AS_PATH属性不一样,则在激活了AS_SET属性 后,汇总路由将会把明细路由的AS号都携带上并且用大括号括起 来,之后,在进行防环的时候,里面所有AS号都将生效,都不能回传。但是,在使用AS_PATH属性进行选路的时候,当作一个 AS来看待。            

        因为聚合后的路由信息存在属性丢失问题,所以,这样的汇总路 由需要格外的关注。为此,我们为BGP专门引入了两个属性--- ATOMIC_AGGREGATE, AGGREGATOR 
ATOMIC_AGGREGATE ---纯粹预警属性---只有在抑制全部明 细路由时才会携带 
AGGREGATOR ---将携带汇总者的RID以及其所在的AS号 
[r4]display bgp routing-table 172.16.0.0 ---查看一条路由的详细情 况 
8,路由反射器 
          Router Reflector ---路由反射器--- RR ----我们可以通过配置,将 某些设备在一定的条件下设置称为路由反射器,之后,该设备将可以反射所学习到的IBGP路由信息。
         我们在指定一台路由器称为路由反射器(RR)的同时,必须在他的IBGP对等体关系中选择一个或者多个设备称为他的客户 (client),RR和客户之间所构成的系统我们称为反射簇 (Cluster)。每一个反射簇都将使用RR的RID作为簇ID。其余没有 称为RR客户的IBGP对等体关系,我们将称其为非客户。 
路由反射器的反射规则: 
               1,当路由反射器从自己客户处学习到一条路由,则他将会把这条路 由信息反射给自己所有的客户以及非客户 2,如果路由反射器从自己的非客户处学习到一跳路由,则他将把这 条路由信息反射给自己所有的客户但是不能反射给非客户。 
“非非不传” 
                3,当路由器执行路由反射时,他只将自己使用的最优的BGP路由进行 反射!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值