Virtual Routing Forwarding
 
    VPN路由转发表,也称VPN-instance(VPN实例),是PE为直接相连的site建立并维护的一个专门实体,每个site在PE上都有自己的VPN-instance,每个VPN-instance包含到一个或多个与该PE直接相连的CE的路由和转发表,另外如果要实现同一VPN各个Site间的互通,该VPN-instance还就应该包含连接在其他PE上的发出该VPN的Site的路由信息。
MPLS VPN网络主要由CE、PE和P等3部分组成:CE(Customer Edge Router,用户网络边缘路由器)设备直接与服务提供商网络(图1中的MPLS骨干网络)相连,它“感知”不到VPN的存在;PE(Provider Edge Router,骨干网边缘路由器)设备与用户的CE直接相连,负责VPN业务接入,处理VPN-IPv4路由,是MPLS三层VPN的主要实现者:P(Provider Router,骨干网核心路由器)负责快速转发数据,不与CE直接相连。在整个MPLS VPN中,P、PE设备需要支持MPLS的基本功能,CE设备不必支持MPLS。
PE是MPLS VPN网络的关键设备,根据PE路由器是否参与客户的路由,MPLS VPN分成Layer3 MPLS VPN和Layer2 MPLS VPN。其中Layer3 MPLS VPN遵循RFC2547bis标准,使用MBGP在PE路由器之间分发路由信息,使用MPLS技术在VPN站点之间传送数据,因而又称为 BGP/MPLS VPN。本文主要阐述的是Layer3 MPLS VPN。
在MPLS VPN网络中,对VPN的所有处理都发生在PE路由器上,为此,PE路由器上起用了VPNv4地址族,引入了RD(Route Distinguisher)和RT(Route Target)等属性。RD具有全局唯一性,通过将8byte的RD作为IPv4地址前缀的扩展,使不唯一的IPv4地址转化为唯一的VPNv4地址。VPNv4地址对客户端设备来说是不可见的,它只用于骨干网络上路由信息的分发。PE对等体之间需要发布基于VPNv4地址族的路由,这通常是通过 MBGP实现的。正常的BGP4能只传递IPv4的路由,MP-BGP在BGP的基础上定义了新的属性。MP-iBGP在邻居间传递VPN用户路由时会将 IPv4地址打上RD前缀,这样VPN用户传来的IPv4路由就转变为VPNv4路由,从而保证VPN用户的路由到了对端的PE上以后,即使存在地址空间重叠,对端PE也能够区分开分属不同VPN的用户路由。RT使用了BGP中扩展团体属性,用于路由信息的分发,具有全局唯一性,同一个RT只能被一个 VPN使用,它分成Import RT和Export RT,分别用于路由信息的导入和导出策略。在PE路由器上针对每个site都创建了一个虚拟路由转发表VRF(VPN Routing & Forwarding),VRF为每个site维护逻辑上分离的路由表,每个VRF都有Import RT和Export RT属性。当PE从VRF表中导出VPN路由时,要用Export RT对VPN路由进行标记;当PE收到VPNv4路由信息时,只有所带RT标记与VRF表中任意一个Import RT相符的路由才会被导入到VRF表中,而不是全网所有VPN的路由,从而形成不同的VPN,实现VPN的互访与隔离。通过对Import RT和Export RT的合理配置,运营商可以构建不同拓扑类型的VPN,如重叠式VPN和Hub-and-spoke VPN。
 
    整个MPLS VPN体系结构可以分成控制面和数据面,控制面定义了LSP的建立和VPN路由信息的分发过程,数据面则定义了VPN数据的转发过程。
在控制层面,P路由器并不参与VPN路由信息的交互,客户路由器是通过CE和PE路由器之间、PE路由器之间的路由交互知道属于某个VPN的网络拓扑信息。CE-PE路由器之间通过采用静态/默认路由或采用IGP(RIPv2、OSPF)等动态路由协议。PE-PE之间通过采用MP-iBGP进行路由信息的交互,PE路由器通过维持iBGP网状连接或使用路由反射器来确保路由信息分发给所有的PE路由器。除了路由协议外,在控制层面工作的还有 LDP,它在整个MPLS网络中进行标签的分发,形成数据转发的逻辑通道LSP。
在数据转发层面,MPLS VPN网络中传输的VPN业务数据采用外标签(又称隧道标签)和内标签(又称VPN标签)两层标签栈结构。当一个VPN业务分组由CE路由器发给入口PE 路由器后,PE路由器查找该子接

介绍

VPN Routing and Forwarding (VRF) is a technology used in computer networks that allows multiple instances of a routing table to co-exist within the same router at the same time. Because the routing instances are independent,the same or overlapping IP addresses can be used without conflicting with each other.
VRF---VPN路由转发实例(VPN Routing & Forwarding Instance)
每一个VRF可以看作虚拟的路由器,好像是一台专用的PE设备。该虚拟路由器包括如下元素:
一张独立的路由表,当然也包括了独立的地址空间;
一组归属于这个VRF的接口的集合;
一组只用于本VRF的路由协议
对于每个PE,可以维护一个或多个VRF,同时维护一个公网的路由表(也叫全局路由表),多个VRF实例相互分离独立。

部署和配置

公网路由表:包含全部PE和P 路由器之间的路由,由骨干网IGP 产生。
私网路由表:包含本VPN 用户可达信息的路由和转发表。
⒊1 配置RD
理论上可以为每个VRF配置一个RD。
通常建议为每个VPN都配置相同的RD,不同的VPN配置不同的RD。
但是实际上只要保证存在相同地址的两个VRF的RD不同即可,不同的VPN可以配置相同的RD,相同的VPN也可以配置不同的RD。
VPN RD的关系比较松散,只需要保证存在地址相同的两个VRF的RD不同即可。只要能区分不同vrf的系统路由就可以了。
PE1(config-vrf)#rd
ASN:nn or IP-address:nn VPN Route Distinguisher
一般采用:ASN:nn
⒊2 配置RT
PE1(config-vrf)#route-target import
ASN:nn or IP-address:nn Target VPN Extended Community
PE1(config-vrf)#route-target export
ASN:nn or IP-address:nn Target VPN Extended Community
⒊3 为VRF 指派接口
一旦你创建VRF的工作结束,你就可以开始分配特定的接口并且开始把客户分开。如果你在确定VRF中的接口之前分配IP地址,这个IP地址将被删除,你必须重新为接口分配IP地址。
PE1(config)#interface s1/0
PE1(config-if)#ip vrf forwarding vpn-a
PE1(config-if)#
PE1(config-if)#do show ip vrf
Name Default RD Interfaces
vpn-a 65001:1 Se1/0

可解决问题

⒉1 实现类似专用PE的功能,用路由隔离不同的vpn用户。
⒉2 解决地址重叠的问题
即同时支持使用公有地址的客户端设备和私有地址的客户端设备,或者多个VPN使用同一个地址空间
也可以支持创建重叠VPN,所谓重叠VPN是指同一个站点同时属于多个VPN的情况。
引入RT的概念
在PE 中,存在全局路由表、vrf 等,从全局路由表选择路由到vrf 称为export导出;从vrf 中选择路由到全局路由表称为import。RT 用于路由信息的分发,它分成Import RT和Export RT,分别用于路由信息的导入、导出策略。当从全局路由表中导出路由到vrf 时,要用Export RT对VPN路由进行标记;在往全局路由导入VPNv4 路由时,只有所带RT 标记与VRF 表中任意一个Import RT相符的路由才会被导入到全局路由表中。RT使得PE路由器只包含和其直接相连的VPN的路由,而不是全网所有ipvpnv4 的路由,从而节省了PE路由器的资 源,提高了网络拓展性。在一个VRF中,在发布路由时使用RT 的export 规则。直接发送给其他的PE设备。在接收端的PE上,接收所有的路由,并根据每个VRF 配置的RT 的import 规则进行检查,如果与路由中的RT属性match,则将该路由加入到相应的VRF中。
Export Target: 我这个VRF 发出的路由打上什么标记;
Import Target:我这个VRF 接受什么标记的路由。
引入RD的概念
ISP 网络需要把来自CE 用户的路由,通过公用网络传递到用户的其他CE 路由器。但是来自不同用户的路由可能相同(重叠)。假设A 用户有个路由条目是10.180.0.0/16,B 用户有个路由也是10.180.0.0/16。这样在ISP 内部将不能区分10.180.0.0/16 到底是那个用户的。为了解决这个问题映入RD (64bit)概念,将ipv4 地址扩展为ipvpn4 地址(RD:ipv4), 在ISP 内部传播路由时为每个来自CE 的路由加一个区别标识,这样对端ISP,PE收到不同vrf的相同路由,就能准确区分。假设A 用户的RD 是65001:1,B 用户的RD为65002:1, 这样A 的10.180.0.0/16 就扩充为65001:1:10.180.0.0/16,B 扩充为65002:1:10.180.0.0/16 ,这种扩充后的路由成为ipvpn4 route。只要RD 全局唯一, 将不唯一的IPv4地址转化为唯一的IPVPNv4 地址,但是IPVPNv4 地址对客户端设备来说是不可见的。

VRF实例说明的更多相关文章

  1. 边界网关协议BGP

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

  2. H3C数据中心虚拟化解决方案技术白皮书

    缩略语清单: 缩略语 英文全名 中文解释 IDC Internet Data Center 互联网数据中心 VRF Virtual Router Forwarding 虚拟路由器转发 SMP Symm ...

  3. OSPF进程号的意义及多进程OSPF

    OSPF进程号的意义及多进程OSPF—吴锦霖分享    1. OSPF进程号的概念 在配置OSPF时,我们采用的是router ospf命令,在该命令后面需要加上这个OSPF进程的进程号(Proces ...

  4. Erlang模块inet翻译

    模块 inet 模块概述 访问TCP / IP协议. 描述 此模块提供对TCP/IP协议的访问. 另请参阅<ERTS用户指南:Inet配置>,以获取有关如何配置用于IP通信的Erlang运 ...

  5. 最近学习工作流 推荐一个activiti 的教程文档

    全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...

  6. Maven-002-eclipse 插件安装及实例

    因为平常编码的时候,习惯了使用 eclipse 进行编码,因而需要将 eclipse 安装 maven 的插件,安装步骤如下所示: 一.安装 选择菜单: help -> Install New  ...

  7. VXLAN学习之路-结合VRF在Linux中实践VXLAN网络

    一.概述 近期在在搞网络安全HCIE.CISP的认证的事,顺便将VXLAN技术再次系统的学习一下,学习过程中看到云原生实验室里的一篇文章,就是关于VXLAN在Linux系统中的实践,感觉文章写得很好, ...

  8. js-静态、原型、实例属性

    本篇来说一下js中的属性: 1.静态属性 2.原型属性 3.实例属性 静态属性: function klass(){} var obj=new klass(); klass.count=0; klas ...

  9. ZIP压缩算法详细分析及解压实例解释

    最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...

随机推荐

  1. C# OPC UA服务器 OPC UA网关 三菱 西门子 欧姆龙 Modbus转OPC UA 服务器 可配置的OPC UA服务器网关 HslSharp软件文档

    前言 本文将使用一个基于开源项目HslCommunication创建的OPC UA网关,方便通过配置创建一个OPC UA的网关中心.具体的操作及支持的设备信息项目参照下面: 开源项目HslCommun ...

  2. iOS9的新特性以及适配方案-----转载

    2015年9月8日,苹果宣布iOS 9操作系统的正式版在太平洋时间9月16日正式推出,北京时间9月17日凌晨1点推送. 新的iOS 9系统比iOS8更稳定,功能更全面,而且还更加开放.iOS 9加入了 ...

  3. Objective C----手动管理内存和自动管理内存

    对象的引用计数(Reference Counting) 正常情况下,当一段代码需要访问某个对象时,该对象的引用的计数加1:当这段代码不再访问该对象时,该对象的引用计数减1,表示这段代码不再访问该对象: ...

  4. HP G7服务器添加新硬盘

    1. 停掉 服务器(必须停了服务器),插入新硬盘.开机,出现F9和F11的时候,按下F5(这个很坑爹,没有显示F5进入阵列配置),进入阵列控制界面之后按出现红色的提示后按下F8进入阵列控制管理界面.进 ...

  5. C++头文件预编译与命名空间使用方法

    宏指令的预编译用法,用于多文件的头文件预编译判断 头文件代码: #include <iostream> #ifndef XB_H//预编译判断XB_H代码段是否被执行 #define XB ...

  6. appium-java,切换源生app和webview

    方法 public void swith_app(AndroidDriver AndroidDriver){ //切换到源生app System.out.println(AndroidDriver.g ...

  7. 每天一个linux命令(文件操作):【转载】which命令

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:        which  查看可执行文件的位置.       whereis 查看文件的位置.         ...

  8. Python学习-类

    类是对象的模板或蓝图,类是对象的抽象化,对象是类的实例化 在python中,一个对象的特征也称为属性(attribute),它所具有的的行为也称为方法(method) 对象 = 属性(特征)+方法(行 ...

  9. node 升级

    npm install -g n   npm update –g    

  10. hibernate 多对多一个对象出现多条记录问题

    hibernate 多对多时,当须要依据它关联的对象查找的时候,会出现一个对象有多条记录的问题 用 left join fetch 抓取查询的时候还是会出现这问题,是由于主表在关联表中有多条记录 用 ...