BGP/MPLS IP VPN基本概念

Site

在介绍VPN时经常会提到“Site”,Site(站点)的含义可以从下述几个方面理解:

· Site是指相互之间具备IP连通性的一组IP系统,并且,这组IP系统的IP连通性不需通过运营商网络实现。

如图2-2所示,左半边的网络中,A市X公司总部网络是一个Site,B市X公司分支机构网络是另一个Site。这两个网络各自内部的任何IP设备之间不需要通过运营商网络就可以互通。

图2-2 Site示意图

· Site的划分是根据设备的拓扑关系,而不是地理位置,尽管在大多数情况下一个Site中的设备地理位置相邻。地理位置隔离的两组IP系统,如果它们使用专线互联,不需要通过运营商网络就可以互通,这两组IP系统也组成一个Site。

图2-2所示,右半边网络,B市的分支机构网络不通过运营商网络,而是通过专线直接与A市的总部相连,则A市的总部网络与B市的分支机构网络构成了一个Site。

· 一个Site中的设备可以属于多个VPN,换言之,一个Site可以属于多个VPN。

如图2-3所示,X公司位于A市的决策部网络(Site A)允许与位于B市的研发部网络(Site B)和位于C市的财务部网络(Site C)互通。但是不允许Site B与Site C互通。这种情况下,可以构建两个VPN(VPN1和VPN2),Site A和Site B属于VPN1,Site A和Site C属于VPN2。这样,Site A就属于多个VPN。

图2-3 一个Site属于多个VPN

· Site通过CE连接到运营商网络,一个Site可以包含多个CE,但一个CE只属于一个Site。

根据Site的情况,建议CE设备选择方案如下:

如果Site只是一台主机,则这台主机就作为CE设备;

如果Site是单个子网,则使用交换机作为CE设备;

如果Site是多个子网,则使用路由器作为CE设备。

对于多个连接到同一运营商网络的Site,通过制定策略,可以将它们划分为不同的集合(set),只有属于相同集合的Site之间才能通过运营商网络互访,这种集合就是VPN。

地址空间重叠

VPN是一种私有网络,不同的VPN独立管理自己的地址范围,也称为地址空间(address space)。不同VPN的地址空间可能会在一定范围内重合,例如,VPN1和VPN2都使用10.110.10.0/24网段地址,这就发生了地址空间的重叠(address spaces overlapping)。

以下两种情况允许VPN使用重叠的地址空间:

· 两个VPN没有共同的Site

· 两个VPN有共同的Site,但此Site中的设备不与两个VPN中使用重叠地址空间的设备互访

VPN实例

在BGP/MPLS IP VPN中,不同VPN之间的路由隔离通过VPN实例(VPN-instance)实现。

PE为每个直接相连的Site建立并维护专门的VPN实例,VPN实例中包含对应Site的VPN成员关系和路由规则。具体来说,VPN实例中的信息包括:IP路由表、标签转发表、与VPN实例绑定的接口以及VPN实例的管理信息。VPN实例的管理信息包括RD(Route Distinguisher,路由标识符)、路由过滤策略、成员接口列表等。

VPN、Site、VPN实例之间的关系如下:

· VPN是多个Site的组合。一个Site可以属于多个VPN。

· 每一个Site在PE上都关联一个VPN实例。VPN实例综合了它所关联的Site的VPN成员关系和路由规则。多个Site根据VPN实例的规则组合成一个VPN。

· VPN实例与VPN不是一一对应的关系,VPN实例与Site之间存在一一对应的关系。

VPN实例也称为VPN路由转发表VRF(VPN Routing and Forwarding table)。PE上存在多个路由转发表,包括一个公网路由转发表,以及一个或多个VPN路由转发表。如图2-4所示。

图2-4 VPN实例示意图

公网路由转发表与VPN实例存在以下不同:

· 公网路由表包括所有PE和P设备的IPv4路由,由骨干网的路由协议或静态路由产生。

· VPN路由表包括属于该VPN实例的所有Site的路由,通过CE与PE之间或者两个PE之间的VPN路由信息交互获得。

· 公网转发表是根据路由管理策略从公网路由表提取出来的转发信息;而VPN转发表是根据路由管理策略从对应的VPN路由表提取出来的转发信息。

可以看出,PE上的各VPN实例之间相互独立,并与公网路由转发表相互独立。

可以将每个VPN实例看作一台虚拟的设备,维护独立的地址空间并有连接到私网的接口。

RD和VPN-IPv4地址

传统BGP无法正确处理地址空间重叠的VPN的路由。假设VPN1和VPN2都使用了10.110.10.0/24网段的地址,并各自发布了一条去往此网段的路由。虽然本端PE通过不同的VPN实例可以区分地址空间重叠的VPN的路由,但是这些路由发往对端PE后,由于不同VPN的路由之间不进行负载分担,因此对端PE将根据BGP选路规则只选择其中一条VPN路由,从而导致去往另一个VPN的路由丢失。

PE之间使用MP-BGP(Multiprotocol Extensions for BGP-4,BGP-4的多协议扩展)来发布VPN路由,并使用VPN-IPv4地址来解决上述问题。

VPN-IPv4地址共有12个字节,包括8字节的路由标识符RD(Route Distinguisher)和4字节的IPv4地址前缀,如图2-5所示。

图2-5 VPN-IPv4地址结构

RD用于区分使用相同地址空间的IPv4前缀,增加了RD的IPv4地址称为VPN-IPv4地址(即VPNv4地址)。PE从CE接收到IPv4路由后,转换为全局唯一的VPN-IPv4路由,并在公网上发布。

RD的结构使得每个服务供应商可以独立地分配RD,但为了在CE双归属的情况下保证路由正常,必须保证PE上的RD全局唯一。如图2-6所示,CE以双归属方式接入到PE1和PE2。PE1同时作为路由反射器RR(Route Reflector)。

图2-6 CE双归属组网示意图

该组网中,PE1作为骨干网边界设备发布一条IPv4前缀为10.1.1.1/8的VPN-IPv4路由给PE3。同时又作为RR反射PE2发布的IPv4前缀为10.1.1.1/8的VPN-IPv4路由给PE3。

· 如果该VPN在PE1和PE2上的RD一样,由于目的地址相同,PE3只保留一条到10.1.1.1/8的VPN-IPv4路由,其路径为:PE3—>PE1->CE。

· 当PE1与CE之间的直连链路出现故障时,PE3删除到10.1.1.1/8的VPN-IPv4路由,无法正确转发到该目的地址的VPN数据。而实际上PE3应该有一条到10.1.1.1/8的路由,其路径为:PE3—>PE1—>PE2->CE。

· 如果该VPN在PE1和PE2上的RD不同,则PE3从PE1接收的到10.1.1.1/8两条VPN-IPv4路由的目的地址不同,因此PE3上保留两条到10.1.1.1/8的VPN-IPv4路由。当PE1与CE之间的任何一条链路出现故障时,PE3将删除其中对应的一条,仍保留另一条,使得到10.1.1.1/8的数据能正确转发。

VPN Target

BGP/MPLS IP VPN使用BGP扩展团体属性-VPN Target(也称为Route Target)来控制VPN路由信息的发布。

每个VPN实例关联一个或多个VPN Target属性。有两类VPN Target属性:

· Export Target:本地PE从直接相连Site学到IPv4路由后,转换为VPN-IPv4路由,并为这些路由设置Export Target属性。Export Target属性作为BGP的扩展团体属性随路由发布。

· Import Target:PE收到其它PE发布的VPN-IPv4路由时,检查其Export Target属性。当此属性与PE上某个VPN实例的Import Target匹配时,PE就把路由加入到该VPN实例中。

在BGP/MPLS IP VPN网络中,通过VPN Target属性来控制VPN路由信息在各Site之间的发布和接收。VPN Export Target和Import Target的设置相互独立,并且都可以设置多个值,能够实现灵活的VPN访问控制,从而实现多种VPN组网方案。

例如:某VPN实例的Import Target包含100:1,200:1和300:1,当收到的路由信息的Export Target为100:1、200:1、300:1中的任意值时,都可以被注入到该VPN实例中

BGP MPLS IP V匹N基本概念的更多相关文章

  1. 虚拟机vmware的连接方式以及IP端口,协议等概念

    1.NAT虚拟机相当于小弟,宿主机相当于大哥,宿主机虚拟出一个网段供虚拟机上网用 2.Bridge桥接,虚拟机和宿主机相当于局域网中的两台机器 3.Host-Only虚拟机只和宿主机通信,无法上网 3 ...

  2. MPLS

    Multiprotocol Label Switching From Wikipedia, the free encyclopedia "MPLS" redirects here. ...

  3. [转]OpenContrail 体系架构文档

    OpenContrail 体系架构文档 英文原文:http://opencontrail.org/opencontrail-architecture-documentation/ 翻译者:@KkBLu ...

  4. OpenContrail 体系

    OpenContrail 体系架构文档 1  概述1.1  使用案例1.2  OpenContrail控制器和vRouter1.3  虚拟网络1.4     Overlay Networking1.5 ...

  5. BGP多线单IP技术实现形式以及其他双线对比

    自从电信与网通分离之后,北方网通与南方电信网络的互联瓶颈问题一直没有得到很好的解决,这个问题也严重困扰广大的ICP服务商.ICP也只能根据自己网站主流用户群是在南方还是在北方,服务重点是在南方还是北方 ...

  6. 网络地址转换NAT的两种模式(概念浅析)& IP溯源

    由于全球IPv4地址越来越少.越来越贵,因此大到一个组织,小到一个家庭一个人都很难获得公网IP地址,所以只能使用内网地址,从而和别人共享一个公网IP地址.在这种情况下,NAT技术诞生. 翻译 NAT( ...

  7. CCNP路由实验之十二 MPLS

     个.第3个数据包„„同样的操作.包含查询路由表.重写MAC地址,CRC校验等. 系列路由器.或者12000系列路由器. Netflow switching 通过一种标准的交换机制,处理了流的第一 ...

  8. MPLS与LDP从入门到了解

    多协议标签交换(MPLS)是一种用于快速转发数据包的技术,它的出现就是为了提高转发效率.因为IP转发大多靠软件进行,在转发的每一跳都要进行至少一次最长匹配查找,操作复杂导致转发速度比较慢.有些厂商借鉴 ...

  9. 边界网关协议BGP

    Border Gateway Protocol (BGP) is a standardized exterior gateway protocol designed to exchange routi ...

随机推荐

  1. HTTPS 原理及配置

    目录 一.HTTPS 身份验证介绍 二.windows 环境下配置 tomcat HTTPS 三.linux 环境下配置 tomcat HTTPS 一.HTTPS 身份验证介绍 1. HTTPS 原理 ...

  2. pandas 之 数据清洗-缺失值

    Abstract During the course fo doing data analysis and modeling, a significant amount of time is spen ...

  3. Bootstrap。

    bootstrap: 1.概念:前端开发框架. 2.快速入门:下载bootstrap.导入文件. 3.响应式布局: * 同一套页面可以兼容不同分辨率的设备. * 实现:依赖于栅格系统:将一行平均分成1 ...

  4. SQL血的教训

    1.    每次查询的数据要有限制     2013年1月  产品独立数据库,由于多条SQL每次查询数据超过几千条,有些超过10万条数据未分页,造成应用服务器CPU有时持续100%. 2.    禁止 ...

  5. C语言scanf函数转换说明表及其修饰符表

    1. 对于上一篇文章,总结printf()输出,C库也包含了多个输入函数, scanf()是最常用的一个,也是经常与printf()经常一起搭配使用的函数之一. scanf()和printf()类似, ...

  6. 洛谷P3810 陌上花开(CDQ分治)

    洛谷P3810 陌上花开 传送门 题解: CDQ分治模板题. 一维排序,二维归并,三维树状数组. 核心思想是分治,即计算左边区间对右边区间的影响. 代码如下: #include <bits/st ...

  7. C# 中静态调用C++dll 和C# 中动态调用C++dll

    在最近的项目中,牵涉到项目源代码保密问题,由于代码是C#写的,容易被反编译,因此决定抽取核心算法部分使用C++编写,C++到目前为止好像还不能被很好的反编译,当然如果你是反汇编高手的话,也许还是有可能 ...

  8. PVE手册资料

    PVE 软件源/etc/apt/souces.list apt-get update命令获取软件源中的软件包信息 企业版软件源 /etc/apt/sources.list.d/pve-enterpri ...

  9. 201671030111 李蓉 实验十四 团队项目评审&课程学习总结

    项目 内容 这个作业属于哪个课程 软件工程 这个作业的要求在哪里 实验十四 团队项目评审&课程学习总结 作业学习目标 掌握软件项目评审会流程,反思总结课程学习内容. 任务一:结合本学期课程学习 ...

  10. oracle中删除表:drop、delete、truncate

    相同点,使用drop delete truncate 都会删除表中的内容 drop table 表名 delete from 表名(后面不跟where语句,则删除表中所有的数据) truncate t ...