VPN的用途
代理服务器Proxy Server,其功能就是代理网络用户去取得网络信息。形象的说:它是网络信息的中转站。
与代理服务器不同。VPN是解决通过外网访问内网资源的一种远程连接方式,如下面的情况:
• 公司出差员工,可以通过vpn登陆公司内网进行办公;(远程接入VPN)
• 各个分公司可以通过vpn与总公司联系;(内联网VPN)
什么是VPN
VPN就是利用开放的公众IP/MPLS网络建立专用数据传输通道,将远程的分支机构、移动办公人员等连接起来。
• V(Virtual): 虚拟通道,不需要专用线路。
• P(Private): 安全的,数据进行加密传输
• N(Network): 远程连接
VPN虚拟专用网,通过对传输的数据进行加密,在公网上实现了一条虚拟的所谓专用线路进行安全传输。所以,如果需要在公网或者外网访问内网的资源或者电脑,那就可以在内网建立VPN,这样就方便多了。
逻辑专网:VPN是使用IP设施对专用广域网(WAN)设施的仿真。
VPN的类型
根据网络功能分类:
• L3VPN、L2VPN、AccessVPN
根据管理责任分类:
• 用户端管理的VPN
• 服务端管理的VPN(PPVPN)
设备位置分类:
• VPN设备在用户端
• VPN设备在服务提供者端
IP-in-IP封装(IP 隧道:IP tunneling)
• 将要传送的IP报文封装在另一个IP报文
• 外层报头的源宿地址分别是隧道的起点和终点
• TTL要足够大,以穿越隧道
• 封装前要检查由是否存在路由回路
最小封装
• 通过去掉封装报文中内层IP报头和外层IP报头中的冗余部分来减少隧道的额外开销。
• 由于分段字段被压缩掉了,因此被封装的IP报文不能分段。
Generic Routing Encapsulation(GRE)
用于用IP报文封装任意一种其它报文。
注:IP-in-IP和GRE都是属于IP隧道技术
L2VPN 和 L3VPN
L3VPN可以当作是一个超级路由器,一般作为国干网的核心,起到连接各个大区节点的作用;
L2VPN可以理解为一个超级交换机,一般是省市城域网里面用;
MPLS L2VPN
简单来说,MPLS L2VPN就是在MPLS网络上透明传输用户二层数据
VPWS(Virtual Private Wire Service)流量封装
• 利用隧道标签在PE之间交换数据包
• VC标签标识PW
• 在PEs之间标记VC label
• LSP隧道提供了隧道标记(Tunnel label)
• 可选控制字(CW)携带L2控制位并启用排序
VPWS转发过程
CE路由器的处理:接入链路AC (CE与PE的连接)的报文封装方式由用户的接入方式决定,包括VLAN接入和Ethernet接入。如果是VLAN接入, CE发送到PE的以太网帧头带有一个VLAN TAG,是ISP (Internet Service Provider)为了区分用户而要求打上的服务定界符,称为P-TAG。如果是Ethernet接入, CE发送到PE的以太网帧头中不带PTAG,如果此时帧头中有VLAN TAG,则它只是用户报文的内部标识,称为U-TAG, U-TAG是该报文在发送到CE前已经携带,而不是CE打上的,用于CE区分该报文的VLAN,对于PE设备没有意义。
PE路由器的处理:当二层透传的端口有数据包进入PE路由器时, PE路由器通过匹配VCID找到与之对应的隧道标记和虚拟链路标记, PE路由器会将此数据包打上两层标记,其中外层标记为隧道标记,指示从该PE路由·器到目的PE路由器的路径,内层标记为虚拟链路标记,指示在该目的PE路由器上属于哪个VCID对应的路由器端口。PE路由器要监视各自端口上的二层协议状态,当出现故障时,通过标记分发协议进程来取消虚拟链路标记,从而断开二层透传,避免产生单向无用数据流。
CE1发送经过二层封装的报文到PE1, PE1查对应的Virtual SwitchInstance(虚拟交换实例)中的表项,为该报文选择隧道和PW, PE1路由器会将此数据包打上两层MPLS标签(外层标记隧道标记和内层标记虚拟链路标记) ,再进行二层封装后转发。PE2路由器收到PE1发送来的报文,对该报文进行解封装,即去掉PE1的二层封装和两层MPLS标签,然后把解封装后原始二层报文发给CE2。
基于MPLS的以太网:支持两种传输模式(以太网VLAN模式、以太网端口)
**VPLS(Virtual Private LAN Service)**是通过分组交换网络PSN连接多个以太网LAN网段,使它们像一个LAN那样工作。
VPLS PE的控制平面主要有以下两种功能
1)成员发现:找到同一VPLS中所有其他PE的过程。这可以通过手工配置的方式实现,也可以通过使用某些协议自动完成。使用协议自动完成的发现方式称为“自动发现”。
2)信令机制:在同一VPLS的PE之间建立、维护和拆除PW的任务是由信令协议完成的。(使用BGP或LDP信令实现VPLS的控制平面的功能)
LDP和BGP不同:
采用LDP协议比较简单,对PE要求相对较低, LDP不能提供VPN成员自动发现机制,需要手工配置;采用BGP协议要求PE运行BGP,对PE要求较高,可以提供VPN成员自动发现机制。LDP方式需要在每两个PE之间建立LDP Session,其Session数与PE数的平方成正比;而用BGP方式可以利用RR (Route Reflector)降低BGP连接数。LDP方式分配标签是对每个PE分配一个标签,需要的时候才分配; BGP方式则是分配一个标签块,对标签有一定浪费。LDP方式必须保证所有域中配置的VPLS Instance都使用同一个vSI ID值空间,BGP方式采用VPN Target识别VPN关系。
报文转发过程
VPLS PE的数据平面也主要有以下两种功能
1)封装:从CE收到的以太网帧后,PE首先对其封装后再发送到分组交换网络上。
2)转发:根据报文是从哪个接口上接收的以及报文的目的MAC地址决定如何转发报文。
VPWS和VPLS两者都提供了私有的二层VPN服务,不同的是VPWS提供的是第二层的点到点服务,也称为L2VPN。
而VPLS提供的是点到多点服务,类似于将骨干网虚拟成一个大的交换机。
与VPWS服务类似的还有一种L2TPv3(第二层隧道协议版本3),两者的区别在于承载流量的底层协议不同,VPWS承载在MPLS上,而l2tpv3承载在IP网络中
Forwarding
• MAC Address Learning:SP网络可被视为一个网桥
• Aging:转发表FIB的时效控制
• Flooding:PE不转发Flooding帧
虚拟局域网标签(VLAN Tag):用以标识VLAN的相关信息
• 服务定界:VLAN Tag由服务提供者设置,用来区分不同用户的流量,NSP在将以太帧交给PW终点之前将raw mode剥去。
• 非服务定界:用户自己的VLAN定义
如果两种VLAN Tag同时使用,则服务定界VLAN Tag总在外层。
P-VLAN与C-VLAN之间的控制信息交互
• Peer mode(P-VLAN的OAM与C-VLAN的OAM对等交换信息)
• Tunnel mode(C-VLAN的控制信息透明穿越)
• Discard mode(P-VLAN丢弃C-VLAN的控制帧,例如用户的PAUSE帧。)
Mulit-homing 和 Path Selection
• CE可同时接入多个PE
• 两个VPLS NLRI相同:Route Distinguisher、VE ID和VBO均相同
L3VPN
L3VPN是为了将私网和公网进行对接,就好比将一个个的私人空间与公共空间对接,同时也能从公共空间获取对个人有用的资源。
私网VPN1和VPN2分别通过公共网络实现相互通信。这两个VPN私网可以使用相同的IP地址,那么如何区分呢?答案就是采用VRF实现不同VPN之间的路由隔离。且每个VRF在PE上都会有相对独立的路由表和标签转发表(根据这两个转发表,实现在公共网络内不同VPN业务按照各自的最优路由达到目的地)。
Peer模型
• IP网络的受限互联结构
• CE将自己的路由通告给所附接的PE
• PE仅在同一个VPN的PE之间使用BGP相互通告所了解的路由
• BGP对每个路由都指派一个MPLS标记 (因为可能是私有地址),也由BGP通告;报文由宿地址对应的MPLS标记标识,然后封装在SP网络的IP隧道中进行传输
VPN路由转发表:在PE的各个端口定义VPN、在PE中配置所有的CE (用CE-id标识),特定的RT属性,PE中连接这些CE的物理端口、PE对收到的标记信息要根据其所属的RT来判定它属于哪个VPN
基本结构
• 使用VRF(Virtual Routing and Forwarding)来表示VPN customer,需要网管配置
• PE使用IGP向全局路由表提供正常路由
• PE使用VRF-aware路由协议向VRF路由表提供VPN customer路由
VRF:为了在边缘侧设备上识别不同的VPN信息,提出了VRF的概念。在L3VPN组网中,不同VPN之间的路由通过VRF进行隔离。每个VRF可以看做是一台虚拟的PE设备,管理单独的VPN业务,储存路由信息。每个VRF包含的路由信息有与此VRF相关的直连从客户边缘侧接收到的路由,以及从其他网络侧边缘路由器接收到的具有可接受的BGP属性的路由。
控制平面处理流程
• PE1收到一个IPv4路由更新
• PE1将其翻译成为VPNv4地址并以此构造 MP-iBGP UPDATE message
• PE1使用MP-iBGP将这个路由更新发送到其它PE
• PE2接收后检查是否本地有VRF的 import RT被设置成 RT=1:2
• PE2用正常方式将这个IPv4 prefix通告给CE2
数据平面处理流程
• PE2 使用两个MPLS标号(外层标号对应PE1的地址,通过LDP分配,内层标号对应VPN地址,通过BGP分配)
• P1 倒数第二跳(PHP)
• PE1从MPLS报文中获得IP报文并转发给CE1
Inter-AS L3VPN
• VPN的各个节点分布在不同的MPLS网络中
• VPN的路由信息如何在不同的AS之间发布
-方案1:VRF直连
-方案2:使用直接相邻的MP-BGP发布VPN路由
-方案3:基于RR的多条MP-BGP路由发布
方案1:使用连续的VRFs来连接ASBRs;VRF需要在路由器中显式地创建,每个VPN一个;ASBR之间不使用MPLS,但是不同的VPN配置使用不同的路由表(VRF)。
方案2
(控制平面):PE把所有的VPN路由通告给ASBR;ASBR将所有VPNv4保存在BGP路由表中,并在转发前重写下一跳和标签字段;ASBR没有VRF表,除非它同时也是PE;
(数据平面):L1、L2和L3均为BGP VPN标号;隧道标号(基于IGP路由)未显示。
方案3
(控制平面):不同的AS之间使用RR(路由反射器)交换VPN路由;ASBR要对隧道标号重分配,所以LSP是不跨域的。
(数据平面):使用三层MPLS标记:最内层标记L1标识VPN的网段;中间层标记(L2、L3)VPN的节点;最外层标记PE1和PE2之间的正常MPLS网络LSP。
Segment Routing
定义:SR是一种新型的MPLS技术,其中控制平面基于IGP路由协议扩展实现,转发层面基于MPLS转发网络实现,对的segment在转发层面呈现为标签。SR-TE是使用SR作为控制信令的一种新型的MPLS TE隧道技术,控制器负责计算隧道的转发路径,并将与路径严格对应的标签栈下发给转发器,在SR-TE隧道的入节点上,转发器根据标签栈进行转发。
SR架构基于源路由。节点(路由器、主机或设备)选择路径,并且引导数据包沿着该路径通过网络,具体实施是在数据报头中插入带顺序的段列表(segment list),以指示收到这些数据包的节点怎么去转发和处理这些数据包。
Segment其实就是MPLS的标签,以下分为全局段和本地段,类似于公网地址和私网地址:
全局(global)Segment
SR域的任一节点都明白该Segment的相关指令。SR域的每个节点的转发表中都安装了该Segment相关指令(到达目的地的最短路径)。在MPLS SR 中:为段路由全局块(SRGB)中的全局标签值。–SRGB(标签范围)
本地(local)Segment
只有该Segment的始发节点明白他的相关指令。在MPLS SR 中,为本地分发的标签。
粘连标记:相当于将过长路径标签的一部分封装为一个标记,当到达某个节点的时候,再将这个标记转换为之前的标记。
转发过程
①入节点A
入节点A为数据报文添加标签栈{1003,1006,100},然后根据栈顶的标签1003匹配链路,找到对应的转发出接口为A->B链路,之后将标签1003弹出。报文携带标签栈{1006,100},通过A->B链路向下游节点B转发。
②中间节点B
中间节点B收到报文后,根据栈顶的标签1006匹配链路,找到对应的转发出接口为B->C链路,之后将标签1006弹出。报文携带标签栈{100},通过B->C链路向下游节点C转发。
③粘连节点C
粘连节点C收到报文后,识别出栈顶的标签100为粘连标签,将粘连标签100交换为与其关联的标签栈{1005,1009,1010},然后根据新的栈顶的标签1005匹配链路,找到对应的转发出接口为C->D链路,之后将标签1005弹出。报文携带标签栈{1009,1010},通过C->D链路向下游节点D转发。
④中间节点D、E
节点D、E收到报文后,以与中间节点B相同的方式继续转发。直到节点E弹出最后一个标签1010,数据报文转发至节点F。
⑤出节点F
出节点F收到的报文不带标签,通过查找路由表继续转发。