BGP双栈原理Basic

BGP双栈原理Basic

BGP是一种用于自治系统(Autonomous System)之间的动态路由协议。早期发布的三个版本分别是BGP-1(RFC1105)、BGP-2(RFC1163)和BGP-3(RFC1267),主要用于交换AS之间的可达路由信息,构建AS域间的传播路径,防止路由环路的产生,并在AS级别应用一些路由策略。当前使用的版本是BGP-4(RFC4271)。
BGP作为事实上的Internet外部路由协议标准,被广泛应用于ISP之间。
            
BGP概述
            BGP是一种外部网关协议(EGP),与OSPF、RIP等内部网关协议(IGP)不同,其着眼点不在于自动发现网络拓扑,而在于在AS之间选择最佳路由和控制路由的传播。
            BGP使用TCP作为其传输层协议(监听端口号为179),提高了协议的可靠性,且不需要专门的机制来确保连接的可控性。
            BGP进行域间的路由选择,对协议的稳定性要求非常高。因此用TCP协议的高可靠性来保证BGP协议的稳定性。
                     BGP的对等体之间必须在逻辑上连通,并进行TCP连接。目的端口号为179,本地端口号任意。
                     路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息。
            BGP从设计上避免了环路的发生。
                     AS之间:BGP通过携带AS路径信息来标记途经的AS,带有本地AS号的路由将被丢弃,从而避免了域间产生环路。
                     AS内部:BGP在AS内学到的路由不再通告给AS内的BGP邻居,避免了AS内产生环路。
            BGP提供了丰富的路由策略,能够对路由实现灵活的过滤和选择。
            BGP提供了防止路由振荡的机制,有效提高了Internet网络的稳定性。
            BGP易于扩展,能够适应网络新的发展。主要是通过TLV进行扩展。

BGP概述
       外部网关协议
       使用TCP作为其传输层协议
       支持CIDR
       增量更新
       路径矢量路由协议
       无环路
       路由策略丰富
       可防止路由振荡
       易于扩展

BGP工作原理—报文类型
              Open报文
                     协商BGP参数
              Update报文
                     交换路由信息
              Keepalive报文
                     保持邻居关系
              Notification报文
                     差错通知
              Route-Refresh报文
                     用于在改变路由策略后请求对等体重新发送路由信息

BGP的运行是通过消息驱动的,共有Open、Update、Notification、Keepalive和Route-Refresh等5种消息类型。
         Open消息:是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。对等体在接收到Open消息并协商成功后,将发送Keepalive消息确认并保持连接的有效性。确认后,对等体间可以进行Update、Notification、Keepalive和Route-Refresh消息的交换。
         Update消息:用于在对等体之间交换路由信息。一条Update消息可以发布多条属性相同的可达路由信息,也可以撤销多条不可达路由信息。
                   一条Update消息可以发布多条具有相同路由属性的可达路由,这些路由可共享一组路由属性。所有包含在一个给定的Update消息里的路由属性适用于该Update消息中的NLRI(Network Layer Reachability Information)字段里的所有目的地(用IP前缀表示)。
                   一条Update消息可以撤销多条不可达路由。每一个路由通过目的地(用IP前缀表示),清楚的定义了BGP Speaker之间先前通告过的路由。
                   一条Update消息可以只用于撤销路由,这样就不需要包括路径属性或者NLRI。相反,也可以只用于通告可达路由,就不需要携带撤销路由信息了。
         Keepalive消息:BGP会周期性的向对等体发出Keepalive消息,用来保持连接的有效性。
         Notification消息:当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断。
         Route-Refresh消息:通过OPEN消息告知BGP peer本地支持路由刷新能力(Route-Refresh capability)。在所有BGP路由器使能Route-Refresh能力的情况下,如果BGP的入口路由策略发生了变化,本地BGP路由器会向对等体发布Route-Refresh消息,收到此消息的对等体会将其路由信息重新发给本地BGP路由器。这样,可以在不中断BGP连接的情况下,对BGP路由表进行动态刷新,并应用新的路由策略。

BGP报文应用:
         BGP使用TCP建立连接,本地监听端口为179。和TCP连接建立相同,BGP连接的建立也要经过一系列的对话和握手。TCP通过握手协商通告其端口等参数,BGP的握手协商的参数有:BGP版本、BGP连接保持时间、本地的路由器标识(Router ID)、授权信息等。这些信息都在Open消息中携带。
         BGP连接建立后,如果有路由需要发送则发送Update消息通告对端。Update消息发布路由时,还要携带此路由的路由属性,用以帮助对端BGP协议选择最优路由。在本地BGP路由变化时,要通过Update消息来通知BGP对等体。
         经过一段时间的路由信息交换后,本地BGP和对端BGP都无新路由通告,趋于稳定状态。此时要定时发送KEEPALIVE消息以保持BGP连接的有效性。对于本地BGP,如果在保持时间内,未收到任何对端发来的BGP消息,就认为此BGP连接已经中断,将断开此BGP连接,并删除所有从该对等体学来的BGP路由。
         当本地BGP在运行中发现错误时(如对端BGP版本本地不支持、本地BGP收到了结构非法的Update消息等),要发送Notification消息通告BGP对等体。本地BGP退出BGP连接时,也需发送Notification报文。

BGP报头:
         Marker(标记):16字节,固定为1。
         Length(长度):两字节无符号整数。指定了消息的全长,包括头部。
         Type(类型):1 字节,指示报文类型:
                           Open
                           Update
                           Keepalive
                           Notification
                           Route-Refresh

Open报文结构:
         Version:BGP的版本号。对于BGPv4来说,其值为4。
         My Autonomous System:本地AS编号。通过比较两端的AS编号可以确定是EBGP连接还是IBGP连接。
         Hold Time:在建立对等体关系时两端要协商Hold time,并保持一致。如果两端所配置的Hold time时间不同,则BGP会选择较小的值作为协商的结果。如果在这个时间内未收到对端发来的Keepalive消息,则认为BGP连接中断。如果保持时间为0,则标识不发送Keepalive报文。
         BGP Identifier:BGP路由器的Router ID,以IP地址的形式表示,用来识别BGP路由器。
         Opt Parm Len(Optional Parameters Length):可选参数的长度。如果为0则没有可选参数。
         Optional Parameters:是一个可选参数用于BGP验证或多协议扩展(Multiprotocol Extensions)等功能。每一个参数为一个(Parameter Type-Parameter Length-Parameter Value)三元组。

Update报文结构:
         Withdrawn Routes Length :(2字节无符号整数) 不可达路由长度,表示Withdrawn Routes字段的数据长度。如果Withdrawn Routes Length字段数值为0,则表示Withdrawn Routes字段没有任何数据,在UPDATE消息中不会被显示。
         Withdrawn Routes :(变长) 撤销路由。该字段包括一系列的IP地址前缀信息,以<length, prefix>的格式来表示,比如<19,198.18.160.0>表示一个198.18.160.0 255.255.224.0的网络。
         Path Attribute Length :(2字节无符号整数) 路由属性长度,表示Path Attribute字段的数据长度。如果Path Attribute Length数值为0,则表示Path Attribute字段没有任何数据,在UPDATE消息中不会被显示。
         Network Layer Reachability Information :(变长) 网络可达信息。包括一系列的IP地址前缀。格式与撤消路由字段一样<length, prefix>。

Keepalive报文结构:
         KeepAlive 报文的组成只包括一个BGP数据报头。
         缺省情况下,发送KeepAlive 的时间间隔为 60 秒,Hold Time是180秒。每次从邻居处接收到KeepAlive 报文将重置Hold Time定时器,如果Hold Time定时器超时,就认为对等体Down掉。

Notification报文结构:
         Errorcode:错误码。1字节长的字段。每个不同的错误都使用唯一的代码表示,而每一个错误码都可以拥有一个或多个错误子码,但如果某些错误码并不存在错误子码的话,则该错误子码字段以全0表示。
         Errsubcode:错误子码。

BGP工作原理—状态机
         BGP有限状态机共有六种状态,分别是Idle、Connect、Active、OpenSent、OpenConfirm和Established。
         Idle状态是BGP初始状态。在Idle状态下,BGP拒绝邻居发送的连接请求。只有在收到本设备的Start事件后,BGP才开始尝试和其它BGP对等体进行TCP连接,并转至Connect状态。
                  Start事件是由一个操作者配置一个BGP过程,或者重置一个已经存在的过程或者路由器软件重置BGP过程引起的。
                  任何状态中收到Notification报文或TCP拆除链路通知等Error事件后,BGP都会转至Idle状态。
         在Connect状态下,BGP启动连接重传定时器(Connect Retry,缺省为32秒),等待TCP完成连接。
                  此阶段主动发起TCP连接;
                  如果TCP连接成功,那么BGP向对等体发送Open报文,并转至OpenSent状态;
                  如果TCP连接失败,那么BGP转至Active状态;
                  如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP继续尝试和其它BGP对等体进行TCP连接,停留在Connect状态。
                  如果发生其他事件(由系统或者操作人员启动的),则退回到Idle状态。
         在Active状态下,BGP总是在试图建立TCP连接。
                  此阶段等待对方发起TCP连接;
                  如果TCP连接成功,那么BGP向对等体发送Open报文,关闭连接重传定时器,并转至OpenSent状态;
                  如果TCP连接失败,那么BGP停留在Active状态;
                  如果连接重传定时器超时,BGP仍没有收到BGP对等体的响应,那么BGP转至Connect状态。
         在OpenSent状态下,BGP等待对等体的Open报文,并对收到的Open报文中的AS号、版本号、认证码等进行检查。
                  如果收到的Open报文正确,那么BGP发送Keepalive报文,并转至OpenConfirm状态;
                  如果发现收到的Open报文有错误,那么BGP发送Notification报文给对等体,并转至Idle状态。
         在OpenConfirm状态下,BGP等待Keepalive或Notification报文。如果收到Keepalive报文,则转至Established状态,如果收到Notification报文,则转至Idle状态。
         在Established状态下,BGP可以和对等体交换Update、Keepalive、Route-refresh报文和Notification报文。
                  如果收到正确的Update或Keepalive报文,那么BGP就认为对端处于正常运行状态,将保持BGP连接。
                  如果收到错误的Update或Keepalive报文,那么BGP发送Notification报文通知对端,并转至Idle状态。
                  Route-refresh报文不会改变BGP状态。
                  如果收到Notification报文,那么BGP转至Idle状态。
                  如果收到TCP连接断开消息,那么BGP断开连接,转至Idle状态。

BGP工作原理—数据库
         IP路由表 (IP-RIB)
    全局路由信息库,包括所有IP路由信息
         BGP路由表 (Loc-RIB)
    BGP路由信息库,包括本地BGP Speaker选择的路由信息
         邻居表
    对等体邻居清单列表
         Adj-RIB-In
    对等体宣告给本地BGP Speaker的未处理的路由信息库
         Adj-RIB-Out
    本地BGP Speaker宣告给指定对等体的路由信息库

BGP工作原理—BGP路由信息处理

          BGP路由信息处理:
                     当从对等体接收到更新数据包时,路由器会把这些更新数据包存储到路由选择信息库(Routing Information Base, RIB)中,并指明是来自哪个对等体的(Adj-RIB-In)。这些更新数据包被输入策略引擎过滤后,路由器将会执行路径选择算法,来为每一条前缀确定最佳路径。
                     得出的最佳路径被存储到本地BGP RIB (Loc-RIB)中,然后被提交给本地IP路由选择表(IP-RIB),以用作安装考虑。
                     除了从对等体接收来的最佳路径外,Loc-RIB也会包含当前路由器注入的(被称为本地发起的路由),并被选择为最佳路径的BGP前缀。Loc-RIB中的内容在被通告给其他对等体之前,必须通过输出策略引擎。只有那些成功通过输出策略引擎的路由,才会被安装到输出RIB (Adj-RIB-Out)中。

BGP工作原理—对等体之间的交互原则
         BGP对等体交互路由原则:
                     从IBGP对等体获得的路由,只发布给EBGP对等体
                     从EBGP对等体获得的路由,发布给所有EBGP和IBGP对等体
                     只将BGP的最优路由发布给对等体
                     只发送更新的BGP路由
                     IBGP与IGP的同步
         BGP设备将最优路由加入BGP路由表,形成BGP路由。
                     从IBGP对等体获得的BGP路由,BGP设备只发布给它的EBGP对等体
                     从EBGP对等体获得的BGP路由,BGP设备发布给它所有EBGP和IBGP对等体
                     当存在多条到达同一目的地址的有效路由时,BGP设备只将最优路由发布给对等体
                     路由更新时,BGP设备只发送更新的BGP路由
                     从IBGP邻居学到的路由,只有当IGP中也存在相同的路由时才会宣告给EBGP对等体

BGP工作原理—IBGP与IGP同步
           同步(Synchronization)
                   同步是指IBGP和IGP之间的同步,其目的是避免误导外部AS的路由器。
                   在IBGP路由加入路由表并发布给EBGP对等体之前,会先检查IGP路由表。只有在IGP也知道这条IBGP路由时,它才会被加入到路由表,并发布给EBGP对等体。

           注意事项:
                   VRP平台缺省情况下BGP与IGP是取消同步机制的,并不可改变。但取消同步是有条件的,在以下两种情况下可以取消同步:
                   本AS不是过渡AS。
                   本AS内所有路由器建立IBGP全连接。

BGP属性特点—概述
           BGP路由属性是一套参数,它是对路由的进一步的描述
           公认必遵
                   所有BGP路由器都必须识别,且必须存在于Update消息中
                   如果缺少这种属性,路由信息就会出错
           公认任意
                   所有BGP路由器都可以识别,但不要求必须存在于Update消息中
                   即就算缺少这类属性,路由信息也不会出错
           可选过渡
                   在BGP对等体之间具有可传递性的属性
                   BGP路由器可以不支持此属性,但它仍然会接收这类属性,并传递给其他对等体
           可选非过渡
                   如果BGP路由器不支持此属性,则相应的这类属性会被忽略,且不会传递给其他对等体
           常用的属性类别如下所示:
                   Origin为公认必遵属性                         AS_Path为公认必遵属性
                   Next_Hop为公认必遵属性
                   Local_Pref为公认任意属性                   community为可选过渡属性
                   MED为可选非过渡属性                        Originator_ID为可选非过渡属性
                   Cluster_List为可选非过渡属性
           BGP属性特点—Origin
                   Origin属性用来定义路径信息的来源,该属性为公认必遵
                   IGP
                         通过路由始发AS的IGP得到的路由信息,如通过network命令注入BGP的路由
                         标识符为“i”
                   EGP
                         通过EGP得到的路由信息
                         标识符为“e”
                   Incomplete
                         通过其他方式学习到的路由信息,如通过import-route命令注入BGP的路由
                         标识符为“?”
                         Origin属性用来定义路径信息的来源,标记一条路由是怎么成为BGP路由的。它有以下3种类型:
                         IGP:具有最高的优先级。通过路由始发AS的IGP得到的路由信息,比如通过network命令注入到BGP路由表的路由,其Origin属性为IGP。
                         EGP:优先级次之。通过EGP得到的路由信息,其Origin属性为EGP。
                         Incomplete:优先级最低。通过其他方式学习到的路由信息。比如BGP通过import-route命令引入的路由,其Origin属性为Incomplete。

           BGP属性特点—PrefVal
                   协议首选值(PrefVal)是华为设备的特有属性,该属性仅在本地有效,不会传递给BGP邻居。因为协议首选值是人为主动设置的,代表本地用户的意愿,因而在BGP进行选路时会优先比较协议首选值。
                   在BGP进行选路时会优先比较协议首选值。默认情况下均为0,该值越大越优先。
           BGP属性特点—AS_Path
                   AS_Path属性按矢量顺序记录某条路由从本地到目的地址所要经过的所有AS编号。该属性为公认必遵。
                   AS_Path属性可以当做BGP选路的参考属性之一,AS_Path长度越短越优先。此外,当BGP路由器从EBGP对等体接收路由时,如果发现AS_Path列表中有本AS号,则不接收该路由,从而避免了AS间的路由环路。
                   当BGP Speaker本地通告一条路由时:
                         当BGP Speaker将这条路由通告到其他AS时,便会将本地AS号添加在AS_Path列表中,并通过Update消息通告给邻居路由器。
                         当BGP Speaker将这条路由通告到本地AS时,便会在Update消息中创建一个空的AS_Path列表。
                   当BGP Speaker传播从其他BGP Speaker的Update消息中学习到的路由时:
                         当BGP Speaker将这条路由通告到其他AS时,便会把本地AS编号添加在AS_Path列表的最前面(最左面)。收到此路由的BGP路由器根据AS_Path属性就可以知道去目的地址所要经过的AS。离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。
                         当BGP Speaker将这条路由通告到本地AS时,不会改变这条路由相关的AS_Path属性。
           BGP属性特点—Next_Hop
                  Next_Hop属性记录了路由的下一跳信息,该属性为公认必遵
                  Next_Hop属性记录了路由的下一跳信息。BGP的下一跳属性和IGP的有所不同,不一定就是邻居设备的IP地址。通常情况下,Next_Hop属性遵循下面的规则:
                       BGP Speaker将本地始发路由发布给IBGP对等体时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。
                       BGP Speaker在向EBGP对等体发布某条路由时,会把该路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址。
                       BGP Speaker在向IBGP对等体发布从EBGP对等体学来的路由时,并不改变该路由信息的下一跳属性。
           BGP属性特点—Local_Pref
                  Local_Pref属性表明BGP路由器的优先级,该值越大越优先。该属性为公认任意。
                  Local_Pref属性
                       该属性仅在IBGP对等体之间有效,不通告给其他AS。它表明路由器的BGP优先级。
                       当BGP路由器通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择Local_Pref属性值较高的路由,缺省情况下该值为100。
           BGP属性特点—MED
                  MED属性类似于IGP的代价值,用于AS间的路由选路。该属性为可选非过渡
                  当一个运行BGP的设备通过不同的EBGP对等体(EBGP对等体需属于同一AS)得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED 值较小者作为最佳路由。
                  MED属性仅在相邻两个AS之间传递,收到此属性的AS一方不会再将其通告给任何其他第三方AS。MED属性可以手动配置,如果路由没有配置MED属性,BGP选路时将该路由的MED值按缺省值0来处理。

           BGP路由计算——选路规则
                 当到达同一目的地存在多条路由时,BGP依照如下策略顺序进行路由选择:
                   1、如果此路由的下一跳不可达,忽略此路由
                   2、优选协议首选值(PrefVal)最高的路由
                   3、优选本地优先级(Local_Pref)最高的路由
                   4、优选手动聚合路由、自动聚合路由、network命令引入的路由、import-route命令引入的路由、从对等体学习的路由
                   5、优选AS路径(AS_Path)最短的路由
                   6、比较Origin属性,依次优选Origin类型为IGP、EGP、Incomplete的路由
                   7、优选MED值最低的路由
                   8、优选从EBGP邻居学来的路由(EBGP路由优先级高于IBGP路由)
                   9、优选到下一跳IGP Metric较小的路由
                   10、优选Cluster_List最短的路由
                   11、优选Router ID最小的路由器发布的路由
                   12、比较对等体的IP Address,优选从具有较小IP Address的对等体学来的路由

           BGP路径选择:
               下一跳地址必须可达。
               协议首选值(PrefVal)是华为设备的特有属性,该属性仅在本地有效。
               如果路由没有本地优先级,BGP选路时将该路由按缺省的本地优先级100来处理。通过执行default local-preference命令可以修改BGP路由的缺省本地优先级。
               本地生成的路由包括通过network命令或import-route命令引入的路由、手动聚合路由和自动聚合路由。
                   优选聚合路由(聚合路由优先级高于非聚合路由)。
                   通过aggregate命令生成的手动聚合路由的优先级高于通过summary automatic命令生成的自动聚合路由。
                   通过network命令引入的路由的优先级高于通过import-route命令引入的路由。
               优选AS路径(AS_Path)最短的路由。
                   AS_Path的长度不包括AS_CONFED_SEQUENCE和AS_CONFED_SET。
                   AS_SET的长度为1,无论AS_SET中包括多少AS号。
                   执行bestroute as-path-ignore命令后,BGP选路时,忽略AS_Path的比较。
               优选MED值最低的路由。
                   BGP只比较来自同一个AS(不包括联盟的子AS)的路由的MED值。即,只有两条路由的AS_SEQUENCE(不包括AS_CONFED_SEQUENCE)属性的第一个AS号相同时,BGP才会比较二者的MED值。
                   如果路由没有MED属性,BGP选路时将该路由的MED值按缺省值0来处理;执行bestroute med-none-as-maximum命令后,BGP选路时将该路由的MED值按最大值4294967295来处理。
                   执行compare-different-as-med命令后,BGP将强制比较来自不同自治系统中的邻居的路由的MED值。除非能够确认不同的自治系统采用了同样的IGP和路由选择方式,否则不要使用compare-different-as-med命令(可能产生环路)。
                   执行bestroute med-confederation命令后,只有当AS_Path中不包含外部AS号(不属于联盟的子AS),且AS_CONFED_SEQUENCE的第一个AS号相同时,才能比较MED值的大小。
                   执行deterministic-med命令后,将消除路由接收顺序对选路结果的影响。
               负载分担
                   当到达同一目的地址存在多条等价路由时,可以通过BGP等价负载分担实现均衡流量的目的。
                   形成BGP等价负载分担的条件是:BGP选路规则中“到下一跳的IGP metric”这条规则之前所有需要比较的属性完全相同。

BGP 4+ 概述
            BGP 4 的扩展版本
            扩展能力自协商机制
            支持传递多种地址族地址(IPv6、VPNv4、VPNv6等)
            新增属性用以支持多地址族地址传递
BGP 4+ 扩展能力协商
            当两台BGP对等体之间需要传输IPv6地址族的地址时,需要在OPEN Message 中进行扩展能力的协商
            OPEN消息中的Capabilities Advertisement字段用于扩展能力的协商。
                     除了多地址族的能力协商外,还有4字节AS号能力、Route-Refresh支持能力、多层标签能力等能力都会在该字段列出来进行协商。

BGP 4 +扩展属性—MP_REACH_NLRI
            MP_REACH_NLRI属性(Type Code=14)
                     BGP4+使用此属性来通告IPv6 路由。
                             地址族信息(Address Family Information)域:由2字节的地址族标识AFI(Address Family Identifier)和1字节的子地址族标识SAFI(Subsequent Address Family Identifier)组成。
                             下一跳长度(Length of Next Hop Network Address)域:1字节长度,表示下一跳地址的长度,通常情况下为16
                             下一跳地址(Network Address of Next Hop)域:长度由上一个字段决定,一般情况下为全球单播地址。
                              保留字段(Reserved)域:一字节,必须为0
                              网络层可达信息(Network Layer Reachability Information)域:表示含有匹配相同属性的路由信息。当此字段为0时,表示为缺省路由。
            当传递IPv6路由时:
                     AFI=2 ,SAFI=1(Unicast) ,SAFI=2(Multicast)
                     下一跳地址长度字段决定了下一跳地址的个数
                             长度字段=16,下一跳地址为下一跳路由器的全球单播地址
                             长度字段=32,下一跳地址为下一跳路由器的全球单播地址和链路本地地址
                     保留字段,恒等于0
                     NLRI字段,可变长字段,表示路由前缀和掩码信息。

BGP 4 +扩展属性—MP_UNREACH_NLRI
            MP_UNREACH_NLRI属性(Type Code= 15 )
                     BGP 4+用该属性撤销路由
                             地址族信息(Address Family Information)域:由2字节的地址族标识AFI(Address Family Identifier)和1字节的子地址族标识SAFI(Subsequent Address Family Identifier)组成。
                             撤销路由(Withdrawn Routes)域:表示撤销的路由条目。格式为<掩码长度,路由前缀> ,当此掩码长度为0时,表示为缺省路由。
            当撤销IPv6路由时
                     AFI=2 ,SAFI=1(Unicast) ,SAFI=2(Multicast)
                     Withdrawn Routes 字段代表需要撤回的路由前缀及掩码。

配置BGP基本功能:
            地址分配规则:
                     Rx和Ry(X<Y)直连接口的IPv4网段为:10.0.xy.0/24. Rx相应接口的地址为10.0.xy.x ,Ry为10.0.xy.y
                     Rx和Ry(X<Y)直连接口的IPv6网段为:2000::xy00/120. Rx相应接口的地址为2000::xy0x ,Ry为2000::xy0y
                     各路由器的LoopBack 0 接口的地址已给出,各LoopBack 0接口的IPv6地址为2000::z(z为相应路由器的编号)
             提示:
                     AS内可运行OSPF,ISIS等协议来实现互通
                     稳定的IBGP关系可通过loopback接口来建立
                     EBGP邻居关系直接用物理接口建立即可
             命令含义
                     peer as-number命令用来配置指定对等体(组)的对端AS号。
                     peer connect-interface命令用来指定发送BGP报文的源接口,并可指定发起连接时使用的源地址。
                     peer next-hop-local命令用来设置向IBGP对等体(组)通告路由时,把下一跳属性设为自身的IP地址。

             参数意义:
                     peer ipv4-address  as-number as-number
                          ip-address:对等体的IPv4地址。
                          as-number:对等体的对端AS号。
                     peer ipv4-address  connect-interface interface-type interface-number [ ipv4-source-address ]
                          ip-address:对等体的IPv4地址。
                          interface-type interface-number:接口类型和接口号。
                          ipv4-source-address:建立连接时的IPv4源地址。
                     peer ipv4-address  next-hop-local
                          ip-address:对等体的IPv4地址。
             注意事项:
                   在使用Loopback接口作为BGP报文的源接口时,必须注意以下事项:
                          确认BGP对等体的Loopback接口的地址是可达的。
                          如果是EBGP连接,还要配置peer ebgp-max-hop命令,允许EBGP通过非直连方式建立邻居关系。
                   peer next-hop-local和peer next-hop-invariable是两条互斥命令。
                   display bgp peer中的PrefRcv表示本端从对等体上收到路由前缀的数目。
            IPv6的配置与IPv4基本一致,但是在指定完peer地址和as-number之后,需手工进入ipv6-family unicast视图,执行peer peer-ip-address enable 命令来激活。

配置BGP– PrefVal属性
             命令含义
                       peer route-policy命令用来对来自对等体(组)的路由或向对等体(组)发布的路由指定Route-Policy,对接收或发布的路由进行控制。
                       apply preferred-value preferred-value  命令用来在路由策略中配置改变BGP路由的首选值的动作。
             具体用法:
                       peer route-policy命令为BGP视图命令
             参数意义
                       peer  ipv4-address  route-policy route-policy-name { import | export }
                       ipv4-address:对等体的IPv4地址。
                       route-policy-name:Route-Policy的名称。
                       import:对从对等体(组)来的路由应用Route-Policy。
                       export:对向对等体(组)发布的路由应用Route-Policy。
                       preferred-value:指定BGP的首选值。在选择路由时,协议优选首选值最高的BGP路由。整数形式,取值范围0~65535,默认为0
             实验现象:
                       我们使用display bgp routing-table和display bgp ipv6  routing-table命令查看BGP路由表。
             注意事项:
                       Preferred-value是BGP协议的私有属性,该命令只对BGP路由生效。Preferred-value是BGP选路规则中的weight值,不是RFC规定的标准属性,所以该命令仅在本地生效,在BGP的出口策略中不生效。

配置BGP–Local_Pref属性
             命令含义:
                       apply local-preference preference   配置路由的本地优先级
             参数含义:
                       Preference  指定的BGP路由的本地优先级,整数形式,取值范围是0~4294967295,默认情况下为100
             注意事项:
                       策略生效后,将影响BGP路由选路。
                       本地优先级仅用于同一个AS域内的选路,不向域外发布这个属性,所以用于配置EBGP邻居的export方向的策略时,apply local-preference命令的设置不生效。

配置BGP– MED属性:
             保留上一步local-preference的配置,其他不变。
             需要解决上一步出现的来回路径不一致的问题,可通过R2宣告更高MED属性的路由,使得R5选择R3宣告的路由。
             命令含义
                       apply cost [ + | - ]   cost命 令用来在路由策略中配置改变路由的开销值的动作。
             参数含义:
                       + :表示增加开销值。
                       - : 表示减少开销值。
                       cost :指定路由的开销值。对路由的选路进行控制,需要将路由的开销设置为固定值时,可以通过调整开销值避免路由环路的产生。
              注意事项:
                       在缺省情况下,BGP只比较来自同一AS的路由的MED值。这里的AS不包括联盟的子AS。为了使BGP在联盟内选择最优路由时能够比较MED值,可以配置bestroute med-confederation命令。
                       配置bestroute med-confederation命令后,只有当AS_Path中不包含外部自治系统(不在联盟内的自治系统)号时才比较MED值的大小。如果AS_Path中包含外部自治系统号,则不进行比较。
                       例如:自治系统65000、65001、65002和65004属于同一联盟。四条到达同一目的地址的待选路由如下所示:
                            path1:AS_Path=65000 65004,med=2
                            path2:AS_Path=65001 65004,med=3
                            path3:AS_Path=65002 65004,med=4
                            path4:AS_Path=65003 65004,med=1
             在配置bestroute med-confederation命令后,因为path1、path2和path3的AS_Path中不包含同一联盟外的自治系统,所以当BGP需要通过比较MED值来选择路由时,将只比较path1、path2和path3的MED值。而path4的AS_Path中包含同一联盟外的自治系统,因此不比较path4的MED值。

配置BGP– BGP AS_Path属性1:
              命令含义
                       apply as-path { { as-number-plain | as-number-dot } &<1-10> { additive } | none overwrite }
              参数含义
                       as-number-plain:指定要替换或增加的整数形式的AS号。在同一个命令行中最多可以同时指定10个AS号。
                       as-number-dot :指定要替换或增加的点分形式的AS号。在同一个命令行中最多可以同时指定10个AS号。
                       additive :在原有的AS_Path列表中追加指定的AS号。
                       overwrite :用指定的AS号覆盖原有的AS_Path列表。
                       None :清空原来的AS_Path列表。
              注意事项:
                       策略生效后,将会影响BGP路由选路。
                       配置该命令会直接影响网络流量所经过的途径,另外也可能造成环路和选路错误,请谨慎使用该命令。

配置BGP– BGP AS_Path属性2:
              命令含义:
                       if-match as-path-filter { as-path-filter-number &<1-16> | as-path-filter-name }
              参数含义:
                       as-path-filter-number :指定AS路径过滤器号。在一个命令行中可以配置多个此参数,但最大不能超过16。 整数形式,取值范围1~256。
                       as-path-filter-name指定AS路径过滤器名称。字符串形式,区分大小写,不支持空格,长度范围是1~51,且不能都是数字。
              注意事项:
                       在一个命令行中可以配置多个AS-Path-filter值,但最多不能超过16个。它们之间是“或”的关系,即通过其中某一个AS路径过滤器的过滤就可以通过该命令的过滤。
配置BGP– BGP AS_Path属性2之as-path-filter:
              AS路径过滤器(AS_Path-Filter)
                       AS路径过滤器是一组针对BGP路由的AS_Path属性进行过滤的规则
                       AS路径过滤器的默认行为是deny,即路由如果没有在某一次过滤中被permit则最终不能通过该过滤器的过滤。
                       AS路径过滤器的匹配条件使用正则表达式指定
                           举例:① ^10_    匹配AS_Path属性以AS10开头的路由
                                     ② _20_    匹配AS_Path属性中包含AS20的路由
                                     ③.*          匹配所有AS_Path属性
              命令含义:
                       ip as-path-filter { as-path-filter-number | as-path-filter-name } { deny | permit } regular-expression命令用来创建AS路径过滤器。
              参数含义:
                       as-path-filter-number 指定的AS路径过滤器号。 整数形式,取值范围1~256。
                       as-path-filter-name 指定的AS路径过滤器名称。 字符串形式,区分大小写,不支持空格,长度范围是1~51,且不能都是数字。当输入的字符串两端使用双引号时,可在字符串中输入空格。
                       deny 指定AS路径过滤器的匹配模式为拒绝。
                       permit 指定AS路径过滤器的匹配模式为允许。

 配置BGP– BGP AS_Path属性2之正则表达式

 

 BGP故障排除流程:
          由于本章主讲BGP,假设网络中非BGP部分没有问题
                BGP邻居状态无法到达Established状态:
                          1、IGP不通
                          2、ACL过滤了TCP的179端口
                          3、邻居的Router ID冲突
                          4、配置的邻居的AS号错误
                          5、用Loopback口建立邻居时没有配置peer connect-interface
                          6、用建立EBGP邻居时未配置peer ebgp-max-hop
                          7、peer valid-ttl-hops配置错误。
                          8、对端发送的路由数量是否超过peer route-limit命令设定的值。
                          9、对端配置了peer ignore
                          10、两端的地址族不匹配
                BGP邻居关系正常的情况下,但是BGP路由表没有该表项
                          1、下一跳地址是否可达
                          2、入口是否进行了策略限制
                          3、接收前缀的条目是否进行了限制
                          4、对端出口是否进行了策略限制
                          5、该前缀在对端BGP路由表中是否最优
                          6、对端是否配置了active-route-advertise
                BGP邻居关系正常的情况下,BGP路由表存在某些表项不是最优
                          1、根据选路原则,某些表项不是最优
                          2、某些前缀是否为抑制状态




posted @ 2022-01-16 17:45  博雅塔之客  阅读(268)  评论(0编辑  收藏  举报