RFC2764 IP VPN的框架体系

发表于 6年以前  | 总阅读数:815 次
组织:中国互动出版网(http://www.china-pub.com/)
RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang@china-pub.com
译者:于德雷(于德雷 ydl_ldy@sina.com)
译文发布时间:2001-7-1
版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须保留本文档的翻译及版权信息。

IP VPN的框架体系
(A Framework for IP Based Virtual Private Networks)
文档状态:
为Internet社区提供信息,不描述任何形式的Internet标准。文档的发布不受限制。

版权声明:
    Copyright (C) The Internet Society(2000)。版权保留。
IESG 说明:本文不是IETF工作组的产品,IETF现在还没有进行特别的VPN框架体系标准化。


摘要:
    本文描述了基于IP骨干网的VPN框架体系,讨论了不同类型的VPN以及它们具体的要求,提
出了用当前的规范去实现这些VPN的机制。本文的目标是,为开发交互VPN解决方案的全范围规
范集提供相关协议开发的框架。

目录:
1.0 简介:	2
2.0 VPN应用和实现要求:	3
2.1 总的要求:	3
2.2 基于CPE和基于网络的VPN	4
2.3 VPN和外联网	4
3.0 隧道技术:	5
3.1 VPN的隧道协议要求	5
3.2 建议	9
4.0 VPN类型:虚拟租用线	9
5.0 VPN类型:虚拟路由网络	10
5.1 VPRN特性	10
5.1.3 转发	12
5.2 VPRN相关的网络	13
5.3 VPRN总要求	13
5.4 多宿桩路由器	19
5.5 多播支持	20
5.6 建议	21
6.0 VPN类型:虚拟专用拨号网	21
6.1 L2TP协议特性	21
6.2 强制隧道	23
6.3 自发隧道	24
6.4 网络主机支持	26
6.5 建议	27
7.0 VPN类型:虚拟专用LAN片(Segment)	27
7.1 VPLS要求	28
7.2 建议	30
8.0 建议总结	30
9.0 安全考虑	31
10.0 鸣谢	31
11.0 参考资料	31
13.0 完全版权声明	36
鸣谢	37


1.0 简介:
    本文描述了基于IP骨干网的VPN框架,讨论了不同类型的VPN以及它们具体的要求,提出了
用当前的规范去实现这些VPN的机制。本文的目标是,为开发交互VPN解决方案的全范围规范集
提供相关协议开发的框架。
    在IP骨干网设施上开发VPN有非常重要的现实意义,然而,由于VPN的定义和涉及范围缺乏
统一的要求,各种解决方案的描述有许多混淆,互操作性难以实现,VPN的开发也因此受到阻碍。
在众多的文档中,VPN经常只是简单的定义为"用IP设施仿真专用广域网"(这里所说的IP设施
包括公用Internet,以及专用IP骨干网),因而,VPN的类型就象广域网一样多,也因此产生了
好多混淆概念。
    在本文中,VPN模型化为一个连接对象,主机可以连接在VPN上,VPN之间可以互联,就像以
前的主机连接在物理网络上、物理网络之间可以互联(例如,通过桥或者路由器)一样。网络
特性的许多方面,如定址(Addressing)、转发机制(Forwarding Mechanism)、学习(Learning)
和广播可达性(Advertising Reachability)、业务质量(Quality of Service)、安全(Security)
和防火墙(Firewalling),在物理网络上和虚拟网络上都会有共同的解决方案,VPN中的许多
问题都会与原有的物理网络有着类似的实现,引入VPN不是要重新发明一个网络,不会与原来的
物理网络截然不同,相反,如果认真考虑一下在物理网络环境下问题的处理方法,再把相同的
原则应用在虚拟网络上将会很有帮助,物理网络和虚拟网络运行机制的相似性方便了VPN的引
入,减少了标准和协议的开发。
    本文档对各种VPN类型进行归类,列出各种类型具体的应用、具体的要求以及实现的具体机
制,目的在于作为一个框架体系,为开发全范围互操作VPN解决方案的相关讨论提供指导。
    本文首先介绍了一些可能的VPN特例以及它们的实现,同时也将介绍一下基于CPE的解决方
案和基于网络的解决方案的不同,然后呈现出VPN的各种类型和它们各自的要求,概要地描述它
们的实现方法,指出将来需要标准化的领域。
    需要注意的是,本文仅仅讨论在IP骨干网上实现VPN,不论是在专用IP骨干网上,还是在公
共Internte上。所描述的机制和模型适用于IPv4以及IPv6。本文不讨论用本地映射交换骨干网
手段构建VPN的方法--例如用基于ATM的LAN仿真(LANE)或者多协议传输(MPOA)构建的VPN。
IP骨干网通过一些协议用互联路由器建立在交换网络之上,VPN讨论的只是在IP网络之上的操
作,因此不直接利用基础网络的本地机制。本地VPN限制在基础骨干网的范围之内,而基于IP
的VPN可以伸展到IP可达的任何地方。本地VPN协议显然超出IETF的范围,可以由象ATM论坛这样
的组织去应付。(笔者按:该段中的本地是指native,不是local,不当之处,还请指教。)

2.0 VPN应用和实现要求:
2.1 总的要求:
    现在人们非常希望用IP VPN作为建立多站点通信专用网络的有效手段,而不愿意继续使用
以前建立物理专用网络的方法。
    以前的专用网络大致可以分为两种:专线WAN,可以永久的把多个通信站点连接在一起;拨
号网络,可以通过PSTN按需地连接一个或者多个通信点。
    WAN一般用租用线路或者专用电路实现--如,用FR和ATM连接多个通信点。处于不同通信
站点的CPE路由器或者交换机把这些专用设施连接在一起,进行网络互联。由于这种专用设施的
成本、复杂性以及CPE设施配置的复杂性问题,这种网络总起来说无法完全互联,只不过具有某
些形式的等级拓扑罢了,例如,远端办公室可以直接连接在最近的区域办公室,区域办公室再
进行全互联或者部分互联。
    专用拨号网络可以使远端用户通过PSTN或ISDN连接到企业网络上,这一般通过一个或者多
个中心站点的NAS来实现,用户拨入这样的NAS,NAS和AAA服务器验证用户身份和被授权接收的
业务集。
    现在,更多的企业希望自己的专用网络能够快速接入Internet,因此开发基于CPE的VPN的
很有意义,因为覆盖范围和通信距离不大影响Internet服务的费用,这样可以比专线和租线大
大降低成本。
    用Internet进行专用通信不是个新概念,以前就有许多技术能够支持这类应用,如控制路
由泄漏。只是在最近才有合适的IP机制来满足用户建立VPN。这些机制的要求包括:
2.1.1 不透明包传输:
    运载在VPN上的数据可能与IP骨干网上的毫无关系,一方面因为这些数据是多协议的,另一
方面,用户所使用的IP地址与IP骨干网数据传输所使用的IP地址可能就没有什么关系,特别是,
用户的IP网络可能使用非唯一IP专用定址方案。
2.1.2 数据安全性
    用户使用VPN需要一定形式的数据安全,不同VPN有不同的信任模型,一种模型是用户不相
信业务提供商提供的任何形式的安全,他们会用实现了防火墙,使用了安全隧道互联的CPE设备
去实现VPN,这种情况下业务提供商被仅仅用来传输IP包。
    另一种情况是用户相信业务提供商可以提供一个安全管理的VPN业务,就像用户相信公用FR
和ATM交换业务一样,用户相信数据包不会走错方向,不会不经过授权就进入网络,不会被窃听,
不会被修改,不会被非授权方进行流量分析。
    在第二个模型中,提供防火墙功能和保护包传输的安全是业务提供商的责任,提供商的骨
干网中在不同场合下可能需要不同的安全等级。如果VPN的数据交易只发生在一个业务提供商的
IP骨干网中,那么就不大需要太高的安全机制(如IPSec)来提供的骨干网节点的隧道安全,如
果VPN数据交易横跨了多个管理者的IP骨干网络,启用高安全机制就很有必要了。既然用户认为
IP传输网(特别是Internet)是不安全的,即使单个业务提供商也可以为用户数据交易建立高
水平安全机制,问题的理解取决于VPN的具体实现。
2.1.3 QoS保证
    除了保证通信的专有性,建立在物理层或者链路层上的专用网络技术也提供不同类型的QoS
保证,租用线和拨号线都能够提供带宽和时延的保证,ATM和FR的专用连接也能够提供类似的保
证,IP VPN在更广的范围采用之后,市场也需要这样的保证,以便能够保证端到端的应用透明
性。IP VPN的QoS保证主要依赖于基础IP骨干网相应的能力,随着它们的发展,VPN框架也必须
提供这样的手段,让VPN系统能够利用这种能力。
2.1.4 隧道机制
    前面的两条要求已经暗示了VPN的实现必须通过隧道机制,以便VPN的包格式和地址与IP骨
干网上的隧道包互不相干,隧道使用特定的格式,可以提供一定水平的数据安全,还可以通过
其他一些机制来加强(如IPSec)。
    另外,这样的隧道机制可以随着IP数据流量管理机制的发展而发展。现在已经定义了许多
IP隧道机制,其中一些非常适合VPN应用,在3.0节中将会有详细讨论。
2.2 基于CPE和基于网络的VPN
    现在大多数的VPN实现是基于CPE设备的,VPN的功能都集成在各种各样的CPE设备之中,从
防火墙到WAN边缘路由器以及特定的VPN终端设备,这样的设备可以由用户来购买和配置,也可
以由ISP以外包业务方式进行配置(常常是远端管理)。
    基于网络的VPN也很有意义,这时,VPN的整个操作作为一个ISP的外包资源实现在网络上,
而不是用户CPE上。使用这种方案,用户可能减少技术支持费用,ISP可以增加收入。支持基于
网络的VPN使得一些高效廉价的解决方案得以奏效,在众多用户之中支持普通的设备和操作。
    下面描述的好多机制即可应用于网络VPN也可以应用于CPE VPN,但是一些特殊的机制可能
仅仅可以应用于后者,因为它们所利用的工具(如路由协议背载)只能由ISP访问,不能由用户
访问,甚至由于CPE节点联合管理问题,连那些拥有和操作CPE的ISP主机也不能访问。本文将指
出那些技术仅仅适用于网络VPN。
2.3 VPN和外联网
    外联网的概念是指两个或者两个以上的公司网络可以互相访问对方有限的数据信息。例如,
一个设备制造商可能用一个外联网为它的供应商提供查询数据库,允许后者查询元件价格和用
途,以及定购情况。再如,在联合软件开发中,公司A允许公司B的一个开发小组访问它的操作
系统代码,公司B允许公司A的一个开发小组访问它的安全性软件。注意,访问策略可以做到任
意复杂,例如,公司B可以对自己的安全性软件作出一些内部访问限制,为适应出口控制法律,
只允许特定的地理位置进行访问。
    外联网的关键特性就是控制访问者和被访问的数据,这是一个策略决策问题,策略决策一
般在不同域的互联点上受到加强,例如专网和Internet之间,或者公司的软件测试实验室和公
司其余的网络之间。这种加强可以通过防火墙、带有访问表功能和应用网关的路由器或者任何
其他任何能够执行传输策略应用的设备来完成,策略控制除了可以实现在公司网络之间,还可
以实现在公司网络的内部。网络间的互联也可以是双向链接的集合,或者就是一个独立的网络
--由工业组织维护的网络,这个单独的网络本身也可以是一个VPN或者物理网络。
    VPN的引入不需要改变这个模型,策略可以应用于两个VPN之间,或者在VPN和Internet之间,
就像以前没有VPN一样。例如,两个VPN可以互联,每个都有自己的策略控制,通过一个防火墙,
查看进来的流量是来自于另一个VPN还是Internet。
    VPN的这个模型提供了一种与包传输基础模式不同的策略,例如,路由器可能把语音流量直
接路由到ATM VCC上以保证QoS,非本地内部公司流量路由到安全隧道里,其他流量路由到
Internet链路上,在过去,安全隧道是帧中继电路,现在它们也可以是安全IP隧道或者MPLS标
记交换通道。
    当然还可能有其他一些VPN模型,例如,可以有一个应用流集映射进VPN的模型,由于网络
管理员给出的策略规则会相当复杂,在策略规则库中使用的不同应用流集的数目,也就是VPN
的数目,就会变得很大,可能造成多重交搭的VPN,然而,引入这种新的复杂性到网络中却实在
获得不了什么好处。VPN应该看成是物理网络的直接模拟,这样可以充分利用现有的协议和规程
以及现有的网管和用户技术。

3.0 隧道技术:
    如2.1所述,VPN需要用某些形式的隧道机制来实现,本小节讨论VPN隧道机制的要求,比较
链路层协议的特性和现有隧道协议的特性,提供协议差异比较的基础,突出隧道协议特点,更
好的支持VPN环境运作。
    连接两个VPN端点的IP隧道是一个基本的构件,基于它各种不同的VPN才得以建立。IP隧道
运行在IP骨干网之上,发送到隧道中的数据流量对IP骨干网络是不透明的,在效果上IP骨干网
用作了链路层技术,隧道形成了点到点连接。
    VPN设备可以终止多个IP隧道,在这些隧道和不同的网络接口之间以各种方式转发数据包,
在后面不同类型VPN的讨论中,数据包在接口(如桥或者路由器)间的转发方式是造成类型差异
的主要原因,非常类似于以前网络设备的特性。两端口转发器直接转发数据包,不检查包的内
容;桥使用MAC层信息来转发数据包;而路由器用第三层地址信息来转发,如本文后面所述,这
三个场合都有和VPN的直接相似性。要注意,IP隧道被视为另一种链路,可以和其他链路串连,
绑定在桥转发表中,或者绑定在IP转发表中,具体根据VPN的类型而定。
    下面的章节就看一看建设不同类型VPN的基础构件--IP隧道协议。
3.1 VPN的隧道协议要求
    有许多种IP隧道机制,IP/IP,GRE、L2TP、IPSec、MPLS。虽然有些协议没有被视作隧道协
议,但是它实际上做的也是建立隧道的事情,都是从封装包的地址域提取转发信息,允许不透
明帧作为包载荷通过IP网络传输。
    然而要注意的是,MPLS和其他隧道协议有所不同,它是一种专门的链路层协议,MPLS只能
在MPLS网络范围内应用,而IP可以伸展到任何可以达到的地方,基于MPLS隧道建立的VPN机制从
定义上就不能伸展到MPLS网络之外,就像基于ATM机制如LANE不可以伸展出ATM网络一样。可是,
MPLS可以横跨许多不同的链路层技术,就像IP网络,它的范围也不是限定在特定的链路层之上。
现已经提出了许多机制允许基于MPLS网络建设交互VPN。
    VPN隧道机制有好多要求,当前的隧道机制还没有完全满足这些要求,它们包括:
3.1.1 复接
    在相同的两个IP端点之间可能要求建立多个VPN隧道,基于网络的VPN就有这种需求,每个
端点支持多个用户。在两个相同的物理设备上,不同用户的数据通过各自独立的隧道,应该有
一个复接域标识数据包所属的那个隧道,或者以类似的方式共享一个隧道,这样可以减少隧道
建立的负担和时延。在现有的IP隧道机制中,L2TP(通过隧道标识和会话标识)、MPLS(通过
标签)和IPSec(通过安全参数索引)有复接机制;严格地讲,GRE没有复接域,但是它的钥匙
域可以用来认证信息包源,有时可以作为复接域;IP/IP没有复接域。
    IETF和ATM论坛都标准化了全局唯一的标识符VPN-ID,用来标识一个VPN。VPN-ID可以放
在控制平面,在隧道建立时间中绑定一个隧道和VPN,或者放在在数据数据平面,基于数据包来
标识该数据所关联的VPN。在数据平面中,VPN封装头可以用在MPLS、MPOA和其他一些隧道机制
上,为不同VPN在一个隧道上收集数据包。在这种情况下,VPN-ID显式地包含在每一个数据包
中,隧道不需要特别的复接域;在控制平面上,VPN-ID可以包含在任何隧道建立信令协议上,
让隧道(如,由SPI域标识)和VPN关联,在这种情况下,不需要在每个数据包中包含VPN-ID,
5.3.1中将做进一步讨论。
3.1.2 信令协议
    在隧道建立之前端点必须知道一些配置信息,如远端IP地址以及隧道所要求的相关隧道属
性(如安全水平),一旦这些信息配置完成,隧道便可以通过两种方式完成建立,可以通过管
理操作,或者也可以通过信令协议,信令协议可以动态建立隧道。
    管理操作的例子如用SNMP MIB配置不同隧道参数,如MPLS标记、IP/IP或者GRE隧道的源地
址,L2TP的隧道标识、会话标识,或者IPSec的安全连接参数。
    信令协议可以减轻管理负担,在许多场合下这非常重要,它可以减少需要配置的工作量,
如果VPN横跨多个管理域,可以减少管理协同的必要。例如,上面描述的复接域的值,节点分配
时为本地化,通过信令协议可以在发布后仍保持本地化,而不是首先配置在管理站,然后发布
到相关节点。信令协议也允许移动节点或者间歇连接的节点按需建立隧道。
    在VPN环境下,信令协议应该允许VPN-ID的传输,让产生的隧道关连到特定的VPN,也应该
允许隧道属性交换和协商,例如帧序列和多协议传输的使用,注意,信令协议的角色只是协商
信道属性,而不是运载隧道如何使用的信息,如隧道中的帧是在层2转发还是在层3转发,(就
像Q.2931 ATM信令--除LANE的又一种建立IP逻辑子网络的信令)。
    在各种IP隧道协议中,下列协议支持适应此目的的信令协议,L2TP(L2TP控制协议)、IPSec
(IKE协议)、和GRE(移动IP隧道)。还有两种MPLS信令协议可以用来建立LSP隧道,一个是MPLS
标签分布协议(LDP)的扩展,叫做受限路由LDP,CR-LDP,另一个是LSP隧道的资源保留协议
RSVP的扩展。
3.1.3 数据安全
    VPN隧道协议必须支持用户所要求的任何档次的安全,包括认证和不同强度的加密能力。除
了IPSec,其他的协议都没有内在的安全机制,它们依赖于基础IP骨干网络本身的安全特性。特
别是,MPLS依赖显式的标记交换通道来保证它的信息包不会传错方向,其他的隧道协议可以用
IPSec来提供安全保障。对于是实现在非IP骨干网上的VPN(如,MPOA,FR和ATM VC),数据安
全隐式的由层2交换结构提供。
    从总体来看,VPN不仅仅包括隧道的安全能力,还包括在边缘路由器中信息包是如何进入隧
道的,例如,用虚拟路由器实现的VPRN中,独立的路由表、转发表实例保证了VPN之间的隔离,
一个VPN上的数据包,不会错误的路由到另一个VPN的隧道上,因为这些隧道对于第一个VPN的转
发表是不可见的。
    如果VPN端点使用某些形式的信令机制和另一端点动态建立隧道,那么就要求认证试图建立
隧道的实体,IPSec为了这个目的形成了一系列的方案,例如,允许使用预共享密钥来进行认证
对方,也可以用数字签名和身份验证。其他一些隧道协议的认证能力比较弱,但在一些情况下
可能根本就不需要认证,例如,如果隧道是预分配而不是动态建立的,或者如果系统根本不需
要信任模型。
    现在IPSec ESP可以建立SA即能支持加密又能支持认证,或者二者都支持,然而如果不用认
证和加密,协议也可以不使用SA。在一个VPN环境中,这个"NULL/NULL"选项是非常有用的,
因为可能有时仅仅需要协议的其他方面(如,支持隧道和复接)可能都是必需的。在效果上,
"NULL/NULL"可以视为另外一种水平的数据安全。
3.1.4 多协议传输
    许多应用中,VPN可以承载不透明多协议数据,因此,隧道协议必须能够支持多协议传输。
L2TP可以传输PPP包,而PPP包可以运载多协议,因此L2TP可以传输多协议。GRE也提供隧道协议
标识,而IP/IP和IPSec隧道没有这样的协议标识域,因而只能建立IP协议隧道。
    扩展IPSec协议集允许传输多协议是完全可能的,例如,可以通过扩展IPSec的信令组件IKE
来实现IPSec的多协议传输,指示隧道里传输的协议类型,或者在每个隧道包里运载一个包复接
头,(例如,一个LLC/SNAP头或者GRE头)等等。这种方法类似ATM网络,它使用信令来指示VCC
里面的封装,VCC发送的数据包使用一个LLC/SNAP头,或者直接放在AAL5载荷中,后者就是VC
复接。
3.1.5 帧序列
    用户所要求的QoS属性之一便是VPN帧序列,类似于物理租用线或专线的特性。特定端到端
协议和应用的有效操作可能需要帧序列,为了实现帧序列,隧道机制必须支持序列域,L2TP和
GRE都有这样一个域,IPSec有一个序列号码域,但是它是由接收者执行反重播检验,不是为了
保证数据包的有序传送。
    扩展IPSec允许使用已有的序列域来保证有序包传送是完全可能的,例如,用IKE协商来确
定序列是否使用,定义保留包序列的端点行为。
3.1.6 隧道维护
    VPN端点必须监视VPN隧道的运作,保证连接不丢失,如果发生意外应该采取适当的措施(如
路由重计算)。
    有两种可能的方法,一种是让隧道协议自身周期性地检查隧道连接,提供显式的失败指示,
例如,L2TP有一个保持存活机制选项来检测不运作的隧道。
    另一种方法不需要隧道协议自身来执行这个功能,而是依赖于一些外部机制来确定连接的
丢失,例如路由协议RIP和OSPF运行在一个隧道上,在一定的周期里侦听到邻通道的失败后,便
在路由协议上报告隧道的关闭。还有一种方法是不断的执行ICMP ping,这也可以确保隧道运作
特性,因为隧道本身也是在同一个IP骨干网上运行。
    当隧道动态建立时,我们需要了解动态和静态隧道信息的不同,一个隧道建立之前,节点
需要知道一些静态信息,例如远端的验证,所发起或者接受的隧道的属性等等。一般这都是配
置操作,作为建立隧道的信令交换结果,在每一个端点都形成了一些动态状态,如复接域的值,
密钥等,例如,在IPSec中,SA建立后,在它生存时间里的密钥也得以建立。
    建立动态隧道时将会用到不同的策略,一种是数据驱动机制,当数据需要传输时,就启动
隧道建立,没有数据传输,就发出隧道超时信息,当为QoS分配隧道时,这种方法非常有效。另
一种方法是每当静态隧道配置信息安装完毕时,就建立隧道,然后努力保持该隧道存在。
3.1.7 MTU问题
    一个IP隧道关联一个MTU,就像常规的链接一样,可以想象,这个MTU可能比通道上任何两
端点之间的单跳或多跳的MTU都要大,这样在隧道中就可能要求某些形式的帧分割。
    如果帧映射在一个IP包里面,当IP数据报到达一个MTU小于IP隧道MTU的节点时,就会进行
正常的IP分割。这种隧道中间分割可能会在路由器上造成意料不到的性能牵连。
    一种可选的方法是让隧道协议本身包含隧道级分拆和重组的能力,例如,可以用隧道序列
号和某种类型的消息终止符,(注意,多链接PPP就是用这种类似的机制分割信息包),避免IP
层隧道自身的分割。现在还没有什么协议支持这样的机制。
3.1.8 最小隧道开销
    减少隧道机制的开销有许多好处,特别是传输诸如音频视频包等对抖动和时延比较敏感的
数据。另一方面,如果使用IPSec安全机制,也会强加自己的开销,因此目标对象应该尽量减少
安全所需的开销,不要加重那些对安全要求不太强烈的隧道负担。
    当远端拨号用户使用自发隧道连接VPN时,由于拨入链接带宽较低,开销的大小就更显得重
要了。6.3将讨论这个问题。
3.1.9 流量和拥塞控制
    L2TP协议的开发过程已经制定了流量和拥塞控制的规程,这主要是因为在使用与IPComp
【28】不同的PPP压缩时,要求在有损网络上提供足够的性能。另一个动机是让设备尽量使用较
少的缓存,例如可以终止低速拨号线。然而,L2TP规范的最后版本仅仅为控制信道定义了流量
和拥塞控制机制,而没有为数据信道定义。
    总的来说,多层流量和拥塞控制的交互作用是非常复杂的,但是当今占主导地位的TCP还是
有其自身的端到端流量和拥塞控制机制,但是真正在隧道协议中实现类似的机制却不见得到底
会有多大好处,开发测试适应所有网络条件的流量和拥塞控制方案是很困难的,有其自身的原
因,也有和其他类似方案理解上的原因。然而,让发送者能够知道接收者的接收能力,提供协
议机制、允许接收者把它的能力通过信令发送给发送方是很有帮助的。对该领域做进一步研究
可以获益不少。
    也请我们注意一下IETF PILC工作组的工作,它正在对不同网络链路的正确性如何影响
Internet协议在那些链路上的操作进行检查。
3.1.10 QoS/流量管理
    如上所述,客户可能要求VPN就丢失率、抖动、时延和带宽保证等QoS参数提供同物理租用
线和专线一样的保障,如何实现,是VPN节点自身和以及它所连接的接入和骨干网的流量管理功
能。
    对QoS和VPN的全面的讨论超出了本文档的范围,然而如果把VPN隧道模型化为另一种类型的
链路层,许多为原来物理链路所开发的QoS机制仍然可以应用,如,可以在一个VPN节点上,用
VPN参数、队列和接口把策略机制、标记机制、队列机制、整形机制和进程机制和应用到VPN流
量上,就象非VPN流量一样,Diffserv、Intserv和MPLS流量工程开发的技术在VPN流量上仍然可
用。见【29】对QoS和VPN的讨论。
    然而,应该注意的是,这个隧道操作模型不必和现在已经模型化的隧道协议相一致,模型
只不过用来帮助理解,不是协议规范的一部分,如果模型不同会使讨论复杂化,特别是当模型
作为协议规范的一部分或者作为实现方法的强制性选择被曲解时,例如,IPSec隧道处理过程可
以模型化为接口,也可以模型化为特别数据包流属性。
3.2 建议
    需要强加密或者强认证就需要IPSec,IPSec也支持复接和信令协议--IKE,然而,为了支
持VPN环境的隧道要求,扩展IPSec使其可以覆盖下面的领域将会有更多好处。
--建立SA时,传输VPN-ID(3.1.2)
--空加密和空认证(3.1.3)
--多协议操作(3.1.4)
--帧序列(3.1.5)
    L2TP自身不提供数据安全,PPP的任何安全机制并不应用到L2TP自身,因此,为了提供强安
全性,L2TP必须运行在IPSec之上,定义IPSec支持L2TP数据传输的专用操作模式将会有助于互
操作性,L2TP的工作组正在做这样的事情。

4.0 VPN类型:虚拟租用线
    最简单的VPN形式是"虚拟租用线"(VLL)业务,在这种情况下,用户仅仅得到了点到点
链接,连接了两个CPE设备,如下图所示。连接CPE设备到ISP节点的链路层可以是任何类型,如
ATM VCC或者FR电路等,CPE设备可以路由器、桥或者主机。
    两个ISP节点都连接在IP骨干网上,IP隧道建立在二者之间,每个ISP节点在第二层(如ATM 
VCC和IP隧道)配置绑定桩链路和IP隧道,帧在两条链路之间中继,例如,ATM AAL5载荷封装在
IPSec隧道中,AAL5载荷的内容对ISP节点是不透明的,不被检查。

               +--------+      -----------       +--------+
   +---+       | ISP    |     ( IP        )      | ISP    |      +---+
   |CPE|-------| edge   |-----( backbone  ) -----| edge   |------|CPE|
   +---+ ATM   | node   |     (           )      | node   |  ATM +---+
         VCC   +--------+      -----------       +--------+  VCC

                      <--------- IP Tunnel -------->

   10.1.1.5                subnet = 10.1.1.4/30              10.1.1.6
                    用户所用地址(对业务提供者透明)
                        图4.1:VLL用例
    对于用户来说,就好像真的有一条ATM VCC或者FR电路连接两个CPE似的,用户感觉不到电
路部分实际上实现在IP骨干网上,这种做法有时候非常有好处,例如,业务提供者想用ATM作为
网络接口提供LAN互联业务,但是却没有直接连接所有用户站点的ATM网络。
    连接CPE设备到ISP节点的两条链路可以不是同一种介质类型,但这时ISP节点不能以如上所
述的不透明方式进行数据传输。相反,ISP节点必须在两种介质类型(如ATM和帧中继)中间执
行设备互联功能,如LLC/SNAP到NLPID转换,进行不同的ARP协议转换,执行CPE设备期望的任何
媒介处理,(如,ATM OAM信元或者帧中继XID交换)。
    IP隧道协议必须支持多协议操作,如果序列功能对用户数据传输很重要,可能还需要支持
序列。如果隧道是用信令协议建立的,当从用户链路收到一个帧并且这时隧道不存在,它们可
能以数据驱动方式启动,或者,也可以预分配并且永久保持隧道。
    注意这里用到的VLL和Diffserv EF-PHB(Expedited Forwarding Per Hop Behaviour)定
义不同,后者指的是低时延、低抖动、保证带宽的通道,可以由PHB提供,因此它的重点放在链
路时间特性上。在这篇文档里,VLL并不暗示任何特殊的如Diffserv或者其他的QoS机制,相反,
其重点是放在链路拓扑上,(如,建立一个包含一个IP隧道的链路)。对于完全的链路层仿真,
时间和拓扑特性都需要考虑。

5.0 VPN类型:虚拟路由网络
5.1 VPRN特性
    VPRN定义为用IP设施仿真广域路由网络,本节介绍如何提供基于网络的VPRN业务,基于CPE
的VPRN也是可能的,但在这儿不作特别讨论。基于网络的VPRN所要解决的问题主要是配置和操
作,必须在业务提供商和业务用户之间划分管理责任。
    VPRN和其他VPN的不同之处就在于数据包转发在网络层,VPRN就是由ISP路由器之间的隧道
网组成,每个VPRN节点转发数据的路由能力。附着在ISP路由器上的是通过一条或者多条链路(称
为桩链路)连接的CPE路由器。在每个ISP路由器中有一个VPRN专用转发表,VPRN的成员都连接
在上面,通过路由转发表,数据可以在ISP路由器之间、ISP路由器和用户站点之间转发,表中
包含网络层可达性信息(可以和VPLS比较,它的转发表中包含MAC层可达性信息,7.0小节)。
    下图是了一个VPRN的例子,示意了3个ISP边缘路由器通过IP隧道网络连接,互联了4个CPE
路由器,其中一个CPE路由器在网络上有多宿,它有多条桩链路,所有的链路可以都激活,也可
以让其中的主链路激活,如果发生意外,备用链路再激活,术语"后门"链路指的是两个用户
之间没有通过ISP网络的链路。

   10.1.1.0/30 +--------+                       +--------+ 10.2.2.0/30
   +---+       | ISP    |     IP tunnel         | ISP    |       +---+
   |CPE|-------| edge   |<--------------------->| edge   |-------|CPE|
   +---+ stub  | router |     10.9.9.4/30       | router |  stub +---+
         link  +--------+                       +--------+  link   :
                |   ^  |                         |   ^             :
                |   |  |     ---------------     |   |             :
                |   |  +----(               )----+   |             :
                |   |       ( IP BACKBONE   )        |             :
                |   |       (               )        |             :
                |   |        ---------------         |             :
                |   |               |                |             :
                |   |IP tunnel  +--------+  IP tunnel|             :
                |   |           | ISP    |           |             :
                |   +---------->| edge   |<----------+             :
                |   10.9.9.8/30 | router | 10.9.9.12/30            :
          backup|               +--------+                 backdoor:
           link |                |      |                    link  :
                |      stub link |      |  stub link               :
                |                |      |                          :
                |             +---+    +---+                       :
                +-------------|CPE|    |CPE|.......................:
                10.3.3.0/30   +---+    +---+      10.4.4.0/30


                               图5.1:VPRN实例

    VPRN的主要好处是CPE路由器的配置及其复杂性得到简化,对于一个CPE路由器,ISP边缘路
由器好像是用户网络的邻路由器,它用缺省路由向其发送数据。数据传输隧道网的建立仅延伸
到ISP边缘路由器,而不是CPE路由器,在效果上,隧道建立、维护和路由配置的负担都交给了
ISP,此外,VPN所要求的其他服务如防火墙的提供、QoS处理也可以由一小部分ISP边缘路由器
处理,CPE设备种类繁多,不适合处理这些功能,引入和管理新的业务也可以很容易解决,不必
去为CPE设备升级,当本地使用VPN业务接入专用公司网络的用户非常多的时候,这样做的好处
就更大了,该模型就像电话业务,不需改变用户设备就可以引入新业务(如呼叫等待)。
    VPRN不同于那些把隧道口延伸到CPE路由器的VPN类型,那不过是由ISP提供层2连接罢了,
可以通过CPE路由器之间的VLL(见4.0)实现,即ISP网络提供一系列的层2点到点链接;也可以
作为一个VPLS--ISP仿真一个多接入LAN片,这种情况下用户可能有更多的灵活性(如,任何
IGP或者任何协议可以运行在用户站点),但是配置复杂性造成了成本的昂贵,因此,需要根据
用户的具体要求,有可能是VPRN,也有可能是VPLS。
    因为VPRN在网络层转发,一个VPRN仅仅直接支持一个网络层协议,对于多协议支持,可以
在各种网络层协议上建立独立的VPRN,或者让一种协议在另一个网络上(如,非IP网络隧道到
IP VPRN)建立隧道,或者,让ISP网络仅仅提供层2连接,就像上面提到的VPLS。
    VPRN要解决的问题包括初始配置,就是ISP边缘路由器所要确定的每个VPRN的链路集、在
VPRN拥有成员的其他路由器集、通过每个桩链路可达的IP地址前缀集,还包括CPE路由器确定的
准备转发到ISP边缘路由器的IP地址前缀集、正确发布桩链接可达性信息的机制和运载数据隧道
的建立和使用等等,还要注意的是,虽然我们在这里首先讨论了VPRN,但是这里面的许多问题
也适合于后面的VPLS,只要把网络层地址替换成链路层地址即可。
    注意,VPRN的操作类似于用户站点访问Internet的机制,一般情况情况是ISP边缘路由器即
要为用户提供VPRN连接,又要为用户提供Internet连接,这时CPE路由器里有一个到ISP边缘路
由器缺省的路由点,负责把私有数据转送到VPRN,其他的数据流通转送到Internet,在这两个
域之间提供防火墙功能。当然,用户也可以通过不涉及VPRN的ISP路由器建立Internet连接,甚
至通过一个不同的ISP,这时的CPE设备要完成不同域数据的分离以及提供防火墙功能。
5.1.1 拓扑
    VPRN的拓扑可能包括所有VPRN节点之间整个的隧道网,或者也可以是某些隧道的随机拓扑,
如一系列远端办公室连接到最近的地区站点,地区站点再进行整个或者部分的连接。在IP隧道
建立的VPRN中,使用全网拓扑可以比直接分配物理资源(如,租用线)节省很大的费用,也比
那种要求资源分配在设备上的隧道方法(如,FR DLCI)要好。全网拓扑产生出优化路由,消除
了经过第三个节点为两个直接相连的站点传输数据的必要性,全网拓扑的另一个吸引人的地方
是不需要配置VPRN的拓扑信息,对于VPRN的成员路由器来说,拓扑是隐式的。如果ISP边缘路由
器的数量十分巨大,全网拓扑可能不太适合,因为这时涉及到升级问题,如,站点之间的隧道
数目会随之增长,(n个站点,n(n-1)/2个隧道),每个路由器的路由对也会急剧增长。当
然也可能也会使用非全网拓扑的网络策略,如网络管理员可能希望两个站点的流量经过中心站
点,而不是直接传输数据。对于IP骨干网,也需要考虑到由于某些错误造成的部分连接问题(如,
A可到B,B可到达C,但是A不能直接到达C),可以运用策略路由来解决这个问题。
    对于一个面向网络的VPRN,假设用户通过一条或者多条点到点链路(如,租用线,ATM或者
FR连接)连接到ISP边缘路由器,ISP路由器要负责学习和发布它们之间可达性信息,CPE路由器
通过每条桩链路学习可达目的地集,虽然这可以象缺省路由一样简单。
    桩链路可以是预分配的专线,也可以是象用PPP、自发隧道(见6.3节)或者ATM信令等按需
分配的动态链路。动态链路需要认证用户,确定用户可以接入(如,用户可以加入VPRN)的授
权资源。VPRN机制和业务可以由任何类型的用户以任何方式使用,而不是让用户初始绑定VPRN,
(这种处理可能包括专门的考虑,如动态IP地址分配)。
5.1.2 定址
    VPRN里使用的地址和IP骨干网上的地址没有什么关系,特别是VPRN可以使用非唯一专用IP
地址,多个VPRN可以实现在同一套物理设备上,它们可以使用相同的或者交叠的地址空间。
5.1.3 转发
    对于一个VPRN,隧道网形成了IP骨干网上的交叠网络,在每个ISP边缘路由器中,必须有VPN
专用的转发状态来转发从桩链路接收到的信息包,传送到下一跳路由器,当ISP边缘路由器支持
属于同一VPRN的多链路时,作为本地事件,隧道可以终止在边缘路由器上,也可以终止在桩链
路上,前者需要VPN专用的转发路由表转发流出的数据,后者不需要。为了把接收到的数据流量
导向正确的隧道,在数据来的方向中需要VPN专用转发表。
    也因为VPRN工作在互联网的网络层,在隧道上发送的IP包也将有TTL域,以正常的模式操作,
防止信息包在VPRN的路由环中打转。
5.1.4 多并发VPRN连接
    注意一个用户站点也可能同时属于多个VPRN,可能同时传输数据到一个或者多个VPRN或者
到缺省的Internet上,这一切都可以发生在同一个桩链路上。对于这个问题有好多解决办法,
但是这超出本文的范围。
5.2 VPRN相关的网络
    VPRN的要求和机制在前面许多文档中讨论过了,其中的一个是【10】,讨论的是如何在MPLS
和非MPLS网络上实现相同的VPN功能,其他的一些在下面简单描述。
    提供VPRN成员资格和可达性功能的机制有两种主要的方式--交叠式和背载式,下面的
5.3.2、5.3.3和5.3.4将详细讨论。【14】里描述了一个交叠式例子,讨论的是通过分离每个VPN
路由协议实例和路由转发表来实现VPRN功能,另一种办法是通过虚路由来实现。每个VPN的路由
实例隔离于另一个VPN的路由实例,也隔离于骨干网的路由实例,结果是任何路由协议(如,
OSPF,RIP2,IS-IS)都可以运行在任何VPRN上,独立于其他VPRN所运行的路由协议,也独立于
骨干网自身的路由协议。【12】中描述的VPN模型是一种使用虚路由的交叠VPRN模型,重点放在
了在MPLS骨干网上提供VPRN功能,描述了基于MPLS隧道网的VPRN成员如何实现MPLS骨干网上的
自治。【31】扩展了虚路由模型,包括VPN区域,以及在VPN区域之间负责路由的VPN边缘路由器,
VPN区域可以由管理以及技术原因定义,如不同的基础网络结构(如,ATM,MPLS,IP)。 
    相反,【15】描述了用背载方法提供成员资格和可达性信息发布等VPN功能,这些信息在BGP
【32】协议包上以背载方式操作,VPN用BGP策略构建,由它来控制哪些站点可以互相通信,【13】
也使用BGP背载成员信息和背载可达性信息来建立MPLS LSP(CR-LDP或者扩展RSVP),然而不
像其他的建议那样,这个建议需要CPE实现VPN的某些功能。
5.3 VPRN总要求
    基于网络的VPRN解决方案有许多的通用要求,也有许多机制可以用来满足这些要求:
    1)全局唯一的VPN标识符,用来指一个特定的VPN。
    2)VPRN成员资格的确定。一个边缘路由器必须学习本地每个VPRN桩链路,必须学习在该VPRN
中拥有成员的其他路由器集合。
    3)桩链路可达性信息。一个边界路由器通过每个桩链路必须学习可达地址集和地址前缀集。
    4)内联VPRN可达性信息,一旦边缘路由器确定关联于每个桩链路的地址前缀集,那么这个
信息必须发布到VPRN的每个边缘路由器。
    5)隧道机制,一个边缘路由器必须构建必要的隧道到另一个拥有VPRN成员的路由器,必须
执行必要的封装和解封装。
5.3.1 VPN标识符
    IETF和ATM论坛已经为标识VPN的全局唯一标识符标准化了一个独立的格式--VPN-ID,现
在只定义了VPN-ID的格式,没有定义它的语法和用法。目标是允许它用于不同的目的,让不同
技术以及机制使用同一个标识符。例如,一个VPN-ID可以包含在MIB中,标识一个VPN;VPN-
ID也可以用在控制平面上起到控制作用,例如在隧道建立时间绑定一个隧道,所有穿过隧道的
包就会隐式地关联于标识了的VPN;VPN-ID也可以用在数据平面封装,显式地标识一个VPN包。
如果VPN用不同的技术实现,(如IP和ATM),可以用同一个VPN-ID在不同技术上标识VPN,同
样,如果VPN横跨几个管理域,同一个标识符可以在任何域使用。
    大多数的VPN方案(如,【11】,【12】,【13】,【14】)都要求使用VPN-ID,或载在
控制包里,或载在数据包里,其作用是和特定VPN关联一个数据包。虽然以这种方式VPN-ID的
使用非常普通,但是却并不普遍。【15】描述了一种没有VPN协议标识域的方案,这个方案里,
VPN由用户理解,行政式的构建,用BGP策略建立。有许多关联于VPN路由的属性,如路由区别符
号、源或者目标"VPN",由基础协议机制使用,消除歧义,扩大使用范围,这在用BGP策略机
制构建VPN中也使用,但是在其他的文档中没有相应的VPN-ID。
    也请注意,【33】也定义了一种使用标准VPN-ID格式在ATM AAL5上进行多协议封装的格式。
5.3.2 VPN成员资格信息配置和发布
    为了建立一个VPRN,或者在VPRN中插入新的客户,ISP边缘路由器必须确定哪一个桩链路关
联于哪一个VPRN,对于静态链路(如,ATM VCC),这个信息必须配置进边缘路由器,由于边缘
路由器不能由自身推断这样的绑定,让SNMP MIB允许本地桩链路和VPN身份之间的绑定不失为一
个解决方法。
    对于用户来说,动态地连接在网络上(用PPP或者自发隧道),可以把桩链路和VPRN关联,
作为终端用户认证处理的一部分,例如用户所要绑定的VPRN可以继承PPP认证处理的域名。如果
用户成功的通过认证(如,用Radius服务器),新创建的动态链路可以绑定到正确的VPRN上,
注意,静态的配置信息仍然是必要的,如为了维护每个VPRN的授权用户表。但是静态信息的位
置可以是认证服务器,而不是ISP的边缘路由器,不论链路是静态创建还是动态创建,VPN-ID
都可以关联到那条链路上,标识绑定的VPRN。
    知道了哪条桩链路绑定在哪个VPRN上之后,每个边缘路由器必须学习每个边缘路由器支持
桩链路的身份,或者至少是可以到达它们的路由。后者隐示了这样一个概念,那就是当前的配
置边缘路由器所使用的机制,可以用边缘路由器和桩链路身份信息建立合适的隧道。边缘路由
器的VPRN成员资格发布问题,可以通过不同的途径解决,将在后面讨论。
5.3.2.1 目录查找
    特定VPRN的成员,即支持桩链路的边缘路由器身份,以及每个边缘路由器绑定在这个VPRN
的静态桩链路集,可以配置进一个目录,通过在启动时定义某些机制(如,LDAP),边缘路由
器可以查询它。
    使用目录允许配置全网拓扑或者随机拓扑,对于全网拓扑,VPRN中所有路由器成员表发布
到任何地方,对于一个随机拓扑,不同的路由器可能收到不同的成员表。
    使用目录也可以使认证校验优先于VPRN成员信息的发布,当VPRN跨过几个管理域时,这就
非常有必要了。这种情况下,目录到目录的协议机制可以在多管理域系统中传播授权的VPRN成
员信息。
    为了让所有的边缘路由器知道插入进激活VPRN的每一个新配置站点的身份,以及原有站点
从VPRN中的移出,需要某种数据库形式的同步机制(如,触发目录查询,信息更新)。
5.3.2.2 显式管理配置
    一个VPRN MIB定义为,允许一个管理系统把每个参与的边缘路由器的身份、每个静态桩链
路的身份配置每个边缘路由器。就象使用目录一样,这种机制允许全网配置和随机配置。另一
种机制是用一个中心管理系统,通过策略服务器和COPS协议【35】发布VPRN成员和策略信息,
如建立隧道时使用隧道属性,如【36】所述。
    注意,这个机制允许管理站加强严格的认证控制,另一方面,在管理域之外配置边缘路由
器却十分困难,管理配置模型可作为一个目录方法子集,这样管理目录可以用MIB把VPRN信息压
到参与的边缘路由器中,可以作为本地桩链路配置过程的结果或部分结果。
5.3.2.3 路由协议背载操作
    VPRN成员信息背载到边缘路由器在IP骨干网上运行的路由协议中,因为这是一种通过网络
向其他参与的边缘路由器传播信息的有效手段。特别是,每个边缘路由器的路由通告可以包含
关联于每个边缘路由器VPN标识符集,以便让另一个边缘路由器确定特定边缘路由器身份和路由
的足够信息。其他边缘路由器将检查接收到路由通告,确定是否包含了支持VPRN的相关信息,
可以通过查找匹配于本地配置VPN的VPN标识符来完成。背载信息的特性、相关的问题(如范围)
以及节点广播特定VPN成员资格的方法将会得到确定,都将是路由协议和基础传输的功能。
    使用这种方法,网络中所有的路由器都将拥有VPRN成员信息的相同视图,可以很容易的支
持全网拓扑,然而,要支持一个随机拓扑却是比较困难的,需要某些形式的剪除。
    背载方案的好处在于它有效的信息发布能力,但是它要求不仅仅参与到边缘路由器上的节
点,而是通道上所有的节点,都要接受修改的路由广播,这样做的不好之处在于,这可能要求
复杂的配置范围机制,既能允许又能限制背载广播,这会加重配置负担,特别是如果VPRN跨越
几个路由域(如,不同自治系统、ISP)。
    另外,除非为路由更新使用某些安全机制,允许所有相关的路由器读取背载广播,否则,
只能由这个方案隐含一种信任模型,所有的路由器必须绝对地被授权知道这个信息。根据路由
协议的特性,背载也要求中间路由器,特别是自治系统边缘路由器高速地缓冲这些广播,也要
求多路由协议之间重发布他们。
    每个方案都在特定场合下有它们自身的优点,注意在实际中,几乎总是有中心目录或者管
理系统来维护VPRN成员信息,如允许支持一个特定VPRN的边缘路由器集,支持静态桩链路到VPRN
的绑定,支持通过动态链路为用户接入网络的认证和授权信息。这些信息需要配置存储在某些
形式的数据库中,因此也需要额外的步骤方便这种信息到边缘路由器的配置,可能不是特别繁
重。
5.3.3 桩链路可达性信息
    桩站点可达性有两个方面--VPRN边缘路由器确定VPRN地址集和地址前缀可达桩站点的手
段,以及CPE路由器通过桩链路学习目的地可达性的手段。无论是那一种情况,ISP边缘路由器
需要的信息都是一样的--VPRN在客户站点的可达地址,但是CPE路由器需要的信息各异。
5.3.3.1 桩链路连接的不同情况
5.3.3.1.1 双VPRN和Internet连接
    CPE路由器通过一条链路连接到ISP边缘路由器,得到VPRN和Internet连接的服务。
    这对于CPE路由器是最简单的情况,它仅仅需要一个到ISP边缘路由器缺省的路由点。
5.3.3.1.2 VPRN连接
    CPE通过一条链路连接到ISP边缘路由器,仅仅得到VPRN连接,而不是Internet。
    CPE路由器必须知道通过那条链路可达的非本地VPRN目的地集,可能是一个简单的前缀,也
可能是一系列的非结合前缀。CPE路由器可以是静态配置,也可以通过IGP动态学习,为了简单,
假定用于IGP的是RIP,其实也可以是其他IGP。ISP边缘路由器将插入VPRN路由RIP的实例,该实
例就是通过5.3.4描述的内联VPRN可达性机制学习获得的。注意运行载CPE的RIP实例以及任何用
于学习内联VPRN可达性(甚至RIP)的路由协议实例都是独立的,由ISP边缘路由器从一个实例
把路由重发布到另一个边缘路由器。
5.3.3.1.3 多宿连接
    CPE路由器对于ISP网络来说是多宿的,提供VPRN连接性。
    这种情况下,所有的ISP边缘路由器可以把相同的VPRN路由广播到CPE路由器,后者便可以
通过所有链路认知所有可达VPRN前缀。当然还有其他特殊的重发布,ISP边缘路由器对CPE路由
器广播不同的前缀集。
5.3.3.1.4 后门连接
    CPE路由器连接到ISP网络上,后者提供VPRN连接,但也可以由一个后门链接直接通往客户
站点。
    这种情况下,ISP边缘路由器将广播VPRN路由到CPE设备上。然而现在相同的目的地是如何
通过ISP边缘路由器和后门链接达到的呢?如果连接到后门链路上的CPE路由器运行了客户IGP,
那么后门链路总是作为优先链路,就像一个内部链路一样,而通过ISP边缘路由器插入的目的地
就好像是外部通道(对于客户IGP来说),为了避免这种情况,假设客户希望自己的数据流量通
过ISP网络,就需要一个独立的RIP运行在后门链路两端的CPE路由器上,就如RIP运行在桩链路
或者备份链路(在CPE路由器和ISP边缘路由器之间)一样,这便使得后门链路像向外部通路一
样,通过适当调整该链路的费用,ISP通道可以总是可以优先,除非它关闭,后门链路才启用。
    上面就等于描述了ISP边缘路由器和CPE路由器各自的可达性信息要求,以及传送这些信息
的机制。下面的小节将详细介绍这些机制。
5.3.3.2 路由协议实例
    路由协议可以运行在CPE边缘路由器和ISP边缘路由器之间,交换可达性信息,这样可以使
ISP边缘路由器在客户站点学习可达VPRN前缀,以及让CPE路由器通过业务提供商网络学习可达
目的地。
    虽然客户也运行相同的协议,就像它的IGP,但是这个协议路由域的只扩展到ISP边缘路由
器和CPE路由器,域可以扩展到客户站点,如果客户站点正在运行一个不同的路由协议,CPE在
ISP边缘路由器实例和客户站点实例之间重发布路由。
    考虑到这个路由实例的限制,一个简单的协议就足够了,RIP可能是最普通的协议,其他也
可,如OSPF或者BGP运行在内部模式(IBGP)。
    注意桩链路路由协议的实例是不同于内联VPRN可达性路由协议实例的,例如,如果ISP边缘
路由器用路由协议背载操作,通过内核发布VPRN成员资格和可达性信息,那么它就可以由CPE
路由实例到核心路由协议实例重发布合适标签的路由,用于每个实例的路协议弱化了,任何合
适的协议可以用在每个场合。不需要相同的协议,甚至不需要相同的桩链路可达性信息收集机
制,不需要它运行在CPE路由器和某一VPRN关联的ISP边缘路由器之间,因为这纯粹是本地事务。
    这种弱化允许ISP使用一种普通的内联VPRN机制,通过这些机制,各个VPRN互相隔离,也隔
离于客户网络的IGP。在第一种情况中,ISP可以不和桩链路操作,就能获得和内联VPRN可达性
机制的隔离;第二种情况,ISP不需要知道客户站点的IGP。还有其他一些情况,如ISP边缘路由
器和客户站点运行相同的IGP,但这很不实际,因为这样便失去了VPRN简化CPE路由器配置的目
的。如果要让客户在多站点上运行IGP,VPLS方案比较合适。
    注意,如果某一客户站点同时属于几个VPRN(或者希望同时与VPRN和Internet通信),ISP
边缘路由器必须映射桩链路地址前缀到特定的VPRN。简单一点,可以在每个VPRN中使用多条桩
链路,通过确保(或者,通过配置ISP边缘路由器,使其知道)某一非结合的地址前缀映射到单
个的VPRN,或者由用合适的VPN标识标记来自于CPE路由器的路由广播,从而可以在同一条桩链
路上运行多个VPRN。如,MPLS传送桩链路可达性信息,不同的MPLS标记将用来区别不同的VPRN
所分配的前缀。不论如何,这种协同都需要一些管理规程。
5.3.3.3 配置
    跨过每一个桩链路的可达性信息可以手工配置,当地址集和前缀集很小或者为静态时比较
合适。
5.3.3.4 ISP管理的地址
    每一个桩站点的地址集可以由VPRN的边缘路由器管理和分配,当客户站点比较小的时候比
较合适,特别是包含单主机或者单子集。地址分配可以由PPP或者DHCP【37】来完成,如,边缘
路由器作为一个Radius客户,检索客户IP地址,或者作为一个DHCP中继,检查DHCP消息,中继
给客户站点,这时的边缘路由器需要建立桩链路可达性信息表。虽然这些IP地址分配机制一般
用于分配给单个的主机,一些销售商加了一些扩展,使其可以分配地址前缀。在某些情况下,
让CPE设备可以作为一个小型DHCP服务器,在客户站点为主机分配地址。
    注意在这些方案下,地址分配服务器有责任保证VPN的每个站点收到不同的地址空间,也要
注意,ISP通常只为小的桩站点使用这种机制,小站点不太可能有后门链路。
5.3.3.5 MPLS LDP
    CPE路由器运行MPLS时,LDP可以在桩站点传送前缀集给VPRN边缘路由器。用下行标记发布
的主动模式,CPE可以从头站点的每个路由器发布一个标记。然而需要注意的是,由于是LDP学
习新路由,而不是从存在的路由器学习标记--通过标准路由机制学习,边缘路由器执行的处
理就不仅仅是普通的LDP处理过程。
5.3.4 内联VPN可达性信息
    一旦边缘路由器确定了联结每个桩链路的前缀集,这个信息便必须马上发布到每个边缘路
由器。这里也有一个隐含的要求,那就是可达地址集本地唯一,也就是说,每个VPRN桩链路(不
执行负载共享)维护与任何其他地址空间无关的一个地址空间。实际中虽然不是要求这样,但
至少希望这样,这个地址空间要很好的分割开,如,每个边缘路由器用一个特殊的地址前缀,
以便消除维护发布大数量主机路由的必要。
    内联VPN可达性信息的发布可以通过许多途径解决,下面将分别叙述一下它们其中的几个。
5.3.4.1 直接查找
    和VPRN成员信息一起,中心目录可以维护连接每一个客户站点的地址前缀列表,这样的信
息可以由服务器通过边缘路由器协议的交互作用获得,注意5.3.2讨论到的目录同步问题也可以
应用在这个场合。
5.3.4.2 显式配置
    地址空间可以显式配置,但是这样不容易升级,特别是当使用随机拓扑时,同时这也提出
了管理系统如何学习这些信息的问题。
5.3.4.3 本地内联VPRN路由实例化
    在这种方法中,每个边缘路由器运行一个路由协议(一个"虚路由")的实例,通过VPRN
隧道到每个对端边缘路由器,发布内联VPRN可达性信息。由于路由协议自身可以运行在任何拓
扑上,全网拓扑和随机拓扑都可以很容易的得到支持。内联VPRN路由广播可能不同于普通的隧
道数据包,它可以直接定址对端边缘路由器,或者使用隧道特殊机制。
    注意这里的内联VPRN路由协议可以和任何客户站点的IGP协议以及ISP在IP骨干网的其他路
由协议不发生任何关系。根据VPRN尺寸的大小和规模,不论是简单的RIP协议还是复杂的OSPF
协议都可以使用。由于内联VPRN路由协议运行在IP骨干网之上,对于任何中间路由器完全透明,
对于不在VPRN内的任何其他边缘路由器也完全透明,这也暗示了这样的路由信息可以对这样的
路由器保持不透明,在一些场合下这提供了必要的安全要求。也要注意,如果路由协议象数据
一样直接运行在同一个隧道上,那么它和数据流量有同等水平的安全,例如强加密或者认证。
    如果内联VPRN路由协议所运行的隧道对于特定VPN(如,一个不同的复接域)是专用的,那
么就不需要改变路由协议自身;另一方面,如果使用了共享隧道,那么就很有必要扩展路由协
议,以允许VPN-ID包含在路由更新包中,允许前缀集连接到特定的VPN上。
5.3.4.4 链路可达性协议
    链路可达性协议就是允许两个节点通过点到点链路连接,相互交换可达性信息,对于全网
拓扑,每个边缘路由器可以运行链路可达性协议,例如MPLS CR-LDP的一些变种,通过隧道到
每个对端边缘路由器,在两个边缘路由器之间通过隧道运载VPN-ID和可达性信息。如果VPRN
成员信息已经发布到边缘路由器,那么就不再需要传统的邻路由发现协议,因为邻节点集已经
知道了。TCP连接可以用来互联邻接点,提供可达性。这个方法可以减少每个VPRN的路由协议实
例的处理负担,可以支持多VPRN使用共享隧道机制连接边缘路由器时。
    另一个链路可达性协议的方法可以基于IBGP,这时链路可达性协议需要解决的问题与IBGP
非常相似--在边缘路由器之间可靠传送地址前缀。
    用链路可达性协议可以直接支持全网拓扑--每个边缘路由器传送它的本地可达性信息到
其他所有的路由器上,但是却决不把从其他路由器接收来的信息重发布。然而,一旦需要支持
随机拓扑,链路可达性协议需要开发成一个全路由协议,由于需要避免死环,重新发明一种路
由协议没有什么好处。为什么在一个隧道环境中也需要部分连接网已经在5.1.1中讨论过。
5.3.4.5 IP骨干网路由协议的背载操作
    VPRN成员资格和关联于每个头接口的地址前缀也背载在从每个边缘路由器的路由广播和网
络的传播中。其他路由器就像它们获得VPRN成员资格信息那样(隐含在每个路由广播源的标识
中)抽取该信息。注意,由于所设计路由协议的特性,这个方案可能要求中间路由器--如边
缘路由器,缓存内联VPRN路由信息,以便重发;同时,这也隐含了安全要求,提出了内联VPRN
路由信息可能的安全水平。
    注意,上面所说的任何情况,边缘路由器都要以某种方式发布桩链路前缀,以允许从远端
边缘路由器直接流出桩链路的隧道传输。它也可以发布这些信息,以便让边缘路由器关联所有
的前缀,而不是特定的桩链路。这种情况下,边缘路由器需要实现一个VPN特殊转发机制以导出
流量,确定正确的桩链路。这样做的一个好处就是可以很大程度上减少不同隧道的数目以及需
要创建和维护隧道的标签信息。注意,这个选择只是本地事件,对于远端边缘路由器是不可见
的。
5.3.5 隧道机制
    一旦VPRN成员资格信息得到发布,包含VPRN内核的隧道就可以构建了。
    建立隧道网的一种方法是用点到点IP隧道,这种隧道的要求和存在的问题已经在3.0节中讨
论过了,例如,虽然隧道的建立可以通过手工配置,但是却不容易升级,(数量级O(n^2))。
象这样的话,隧道的建立需要用某些形式的信令协议,以允许两个节点构建隧道,能够知道双
方的身份。
    另一种方法是用多点到点的隧道,如MPLS。如【38】所提到的,MPLS可以视为某种形式的
IP隧道,由于MPLS包的标记允许路由,弱化了数据包本身地址信息的作用。MPLS标记发布机制
可以用来关联MPLS标记集和出口点(如桩链路和边缘路由器)的VPRN地址前缀,因而允许其他路
由器显式地标记和路由,把流量导向特定的VPRN头链路。
    MPLS的引人之处在于,作为一种隧道机制,它仅仅要求很少的处理,这主要是因为MPLS网
络的数据安全隐含在显式的标记绑定中,而不象面向网络的连接,如帧中继。因而使得用户不
必为数据安全的处理做过多考虑,比如IPSec。然而,MPLS却有其他潜在的安全问题,它没有直
接的认证、机密性和完整性这样的安全特性,MPLS的信任模型意味着需要通过中间路由器,(可
能属于不同管理域)来传送成员资格和前缀可达性信息,因而中间路由器必须得到信任,而不
仅是边缘路由器本身。

5.4 多宿桩路由器
    这里假定桩路由器仅仅连在一个VPRN边缘路由器,总起说来,如果市场因为可靠性或者其
他原因,这个限制可以减少VPRN操作。特别是如果桩路由器支持多宿冗余链路,一次只有一个
运行,链路连在同一个VPRN边缘路由器上,或者两个或多个不同VPRN边缘路由器上,那么桩链
路可达性机制既要能够发现活动链路的丢失,又要主要备份链路的活动。在前一种情况,前一
个连接的VPRN边缘路由器将停止广播可达性信息,而带有活动链路地VPRN边缘路由器将开始广
播可达性,然后存储连接。
    另一种可能的情况是,桩节点使用某些形式地负载共享算法,支持多活动链路,这样,多
个VPRN边缘路由器便可能有几条活动通道,从而可以通过VPRN广播。如果内联VPRN可达性机制
可以提供多通道到相同的前缀,并且有适当的机制避免死锁--如,为每个广播前缀关联一个
距离向量矩阵,这种方式不会造成可达性的任何问题,

5.5 多播支持
    多播和广播包括两种,一是在VPRN上通过骨干网边缘复制,二是本地多播支持。下面讨
论这两种情况。
5.5.1 边缘复制
    VPRN边缘路由器在VPRN的每条链路上复制多播数据,这种操作与CPE路由器终止物理链路或
专线的操作相同。对于CPE路由器,多播路由协议可以运行在每个VPRN边缘路由器,以确定多播
流量的发布树,进而减少泛播的必要性。可以由标准多播路由协议实例运行来实现,如PIM【39】
或者DVMRP【40】,在每个边缘路由器上或者它们之间,通过VPRN隧道,与内联VPN单播可达性
路由协议一样,如5.3.4所述。还可以这样,如果一各链路可达性协议运行在VPRN隧道上,那么
就让VPRN边缘路由器既指示特定多播组,又支持多播源。
    无论那种情况,都必须有某些机制让VPRN边缘路由器确定站点要求哪个多播组、那个多播
源,如何实现这个功能是每个站点CPE桩路由器的事情。如果运行多播路由协议,那么它们可以
和等同的协议在每个VPRN边缘路由器直接交互,然后在缺少IGMP代理【41】的情况下,客户站
点将通过桥设备把到VPRN边缘路由器的连接限制在一个子集,然而,使用IGMP代理,CPE路由器
可以不必运行多播路由协议就能完成转发多播转发。在客户站点的接口处,CPE路由器执行IGMP
路由功能,在VPRN边缘路由器的接口处,执行IGMP主机功能。

5.5.2 本地多播支持
    这是指,VPRN边缘路由器映射内联VPRN多播流量到本地IP多播发布机制。注意,内联VPRN
多播同骨干网的内联VPRN单播有相同的要求。目前,具有多播本地支持的IP隧道机制只有MPLS。
另一方面,在MPLS支持IP多播包的本地传输时,将需要额外的机制来支持内联VPRN多播。
    例如,每个VPRN路由器可以为多播组地址加前缀,然后重发布,其实就是把VPN-ID/内联
VPRN多播地址组作为普通的多播地址,用在骨干多播路由协议上。MPLS多播标记发布机制可以
用来建立合适的多播LSP,互联VPRN支持多播组地址的站点。然而需要注意的是,这要求每个中
间LSR不仅要知道每个内联VPRN多播地址,而且也要具有解释修改的广播的能力。另外,也可以
定义映射内联VPRN多播地址到骨干多播组的机制。
    其他的IP隧道机制没有本地多播支持,这可以通过把IP多播组地址作为一个整体分配给
VPRN来实现,此时将在骨干多播数据包上封装内联VPRN多播数据,边缘VPRN路由器可以过滤出
不想要的多播组。还有一种情况是,也可以定义一种机制,为特定内联VPRN多播组分配骨干多
播组地址,通过骨干多播协议,把内联多播数据限定在组的节点上。
    使用本地多播支持的问题就在于这些多播数据的安全性,边缘复制集成了基础隧道的安全
特性,而本地多播不同于边缘复制,它将需要某些特殊形式的安全多播机制。安全多播解决方
案的开发是一个非常活跃的领域,见【42】和【43】,安全多播组(SMuG),IRTF,都已经建
立了解决方案的开发模型,然后将通过IETF IPSec工作组来标准化。

5.6 建议
    支持VPRN功能的建议大体可以分为两大类--一是使用路由背载方法发布VPN成员资格和
可达性信息(【13】,【15】),二是使用虚路由方法(【12】,【14】)。许多情况下,协
议的机制依赖于特定基础结构的特性(如,MPLS),而仅仅是IP。
    在虚路由方法的场景中,基于目录或者MIB开发成员资格发布协议很有用处,当和3.2所述
的IP隧道协议扩展结合时,便可以提供一个完全的协议集和运作机制,支持IP骨干网上横跨几
个管理域的可操作的VPRN,当然还需要其他的功能--学习发布客户可达性信息,这可以由标
准路由协议实例执行,而不需要任何协议扩展。
    因为全网拓扑的限制,需要考虑一下链路可达性协议开发的用处,如果标准路由可以工作
的话,全网拓扑的限制和升级问题可能使得开发工作不太值。
    也需要考虑扩展路由协议,以便在路由更新包中传送VPN-ID,但是如果使用了VPN专用隧
道,这就不太需要了。

6.0 VPN类型:虚拟专用拨号网
    VPDN允许一个远端用户可以通过ad hoc隧道按需地接入到另外一个站点。用户通过拨号
PSTN或者ISDN链路连接到公共IP网络上,用户数据包通过公众网络隧道传输到所要到达的站点,
对用户来说就好像直接连接到那个站点,这种ad hoc连接的一个关键特性就是需要为用户认证,
因为任何用户可能通过交换拨号网络接入这样的站点。
    现在许多公司网络允许远端用户通过PSTN接入,让用户建立通过接入网到网络接入服务器
的PPP连接,在接入服务器上PPP会话使用AAA系统(如,RADIUS【44】)认证,由于这种系统已
经非常普遍采用,VPDN系统必须能够对这些已有系统透明复用。
    IETF开发了L2TP【8】,使用户的PPP会话能够从L2TP LAC传输到远端L2TP LNS,L2TP依赖
于它以前两个协议,即L2F【45】和PPTP【46】,这也恰好反映了L2TP的两种不同的应用方法-
-强制隧道和自发隧道,在下面的的6.2和6.3节中将进一步讨论。
    本文的重点在于L2TP over IP(用UDP),其实L2TP还可以直接运行在其他协议上,如ATM
和FR,对于L2TP运行在非IP网络上的问题,如非IP隧道安全的保证等,在本文不作叙述。
6.1 L2TP协议特性
    本节用3.0的分类方法来看一下L2TP隧道协议的特性。
6.1.1 复接
    L2TP支持复接,可以在一个单独的链路上复接不同用户的呼叫,也就是在同两个IP端点上,
可以有许多个L2TP隧道,由Tunnel ID来标识,在一条隧道上可以复接许多个会话,由Session ID
来标识。
6.1.2 信令
    由内建控制连接协议来支持,允许隧道和会话的动态建立。
6.1.3 数据安全性
    通过允许PPP从用户通过LAC到LNS的透明伸展,使用普通的PPP连接,L2TP对连接建立数据
传输都允许使用任何形式的安全机制。然而这没有对L2TP控制协议本身提供安全,L2TP可以进
一步与IP骨干网的IPSec或者非IP骨干网的其他一些相关机制结合来实现隧道安全。
    L2TP和AAA系统为用户认证和授权的交互作用是L2TP所拥有的特别功能,是支持LAC和LNS
设备的本质所在,在【50】中有对这一问题的详细讨论。
    主机如何连接到正确的LAC,以及LAC如何确定那个用户所连接的隧道、LNS和每个用户如何
协商参数等,都已经超过了VPDN的操作范围,可以由像发展Internet漫游规范【51】那样来解
决它。
6.1.4 多协议传输
    L2TP传输PPP包(仅仅PPP包),PPP本身可以传输多协议。
6.1.5 序列
    L2TP支持包的序列传送,这是一种可以在会话建立时协商的能力,可以由LNS在会话期间打
开或者关闭,L2TP的序列号域也可以用来提供丢失包指示,许多PPP压缩算法的运作都需要这项
功能。如果没有使用压缩,LNS确信使用(由PPP NCP协商显示)中的协议能够处理序列包(如
IP),序列可以禁止。
6.1.6 隧道维护
    L2TP使用了一种保持存活协议,能够区分隧道超时和隧道非活动状态时间的延长。
6.1.7 MTU问题
    L2TP本身没有拆装支持,但是运行在UDP/IP上,IP拆分可以在需要时启用。注意如果知道
LAC和LNS通道上的MTU,LAC和LNS可以调整PPP协商的MRU以消除拆分,后来就有了L2TP隧道传输
IP帧的MTU发现建议【52】。
6.1.8 隧道开销
    L2TP运行在IP网络上时,要在UDP上传输PPP数据,导致了很大的开销,不仅仅存在于UDP、
L2TP和PPP头的数据平面里,而且存在于L2TP和PPP控制平面里,这在6.3节里将进一步讨论。
6.1.9 流量和拥塞控制
    L2TP为控制协议支持流量和拥塞控制,但是不为数据传输协议提供支持,详见3.1.9。
6.1.10 QoS/流量管理
    L2TP头包含1比特的优先级域,可以为在本地排队和传输中需要优先处理(如,保持存活)
的数据包设立;也可以通过透明扩展PPP,让L2TP支持如多链路PPP【53】和联合控制协议【54】
的PPP机制,来按需满足用户要求的带宽。
    另外,L2TP呼叫可以映射到任何拥有的基础流量管理机制的网络中,有建议允许通过L2TP
信令实现请求特种业务行为【55】。
6.1.11 其他
    由于L2TP透明传输扩展PPP,它不打算代替PPP提供的普通地址分配机制,因此,发起PPP
会话的主机将由LNS按PPP规程分配地址,这个地址与LAC和LNS的地址无关,LNS也要支持远端主
机数据路由所需的任何形式的转发机制。
6.2 强制隧道
    强制隧道是指这种情况:一个网络节点--如拨号服务器或者网络接入服务器,作为LAC,
把PPP会话通过骨干网伸展到远端LNS,如下图示。这对于向LAC发起PPP会话的用户来说是透明
的,终止拨号呼叫的modem池的位置和拥有权不再那么重要,因为通常都是从站点到modem用户
提供接入。这正是L2F规范的所支持一种情形情况,L2TP规范基于此保留了这项支持。
    强制隧道有许多应用场合,如下图所示,用户主机拨入NAS,NAS作为一个LAC,通过IP网络
(如Internet)隧道连接到一个LNS网关,网关提供到公司网络的接入,可以是公司网络自身,
也可以是ISP边缘路由器--用户把LNS功能的维护包给了ISP。还有一种情况是ISP用L2TP提供
用户接入Internet,用户主机拨入NAS(作为LAC),通过一个接入网接入到ISP边缘路由器(用
作LNS),ISP边缘路由器将用户数据流量馈送到Internet上。再者,就是ISP用L2TP提供用户接
入VPRN,或者同时提供VPRN接入和Internet接入。
    VPDN,不论是用强制隧道还是自发隧道,都可以视为一种用户数据接入方法,从而提供不
同类型网络的接入,如,公司网络、Internet或者VPRN,接入VPRN也就实现了这样一个实例,
那就是结合不同类型的VPN为用户提供VPN业务。

   10.0.0.1
   +----+
   |Host|-----    LAC      -------------     LNS        10.0.0.0/8
   +----+   /   +-----+   (             )   +-----+     ---------
           /----| NAS |---( IP Backbone )---| GW  |----( Corp.   )
        dial    +-----+   (             )   +-----+    ( Network )
        connection         -------------                ---------

                   <------- L2TP Tunnel ------->

     <--------------------- PPP Session ------->

                 Figure 6.1: Compulsory Tunneling Example

    强制隧道起先是要让网络接入服务器支持批发拨入业务,允许远端拨号接入通过普通的设
施接入到一个企业站点,而企业不需要使用它自己的拨入服务器。另一个例子是,ISP把自己的
拨入连接卖给接入网络提供商(如本地交换载波),ISP不必再维护自己的拨号服务器,这样做
的好处还在于可以允许LEC服务于多个ISP。最近,也有人建议发展DSL强制隧道【56】,【57】,
寻求对现存AAA结构的充分利用。
    强制隧道的呼叫路由要求允许LAC确定LNS的身份的一些PPP建立的特征,如【50】所注,包
括用户身份--通过接入网络的某些方面确定,包括呼叫方号码,或者还包括被叫方的一些属