BGP路由协议②

BGP的基础配置:

        BGP的邻居建立有两个情况,一种是两个AS之间的EBGP建邻,还有一种是IBGP之间的邻居建邻

EBGP建邻:

1.EBGP对等体直连建邻

        ①启动BGP进程

        ②配置RID

        ③手工建邻(指定邻居和邻居所在AS的编号)

//EBGP建立邻居关系
[ebgp 1]bgp 1
[ebgp 1-bgp]router-id  1.1.1.1
[ebgp 1-bgp]peer  12.0.0.2  as-number  2

//EBGP邻居的配置
[ebgp 2]bgp 2
[ebgp 2-bgp]router-id  2.2.2.2
[ebgp 2-bgp]peer  12.0.0.1  as-number  1

2.EBGP对等体非直连建邻

        因为EBGP对等体之间一般采用直连建邻的方法。所以EBGP对等体之间的数据包中的TTL值默认值数为1,同时加入了直连检测(检测源目IP是否在同一个网段)。

        因为华为设备并没有直接关闭直连检测的方法,但是可以通过修改TTL值来让EBGP邻居间可以正常非直连建邻,直连检测将会自动失效。

[IBGP2]bgp 4
[IBGP2]router-id 4.4.4.4
[IBGP2-bgp]peer 5.5.5.5 connect-interface LoopBack 0
[IBGP2-bgp]peer 5.5.5.5 ebgp-max-hop 2


[EBGP2]bgp 5
[EBGP2-bgp]router-id 5.5.5.5
[EBGP2-bgp]peer 4.4.4.4 connect-interface LoopBack 0
[EBGP2-bgp]peer 4.4.4.4 ebgp-max-hop 
#后面不加数字,相当于将TTL值改为最大值255

IBGP建邻:

    由于IBGP的邻居处于同一个AS域中,正常一个AS中存在大量的备份路径,若使用物理接口建立邻居关系,将浪费这些备份的流量

        ①启动BGP进程

        ②配置RID

        ③手工建邻(指定邻居的环回接口和邻居所在AS的编号)

[IBGP-bgp]peer X.X.X.X as-number 3
    #指定邻居的RID和区域
[IBGP-bgp]peer X.X.X.X connect-interface LoopBack 0
    #指定给邻居发送数据包的连接接口是环回接口

//  X.X.X.X是建立的对端的loopback

BGP的路由发布:

1.通过Network命令进行发布

        BGP可以将所有路由表中存在的路由条目通过network命令进行发布(发布的路由信息必须是路由表中有的,不然无法发布)

        而当对等体收到来自EBGP另一端对等体发送的路由信息,并正常加表后该路由的协议类型为EBGP,优先级为255

EBGP的手动宣告:

[r1-bgp]]network 192.168.1.0 24

IBGP的手动宣告:

display  bgp  routing-table 

 BGP Local router ID is 2.2.2.2 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete


 Total Number of Routes: 4
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>   192.168.1.0        12.0.0.1        0                     0      1i

        因为BGP存在AS-BY-AS的特性,所以IBGP邻居之间传递路由时,默认不会修改下一跳(此时,边界IBGP的下一跳为EBGP的直连地址但是这个IBGP的对等体没有到达EBGP的直连地址),导致EBGP传递的路由信息在IBGP邻居处不可达。此时需要在IBGP设置下一跳RID(EBGP对等体由于存在下一跳机制,所以需要在和EBGP直连的IBGP上设置IBGP对等体的下一跳RID)

[r2-bgp]peer 3.3.3.3 next-hop-local

//此时R3可以刷出BGP表
display  bgp  routing-table 

 BGP Local router ID is 3.3.3.3 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete


 Total Number of Routes: 4
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>i  192.168.1.0        2.2.2.2         0          100        0      1i

        手工宣告这里存在一个悖论:当使用环回/直连网段建邻,并且宣告这个BGP的网段的信息时,这个BGP网段将无法刷新到EBGP表上(但是如果宣告的BGP网段地址的子网掩码大于使用来建邻的子网掩码时,将不会出现这个情况),意思就是建邻时使用的网段地址,不要用来宣告,不然可能会存在悖论。

[r4-bgp]display   bgp  routing-table 

 BGP Local router ID is 4.4.4.4 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete


 Total Number of Routes: 5
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

      45.0.0.0/30        45.0.0.2        0                     0      3?

//此时R4和R5之间的直连网段为45.0.0.0/30,此时宣告了这个网段,发现没有状态码
//这个就是

2.通过重发布来发布BGP路由

    当通告的路由数量较大的时候,可以使用重发布来进行批量的宣告

[r5-bgp]import-route direct
    #重发布R5的直连路由信息(直连包括环回)

宣告后的属性:

display  bgp routing-table 

 BGP Local router ID is 5.5.5.5 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete


 Total Number of Routes: 11
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>   45.0.0.0/24        0.0.0.0         0                     0      i
 *                       0.0.0.0         0                     0      ?
 *>   45.0.0.2/32        0.0.0.0         0                     0      ?
 *>   127.0.0.0          0.0.0.0         0                     0      ?
 *>   127.0.0.1/32       0.0.0.0         0                     0      ?
 *>   192.168.1.0        45.0.0.1                              0      2 1i
 *>   192.168.2.0        45.0.0.1                              0      2 1i
 *>   192.169.1.0        0.0.0.0         0                     0      ?
 *>   192.169.1.1/32     0.0.0.0         0                     0      ?
 *>   192.169.2.0        0.0.0.0         0                     0      ?
 *>   192.169.2.1/32     0.0.0.0         0                     0      ?

        NextHop(下一跳):属于BGP的路由属性。谁通告谁就是下一跳;如果是自己发布,则下一跳属性为0.0.0.0

        在Network前面出现的符号称为这条路由的状态码:

            ①*代表可用:BGP设备每收到一条路由信息,都会检查其下一跳属性的可达性(通过路由查询)。如果下一跳的地址是可达的,则代表该路由可用;不可达则不可用,不可用则该路由信息将不被接纳不参与选择

             ②>代表优选:当收到多条到达相同网段的路由信息时,BGP会根据路由属性选择最好的最优的加到路由表中,并且传递给其他的BGP对等体。(不优选的则不传递,不加表)

             ③s代表抑制:一旦路由前面的状态码中添加s标记,则代表该路由不再传递,不再加表

             ④i代表不可达:该信息是从IBGP对等体学习来的路由

在BGP表最后出现的符号Ogn称为这条路由的起源码(起源码主要有3种):

        ①network发布的路由 ii代表路由起源于IGP协议,包括静态和直连路由)

        ②EGP协议发布的路由 e (指的是BGP协议之前的外部网关协议,EGP协议目前已经不使用了,所以e标签很少见)

        ③除了以上两种方式发布的路由 ? (重发布路由的起源码标记就是?

BGP的路由聚合:

        BGP的路由聚合方式:自动聚合和手工聚合(自动聚合仅针对重发布)

自动聚合:

       自动聚合就是在重发布过程中使用路由策略,对要聚合的流量进行抓取操作,再导入到bgp进程中

过程:

        ①路由抓取,抓取要汇总的路由段

        ②路由策略匹配(if-match)

        ③在重发布过程中导入实施路由策略

自动聚合存在的问题:

        ①只能聚合到主类,导致产生巨大的路由黑洞

        ②只能对重发布的路由生效

 自动聚合完成后会自动在本地路由表上生成一个空接口路由

//在R5上汇总172.16.0.0信息
display  ip interface  brief 
*down: administratively down
^down: standby
(l): loopback
(s): spoofing
The number of interface that is UP in Physical is 4
The number of interface that is DOWN in Physical is 2
The number of interface that is UP in Protocol is 4
The number of interface that is DOWN in Protocol is 2

Interface                         IP Address/Mask      Physical   Protocol  
GigabitEthernet0/0/0              45.0.0.2/24          up         up        
GigabitEthernet0/0/1              unassigned           down       down      
GigabitEthernet0/0/2              unassigned           down       down      
LoopBack0                         172.16.1.1/24        up         up(s)     
LoopBack1                         172.16.2.1/24        up         up(s)     
NULL0                             unassigned           up         up(s)  

//首先流量抓住
[r5]ip  ip-prefix lxb permit  172.16.0.0  16  greater-equal  24 less-equal  24

//设置路由策略
[r5]route-policy  lxb permit node  10
Info: You are overwriting this sequence.	
[r5-route-policy]if-match ip-prefix lxb
[r5-route-policy]q

//在重发布中导入策略
[r5]bgp 3
[r5-bgp]import-route  direct  route-policy  lxb


//此时在R4上查看bgp路由表,此时已经重发布了两个环回信息
display  bgp  routing-table 

 BGP Local router ID is 4.4.4.4 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete


 Total Number of Routes: 5
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

      45.0.0.0/24        45.0.0.2        0                     0      3i
 *>   172.16.1.0/24      45.0.0.2        0                     0      3?
 *>   172.16.2.0/24      45.0.0.2        0                     0      3?


//此时再在R5的bgp上进行自动汇总操作
[r5-bgp]summary automatic 
Info: Automatic summarization is valid only for the routes imported through the 
import-route command.


//再去R4的bgp表上查看信息,此时已经汇总完成
display bgp routing-table

 BGP Local router ID is 4.4.4.4 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete


 Total Number of Routes: 4
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

      45.0.0.0/24        45.0.0.2        0                     0      3i
 *>   172.16.0.0         45.0.0.2                              0      3?


//此时R5的路由表上已经自动生成一个空接口用来防环
[r5]display ip routing-table protocol bgp
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : BGP
         Destinations : 3        Routes : 3        

BGP routing table status : 
         Destinations : 3        Routes : 3

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

     172.16.0.0/16  IBGP    255  0           D   127.0.0.1       NULL0
    192.168.1.0/24  EBGP    255  0           D   45.0.0.1        GigabitEthernet
0/0/0
    192.168.2.0/24  EBGP    255  0           D   45.0.0.1        GigabitEthernet
0/0/0

BGP routing table status : 
         Destinations : 0        Routes : 0

手工聚合:

        因为自动汇总的问题,所以需要对路由汇总进行精准把握时,手工聚合将是更理想的方案

手工汇总的问题:

        ①手工聚合没有抑制明细路由,导致路由条目没有减少,反而增加

        ②手工汇总的路由条目存在路由属性缺失的问题尤其是AS_PATH属性的缺失(AS_PATH是用来区域防环的,如果传递路由信息时不携带会产生环路)

//此时汇总的是192.168.1.0和192.168.2.0
[r1]display  ip interface  brief 
*down: administratively down
^down: standby
(l): loopback
(s): spoofing
The number of interface that is UP in Physical is 4
The number of interface that is DOWN in Physical is 2
The number of interface that is UP in Protocol is 4
The number of interface that is DOWN in Protocol is 2

Interface                         IP Address/Mask      Physical   Protocol  
GigabitEthernet0/0/0              12.0.0.1/30          up         up        
GigabitEthernet0/0/1              unassigned           down       down      
GigabitEthernet0/0/2              unassigned           down       down      
LoopBack0                         192.168.1.1/24       up         up(s)     
LoopBack1                         192.168.2.1/24       up         up(s)     
NULL0                             unassigned           up         up(s)

//首先宣告要汇总的网段
[r1-bgp]network 192.168.1.0 
[r1-bgp]network 192.168.2.0 

//手工汇总需要敲aggregate这个指令
[r1-bgp]aggregate 192.168.0.0  22

//此时去R2上查看BGP路由信息   此时已经生成了一个汇总网段
display bgp routing-table

 BGP Local router ID is 2.2.2.2 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete


 Total Number of Routes: 4
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>   192.168.0.0/22     12.0.0.1                              0      1i
 *>   192.168.1.0        12.0.0.1        0                     0      1i
 *>   192.168.2.0        12.0.0.1        0                     0      1i

手工汇总抑制明细路由:

//在手工汇总后加入抑制明细路由的要求
[r1-bgp]aggregate  192.168.0.0  22 detail-suppressed 

//此时再去R2上查看BGP路由表  已经抑制了明细路由
display bgp routing-table

 BGP Local router ID is 2.2.2.2 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete


 Total Number of Routes: 2
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>   192.168.0.0/22     12.0.0.1                              0      1i

手工汇总的抑制列表:

        因为BGP协议的特殊性,导致在一些环境下,往往不能将所有明细路由全部抑制。所以在做BGP的聚合时,往往仅抑制一部分路由信息,需要用到抑制策略(suppress Policy),来实现这个效果(抑制列表是抑制某些流量的进入

//抑制列表需要使用路由策略进行流量抓取
[r1]ip  ip-prefix lsp permit  192.168.1.0 24

//此时抓取的是192.168.1.0/24的流量信息
[r1]route-policy  lsp permit  node  10
Info: New Sequence of this List.
[r1-route-policy]if-match  ip-prefix lsp
[r1-route-policy]q

//在BGP中使用抑制列表lsp(注意此时是抑制列表,代表不显示什么路由信息)
[r1]bgp  1
[r1-bgp]aggregate  192.168.0.0  22  suppress-policy  lsp

//此时查看R2的BGP表
display  bgp  routing-table 

 BGP Local router ID is 2.2.2.2 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete


 Total Number of Routes: 3
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>   192.168.0.0/22     12.0.0.1                              0      1i
 *>   192.168.2.0        12.0.0.1        0                     0      1i

汇总产生的问题:

BGP路由协议②_第1张图片        因为我之前是在R1上就继续汇总的这个时候看不到问题,这个时候我在R2上做路由汇总,此时在R4上会发现失去了AS_PATH的属性。

        因为聚合后路由存在属性丢失的情况,所以在汇总路由后需要格外关注。为此,BGP专门设计了两个聚合相关的属性(ATOMIC_AGGREGATTE,AGGRGATOR)

        ATOMIC_AGGREGATTE是预警属性,聚合路由将会携带(只有将所有明细路由都全部被抑制的汇总路由才会携带),目的是提醒该路由为聚合路由,可能存在属性丢失问题

        AGGRGATOR将会记录执行汇总路由器所在的AS号及RID

//首先在R6上宣告192.168.3.0/24这个网段的信息
[R6]bgp  4
[R6-bgp]network 192.168.3.0 24

//再在R2上汇总R1和R6的信息为192.168.0.0/22
[r2-bgp]aggregate  192.168.0.0  22 detail-suppressed 

//此时在R4上查看汇总网段信息
display bgp routing-table

 BGP Local router ID is 4.4.4.4 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete


 Total Number of Routes: 3
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>i  192.168.0.0/22     2.2.2.2                    100        0      i

//此时已经失去了192.168.0.0/22这个网段的AS_PATH信息

解决措施:

        明细路由来自不同AS时的解决方案,在进行防环时,大括号中的AS号都需要考虑,但在进行选路时,大括号将被看作是一个整体,当作一个AS号(主要是用来区域防环的)

//在r2汇总时加入as_set
[r2-bgp]aggregate 192.168.0.0 22 detail-suppressed   as-set 

//此时去R4上查看BGP表格(会发现携带AS信息)
display bgp routing-table

 BGP Local router ID is 4.4.4.4 
 Status codes: * - valid, > - best, d - damped,
               h - history,  i - internal, s - suppressed, S - Stale
               Origin : i - IGP, e - EGP, ? - incomplete


 Total Number of Routes: 3
      Network            NextHop        MED        LocPrf    PrefVal Path/Ogn

 *>i  192.168.0.0/22     2.2.2.2                    100        0      {1 4}i


//此时打开192.168.0.0信息查看具体的信息
display  bgp routing-table  192.168.0.0 

 BGP local router ID : 4.4.4.4
 Local AS number : 2
 Paths:   1 available, 1 best, 1 select
 BGP routing table entry information of 192.168.0.0/22:
 From: 2.2.2.2 (2.2.2.2)
 Route Duration: 00h02m47s  
 Relay IP Nexthop: 34.0.0.1
 Relay IP Out-Interface: GigabitEthernet0/0/0
 Original nexthop: 2.2.2.2
 Qos information : 0x0
 AS-path {1 4}, origin igp, localpref 100, pref-val 0, valid, internal, best, se
lect, active, pre 255, IGP cost 2
 Aggregator: AS 2, Aggregator ID 2.2.2.2, Atomic-aggregate      #查看聚合的信息提示
 Advertised to such 1 peers:
    45.0.0.2

BGP的路由黑洞:

产生:

        由于BGP协议可以允许非直连建邻(AS区域内的IBGP),可能会出现在AS区域内部建立了BGP协议的两个路由器(IBGP)进行数据交互时会跨越未运行BGP协议的路由器。

        导致BGP协议建立后,在控制层面上可达;但是在数据层面时,流量经过未运行BGP协议的路由器时无法传输转发通过,从而形成路由黑洞

解决方案:

        ①让AS内所有的设备都运行BGP协议(对设备要求高,相当于区域内路由两两建立IBGP关系,会占用大量的链路资源)

        在AS内部运行BGP的设备像AS内部使用的IGP协议中进行重发布(对设备要求高)

        ③使用MPLS技术(多协议标签交换技术)解决路由黑洞问题(MPLS是目前工程中主要使用的解决BGP路由黑洞的方案

        而BGP为了防止BGP路由黑洞的产生,提出了BGP同步机制当一台路由器从自己的IBGP对等体中学习到一条BGP路由时,他不能将这条路由通告给自己的EBGP对等体,除非他又从IGP协议中(包括静态路由)学习到这条路由。也要求IBGP路由和IGP路由同步)
        华为设备默认关闭BGP的同步机制

BGP的防环机制:

        BGP防环机制使用的是水平分割机制,而在BGP中的水平分割分为两种:

①EGBP水平分割,专门解决EBGP对等体之间可能出现的环路问题

②IBGP水平分割,专门解决IBGP对等体之间可能出现的环路问题

EBGP水平分割:

        BGP协议在路由条目中记录所经过的AS编号:AS_PATH

        AS_PATH数据的传输过程:BGP在传输本地数据时会携带上本地AS X 的AS_PATH信息属性(AS_PATH X)。

        在传递到下一个AS Y 时会AS_PATH 会显示AS_PATH X信息

        当这个信息传输到下一个AS Z 区域时,则又叠加上AS Y 的属性到AS_PATH信息中,发送给下一个AS区域。

        而在AS Z 中AS_PATH的属性为为AS_PATH Y X 。

        防环:如果一个AS区域接受到的BGP信息中携带的AS_PATH信息包含有本地的AS_PATH的AS号,则将拒绝接受,避免环路产生

BGP路由协议②_第2张图片

此时AS1的两个环回192.168.1.0/24从AS1传递到AS3   (则R5的PA_PATH为 2 1) 

BGP路由协议②_第3张图片

IBGP水平分割:

        因为BGP协议的AS-BY-AS的特性,导致AS内部为一个整体,默认情况下,路由属性是不会发生变化的。所以无法通过查看修改属性来进行AS内部的BGP的防环操作。

        IBGP的水平分割做法:当一个路由器从一个IBGP对等体学习到某一条BGP路由时,它将不再把这条路由信息通告给在这个区域内的其他IBGP对等体。

        IGBP水平分割可以有效的解决IBGP对等体之间的路由回传造成的环路问题,但是也会引发路由信息传递障碍问题(比如一个区域内的多个对等体无法进行信息交互)。

        而想要避免IBGP水平分割带来的问题,则可以让所有AS内部所有运行BGP协议的路由器均互相建立IBGP对等体关系(这种AS区域内建立全连的IBGP对等体方案也存在问题,并不是最佳解决方案。当一个AS内运行BGP协议的路由器数量较多时,建立全连的邻居关系将造成大量的资源浪费,降低网络的可扩展性)。BGP协议是使用TCP进行数据传输的,而TCP协议的建立占用链路资源大。

BGP路由协议②_第4张图片

         BGP中存在两个技术专门用于解决IBGP水平分割带来的问题:路由反射器和联邦

你可能感兴趣的:(计算机网络ip数通类,网络,网络协议)