内容简介:

    概述

    邻居建立

    配置,水平分割,更新源

    路由黑洞

    RR

    联邦

    认证,刷新

    路由汇总


#################################################################################

BGP的自制系统 

    RFC对AS的定义:一组被统一管理的路由器,他们使用相同的内部网关协议和统一的度量值在AS内部路由分组,使用外部路由网关协议将分组路由器到其他AS。


    IGP  运行在自治系统内,优化最佳路由

    BGP  运作与自治系统之间,利用路由策略选路和提供安全控制

    必须交换物环路的路由信息。


    自治系统之间运行BGP原因

            AS之间的路由条目庞大

            选路机制需求


                  BGP

分类            EGP,距离(路径)矢量,无类

封装            TCP 179

更新目标(3层) 单播  

更新方式        增量更新,触发更新

AD              iBGP:200  eBGP:20

度量方法        无 


路径矢量协议

    记录沿途的AS号

放环机制:丢掉带自己AS号的路由 


特性 增强的距离矢量协议

    可靠的路由更新:使用TCP179

    增量更新,触发更新

    利用keepalive来提供保活和验证连接

    丰富的度量方法(路径矢量或是属性)

    支持超大规模的网络


    最适合使用与下列情况

        一个AS允许数据包通过他透传到其他自治系统(ISP)

        有多个连接到其他自治系统,在流量进入或离开AS时必须实施路由策略以及路由选择


BGP数据库  

    邻居表:bgp永远要手工建立

    BGP表:列出了从每一个邻居学习到的网络

           到一个目的网络可以包含多个路径

           每个路径包含BGP属性

    IP表 :列出到    达目的最好的路径


####################### 以上对 BGP 的概述 ###############################################


BGP邻居的建立  


BGP消息类型:(5种)

        open :建立邻居用

             包含 hold time 180s;BGP routerID

            协商的信息包含:

                        版本 (ipv4)

                        AS号(AS号一致才能建立邻居)

                        hold time

                        router ID

                        能力值(ipv4/6;***v4/6等)

        keepalive:保持邻居 60s 因连接建立时协商大量的属性,所以保持时不需要一一保持,所以用                   keepalive包来保持邻居

        update:发送如何到达目的网络的路由更新

                包含路径属性以及网络

        notification:检测到错误关闭连接用

                因为BGP是在TCP上的,所以会先建立TCP连接,然后在open协商,当协商不通过,就使                 用notification断开BGP连接

        router-refresh message:

                

BGP建立邻居状态

    1,idle(空闲):路由器搜索路由表,看是否有路由到达邻居

    2,connect(连接):路由器发现了去往邻居的路由并准备TCP的3次握手

                        建立成功就进入open sent,否则变为active等待重新建TCP连接

    3,open sent(发送):发送open消息,然后等待一个open的到来

    4,open confirm(确认):路由器收到一个open,检查BGP回话参数,匹配后发送keepalive确认,                            然后进入到openconfirm,开始等待自己的open报文被确认

           注意confirm状态是在在收到对方的open后就进入了,不是收到keepalive才进入confirm状态的。

    5,established(建立):收到了对自己open报文的keepalive确认,对等体建立;准备交换路由

                        如果收到一个notification消息,则说明自己的open不被认可,则断开TCP连                         接,迁移到idle状态

    6,active:该状态正常不会出现,只有当参数不匹配,TCP建立不成功等。BGP进程会初始化与邻居的TCP连接尝试重新建立时才会进入的状态。

            卡在idle:情况

                      1,没有路由表

                      2,EBGP邻居,用loopback建立,没有敲ttl的多跳

            卡在active 情况

                      思路:1,TCP建立不成功     

                            2,参数不匹配

                    TCP建立不成功:数据包有去无回,可以用带源ping测试

                                   邻居之间指邻居配置错误

                    参数不匹配:可以sho run 查看


#########################################################################################

配置部分


    router bgp AS号

        这个命令只是进入路由配置模式;必须配置子命令激活BGP(默认激活ipv4)

        一个路由器只能配置一个BGP实例

        自治系统号确定了本地路由器属于的自治系统

      nei  x.x.x.x mask remote AS

      no bgp default ipv4-unicast 关闭IPV4

      router-id x.x.x.x

      address-family ipv4 unicast 开启ipv4

        nei x.x.x.x remote-as 100

        nei x.x.x.x active

    sho ip bgp summary

    sho bgp ipv4 unicast summary

    sho bgp ipv4 unicast neighbors


BGP更新源

    IBGP 建议用loopback口建邻居

    nei x.x.x.x update-source lo0 //手工指定更新源


    EBGP 通常使用物理口建邻居,'mt6但是如果使用了loopback口建立。要注意:

        1,静态路由

        2,EBGP邻居的TTL值默认是 1。所以要修改ttl>=2

        3,设置更新源

    例子:

        router bgp 200

            nei 6.1.1.1 remot 300

            nei 6.1.1.1 up lo0

            nei 6.1.1.1 ebgp-multihop 2 (不打数字默认255)


  注意:如果两端都是用默认路由的话,默认是不主动发起建立TCP连接的。所以也就不能建立BGP邻居


宣告网络

network:但不能激活,激活需要neighbor

任何路由表的路由都能network,不一定要直连。


当一条路由不优的结果:

            1,自己不用

             2,不传给其他邻居


不优原因:  1,下一跳不可达

             2,同步被开启,同时IGP没有学到这个路由


◆ next-hop行为 

    从eBGP学到的路由的下一跳,在AS内传递时,下一跳也是eBGP邻居。只有在离开本AS时,下一跳才变。

    下一跳指我

        nei x.x.x.x next-hop-self


sho ip bgp summ 显示 r //加载失败

sho ip bgp rip-failure 

原因 AD值太高

    sho ip bgp rib-failure 通常发生在IBGP之间 同时从IGP和IBGP学到的路由,IBGP的AD=200


sho ip bgp 

    s suppressed 汇总时被抑制

    d damped     此路由总是up/down 被惩罚

    h history    路由曾经存在

    > best       优化路由

    i interna    



BGP建邻居 

    EBGP之间用物理口建立,一条命令 neighbor xxxx remote xxx

    EBGP之间用loopback口建邻居,3条命令 neighbor xxx remote xxx

                                        neighbor xxx update-source lox

                                        neighbor xxx ebgp-multihop 2

    IBGP之间用物理口建邻居,1条命令 neighbor xxx remote xxx

    IBGP之间用loopback口建邻居,3条命令 neighbor xxx remote xxx

                                        neighbor xxx update-source lox

                                        neighbor xxx next-hop-self





###########################################################################

路由黑洞    


wKiom1aoK-zTaMmGAABQ9UncpVI467.png

如图,R1 R2建立eBGP。AS200运行ospf,R2 R5运行iBGP。R5 R6运行eBGP

      R1 network 1.1.1.1 mask 255.255.255.255

      R6 network 6.1.1.1 mask 255.255.255.255

      R2 R5 nei xxx next-hop-self

      R1 R6 sho ip ro bgp 可以看到1.1.1.1 6.1.1.1

   但是,R1 R6是ping不通的。ping 6.1.1.1 source 1.1.1.1 路由黑洞现象。

IGP中是hop-by-hop的,所以不会出现路由黑洞现象。BGP中,是AS-BY-AS的。上图,R4没有R1 R6的路由。

控制层面,路由R1 R6是通过eBGP和iBGG以及IGP使得iBGP的IP可达,使得路由可达;但在数据层面上,数据包回包时,源、目IP是R1 R6 而R4不知道R1 R6的ip的路由,所以丢包。


路由黑洞解决办法 (3种)

      路由反射器 RR:

          可以打破iBGP的水平分割

      联邦:

          BGP联邦会修改AS-PATH属性值

      MPLS

◆ RR重点:

        RR的防环 ----- clusterD(默认routerID)

                                    Ooignator-ID(默认routerID)        

                    只有通过RR被反射的路由才会携带clusterID和origintID                           

        RR如何反射路由
              从client过来的路由器会传给所有IBGP邻居

              从非client过来的路由,只传给client

 

◆ 如何部署RR

            client路由器只与他的RR建立IBGP邻居关系

            RR要与同一个簇的client建立IBGP邻居关系,同时也要与不同簇的RR和普通路由器建立IBGP邻居关系(RR要全互联)

 

 wKioL1bEEpHR9UEMAALHr7pIQ58229.png

 

 show ip bgp neighbor 显示client邻居关系

 show ip bgp 11.0.0.0 显示 “received from a RR-client”

 被反射的路由会显示 originator:x.x.x.x ,cluster list :x.x.x.x

 

总结:起源ID由RR打的,打的是client的routerID。

      RR把路由传给client,client遵循IBGP只传一次,EBGP随便传,所以client不会再把路由传回RR,不管谁传给client路由,client都遵循IBGP只传一次,EBGP随便传


#########################################################################################


联邦

wKioL1bERN-DqYTNAAMN0UwgUpU577.png

 小的AS号在内部传,出了大AS号后还是标记的最外大的AS号 

 wKioL1bES3ezZnoWAAPkchzp77A873.png

IBGP------- AS-PATH不被改变

内部EBGP--- 内部联邦的AS号被放到AS-PATH中

EBGP------- 内部联邦AS号被移出AS-PATH

            外部AS号被放到AS-path中

小的AS号在内部传,出了大AS号后还是标记的最外大的AS号 


内部小AS之间建立邻居注意,如果用loopback口建立,类似与EBGP,要配置ebgp多跳

路由更新类似于IBGP:BGP属性不变

                    整个联邦跑一个IGP,保证下一跳最佳路径可达

在联邦内部的IBGP 邻居关系必须是full mesh。可以在一个联邦内部启用RR以再减少TCP连接

联邦内部的EBGP连接不受物理拓扑的限制


注意:在现网中配置联邦,需要所有配置都必须重配,因为联邦内部使用小AS号启进程

        现网中 要先no掉原有BGP 

            no router bgp as-num   ----- 去掉原有bgp

            router bgp member-as-number -配置小AS号

            bgp confederation identifier external-as-number ---配置属于哪个大AS

            bgp confederation peers list-of-intra-confederation-as  --打上联邦的其他小AS         例子:

wKiom1bEVReBFjPYAAKpFI5Ij3w427.png          

 联邦内ebgp查看:

wKioL1bEVpCB_2vCAAM3lETvCus588.png         

wKiom1bEVqjhjtg6AASeTfWNZKY797.png

confed-internal--联邦内部

confed-external--联邦外部

external---------真正ebgp


#########################################################################################


认证

一条命令---配置密码

router(config-router)#

        neighbor {ip-address | peer-group-name} password string

例:router bgp 100

        neighbor 12.1.1.2 password cisco

利用TCP扩展包头完成的认证

###########################################################################################


刷新BGP路由

    

    清除BGP会话

        当策略,入ACL或属性的变化,这种变化并不立即生效。并在未来的时间里,一个前缀或路由使         用新的策略,这可能要较长时间使得策略生效于所有网络。

        必须触发策略的更新,以确保策略是立即生效于所有英雄的前缀和路由。


如何触发策略的更新:

    硬清除 (把所有BGP邻居down-up不要使用,会导致整个网络down)

             clear ip bgp *

    软清除   相对硬清 比较安全的 不会导致down邻居,也不会影响bgp邻居

             clear ip bgp * soft out

             clear ip bgp {*| 邻居IP} soft in  (利用type5报文 refresh 触发对方update)

    路由刷新


◆ BGP排错,当BGP路由显示不完整,查看邻居是否起来,如果没起来时,使用如下命令

    sho ip bgp neighbor 56.1.1.5 advertised-routes---显示给邻居传了哪些路由

  如果要查看本地收到邻居的哪些路由使用命令(一般不用)

    show ip bgp neighbors 56.1.1.6 received-routes 此命令需要在配置inbound时才生效

    neighbor 56.1.1.6 soft-reconfiguration inbound



##########################################################################################


BGP路由聚合(汇总)


    自动汇总:只会汇总本地重分布的,不会汇总本地network的。通常不用自动汇总

wKiom1aoK-zTaMmGAABQ9UncpVI467.png    

    手动汇总(重点)

        思路:

            1,将要被汇总的路由,写成静态指向null0

            2,把静态宣告进BGP

        router(config)#router bgp 123

        router(config-router)# network 192.168.0.0 mask 255.255.0.0

        router(router)#exit

        router(config)# ip route 192.168.0.0 255.255.0.0 null 0


       例: 上图中R6:

                int lo0 6.1.1.1 255.255.255.255

                int lo1 6.1.1.2 255.255.255.255 secondary

                int lo2 6.1.1.3 255.255.255.255 sec

                int lo3 6.1.1.4 255.255.255.255 sec

                int lo4 6.1.1.5 255.255.255.255 sec

                int lo5 6.1.1.6 255.255.255.255 sec

            ◆  ip route 6.1.1.0 255.255.255.248 null 0

            ◆  router bgp 300

                    network 6.1.1.0 mask 255.255.255.248


    方法二,在任意节点汇总

            R6:

                router bgp 300

                    network 6.1.1.1 mask 255.255.255.255

                    network 6.1.1.2 mask 255.255.255.255

                    network 6.1.1.3 mask 255.255.255.255

                    network 6.1.1.4 mask 255.255.255.255

                    network 6.1.1.5 mask 255.255.255.255

                    network 6.1.1.6 mask 255.255.255.255 

            R5:(汇总R6路由)

                router bgp 200

                 ◆   aggregate-address 6.1.1.0 mask 255.255.255.248 

            sho ip bgp 产生汇总的同时,明细也依然存在

                    使用参数 summary-only 顾虑明细,只传汇总

                 ◆    aggregate-address 6.1.1.0 mask 255.255.255.248 summary-only


            ◆ 选择抑制(只汇总部分路由)suppress-map

               以上都是把所有路由全部汇总,实际中可能会只汇总一部分。例如只汇总.1.2.3

            利用route-map匹配要抑制的路由(即要汇总的路由)

                  route-map test permit 10

                    match ip address 4

                  access-list 4 permit 6.1.1.4 0.0.0.3(匹配了4-7)

                  router bgp 200

                    aggregate-address 6.1.1.0 mask 255.255.255.248 suppress-map test

             ◆ 条件通告advertise-map(只有满足某些条件时,才会产生汇总)

                例如,R5只有存在6.1.1.1这条路由时,才会产生汇总(使用route-map)

           router bgp 200

             aggregate-address 6.1.1.0 mask 255.255.255.248 suppress-map test advertise-map test2             

            route-map test2 permit 10

                match ip address 1

            access-list 1 permit 6.1.1.1

                

           ◆ as-set 

              在其他节点产生汇总时,也会把汇总传回给产生这条路由的源节点,因为汇总产生时没               有携带AS号

              R6:sho ip bgp 也会看到R5对R6产生的汇总

              R5:

              aggregate-address 6.1.1.0 mask 255.255.255.248 suppress-map test advertise-map test2 as-set

              sho ip bgp 看到汇总带上AS号了 300

              R6:sho ip bgp 就看到没有那条汇总了


           ◆ attribute-map     

                通过route-map修改其他属性值

              route-map test3 permit 10  //通过route-map设置weigh值

                set weight 100   

              router bgp 200

                aggregate-address 6.1.1.0 mask 255.255.255.248 suppress-map test advertise-map test2 as-set attribut-map test3

              sho ip bgp //汇总路由的weight由默认32768变为100