一. BGP简介

1. BGP概述
    BGP(Border Gateway Protocol,边界网关协议)是一种用于AS(Autonomous System,自治系统)之间的动态路由协议。AS是拥有同一选路策略,在同一技术管理部门下运行的一组路由器。
    早期发布的三个版本分别是BGP-1(RFC 1105)、BGP-2(RFC 1163)和BGP-3(RFC 1267),当前使用的版本是BGP-4(RFC 1771,已更新至RFC 4271)。BGP-4做为事实上的Internet外部路由协议标准,被广泛应用于ISP(Internet Service Provider,因特网服务提供商)之间。
    BGP特性描述如下:
  • BGP是一种外部网关协议(Exterior Gateway Protocol,EGP),与OSPF、RIP等内部网关协议(Interior Gateway Protocol,IGP)不同,其着眼点不在于发现和计算路由,而在于控制路由的传播和选择最佳路由。
  • BGP使用TCP作为其传输层协议(端口号179),提高了协议的可靠性。
  • BGP支持CIDR(Classless Inter-Domain Routing,无类别域间路由)。
  • 路由更新时,BGP只发送更新的路由,大大减少了BGP传播路由所占用的带宽,适用于在Internet上传播大量的路由信息。
  • BGP路由通过携带AS路径信息彻底解决路由环路问题。
  • BGP提供了丰富的路由策略,能够对路由实现灵活的过滤和选择。
  • BGP易于扩展,能够适应网络新的发展。

发送BGP消息的路由器称为BGP发言者(BGP Speaker),它接收或产生新的路由信息,并发布(Advertise)给其它BGP发言者。当BGP发言者收到来自其它自治系统的新路由时,如果该路由比当前已知路由更优、或者当前还没有该路由,它就把这条路由发布给自治系统内所有其它BGP发言者。
相互交换消息的BGP发言者之间互称对等体(Peer),若干相关的对等体可以构成对等体组(Peer group)。

    BGP在路由器上以下列两种方式运行:
  • IBGP(Internal BGP):当BGP运行于同一自治系统内部时,被称为IBGP;
  • EBGP(External BGP):当BGP运行于不同自治系统之间时,称为EBGP。

BGP的消息类型

    1) 消息头格式
        BGP有5种消息类型:Open、Update、Notification、Keepalive和Route-refresh。这些消息有相同的报文头,其格式如图所示。

边界网关协议(BGP)知识汇总

        主要字段的解释如下:
             Marker:16字节,用于标明BGP报文边界,所有比特均为“1”。
             Length:2字节,BGP消息总长度(包括报文头在内),以字节为单位。
             Type:1字节,BGP消息的类型。其取值从1到5,分别表示Open、Update、Notification、Keepalive和Route-refresh消息。其中,前四种消息是在RFC 1771中定义,而Type为5的消息则是在RFC 2918中定义的。
    2) Open
        Open消息是TCP连接建立后发送的第一个消息,用于建立BGP对等体之间的连接关系。其消息格式如图所示。

边界网关协议(BGP)知识汇总

        主要字段的解释如下:
             Version:BGP的版本号。对于BGP-4来说,其值为4。
             My autonomous system:本地AS号。通过比较两端的AS号可以确定是EBGP连接还是IBGP连接。
             Hold time:保持时间。在建立对等体关系时两端要协商Hold Time,并保持一致。如果在这个时间内未收到对端发来的Keepalive消息或Update消息,则认为BGP连接中断。
             BGP identifier:BGP标识符。以IP地址的形式表示,用来识别BGP路由器。
             Opt Parm Len(Optional Parameters Length):可选参数的长度。如果为0则没有可选参数。
             Optional parameters:可选参数。用于多协议扩展(Multiprotocol Extensions)等功能。
    3) Update
        Update消息用于在对等体之间交换路由信息。它既可以发布可达路由信息,也可以撤销不可达路由信息。其消息格式如图所示。

边界网关协议(BGP)知识汇总

        一条Update报文可以通告一类具有相同路径属性的可达路由,这些路由放在NLRI(Network Layer Reachable Information,网络层可达信息)字段中,Path Attributes字段携带了这些路由的属性,BGP根据这些属性进行路由的选择;同时Update报文还可以携带多条不可达路由,被撤销的路由放在Withdrawn Routes字段中。
        主要字段的解释如下:
             Unfeasible routes length:不可达路由字段的长度,以字节为单位。如果为0则说明没有Withdrawn Routes字段。
             Withdrawn routes:不可达路由的列表。
             Total path attribute length:路径属性字段的长度,以字节为单位。如果为0则说明没有Path Attributes字段。
             Path atributes:与NLRI相关的所有路径属性列表,每个路径属性由一个TLV(Type-Length-Value)三元组构成。BGP正是根据这些属性值来避免环路,进行选路,协议扩展等。
             NLRI(Network Layer Reachability Information):可达路由的前缀和前缀长度二元组。
    4) Notification
        当BGP检测到错误状态时,就向对等体发出Notification消息,之后BGP连接会立即中断。其消息格式如图所示。

边界网关协议(BGP)知识汇总

        主要字段的解释如下:
             Error code:差错码,指定错误类型。
             Error subcode:差错子码,错误类型的详细信息。
             Data:用于辅助发现错误的原因,它的内容依赖于具体的差错码和差错子码,记录的是出错部分的数据,长度不固定。
    5) Keepalive
        BGP会周期性地向对等体发出Keepalive消息,用来保持连接的有效性。其消息格式中只包含报文头,没有附加其他任何字段。
    6) Route-refresh
        Route-refresh消息用来要求对等体重新发送指定地址族的路由信息。其消息格式如图所示。

边界网关协议(BGP)知识汇总

        主要的字段解释如下:
             AFI:Address Family Identifier,地址族标识。
             Res.:保留,必须置0。
             SAFI:Subsequent Address Family Identifier,子地址族标识。

BGP的路由属性

    1.  路由属性的分类
        BGP路由属性是一组参数,它对特定的路由进行了进一步的描述,使得BGP能够对路由进行过滤和选择。
        事实上,所有的BGP路由属性都可以分为以下四类:
             公认必须遵循(Well-known mandatory):所有BGP路由器都必须能够识别这种属性,且必须存在于Update消息中。如果缺少这种属性,路由信息就会出错。
             公认可选(Well-known discretionary):所有BGP路由器都可以识别,但不要求必须存在于Update消息中,可以根据具体情况来选择。
             可选过渡(Optional transitive):在AS之间具有可传递性的属性。BGP路由器可以不支持此属性,但它仍然会接收带有此属性的路由,并通告给其他对等体。
             可选非过渡(Optional non-transitive):如果BGP路由器不支持此属性,该属性被忽略,且不会通告给其他对等体。
        BGP路由几种基本属性和对应的类别如图所示。
            路由属性和类别

边界网关协议(BGP)知识汇总

  1. 几种主要的路由属性
    源(ORIGIN)属性
    ORIGIN属性定义路由信息的来源,标记一条路由是怎么成为BGP路由的。它有以下三种类型:
    IGP:优先级最高,说明路由产生于本AS内。
    EGP:优先级次之,说明路由通过EGP学到。
    incomplete:优先级最低,它并不是说明路由不可达,而是表示路由的来源无法确定。例如,引入的其它路由协议的路由信息。
    AS路径(AS_PATH)属性
    AS_PATH属性按一定次序记录了某条路由从本地到目的地址所要经过的所有AS号。当BGP将一条路由通告到其他AS时,便会把本地AS号添加在AS_PATH列表的最前面。收到此路由的BGP路由器根据AS_PATH属性就可以知道去目的地址所要经过的AS。离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。如图所示。
    边界网关协议(BGP)知识汇总

            通常情况下,BGP不会接受AS_PATH中已包含本地AS号的路由,从而避免了形成路由环路的可能。
            在目前的实现中,根据某些特殊的具体应用需求,可以通过配置peer allow-as-loop命令允许AS号重复。
            同时,AS_PATH属性也可用于路由的选择和过滤。在其他因素相同的情况下,BGP会优先选择路径较短的路由。比如在上图中,AS 50中的BGP路由器会选择经过AS 40的路径作为到目的地址8.0.0.0的最优路由。
            在某些应用中,可以使用路由策略来人为地增加AS路径的长度,以便更为灵活地控制BGP路径的选择。
            通过配置AS路径过滤列表,还可以针对AS_PATH属性中所包含的AS号来对路由进行过滤。
         下一跳(NEXT_HOP)属性
            BGP的下一跳属性和IGP的有所不同,不一定就是邻居路由器的IP地址。
            下一跳属性取值情况分为三种,如图所示。

    边界网关协议(BGP)知识汇总

                 BGP发言者把自己产生的路由发给所有邻居时,将把该路由信息的下一跳属性设置为自己与对端连接的接口地址;
                 BGP发言者把接收到的路由发送给EBGP对等体时,将把该路由信息的下一跳属性设置为本地与对端连接的接口地址;
                 BGP发言者把从EBGP邻居得到的路由发给IBGP邻居时,并不改变该路由信息的下一跳属性。如果配置了负载分担,路由被发给IBGP邻居时则会修改下一跳属性。
                下一跳属性
    
         MED(MULTI_EXIT_DISC)
            MED属性仅在相邻两个AS之间交换,收到此属性的AS一方不会再将其通告给任何其他第三方AS。
            MED属性相当于IGP使用的度量值(metrics),它用于判断流量进入AS时的最佳路由。当一个运行BGP的路由器通过不同的EBGP对等体得到目的地址相同但下一跳不同的多条路由时,在其它条件相同的情况下,将优先选择MED值较小者作为最佳路由。如图所示,从AS 10到AS 20的流量将选择Router B作为入口。

    边界网关协议(BGP)知识汇总

            通常情况下,BGP只比较来自同一个AS的路由的MED属性值。
            在目前的实现中,通过配置compare-different-as-med命令,可以强制BGP比较来自不同AS的路由的MED属性值。
         本地优先(LOCAL_PREF)属性
            LOCAL_PREF属性仅在IBGP对等体之间交换,不通告给其他AS。它表明BGP路由器的优先级。
            LOCAL_PREF属性用于判断流量离开AS时的最佳路由。当BGP的路由器通过不同的IBGP对等体得到目的地址相同但下一跳不同的多条路由时,将优先选择LOCAL_PREF属性值较高的路由。如图所示,从AS 20到AS 10的流量将选择Router C作为出口。

    边界网关协议(BGP)知识汇总

         团体(COMMUNITY)属性
            团体属性用来简化路由策略的应用和降低维护管理的难度。它是一组有相同特征的目的地址的集合,没有物理上的边界,与其所在的AS无关。公认的团体属性有:
                 INTERNET:缺省情况下,所有的路由都属于INTERNET团体。具有此属性的路由可以被通告给所有的BGP对等体。
                 NO_EXPORT:具有此属性的路由在收到后,不能被发布到本地AS之外。如果使用了联盟,则不能被发布到联盟之外,但可以发布给联盟中的其他子AS。
                 NO_ADVERTISE:具有此属性的路由被接收后,不能被通告给任何其他的BGP对等体。
                 NO_EXPORT_SUBCONFED:具有此属性的路由被接收后,不能被发布到本地AS之外,也不能发布到联盟中的其他子AS。

BGP的选路规则

    1.  BGP选择路由的策略
        在目前的实现中,BGP选择路由时采取如下策略:
             首先丢弃下一跳(NEXT_HOP)不可达的路由;
             优选Preferred-value值最大的路由;
             优选本地优先级(LOCAL_PREF)最高的路由;
             优选聚合路由;
             优选AS路径(AS_PATH)最短的路由;
             依次选择ORIGIN类型为IGP、EGP、Incomplete的路由;

优选MED值最低的路由;

             依次选择从EBGP、联盟、IBGP学来的路由;
             优选下一跳Cost值最低的路由;
             优选CLUSTER_LIST长度最短的路由;
             优选ORIGINATOR_ID最小的路由;
             优选Router ID最小的路由器发布的路由。
             优选地址最小的对等体发布的路由。

             CLUSTER_ID为路由反射器的集群ID,CLUSTER_LIST由CLUSTER_ID序列组成,反射器将自己的CLUSTER_ID加入CLUSTER_LIST中,若反射器收到路由中CLUSTER_LIST中包含有自己的CLUSTER_ID,则丢弃该路由,从而避免群内环路的发生。
             如果配置了负载分担,并且有多条到达同一目的地的路由,则根据配置的路由条数选择多条路由进行负载分担。
    2.  应用BGP负载分担时的选路
        在BGP中,由于协议本身的特殊性,它产生的路由的下一跳地址可能不是当前路由器直接相连的邻居。常见的一个原因是:IBGP之间发布路由信息时不改变下一跳。这种情况下,为了能够将报文正确转发出去,路由器必须先找到一个直接可达的地址(查找IGP建立的路由表项),通过这个地址到达路由表中指示的下一跳。在上述过程中,去往直接可达地址的路由被称为依赖路由,BGP路由依赖于这些路由指导报文转发。根据下一跳地址找到依赖路由的过程就是路由迭代(recursion)。
        目前系统支持基于迭代的BGP负载分担,即如果依赖路由本身是负载分担的(假设有三个下一跳地址),则BGP也会生成相同数量的下一跳地址来指导报文转发。需要说明的是,基于迭代的BGP负载分担并不需要命令配置,这一特性在系统上始终启用。
        在实现方法上,BGP的负载分担与IGP的负载分担有所不同:
             IGP是通过协议定义的路由算法,对到达同一目的地址的不同路由,根据计算结果,将度量值(metric)相等的(如RIP、OSPF)路由进行负载分担,选择的标准很明确(按metric)。
             BGP本身并没有路由计算的算法,它只是一个选路的路由协议,因此,不能根据一个明确的度量值决定是否对路由进行负载分担,但BGP有丰富的选路规则,可以在对路由进行一定的选择后,有条件地进行负载分担,也就是将负载分担加入到BGP的选路规则中去。

             BGP只对AS_PATH属性、ORIGIN属性、LOCAL_PREF和MED值完全相同的路由进行负载分担。
             BGP负载分担特性适用于EBGP、IBGP以及联盟之间。
             如果有多条到达同一目的地的路由,则根据配置的路由条数选择多条路由进行负载分担。
            BGP负载分担示意图

            在图中,Router D和Router E是Router C的IBGP对等体。当Router A和Router B同时向Router C通告到达同一目的地的路由时,如果用户在Router C配置了负载分担(如balance 2),则当满足一定的选路规则后,并且两条路由具有相同的AS_PATH属性、ORIGIN属性、LOCAL_PREF和MED值时,Router C就把接收的两条路由同时加入到转发表中,实现BGP路由的负载分担。Router C只向Router D和Router E转发一次该路由,AS_PATH不变,但NEXT_HOP属性改变为Router C的地址,而不是原来的EBGP对等体地址。其它的BGP过渡属性将按最佳路由的属性传递。
    3.  BGP发布路由的策略
        在目前的实现中,BGP发布路由时采用如下策略:
             存在多条有效路由时,BGP发言者只将最优路由发布给对等体;
             BGP发言者只把自己使用的路由发布给对等体;
             BGP发言者从EBGP获得的路由会向它所有BGP对等体发布(包括EBGP对等体和IBGP对等体);
             BGP发言者从IBGP获得的路由不向它的IBGP对等体发布;
             BGP发言者从IBGP获得的路由发布给它的EBGP对等体(关闭BGP与IGP同步的情况下,IBGP路由被直接发布;开启BGP与IGP同步的情况下,该IBGP路由只有在IGP也发布了这条路由时才会被同步并发布给EBGP对等体);
             连接一旦建立,BGP发言者将把自己所有的BGP路由发布给新对等体。

IBGP和IGP同步

    同步是指IBGP和IGP之间的同步,其目的是为了避免出现误导外部AS路由器的现象发生。
    BGP路由器提供转发服务,经该AS转发的IP报文将可能因为目的地址不可达而被丢弃。如图所示,Router E通过BGP从Router D可以学到Router A的一条路由8.0.0.0/8,于是将到这个目的地址的报文转发给Router D,Router D查询路由表,发现下一跳是Router B(通过peer next-hop-local命令手动设置)。由于Router D从IGP学到了到Router B的路由,所以通过路由迭代,Router D将报文转发给Router C。但Router C并不知道去8.0.0.0/8的路由,于是将报文丢弃。

边界网关协议(BGP)知识汇总

    如果设置了同步特性,在IBGP路由加入路由表并发布给EBGP对等体之前,会先检查IGP路由表。只有在IGP也知道这条IBGP路由时,它才会被发布给EBGP对等体。
    在下面的情况中,可以关闭同步特性。
         本AS不是过渡AS(上图中的AS 20就属于一个过渡AS)
         本AS内所有路由器建立IBGP全连接
6. 大规模BGP网络所遇到的问题
    1) 路由聚合
        在大规模的网络中,BGP路由表十分庞大,使用路由聚合(Routes Aggregation)可以大大减小路由表的规模。
        路由聚合实际上是将多条路由合并的过程。这样BGP在向对等体通告路由时,可以只通告聚合后的路由,而不是将所有的具体路由都通告出去。
        目前系统支持自动聚合和手动聚合方式。使用后者还可以控制聚合路由的属性,以及决定是否发布具体路由。
    2) BGP路由衰减
        BGP路由衰减(Route Dampening)用来解决路由不稳定的问题。路由不稳定的主要表现形式是路由振荡(Route flaps),即路由表中的某条路由反复消失和重现。
        发生路由振荡时,路由协议就会向邻居发布路由更新,收到更新报文的路由器需要重新计算路由并修改路由表。所以频繁的路由振荡会消耗大量的带宽资源和CPU资源,严重时会影响到网络的正常工作。
        在多数情况下,BGP协议都应用于复杂的网络环境中,路由变化十分频繁。为了防止持续的路由振荡带来的不利影响,BGP使用衰减来抑制不稳定的路由。
        BGP衰减使用惩罚值来衡量一条路由的稳定性,惩罚值越高则说明路由越不稳定。路由每发生一次振荡(路由从激活状态变为未激活状态,称为一次路由振荡),BGP便会给此路由增加一定的惩罚值(1000,此数值为系统固定,不可修改)。当惩罚值超过抑制阈值时,此路由被抑制,不加入到路由表中,也不再向其他BGP对等体发布更新报文。
        被抑制的路由每经过一段时间,惩罚值便会减少一半,这个时间称为半衰期(Half-life)。当惩罚值降到再使用阈值时,此路由变为可用并被加入到路由表中,同时向其他BGP对等体发布更新报文。

边界网关协议(BGP)知识汇总
3) 对等体组
对等体组(Peer Group)是一些具有某些相同属性的对等体的集合。当一个对等体加入对等体组中时,此对等体将获得与所在对等体组相同的配置。当对等体组的配置改变时,组内成员的配置也相应改变。
在大型BGP网络中,对等体的数量会很多,其中很多对等体具有相同的策略,在配置时会重复使用一些命令,利用对等体组在很多情况下可以简化配置。
将对等体加入对等体组中,对等体与对等体组具有相同的路由更新策略,提高了路由发布效率。

        如果对等体和对等体组都对某个选项做了配置,配置以最后一次的修改为准。
    4) 团体
        对等体组可以使一组对等体共享相同的策略,而利用团体可以使多个AS中的一组BGP路由器共享相同的策略。团体是一个路由属性,在BGP对等体之间传播,它并不受到AS范围的限制。
        BGP路由器在将带有团体属性的路由发布给其它对等体之前,可以改变此路由原有的团体属性。
        除了使用公认的团体属性外,用户还可以使用团体属性列表自定义扩展团体属性,以便更为灵活地控制路由策略。
    5) 路由反射器
        为保证IBGP对等体之间的连通性,需要在IBGP对等体之间建立全连接关系。假设在一个AS内部有n台路由器,那么应该建立的IBGP连接数就为n(n-1)/2。当IBGP对等体数目很多时,对网络资源和CPU资源的消耗都很大。
        利用路由反射可以解决这一问题。在一个AS内,其中一台路由器作为路由反射器RR(Route Reflector),其它路由器做为客户机(Client)与路由反射器之间建立IBGP连接。路由反射器在客户机之间传递(反射)路由信息,而客户机之间不需要建立BGP连接。
        既不是反射器也不是客户机的BGP路由器被称为非客户机(Non-Client)。非客户机与路由反射器之间,以及所有的非客户机之间仍然必须建立全连接关系。其示意图如图所示。

边界网关协议(BGP)知识汇总

        路由反射器和它的客户机组成了一个集群(Cluster)。某些情况下,为了增加网络的可靠性和防止单点故障,可以在一个集群中配置一个以上的路由反射器。这时,位于相同集群中的每个路由反射器都要配置相同的Cluster_ID,以避免路由循环。如图所示。

边界网关协议(BGP)知识汇总

        在某些网络中,路由反射器的客户机之间已经建立了全连接,它们可以直接交换路由信息,此时客户机到客户机之间的路由反射是没有必要的,而且还占用带宽资源。目前,系统支持配置相关命令来禁止在客户机之间反射路由。

        禁止客户机之间的路由反射后,客户机到非客户机之间的路由仍然可以被反射。
    6) 联盟
        联盟(Confederation)是处理AS内部的IBGP网络连接激增的另一种方法,它将一个自治系统划分为若干个子自治系统,每个子自治系统内部的IBGP对等体建立全连接关系,子自治系统之间建立联盟内部EBGP连接关系。其示意图如图所示。

边界网关协议(BGP)知识汇总

        在不属于联盟的BGP发言者看来,属于同一个联盟的多个子自治系统是一个整体,外界不需要了解内部的子自治系统情况,联盟ID就是标识联盟这一整体的自治系统号,如上图中的AS 200就是联盟ID。
        联盟的缺陷是:从非联盟方案向联盟方案转变时,要求路由器重新进行配置,逻辑拓扑也要改变。
        在大型BGP网络中,路由反射器和联盟可以被同时使用。

BGP GR

    基于BGP的GR Restarter为了与BGP对等体建立一个BGP会话连接,首先要发送一个包含了GR能力的OPEN消息到对端,BGP对等体收到该消息后,得知发送方已具有GR能力。这样,通过OPEN消息交互GR能力,GR Restarter与其BGP对等体之间协商建立起GR Session连接。如果双方都没有交换GR能力的信息,建立起的会话也就不具备GR能力。
    对于分布式设备,当进行主备倒换时,会话项将丢失,此时具备GR感知能力的BGP对等体会将所有与该GR Restarter有关的路由进行失效标记。但在GR Time内仍按照这些路由进行报文转发,这样确保了在从BGP对等体重新收集路由信息的过程中没有报文丢失。
    对于分布式设备,主备倒换完成后,GR Restarter会重新与BGP对等体建立GR Session连接,同时发送新的GR消息以宣告其重启完毕。此时两个BGP对等体间进行路由信息交换。交换完成后,GR Restarter根据新的路由转发信息更新路由

MP-BGP

    1.  MP-BGP概述
        传统的BGP-4只能管理IPv4单播的路由信息,对于使用其它网络层协议(如IPv6等)的应用,在跨自治系统传播时就受到一定限制。
        为了提供对多种网络层协议的支持,IETF对BGP-4进行了扩展,形成MP-BGP,目前的MP-BGP标准是RFC 4760(Multiprotocol Extensions for BGP-4,BGP-4的多协议扩展)。
        支持BGP扩展的路由器与不支持BGP扩展的路由器可以互通。
    2.  MP-BGP的扩展属性
        BGP-4使用的报文中,与IPv4地址格式相关的三条信息都由Update报文携带,这三条信息分别是:NLRI、路径属性中的NEXT_HOP、路径属性中的AGGREGATOR(该属性中包含形成聚合路由的BGP发言者的IP地址)。
        为实现对多种网络层协议的支持,BGP-4需要将网络层协议的信息反映到NLRI及NEXT_HOP。MP-BGP中引入了两个新的路径属性:
             MP_REACH_NLRI:Multiprotocol Reachable NLRI,多协议可达NLRI。用于发布可达路由及下一跳信息。
             MP_UNREACH_NLRI:Multiprotocol Unreachable NLRI,多协议不可达NLRI。用于撤销不可达路由。
        这两种属性都是可选非过渡(Optional non-transitive)的,因此,不提供多协议能力的BGP发言者将忽略这两个属性的信息,不把它们传递给其它邻居。
    3.  地址族
        MP-BGP采用地址族(Address Family)来区分不同的网络层协议,关于地址族的一些取值可以参考RFC 1700(Assigned Numbers)。目前,系统实现了多种MP-BGP扩展应用,包括对×××的扩展、对IPv6的扩展等,不同的扩展应用在各自的地址族视图下配置。

配置BGP

1. BGP基本配置
    1) 配置BGP协议基本功能
        a) 启动BGP
            [Router] bgp  as-number
        b) 配置Router ID
            [Router-bgp] router-id router-id
        c) 指定BGP对等体及AS号
            [Router-bgp] peer ip-address  as-number as-number
        d) 指定建立TCP连接使用的源接口
            [Router-bgp] peer ip-address  connect-interface interface-type interface-number
        e) 配置允许同非直接相连网络上的邻居建立EBGP连接
            [Router-bgp] peer  ip-address ebgp-max-hop [ hop-count ]
        f) 将本地路由发布到BGP路由表中 
            [Router-bgp] network ip-address [ mask | mask-length ] [route-policy route-policy-name ]
        g) 引入其它路由协议的路由
            [Router-bgp] import-route protocol [ process-id | all-processes ] [ med med-value | route-policy route-policy-name ]  
    2) 配置BGP同步
        a) 启用BGP同步特性
            [Router-bgp] synchronization 
        b) 关闭BGP同步特性
            [Router-bgp] undo synchronization 

    3) BGP协议的基本显示和维护
        a) 显示BGP对等体的信息 
            <Router> display bgp peer
        b) 显示BGP路由信息 
            <Router> display bgp routing-table 
        c) 查看BGP的debugging信息
            <Router>debugging bgp event
2. 控制BGP路由
    1) 配置属性控制BGP路由
         给从对等体接收的路由分配首选值 
            [Router-bgp] peer { group-name | ip-address } preferred-value value
         配置Local-Preference缺省值
            [Router-bgp] default local-preference value
         配置MED缺省值
            [Router-bgp] default med med-value
         向对等体发布路由时将自身地址作为下一跳
            [Router-bgp] peer { group-name | ip-address } next-hop-local
    2) 配置过滤器控制BGP路由
         配置Filter-policy
             配置Filter-policy对接收的路由进行过滤
                [Router-bgp] filter-policy { acl-number | ip-prefix ip-prefix-name } import
             配置Filter-policy对发布的路由进行过滤
                [Router-bgp] filter-policy { acl-number | ip-prefix ip-prefix-name } export [ direct | isis process-id | ospf process-id | rip process-id | static ] 
         定义Route-policy
             创建Route-policy
                [Router] route-policy route-policy-name { permit | deny } node node-number ]
             配置if-match子句
                [Router-route-policy] if-match { 匹配规则 } 
             配置apply子句 
                [Router-route-policy] apply { 动作 } 
         if-match子句的配置

         apply子句的配置

         应用Route-policy
             对network命令发布的路由进行控制
                [Router-bgp] network ip-address [ mask | mask-length ] route-policy route-policy-name
             对引入其它路由协议的路由进行控制
                [Router-bgp] import-route protocol [ process-id | all-processes ] [ med med-value | route-policy route-policy-name ] 
             对从对等体接收或发送的路由进行控制
                [Router-bgp] peer { group-name | ip-address } route-policy route-policy-name { import | export } 
         配置AS路径过滤列表
             定义AS路径过滤列表
                [Router] ip as-path as-path-number { deny | permit } regular-expression
             为对等体设置基于AS路径过滤列表的BGP路由过滤策略 
                [Router-bgp] peer { group-name | ip-address } as-path-acl as-path-acl-number { export | import } 
         AS常用正则表达式

3. BGP增强配置
    1) 配置BGP对等体组
        a) 创建IBGP对等体组
            [Router-bgp] group group-name internal 
        b) 创建EBGP对等体组
            [Router-bgp] group group-name external 
        c) 向对等体组中加入对等体
            [Router-bgp] peer ip-address group group-name
        d) 创建EBGP对等体组
            [Router-bgp] peer group-name as-number as-number
        e) 向对等体组中加入对等体
            [Router-bgp] peer ip-address group group-name
    2) 配置BGP团体属性
        配置向对等体/对等体组发布团体属性
            [Router-bgp] peer { group-name | ip-address } advertise-community 
    3) 配置BGP聚合
        a) 配置BGP自动聚合:
            [Router-bgp] summary automatic
        b) 配置BGP手动聚合:
            [Router-bgp] aggregate ip-address { mask | mask-length } [ as-set | attribute-policy route-policy-name | detail-suppressed | origin-policy route-policy-name | suppress-policy route-policy-name ]
    4) 配置BGP反射与联盟
        a) 配置BGP反射
            1) 配置将本机作为路由反射器,并将对等体/对等体组作为路由反射器的客户:
                [Router-bgp]peer { group-name | ip-address } reflect-client
            2) 配置路由反射器的集群ID:
                [Router-bgp] reflector cluster-id cluster-id
            3) 配置禁止客户机到客户机的路由反射:
                [Router-bgp] undo reflect between-clients
        b) 配置BGP联盟
            1) 指定子自治系统号:
                [Router] bgp as-number
            2) 配置联盟ID:
                [Router-bgp] confederation id as-number
            3) 指定一个联盟体中包含了哪些子自治系统 : 
                [Router-bgp] confederation peer-as as-number-list
    5) 配置BGP衰减
        a) [Router-bgp] dampening [ half-life-reachable half-life-unreachable reuse suppress ceiling | route-policy route-policy-name ] 
            half-life-reachable:指定可达路由的半衰期
            half-life-unreachable:指定不可达路由的半衰期 
            reuse:指定路由解除抑制状态的阈值。当惩罚值降低到该值以下,路由就被再使用
            suppress:指定路由进入抑制状态的阈值。当惩罚值超过该极限时,路由受到抑制
            ceiling:惩罚上限值,即惩罚值最多达到该值,则不再增加