配置

    router bgp AS号

    - 这个命令只是进入路由配置模式;必须配置子命令来激活BGP

        默认自动集成IPv4的子集,所以IPV4不需额外配置;但是×××v4等就需要配置能力值。

    - 同一时间,在路由器上,只能配置一个BGP实例

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

    - 邻居比较AS号,以判定邻居是否是一个内部或外部的邻居


配置命令:

        开启BGP

        router bgp 100

            router-id 11.1.1.1

            address-family ?

                            ipv4---- 默认不需要配置

                            ipv6

                            nsap

                            ***v4

                            ***v6

        建立邻居 (open报文)

        router(config-router)#

            neighbor {ip-address | peer-group-name} remote-as AS号 

        - neighbor 命令 激活一个BGP邻居会话

        - BGP 将这个邻居的数据包发给IP 地址指定的目标IP

        - 该路由器必须有一个IP地址达到这个邻居,然后才可以建立BGP邻居关系

        - remote-as 显示了邻居在什么AS 中,就是这个判定是内部还是外部

        - 不管是内部还是外部邻居都是用这个命令操作


    先建立TCP连接,之后再传递open报文

   R1----------------------EBGP---------------------------R2

router bgp 100                                        router bgp 200

    router-id 11.1.1.1                                     router-id 22.1.1.1

    neighbor 12.1.1.2 remote-as 200                        neighbor 12.1.1.1 remote-as 100


        BGP neighbor shutdown 命令

    router(config-router)#

        neighbor {ip-address | peer-group-name} shutdown

        设定一个BGP 邻居关系为管理关闭

        用于维护和策略变化,以防止环路

   

    router(config-router)#

        no neighbor {ip-address | peer-group-name} shutdown

         设定一个BGP 邻居关系为开启

例:


 rourer bgp 200

 关闭邻居 neighbor 12.1.1.1 remote-as 100 shutdown

 开启邻居no neighbor 12.1.1.1 remote-as 100 shutdown


#########  IBGP 对等体问题

wKiom1ZwAkfhUaIvAAE9DaN0_7Y020.png

如图 ,A B建立IBGP邻居关系,上下两个任何一个物理接口建立邻居都存在单点故障,所以使用             loopback口建立IBGP邻居最合适


BGP 更新源 IP

    - 当A--B建立BGP邻居关系时,会声明由本地哪个IP与对方建立邻居关系,默认就是数据包出口地址

    - 当B 收到一个BGP包时,将对比邻居声明的源IP,

            匹配,就建立邻居关系

            不匹配,就忽略,不建立

        例如:A: nei 12.1.1.2 remo 200 

              B: nei 12.1.1.1 remo 100 

            此时B收到12.1.1.1的BGP包,更新源就是A的出接口12.1.1.1所以成功建立

             A: nei 22.1.1.1 remo 200

             B: nei 11.1.1.1 remo 100

            此时B收到 11.1.1.1BGP包,的更新源IP是默认A的出接口12.1.1.1,不匹配就忽略

    所以,要确保源IP 和 对应BGP邻居配置的一致,且当只有一边指定更新源就能建立邻居

    因为,TCP连接是全双工,可以同时收发,所以只要有一条TCP连接建立就可以。

  更新源配置命令:

   neighbor {ip-address | peer-group-name} update-source interfac-type interface-number

 - 更新源,通常用于 IBGP

 - EBGP 默认必须之间相连,利用loopback口将不能直接建立EBGP邻居关系(因为neighbor之后ttl值是1,但是BGP中可以更改,所以也可以通过loopback口建立EBGP)

例:IBGP 使用loopback口建立邻居

    R1:                                        R2:

        router bgp 100                            router bgp 200

           bgp router-id 11.1.1.1                      bgp router-id 22.1.1.1

            neigh 22.1.1.1 remo 200                    nei 11.1.1.1 remo 100

            neigh 22.1.1.1 update-so lo0               nei 11.1.1.1 upda lo0

以上前提,IP在IGP内可达

        router eigrp 1                                 router ei 1  

            no auto                                        no auto

            net 12.0.0.0                                   net 0.0.0.0

            net 11.0.0.0

例:EBGP 使用loopback口建立邻居(nei ip-add ebgp-multihop {ttl})

    R5:                                             R6:

      router bpg 200                                 router bgp 200

         bgp router-id 55.1.1.1                          bgp rourter-66.1.1.1

         nei 66.1.1.1 remot 300                          nei 55.1.1.1 remo 200

         nei 66.1.1.1 upda lo0                           nei 55.1.1.1 update lo0

         nei 66.1.1.1 ebgp-multihop                      nei 55.1.1.1 ebgp-multihop

      ip router 66.1.1.1 255.255.255.255 56.1.1.5            ip route 55.1.1.1                                                                           255.255.255.255 56.1.1.6

        sho ip bgp summary

            state/pfxrcd 是active就是没建立;数字就是建立了。

         IGP 协议使用hello包建立和维持邻居关系

         BGP使用 keepalive维持,使用 open 建立

         keepalive 60秒更新,180秒holdon


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

         BGP 中 network 命令   

 router(config-router)#

        network network-number [mask network-mast] [router-map map-tag]

    作用相对于IGP(两个:通告一条路由;通告这条路由的接口)。BGP只有一个作用:

        1,这个命令使BGP通告一个网络

        2,这个命令并不能在一个接口上激活BGP 协议

        3,当没有 mask 选项时,这个命令通告一个有类网络,如果这个有类地址存在于路由表中,将                                                                                      被宣告

        4,当有mask 选项时,BGP 将查看路由表,匹配才宣告

        3 4两条就是network时的掩码与本地路由掩码要一致

        network产生BGP路由,只要是本地路由表存在就可以,可以是任何形式学到的(直连,重分布         鞥)

例:

    R1:int lo0

            ip add 11.1.1.1 255.255.255.0

        router bgp 100

            bgp router-id 11.1.1.1

            network 11.1.1.1 mask 255.255.255.0

        sho ip bgp

wKioL1ZwDsegee9dAABQ81hZzwY658.png

R1的路由到达R5不是最优的因为关闭同步,吓一跳不可达(AS200内所有路由器到达AS100的路由下一跳都是12.1.1.1,而除了R2可达,其他路由都不可达)

解决办法一:

            在R2 上的IGP协议宣告12.1.1.0网段

解决办法二:

           R2:

              router bgp 200

                neighbor 55.1.1.1 next-hop-self(建议在所有IBGP邻居上都配置)

           R5: sho ip bgp 

        

next-hop 在多路访问网络中

wKiom1ZxUmOw2Ai3AACHfaXhJSU795.jpg

如图,R1 R3建立IBGP;R1 R2建立EBGP

当把R3loopback0=33.1.1.1宣告进bgp时,R2看到的33.1.1.1的下一跳是R3出接口,而非R1的


使用对等体组 

    - 这些命令定义了一个模板,所有加入了这个模板的成员都有相同的策略

    - 这个命令在有相同的出向 策略的邻居有效

    - 组成员可以有不同的入向策略

    - 更新只需要为组成员产生一次

    - 简化了配置

    router(config-router)#

        neighbor peer-group-name peer-group

        创建一个对等体组

    router(config-router)#

        neighbor peer-group-name 参数

        定义模板参数

    router(config-router)#            

        neighbor ip-address peer-group peer-group-name

        定义了什么成员使用这个模板


wKiom1ZxVSfzJuQPAAFF6L8Mhtc114.png


























清楚 BGP 会话

    - 当策略(ACL或属性)的变化,这种变化不会立即生效。并在未来时间里,一个前缀或路由使用         的新策略,需要较长时间是对策略生效于网络

    - 必须触发策略的更新,以确保策略立即生效所有受影响的前缀和路由

    - 如何触发 策略更新:

        硬清除--造成断网

            clear ip bgp *

                路由器清除所有BGP连接

                整个BGP转发表被清除

                BGP会话将进入空闲状态,所有信息重新学习

            clear ip bgp [neighbor-address]

               只清除相应的邻居,

        软清除--- 

           clear ip bgp {* | neighbor-address} [soft out]

                从这个邻居学来的路由不会丢失

                路由器重新发布所有BGP信息给邻居,并没有清除连接

                仍然保持建立状态

                建议改变出策略时,使用这个

                若只是改变入策略,soft out 不生效


            入方向软清

                clear ip bgp {* | neighbor-address} soft in

                使用存储的信息覆盖旧的信息

            R1-------R2

                如果在R2 上做 in 方向 软清,R2就会向R1发送type 5报文=refresh。R1收到R2的refresh后,就会发送本地路由表发送update报文给R2,此时会触发R2接口入方向的策略

       

BGP 邻居认证 

    router(config-router)#

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

            - BGP 只使用MD5

            - 配置一个秘钥(密码),根据这个秘钥路由产生一个消息摘要,或散列函数

            - 只发送消息摘要,不发送秘钥

            -  在建立TCP 连接时,路由器产生以及校验MD5 摘要,路由器发送每个路由更新时也要进                行校验


BGP的状态

    当建立一个BGP会话,BGP将经历以下几种状态

    1, ide(空闲):等待配置,路由器是搜索路由表,看是否存在一个路由到邻居。

    2, connect(连接)路由器发现了邻居和准备和完成TCP 三次握手,否则,将变为active(激             活),等待重新建立TCP连接

    3,active(激活) 等待重新建立TCP连接

    4,open sent(发送)发送open消息以及等待一个open的到来,检查BGP会话参数(协商保持时            间),参数不匹配,发送通告消息变为active,等待重新建立TCP连接

    5,open confirm(确认)路由器收到一个保活消息,一旦收到就转到建立状态。出现问题,发送通         告消息,变为active

    6,establish(建立) 对等体建立;准备交换路由

                    出现问题,发送通告消息,变为active


  报错:

        1:卡在idle状态,原因:没有路由,

                show ip ro 查看本地是否有bgp 所指的路由

        2:卡在active状态

                原因:

                     - 对方没有到本地源IP地址的路由

                     - 邻居没有生命邻居,或邻居指错

                     - AS 号不匹配