• 文章搜索:
  • 目录

        • 分享到...

        • 新浪微博
        • 腾讯微博
        • 推荐到豆瓣 豆瓣空间
        • 分享到搜狐微博 搜狐微博
        • 分享到QQ空间 QQ空间
        • 分享到腾讯朋友 腾讯朋友
        • 网易微博分享 网易微博
        • 添加到百度搜藏 百度搜藏
        • 转贴到开心网 开心网
        • 转发好友 告诉聊友
    • 推荐
    • 打印
    • 收藏

    BGP扩展

    作者:  |  上传时间:2010-10-12  |  关键字:网络大爬虫,第三期,BGP专题

    /许亮、霍晓宇

    1     概述

    BGP协议使用Update报文对路由信息进行更新和撤销。在最新的BGP标准RFC4271中,对Update携带的路由信息格式定义如下:

    Withdrawn Routes Length (2 octets)

    Withdrawn Routes (variable)

                                                                                                                                                                 图1 路由撤销格式

       

    Length (1 octet)

    Prefix (variable)

                                                                                                                                                     图2 Withdrawn Routes格式

    对于要撤销的路由,BGP只向邻居发布该地址的掩码长度和前缀。

    Total Path Attribute Length (2 octets)

    Path Attributes (variable)

    Network Layer Reachability Information (variable)

                                                                                                                                                                  图3 路由更新格式

    Length (1 octet)

    Prefix (variable)

                                                                                                                                                                        图4 NLRI格式

    对于更新的路由,BGP把属性完全相同的合并在一起发布,属性信息放在前面,后面紧跟属性完全相同的一个/组前缀信息。一个Update报文中只能发布一组这样的路由。

    随着BGP广泛应用于MPLS VPN、组播以及非IPv4地址族,这种固定的结构不能完全满足应用需求。

    为了解决BGP对多种网络层协议的支持,IETFInternet Engineering Task Force,因特网工程任务组)对BGP-4进行了地址族能力扩展,形成MP-BGPMulti-Protocol BGP,多协议BGP),使BGP能够为多种应用提供路由信息。在RFC4760Multiprotocol Extensions for BGP-4)中,定义了2个新的可选非传递属性,BGP的多种协议扩展都用到了这两个属性:

    l         扩展协议可达NLRI(MP_REACH_NLRI,属性类型14)

    l         扩展协议不可达NLRI(MP_UNREACH_NLRI,属性类型15)

    这两种扩展属性适用于所有的BGP协议扩展,为了对不同的扩展类型进行区分,在这两种属性中都携带了BGP地址族(Address Family Information)和子地址族(Sub-Address Family Information)信息。AFI 1分配给IPv42分配给IPv6SAFI分配原则在RFC4760中定义如下[1]

          - SAFI values 1 and 2 are assigned in this document.

     

          - SAFI value 3 is reserved.  It was assigned by RFC 2858 for a use that was never fully implemented, so it is deprecated by this document.

     

          - SAFI values 5 through 63 are to be assigned by IANA using either the Standards Action process, defined in [RFC2434], or the Early IANA Allocation process, defined in [RFC4020].

     

          - SAFI values 67 through 127 are to be assigned by IANA, using the "First Come First Served" policy, defined in RFC 2434.

     

          - SAFI values 0 and 255 are reserved.

     

          - SAFI values 128 through 240 are part of the previous "private use" range.  At the time of approval of this document, the unused values were provided to IANA by the Routing Area Director.  These unused values, namely, 130, 131, 135 through 139, and 141 through 240, are considered reserved in order to avoid conflicts.

     

    -        SAFI values 241 through 254 are for "private use", and values in this range are not to be assigned by IANA.

    表格 1 常用AFISAFI列表

    BGP扩展

       CODE

    AFI

    SAFI

    IPv4 Unicast

    Multiprotocol1

    1

    1

    IPv4 Multicast

    Multiprotocol1

    1

    2

    IPv4 Lable

    Multiprotocol1

    1

    4

    IPv4 VPNV4

    Multiprotocol1

    1

    128

    Ipv6 Unicast

    Multiprotocol1

    2

    1

    IPv4 MDT

    Multiprotocol1

    1

    66

    IPv6 Multicast

    Multiprotocol1

    2

    2

    L2vpn

    Multiprotocol1

    196

    128

    VPLSrfc4761

    Multiprotocol1

    25

    65

     

    1.1       MP_REACH_NLRI (Attribute code: 14)

    扩展协议可达属性用来‘Carry the set of reachable destinations together with the next-hop information to be used for forwarding to these destinations’[1]。一个完整的MP_REACH_NLRI属性结构包含如下内容:

    l         地址族信息:包括AFISAFI。其中AFI携带和网络地址相关的网络层协议标识;SAFI携带相关属性中网络层可达信息的附加信息;

    l         下一跳信息:包括网络地址长度(Length of Next Hop Network Address)和下一跳网络地址(Network Address of Next Hop)。在BGP IPv4定义中,下一跳是作为地址的属性进行传递的,属性类型3BGP进行地址扩展后,下一跳地址也需要进行扩展,因此放在MP_REACH_NLRI属性中传递。

    l         前缀信息:放在该属性的NLRI字段传递,不同的地址族格式不同。

           

    Address Family Identifier (2 octets)

    Subsequent Address Family Identifier (1 octet)

    Length of Next Hop Network Address (1 octet)  

    Network Address of Next Hop (variable)    

    Reserved (1 octet)   

    Network Layer Reachability Information (variable)

     

                                                                                                                                                    图5 MP_ REACH_NLRI格式

    此外,定义了一个字节的保留未用,必须置为全0

    1.2       MP_UNREACH_NLRI (Attribute code: 15)

    扩展地址不可达属性通告不可达路由,一个含有MP_UNREACH_NLRIupdate报文不需要携带MP_UNREACH_NLRI属性以外的任何其他路径属性。其格式如下:       

    Address Family Identifier (2 octets)

    Subsequent Address Family Identifier (1 octet)

    Withdrawn Routes (variable)

     

                                                                                                                                                图6 MP_UNREACH_NLRI格式

    1.3       扩展地址族划分

    从应用场景分,常用的BGP地址族扩展可以分为三大类:

    l         MPLS技术组合,用以分配公网标签、跨公网传播传递必要的协议信息,如:BGP VPNv4扩展、L2VPN扩展、VPLS扩展;

    l         为组播应用携带信息,如:IPv4组播扩展和IPv6组播扩展;此外,在私网跨越公网运行组播业务的场景,BGP定义了组播VPN MDT扩展,简称组播VPN扩展。

    l         IPv4之外的地址族的支持,如IPv6扩展、6PE扩展;

     

    2     MPLS相关扩展

    MPLSMultiprotocol Label Switching,多协议标签交换)起源于IPv4Internet Protocol version 4,因特网协议版本4),在链路报文头和IP报文头之间插入一个标签头,标签处于2.5层。由于MPLS结合了IP网络强大的三层路由功能和传统二层网络高效的转发机制,在转发平面采用面向连接方式,与现有二层网络转发方式非常相似,这些特点使得MPLS能够很容易地实现IPATM、帧中继等二层网络的无缝融合,并为QoSQuality of Service,服务质量)、TEVPN等应用提供更好的解决方案。

    2.1       基于MPLSVPN

    传统的VPN一般是通过GREL2TPPPTP等隧道协议来实现私有网络间数据流在公网上的传送,而LSP本身就是公网上的隧道,用MPLS来实现VPN有天然的优势。

    基于MPLSVPN就是通过LSP将私有网络的不同分支连接起来,形成一个统一的网络。基于MPLSVPN支持对不同VPN间的互通控制。

                                                                                                                                                        图7 MPLS VPN典型组网

    MPLS/VPN架构中设备有如下角色:

    l         CECustomer Edge)设备:用户网络边缘设备,有接口直接与SPService Provider,服务提供商)相连。CE可以是路由器或交换机,也可以是一台主机。CE“感知不到VPN的存在,也不需要支持MPLS

    l         PEProvider Edge)路由器:服务提供商边缘路由器,是服务提供商网络的边缘设备,与用户的CE直接相连。在MPLS网络中,对VPN的所有处理都发生在PE上。

    l         PProvider)路由器:服务提供商网络中的骨干路由器,不与CE直接相连。P设备只需要具备基本MPLS转发能力。

    PECE提供二层接入服务的称为L2VPN,提供三层接入服务的称为L3VPN。对MPLS的详细讨论参见网络之路第三期MPLS专题。

    2.1.1                MPLS L3VPN

    MPLS/L3VPN组网中,PECE之间运行路由协议,PECE连接的接口运行路由协议多实例。CE把本站点的VPN路由发布给PE,并从PE学到远端VPN的路由。CEPE之间使用BGP/IGP交换路由信息,也可以使用静态路由。在CE侧,完全感知不到公网的存在,认为PE是私网内的一台路由器。

    PE上,多个CE接入。PE把不同接入方划分到独立的VPN中。对私网用户而言,他们使用的是自己的私有地址空间,不同的VPN中可能存在相同的IPv4地址。而BGP假设其承载的每个IPv4地址都是全局唯一的,因此必须通过对地址族进行扩展将非唯一的IPv4地址转换为全局唯一的地址。转换方法是将VPN的唯一标识RDRoute Distinguisher)附加在IPv4路由前缀之上:RD用来表示不同VPN;相同的机构在不同地区的接入站点应设置为相同;不同机构必须不同。此外对同一机构不同站点之间的路由传递使用RTRoute Target)进行控制。RT分为importExportExport时携带在BGP路由的扩展团体属性中进行传递,PE收到后只保留与本地Import RT匹配的路由。

    2.1.2                MPLS L2VPN

    MPLS L2VPN就是在MPLS网络上透明传递用户的二层数据。从用户的角度来看,这个MPLS网络就是一个二层的交换网络,通过这个网络,可以在不同站点之间建立二层的连接。

    MPLS L2VPN包括VLLVPLS两种:

    l         VPWSVirtual Provider Wire Service):虚拟私有线路服务,在公用网络中提供的一种点到点的L2VPN业务。客户的二层设备跨过MPLS/IP核心网络相连,就像通过一根二层线路直连一样。它不能直接在服务提供者处进行多点间的交换。

    l         VPLSVirtual Private LAN Service):虚拟专用局域网服务,在公用网络中提供的一种点到多点的L2VPN业务。VPLS使地域上隔离的用户站点能通过MAN/WAN相连,并且使各个站点间的连接效果像在一个LAN中一样。

    l         VSIVirtual Switch Instance):虚拟交换实例,通过VSI,可以将VPLS的实际接入链路映射到各条虚链接上。

    l         PWPseudo Wire):虚链路,在两个VSI之间的一条双向的虚拟连接,它由一对单向的MPLS VCVirtual Circuit,虚电路)构成。

    l         Tunnel:隧道,用于承载PW,一条隧道上可以承载多条PW,一般情况下为MPLS隧道。隧道是一条本地PE与对端PE之间的直连通道,完成PE之间的数据透明传输。

    l         Encapsulation:封装,PW上传输的报文使用标准的PW封装格式和技术。PW上的VPLS报文封装有两种模式:RawTagged模式。

    l         PW SignalingPW信令协议,VPLS实现的基础,用于创建和维护PWPW信令协议还可用于自动发现VSI的对端PE设备。目前,PW信令协议主要有LDPBGP

    2.2       MBGP扩展:for VPNv4

    BGP VPNv4扩展中,MP_REACH_NLRI扩展如下:PECE学到CE本地的VPN路由信息后,在路由信息中增加RDRT,再通过BGP VPNv4邻居关系与其它PE交换VPN路由信息。不同VPN的路由在公网中通过RD进行区分,不同CE之间的路由使用RT进行引入控制。PE路由器只维护与它直接相连的VPN的路由信息(收到BGP VPNv4发来的路由后,只保留与本地import RT匹配的路由信息),不维护服务提供商网络中的所有VPN路由。

    它的格式如下所示:

    Route Distinguisher

    (8 octets)

    Type Field(2 octets)

    Value Field(6 octets)

    Administrator Subfield

    Assigned Number Subfield

    IPv4 Address Prefix (4 octets IPv4 Address)

     

                                                                                                                                                                 图8 RD格式示意图

    RT的结构和RD相似,但它们是有本质区别的,RTBGP路由的扩展属性,而RD附加在IPv4 VPNv4地址前作为地址的一部分存在。

    BGP路由中引入RDRT只解决了路由传递的问题:在PE本地的路由冲突和路由网络传播过程中的冲突。但RDRT不参与报文转发,在数据转发时如果接收端PE的两个本地VRF中同时存在10.0.0.0/24的路由,当它接收到一个目的地址为10.0.0.1的报文时,它如何知道该把这个报文发给与哪个VRF相连的CE?这就需要在PE上由BGP给私网路由分配标签来解决。改造后的MP-IBGP进行NLRI信息交换时会附加RD、标签等各种信息。格式如下:

    Address Family Identifier (2 octets)

    Subsequent Address Family Identifier (1 octet)

    Length of Next Hop Network Address (1 octet)  

    Network Address of Next Hop (PE路由器自己建立Peer使用的地址)    

    Reserved (1 octet)   

    Network Layer Reachability Information (variable)

    label(3 octet,与MPLS标签一样,但没有TTL)

    RD(8 octet)+IP前缀

     

                                                                                                                                                   图9 MP-IBGP NLRI报文格式

    在这之后是RT信息,如下图所示:

    Extended community(RT1)

    Extended community(RT2)

    Extended community(RT3)

                                                                                                                                            图10 MP-IBGP NLRI报文RT列表

    2.3       MBGP扩展:for L2VPN

    MPLS/L2VPN有多种实现方式,其中Kompella方式使用BGP作为交换信令。与MPLS L3VPN类似,各个PE之间通过建立BGP会话自动发现L2 VPN的各个节点,并传递VPN信息,使用VPN-target来区分不同的VPN。在不同VPN内,CE ID可以相同。BGP为不同的CE间建立的VCVirtual Circuit)分配内层标签,扩展BGP报文格式如下:

    Length(2 octets)

    Route Distinguisher(8 octets)

    CE ID(2 octets)

    Label-block Offset(2 octets)

    Label-Base(3 octets)

    Variable TLVs(0 to N octets)

                                                                                                                                                  图11 L2VPN扩展NLRI格式

    新定义了一个属性用于描述二层报文封装的必要信息:

    Extended community type(2 octets)

    Encaps Type(1 octets)

    Cntrl Flags(1 octets)

    Layer-2 MTU(2 octets)

    Reserved(2 octets)

                                                                                                   图12 L2VPN 扩展属性:layer2-info extended community

     

    2.4       MBGP扩展:For VPLS

    2.4.1                 简介

    VPLS也称TLSTransparent LAN Service,透明局域网服务)或Virtual Private Switched Network Service(虚拟专有交换网络服务),是在公用网络中提供的一种点到多点的L2VPN业务。VPLS使地域上隔离的用户站点能通过MANMetropolitan Area Network,城域网)或WANWide Area Network,广域网)相连,并且使各个站点间的连接效果像在一个LAN中一样。

    VPLS提供二层VPN服务。在VPLS中,用户是由多点网络连接起来,不同于传统VPN提供的P2PPoint to Point,点到点)的连接服务。

    2.4.2                 典型组网

                                                                                                                                                              图13 VPLS典型组网

    2.4.3                 BGP扩展的作用

    PW隧道的建立常用有两种信令 LDPrfc4762)和MP-BGPrfc4761)。

    采用BGP作信令时,利用BGP的多协议扩展VPLS 成员信息。其中MP-reachMP-unreach属性传递vpls的标签信息,RDVPN-TARGET和接口参数信息在扩展团体属性中传递。

    下图是一个采用BGP方式作信令的PW建立与拆除的典型过程 PE1配置了一个VSI(Virtual Switch Instance) 建立了到PE2BGP session,并且在该session上使能VPLS地址族, BGP session建立后会分配标签并给PE2发送带MP-REACH属性的update消息。PE2收到update消息后检查:本地是否也配置了同样的VSIVPN-TARGET匹配(与L3VPN的匹配含义相同)、接口参数一致;则PE2端的PW就建立起来了。PE1收到PE2update消息后作同样的检查和处理。

    PW1不想再转发PE2的报文,则发送带MP-UNREACH属性的update消息给PE2,同时拆除PW、释放标签;PE2收到update消息后拆除PW

                                                                                                                               图14 BGP作信令时PW的建立/拆除过程

     

    3     组播相关扩展

    3.1       MBGP扩展:for Multicast

    组播BGPMulticast BGPBGP for IPv4 Multicast)扩展用于携带组播源信息。当使能组播扩展的BGP Router收到邻居发来的组播地址族NLRI后,经过优选加入RPFReverse Path Forwarding)路由表,不加入单播路由表。其目的是实现单播和组播的拓扑分离。

        IPv4 Multicast扩展使用地址族:AFI1SAFI2

    3.1.1                 应用场景

    网络中存在两个自治系统:PIM-SM 1属于AS 100PIM-SM 2属于AS 200。各AS内部采用IGP进行互联。组播源属于AS 100内的PIM-SM 1,接收者则属于AS 200内的PIM-SM 2;要求在屏蔽AS 100网络拓扑的情况下接收者可以视频点播。如下图所示:

                                                                                                                                                 图15 Multicast BGP应用举例

    典型配置如下:

    l         在域边界将Router ARouter B各自的Loopback0接口分别配置为各自PIM-SM域的C-BSRC-RP

    l         Router ARouter B之间建立MSDP对等体关系。

    l         AS之间采用MBGP交换组播路由信息:在Router A Multicast视图引入到源的路由发布给Router B,并保证Router B到该路由下一跳可达。

     

    3.2       MBGP扩展:for IPv6 Multicast

    IPv6组播BGPIPv6 Multicast BGPBGP for IPv6 Multicast)扩展用于携带IPv6组播源信息。原理和应用场景与MBGP for IPv4 Multicast扩展类似,只是地址族不同:当使能组播扩展的BGP Router收到邻居发来的组播地址族NLRI后,经过优选加入IPv6 RPFReverse Path Forwarding)路由表,不加入单播路由表。其目的是实现单播和组播的拓扑分离。

    IPv4 Multicast扩展使用地址族:AFI2SAFI2

    3.3      MBGP扩展:for 组播VPN

    3.3.1                组播VPN

    MPLS/BGP VPN结构中只支持单播应用,VPN客户的组播服务需求无法满足。但公网可以运行组播协议,私网内部也可以运行组播,只要解决两个问题就可以实现私网用户跨公网的组播应用:

    l         私网组播报文在公网的转发

    l         私网源组信息到公网源组信息的映射

    1. 私网组播报文跨公网的转发

    解决办法是在PE上采用隧道对私网组播报文进行封装,可以用GREIPinIPMPLS隧道。目前业界普遍采用MPLS隧道进行封装。

    2. 私网源组映射到公网源组

    解决办法是在PE上为每一个私网分配一个组地址,用于公网转发。这样每个VPN内的组播报文到达PE后经过隧道封装,最外层的IP报文还是组播报文的形式:报文组地址为该VPN分配的Share-Group地址。显然,Share-Group地址在全网相同VPN分配必须一致,不同VPN分配必须不同。PE收到组地址在Share-Group范围的组播报文时,根据本地的私网/公网映射关系将报文外层IP头和隧道头剥去,根据Share-Group对应的VPN将报文送到指定私网中进行处理,从而实现跨公网的组播业务,即组播VPN MD协议。

                                                                                                                                                      图16 组播VPN的邻居关系

    应用模型如上图所示:公网运行普通的组播协议,私网运行普通的组播协议,在PE上完成地址映射和报文封装/解封装。

    MD协议在骨干网上为每个VPN维护一棵组播转发树,称为Share-MDT,这棵树就是组播隧道MT,在MD配置完成后就自动建立了,不管VPN中有没有组播业务,也不管骨干网上有没有组播业务。来自于VPN的任何一个站点的组播报文(包括协议报文和数据报文)都会被封装成为公网组播数据报文,沿着这个棵Share-MDT树转发到所有属于该MDPE。如果该PE连接有该组播组的接收者,则往CE转发,否则丢弃组播报文。

    3.3.2                BGP MDT扩展

    实际应用中还可能碰到这样的问题:要在公网部署PIM SSM必须知道源地址,而Share-GroupPE上配置,PE并不知道其他PEShare-Group对应的组播源地址(即MT的接口地址,由MD选取PE上建立公网BGP邻居的接口地址)。BGP MDT扩展解决了这个问题:将PEShare-Group的源组信息通过PE之间的BGP会话进行传递。为此,BGP定义了一类新的地址族:IPv4 MDT地址族。AFI1SAFI66

    MDT SAFI NLRI具体格式如下:

    Route Type (1 octet)

     Length (1 octet) 

    Route Type specific (variable)

                                                                                                                                                            图17 MDT SAFI NLRI

         其中,Route Type定义如下[3]

    1 - Intra-AS I-PMSI auto-discovery route (or just auto-discovery route);

         2 - Inter-AS I-PMSI auto-discovery route (or just inter-AS auto-discovery route);

         3 - S-PMSI auto-discovery route;

         4 - Intra-AS segment leaf auto-discovery route (or just leaf auto-discovery route).

         5 - Source Active auto-discovery route.

         6 - Shared Tree Join route;

         7 - Source Tree Join route;

    RD:IPv4-address (12 octets)

    MDT Group-address (4 octets)

    RDMD配置所在VRFRD,长度为8字节。

    IPv4-addressMTIIP地址,为IPv4地址,长度为4字节。

    MDT Group-addressMVRF绑定的组播组地址,长度为4字节。

     

                                                                                                               图18 Route Type Specific(携带Share-Group信息)

     

    4    地址族扩展

    随着IPv6的发展,几乎所有路由协议都开发出了适配IPv6的版本。BGP for IPv6扩展有两个:

    l         IPv6地址族扩展,解决纯IPv6网络中传递IPv6路由的问题;

    l         6PE扩展:解决IPv6孤岛跨越公网的问题。

    IPv6扩展在网络之路第六期IPv6专辑有详尽的介绍,请参见IPv6路由技术章节和IPv6 over MPLS章节。