发明内容
有鉴于此,本发明提供了一种远程接入MPLS VPN的方法,使得远程用户能够通过自身与SSL VPN网关之间的SSL连接,远程访问MPLS VPN中的VPN资源。
远程用户通过自身与安全套接层虚拟专用网络SSL VPN网关之间的SSL连接访问MPLS VPN中的VPN资源服务器,所述SSL VPN网关同时作为MPLS交换网中的服务提供商边缘PE路由器。
该方法包括:
A、在SSL VPN网关中创建多个虚拟接口,一个VPN绑定一个虚拟接口,根据VPN绑定的虚拟接口形成VPN实例;根据用户的认证授权信息区分不同VPN的用户,将用户的认证授权信息与相应VPN绑定;
B、用户x与SSL VPN网关之间进行信息交互,建立与远程接入相关的连接;
C、SSL VPN网关接收用户x通过SSL连接发来的报文,根据用户x的认证授权信息绑定的VPN实例,为所接收报文添加VPN标签和MPLS转发标签,并通过MPLS交换网转发到VPN资源服务器;
D、SSL VPN网关接收所述VPN资源服务器的返回的应答报文,根据该应答报文携带的VPN标签查找相应VPN实例,根据查找到的VPN实例将应答报文通过所述SSL连接返回给用户x。
与用户x的认证授权信息绑定的VPN实例包括路由转发表项1:目的地址为虚拟接口V1的IP地址,下一跳为内部环回接口地址;所述虚拟接口V1为用户x所属VPN绑定的虚拟接口;
当采用传输控制协议TCP或网页WEB方式接入VPN资源服务器时:
步骤B所述建立与远程接入相关的连接包括:当用户x请求访问VPN资源服务器S1时,建立用户x与SSL VPN网关之间的SSL连接;
为用户x建立虚拟接口V1与VPN资源服务器S1之间的TCP连接;所述虚拟接口V1为用户x所属VPN绑定的虚拟接口;在建立所述TCP连接过程中,根据用户x的认证授权信息绑定的VPN实例,为所述TCP连接的套接字SOCKET设置VPN实例标签索引;
所述步骤C包括:接收用户x通过SSL连接发来的报文,根据为用户x建立的TCP连接的信息,在TCP层为所接收报文添加VPN实例标签索引,再由MPLS模块根据VPN实例标签索引找到相应VPN实例,为报文添加VPN标签和MPLS转发标签,然后通过为用户x建立的TCP连接将报文转发给VPN资源服务器S1;
所述步骤D包括:接收通过所述TCP连接返回的应答报文,根据该应答报文携带的VPN标签查找相应VPN实例;根据所述应答报文的私网目的地址在查找到的VPN实例中匹配到所述路由转发表项1,获得下一跳为内部环回接口地址,则直接将所接收的应答报文转发到上层应用,该上层应用通过所述SSL连接将应答报文发送给用户x。
所述步骤C包括:
c1、报文通过SSL连接进入SSL VPN网关后,由位于IP层的IP模块去掉报文的公网IP头,将报文的数据部分经由TCP模块上送到位于应用层的SSL VPN业务模块;
c2、所述SSL VPN业务模块确定将所接收的报文通过为用户x建立的TCP连接转发;
c3、位于TCP层的TCP模块根据为用户x建立的TCP连接,为报文添加私网IP头,并且根据SOCKET的VPN实例标签索引在报文中记录VPN实例标签索引;
c4、位于IP层的IP模块通过路由查找确定由MPLS转发,并将报文发送给位于网络接口和IP层之间的MPLS模块;
c5、所述MPLS模块根据报文携带的VPN实例标签索引查找相应VPN实例,根据查找到的VPN实例为报文添加VPN标签和MPLS转发标签并转发。
所述步骤D包括:
d1、应答报文通过所述TCP连接进入SSL VPN网关后,位于网络接口和IP层之间的MPLS模块根据应答报文携带的VPN标签确定报文所属VPN,将去掉VPN标签的报文及其所属VPN信息发送给位于IP层的IP模块;
d2、所述IP模块根据所述所属VPN信息获取相应VPN实例,并根据所述应答报文的私网目的地址在获取的VPN实例中匹配到所述路由转发表项1,获得下一跳为内部环回接口地址,然后直接将去掉私网IP头的应答报文经由TCP层转发到位于应用层的SSL VPN业务模块;
d3、所述SSL VPN业务模块确定将接收自所述TCP连接的应答报文通过所述SSL连接发送给用户x,并将应答报文发送给所述TCP模块;
d4、所述TCP模块根据所述SSL连接的信息为报文添加公网IP头,由IP模块将报文通过所述SSL连接发送给用户x。
与用户x的认证授权信息绑定的VPN实例包括路由转发表项2:目的地址为虚拟接口V1所在网段,下一跳为虚拟接口V1的IP地址;所述虚拟接口V1为用户x所属VPN绑定的虚拟接口;
当采用IP方式接入VPN资源服务器时:
步骤A所述创建多个虚拟接口为:对应为每个VPN设置的地址池创建一个虚拟接口;对应的地址池和虚拟接口属于同一网段;
所述步骤B包括:SSL VPN网关从为用户x所属VPN设置的地址池中为用户x分配虚地址Add_x;当用户x请求访问VPN资源服务器S1时,建立用户x与SSL VPN网关之间的SSL连接;
所述步骤C包括:接收用户x通过SSL连接发来的携带私网IP头的报文,其私网源地址为Add_x;根据用户x的认证授权信息绑定的VPN实例,在IP层为所接收报文添加VPN实例标签索引,再由MPLS模块根据VPN实例标签索引为报文添加VPN标签和MPLS转发标签,然后根据报文携带的私网IP头,通过直接IP转发方式将报文转发给VPN资源服务器S1;
所述步骤D包括:接收返回的应答报文,根据该应答报文携带的VPN标签查找相应VPN实例;根据所述应答报文的私网目的地址Add_x在查找到的VPN实例中匹配到所述路由转发表项2,获得下一跳为虚拟接口V1,则通过所述虚拟接口V1将应答报文经由所述SSL连接转发给用户x。
所述步骤C包括:
c1、报文通过所述SSL连接进入SSL VPN网关后,由IP层的IP模块去掉报文的公网IP头,将保留私网IP头和数据部分的报文发送到位于应用层的SSL VPN业务模块1,SSL VPN业务模块1把报文发送给位于IP层的SSL VPN业务模块2;
c2、所述SSL VPN业务模块2确定以直接IP转发方式转发报文,将报文发送给位于IP层的VPN标签处理模块;
c3、所述VPN标签处理模块根据用户x的认证授权信息绑定的VPN实例,在报文中记录VPN实例标签索引,然后将报文发给IP模块;
c4、所述IP模块通过路由查找确定由MPLS进行转发,并将报文发给位于网络接口和IP层之间的MPLS模块;
c5、所述MPLS模块根据报文携带的VPN实例标签索引查找相应VPN实例,根据查找到的VPN实例为报文添加VPN标签和MPLS转发标签并转发。
所述步骤D包括:
d1、应答报文进入SSL VPN网关后,位于网络接口和IP层之间的MPLS模块根据应答报文携带的VPN标签确定报文所属VPN,将去掉VPN标签的报文及其所属VPN信息发送给IP层的IP模块;
d2、所述IP模块根据所述所属VPN信息获取相应VPN实例,并根据应答报文的私网目的地址Add_x在获取的VPN实例中匹配到所述路由转发表项2,获得下一跳为虚拟接口V1;
d3、位于IP层的SSL VPN业务模块2确定通过虚拟接口V1将应答报文经由所述SSL连接发送给用户x,并将应答报文发送给位于应用层的SSLVPN业务模块1,SSL VPN业务模块1将应答报文发送给位于TCP层的TCP模块;
d4、所述TCP模块根据所述SSL连接的信息为应答报文添加公网IP头,由IP模块通过所述SSL连接将报文发送给用户x。
较佳地,VPN与虚拟接口绑定以及用户与VPN实例绑定后,进一步形成对应关系表,该对应关系表包括用户标识、用户的认证授权信息、虚拟接口和绑定的VPN实例的标签索引。
所述认证授权信息为用户组、和/或虚拟域、和/或角色。
所述虚拟接口为SSL VPN虚拟以太网接口或环回接口。
本发明提供了一种网关,能够作为SSL VPN网关和PE路由器,使得远程用户能够通过自身与该网关之间的SSL连接,远程访问MPLS VPN中的VPN资源。
所述网关同时作为SSL VPN中的SSL VPN网关和MPLS VPN中的PE路由器;
所述网关包括配置单元、第一网络接口、第二网络接口、处理单元、VPN实例存储单元和对应关系存储单元;
所述配置单元,用于创建多个虚拟接口、一个VPN绑定一个虚拟接口,根据VPN绑定的虚拟接口形成VPN实例,将形成的VPN实例存储在VPN实例存储单元中;根据用户的认证授权信息区别不同VPN的用户,将用户与相应的认证授权信息与相应VPN实例绑定;将建立的各种绑定关系存储在对应关系存储单元中;
所述对应关系存储单元,用于存储配置单元建立的绑定关系;
所述VPN实例存储单元,用于存储VPN实例;
第一网络接口,为所在网关和用户之间提供数据传输通道;
第二网络接口,为所在网关和MPLS交换网提供数据传输通道;
处理单元,用于与用户x进行信息交互,建立与远程接入相关的连接;当接收到用户x通过SSL连接发来的报文时,根据所述对应关系存储单元存储的绑定关系,从所述VPN实例存储单元获取用户x的认证授权信息绑定的VPN实例,采用获取的VPN实例为所接收报文添加VPN标签和MPLS转发标签,并通过MPLS交换网转发给VPN资源服务器;当接收到所述VPN资源服务器返回的应答报文时,根据该应答报文携带的VPN标签在所述VPN实例存储单元中查找相应VPN实例,根据查找到的VPN实例将应答报文通过所述SSL连接返回给用户x。
其中,与用户x的认证授权信息绑定的VPN实例包括路由转发表项1:目的地址为虚拟接口V1的IP地址,下一跳为内部环回接口地址;所述虚拟接口V1为用户x所属VPN绑定的虚拟接口;
当采用TCP或WEB方式接入VPN资源服务器时,所述处理单元进一步用于:
在建立与远程接入相关的连接时,建立用户x与所在网关之间的SSL连接,为用户x建立虚拟接口V1与被请求访问的VPN资源服务器S1之间的TCP连接;在建立所述TCP连接过程中,根据用户x的认证授权信息绑定的VPN实例,为所述TCP连接的SOCKET设置VPN实例标签索引;
在接收到用户x通过所述SSL连接发来的报文时,根据为用户x建立的TCP连接的信息,在TCP层为所接收报文添加VPN实例标签索引,再由处理单元中的MPLS模块根据VPN实例标签索引找到相应VPN实例,为报文添加VPN标签和MPLS转发标签,然后通过为用户x建立的TCP连接将报文转发给VPN资源服务器S1;
在接收到通过所述TCP连接返回的应答报文时,根据应答报文携带的VPN标签查找相应VPN实例,根据所述应答报文的私网目的地址在查找到的VPN实例中匹配到所述路由转发表项1,获得下一跳为内部环回接口地址,则直接将所接收的应答报文转发到上层应用,该上层应用通过所述SSL连接将应答报文发送给用户x。
较佳地,所述处理单元包括位于应用层的SSL VPN业务模块和VPN标签处理模块、位于TCP层的TCP模块、位于IP层的IP模块,以及位于IP层与网络接口之间的MPLS模块;
所述SSL VPN业务模块,用于当用户x请求访问VPN资源服务器S1时,建立用户x与所在网关之间的SSL连接,为用户x建立虚拟接口V1与VPN资源服务器S1之间的TCP连接;
所述VPN标签处理模块,用于在建立所述TCP连接过程中,根据用户x的认证授权信息绑定的VPN实例,为所述TCP连接的SOCKET设置VPN实例标签索引;
当报文通过所述SSL连接进入所在网关后,所述IP模块去掉报文的公网IP头,将报文的数据部分经由TCP模块上送到SSL VPN业务模块;
所述SSL VPN业务模块进一步确定将所接收的报文通过为用户x建立的TCP连接转发,并将报文发送给所述TCP模块;
所述TCP模块根据为用户x建立的TCP连接,为报文添加私网IP头,并且根据SOCKET的VPN实例标签索引在报文中记录VPN实例标签索引,然后将报文发给所述IP模块;
所述IP模块进一步通过路由查找确定由MPLS转发,并将报文发送给MPLS模块;
所述MPLS模块根据报文携带的VPN实例标签索引查找相应VPN实例,为报文添加VPN标签和MPLS转发标签并转发;
当应答报文通过所述TCP连接进入所在网关后,所述MPLS模块进一步根据应答报文携带的VPN标签确定报文所属VPN,将去掉VPN标签的报文及其所属VPN信息发送给所述IP模块;
所述IP模块进一步根据所述所属VPN信息从所述VPN实例存储单元中获取相应VPN实例,并根据应答报文的私网目的地址在获取的VPN实例中匹配到所述路由转发表项1,获得下一跳为内部环回接口地址,然后直接将去掉私网IP头的报文经由TCP模块转发到所述SSL VPN业务模块;
所述SSL VPN业务模块进一步确定将接收自所述TCP连接的应答报文通过所述SSL连接发送给用户x,并将应答报文发送给所述TCP模块;
所述TCP模块进一步根据所述SSL连接的信息为应答报文添加公网IP头,由IP模块将报文通过所述SSL连接发送给用户x。
其中,与用户x的认证授权信息绑定的VPN实例包括路由转发表项2:目的地址为虚拟接口V1所在网段,下一跳为虚拟接口V1的IP地址;所述虚拟接口V1为用户x所属VPN绑定的虚拟接口;
当采用IP方式接入VPN资源服务器时,所述配置单元在创建虚拟接口时,对应为每个VPN设置的地址池创建一个虚拟接口,对应的地址池和虚拟接口属于同一网段;
所述处理单元进一步用于:
在建立与远程接入相关的连接时,从为用户x所属VPN设置的地址池中为用户x分配虚地址Add_x;建立用户x与所在网关之间的SSL连接;
在接收到用户x通过SSL连接发来的携带私网IP头的报文时,根据用户x的认证授权信息绑定的VPN实例,在IP层为所接收报文添加VPN实例标签索引,再由处理单元中的MPLS模块根据VPN实例标签索引为报文添加VPN标签和MPLS转发标签;所述私网IP头的源地址为Add_x;
在接收到应答报文时,根据该应答报文携带的VPN标签查找相应VPN实例;根据所述应答报文的私网目的地址Add_x在查找到的VPN实例中匹配到所述路由转发表项2,获得下一跳为虚拟接口V1,则通过所述虚拟接口V1将应答报文经由所述SSL连接转发给用户x。
较佳地,所述处理单元包括位于应用层的SSL VPN业务模块1、位于IP层的SSL VPN业务模块2和VPN标签处理模块和IP模块,位于TCP层的TCP模块、以及位于IP层与网络接口之间的MPLS模块;
位于应用层的SSL VPN业务模块1,用于从为用户x所属VPN设置的地址池中为用户x分配虚地址Add_x;当用户x请求访问VPN资源服务器时,建立用户x与所在网关之间的SSL连接;
当报文通过所述SSL连接进入所在网关后,所述IP模块去掉报文的公网IP头,将保留私网IP头和数据部分的报文经由TCP模块发送到位于应用层的SSL VPN业务模块1,SSL VPN业务模块1把解析出来的报文直接发送给位于IP层的SSL VPN业务模块2;
SSL VPN业务模块2进一步确定以直接IP转发方式转发报文,将报文发送给VPN标签处理模块;
所述VPN标签处理模块根据所述对应关系存储单元保存的绑定关系,查找用户x的认证授权信息绑定的VPN实例,并在报文中记录相应VPN实例标签索引,然后将报文发送给所述IP模块;
所述IP模块通过路由查找确定由MPLS进行转发,并将报文发送给MPLS模块;
所述MPLS模块根据报文携带的VPN实例标签索引查找相应VPN实例,根据查找到的VPN实例为报文添加VPN标签和MPLS转发标签并转发;
当应答报文通过第二网络接口进入所在网关后,所述MPLS模块进一步根据应答报文携带的VPN标签确定报文所属VPN,将去掉VPN标签的应答报文及其所属VPN信息发送给所述IP模块;
所述IP模块进一步根据所述所属VPN信息从所述VPN实例存储单元中获取相应VPN实例,并根据应答报文的私网目的地址Add_x在获取的VPN实例中匹配上所述路由转发表项2,获得下一跳为虚拟接口V1;
位于IP层的SSL VPN业务模块2进一步确定通过虚拟接口V1将应答报文经由所述SSL连接发送给用户x,并将应答报文发送给位于应用层的SSL VPN业务模块1;SSL VPN业务模块1将应答报文发送给位于TCP层的TCP模块;
所述TCP模块根据所述SSL连接的信息为应答报文添加公网IP头,由IP模块通过所述SSL连接将报文发送给用户x。
所述认证授权信息为用户组、和/或虚拟域、和/或角色。
所述虚拟接口为SSL VPN以太网接口或环回接口。
本发明还提供了一种远程接入MPLS VPN的系统,使得远程用户能够通过自身与SSL VPN网关之间的SSL连接,远程访问MPLS VPN中的VPN资源。该系统包括前述任意一种网关。
根据以上技术方案可见,为了在只有一个物理接口的条件下实现VPN多实例即在同一台设备上区分不同的VPN,本发明通过创建虚拟接口并绑定VPN,使得每个VPN绑定一个虚拟接口,从而形成对应不同VPN的VPN实例,供转发报文时使用。
而且,本发明采用用户的认证授权信息区分不同的VPN用户,从而在SSL VPN网关只为用户提供一个物理接口的限制下,实现了用户区分,进而采用相应的VPN实例进行报文转发,实现了远程用户访问MPLS VPN中VPN资源的方案。
具体实施方式
本发明采用SSL VPN网关同时作为MPLS L3VPN中PE路由器,从而解决了SSL VPN网关与MPLS L3VPN的连接问题。下文的MPLS VPN均指MPLS L3VPN。
图3为本发明实施例中,SSL VPN网关同时作为PE路由器的组网示意图。如图3所示,用户1(user1)属于VPN1,用户2(user2)属于VPN2,两个用户分别通过不同的远程主机访问VPN资源,CE1和CE2为VPN资源服务器,VPN1资源设置在CE1上,VPN2资源设置在CE2上。远程主机与SSL VPN网关之间采用SSL连接传输数据,SSL VPN网关同时作为PE路由器,与MPLS交换网中的P路由器相连。
SSL VPN网关作为PE路由器与图2中的PE路由器有所不同,SSL VPN网关对外只提供一个网络接口,即如图3所示SSL VPN网关对外,即对互联网和对MPLS交换网分别提供一个网络接口,因此SSL VPN网关无法像通常的PE路由器一样,将物理接口与VPN绑定,从而通过报文的入接口来区分不同的VPN用户,而且由于SSL VPN网关设置在互联网和局域网之间,接收自用户的报文已经经过互联网的传输,因此不携带接入VLAN信息,因此也不能通过报文携带的接入VLAN信息来区分不同的VPN用户。但是,SSL VPN网关在用户登录认证时,维护了一些用户的认证授权信息,因此本发明实施例就利用用户的认证授权信息来区分不同的VPN用户。
当然,SSL VPN网关作为PE路由器还需要兼顾二者的功能,因此SSLVPN网关还需要承担SSL报文和MPLS报文相互转换任务,以及允许采用SSL VPN的三种接入方式之一或任意组合实现远程接入MPLS VPN。
为此,本发明提供了一种远程接入MPLS VPN的方法,该方法包括以下步骤:
A、在SSL VPN网关中创建多个虚拟接口,一个VPN绑定一个虚拟接口,根据VPN绑定的虚拟接口形成VPN实例,这里与虚拟接口绑定的VPN为MPLS VPN,下面不再进行区分,统称为VPN;根据用户的认证授权信息区分不同VPN的用户,从而将SSL VPN用户区分到不同的MPLS VPN中,然后将用户的认证授权信息与相应VPN绑定。
B、用户x与SSL VPN网关之间进行信息交互,建立与远程接入相关的连接。
C、SSL VPN网关接收用户x通过SSL连接发来的报文,根据用户x的认证授权信息绑定的VPN实例,为所接收报文打上VPN标签和MPLS转发标签,并通过MPLS交换网转发到VPN资源服务器;
D、SSL VPN网关接收VPN资源服务器返回的应答报文,根据该应答报文携带的VPN标签查找相应VPN实例,根据查找到的VPN实例将报文通过SSL连接返回给用户x。
由以上所述可见,本发明通过创建虚拟接口并绑定VPN,使得每个VPN绑定一个虚拟接口,从而形成对应不同VPN的VPN实例,供转发报文时使用。鉴于SSL VPN网关只对用户提供一个物理接口,因此本发明结合SSL
VPN网关的特点,通过用户的认证授权信息区分不同的VPN用户,从而在SSL VPN网关只为用户提供一个物理接口的限制下,实现了用户区分,进而采用相应的VPN实例进行报文转发,实现了远程用户访问MPLS VPN中VPN资源的方案。
下面结合附图并举实施例,对本发明进行详细描述。在以下实施例中,采用认证授权信息中的用户所属用户组区分不同的VPN用户,在实际网络中,还有不属于任何VPN的用户,称为公网用户,采用诸如用户组的认证授权信息也可以区分出这类用户。在其他实施例中,还可以采用认证授权信息中的用户组、虚拟域、角色这些参数之一或任意组合来区分不同的VPN用户。
在本实施例中,首先,需要进行MPLS VPN和SSLVPN的相关配置。其中,MPLS VPN的相关配置与常规的MPLS VPN配置相同,这里不赘述。SSL VPN的相关配置具体包括以下步骤:
1、在SSL VPN网关中创建多个地址池,每个地址池对应一个VPN;地址池仅在IP接入方式下使用。
2、对应每一个地址池创建一个虚拟接口,对应的地址池和虚拟接口属于同一网段,为每个虚拟接口绑定一个VPN。其中,虚拟接口可以为SSL VPN虚拟以太网(SVE,SSL VPN Virtual Ethernet)接口,简称虚接口,也可以为环回(Loopback)接口。本实施例中,以SVE接口为例。
3、根据与VPN绑定的虚接口,形成对应各VPN的VPN实例。每个VPN实例包括路由转发表和MPLS标签转发表。
所述路由转发表包括两类路由,第一类路由是为接收自VPN资源服务器的报文指示出接口,第二类路由是为接收自用户的报文指示出接口。其中,第一类路由包括两条路由,一条路由在TCP/WEB接入方式下使用,另一条路由在IP接入方式下使用,下文会详细说明使用方法。
所述MPLS标签转发表包括两类表项,第一类表项是VPN与VPN标签(内层标签)的映射关系,第二类表项为接收自用户的报文指示下一跳P路由器信息和MPLS转发标签。
4、将虚接口授权给用户。在本发明实施例中,授权操作即为将虚接口和用户组绑定。由于在步骤2中虚接口与VPN绑定,因此经本步骤4后,用户组、虚接口和VPN实例三者形成了绑定关系。至于将哪个虚接口与哪个用户组绑定,还需要根据用户组允许访问的VPN资源确定,例如用户组1允许访问VPN1中的资源,则将VPN1对应的虚接口与用户组1绑定,本领域技术人员很容易理解该绑定关系的形成。
经过以上几个步骤的配置在SSL VPN网关上形成如下表1示出的用户与VPN的对应关系表(UVR,User to VPN relation table),该UVR中记录了哪个用户对应哪个VPN以及与VPN绑定的虚接口。
用户 |
所属用户组 |
虚接口 |
绑定的VPN实例(VPN实例标签索引) |
user1 |
Vpn1group |
SVE1/0 |
VPN1(VPN1标签索引:1) |
user2 |
Vpn2group |
SVE1/1 |
VPN2(VPN2标签索引:2) |
user3 |
Pubgroup |
无 |
PUBLIC(0) |
表1
如表1所示,UVR表中包括如下字段:用户ID、所属用户组、虚接口、绑定的VPN实例,表1中绑定的VPN实例字段中进一步包括VPN标签的索引。表1是根据图3中的组网结构形成的UVR表。其中,user1属于用户组Vpn1group,为该用户组Vpn1group绑定了虚接口SVE1/0,与SVE1/0绑定的VPN实例为VPN1实例,VPN1实例的标签索引为1。user2与user1类似。user3为普通用户,不属于任何VPN,因此如UVR表所示,user3属于公网用户组Pubgroup,没有为该公网用户组Pubgroup绑定任何虚接口和VPN实例,绑定的VPN实例字段例如记为PUBLIC(0)。
经过以上几个步骤的配置,还在SSL VPN网关上形成对应不同VPN的VPN实例。下面列举对应VPN1和VPN2的VPN实例。以下描述的VPN实例仅将与本发明实施例密切相关的字段列出,省略了不相关的字段。
首先,为VPN的路由转发表:
vpn1 Route Information(路由信息)
Routing Table(路由表):vpn1 Route-Distinguisher(路由区分符):100:1
Destination/Mask(目的地址/掩码) Nexthop(下一跳) Interface(接口)
10.1.1.0/24 10.1.1.1 SVE1/0
10.1.1.1/32 127.0.0.1 InLoopBack0
VPN Routing Table(VPN路由表): Route-Distinguisher:100:3
10.3.1.0/24 3.3.3.9 InLoopBack0
vpn2 Route Information
Routing Table:vpn2 Route-Distinguisher:100:2
Destination/Mask Nexthop Interface
10.2.1.0/24 10.2.1.1 SVE1/1
10.2.1.1/32 127.0.0.1 InLoopBack0
VPN Routing Table: Route-Distinguisher: 100:4
10.4.1.0/24 3.3.3.9 InLoopBack0
其中,在VPN1的路由转发表中,Routing Table(路由表)的内容为第一类路由,该第一类路由包括两条路由:
第一条路由的目的地址为与VPN1绑定的虚接口SVE1/0以及相应地址池所在网段10.1.1.0/24,下一跳为虚接口SVE1/0的IP地址10.1.1.1。
该条路由适用于IP接入方式,当来自VPN资源服务器的报文匹配10.1.1.0/24时,确定下一跳为10.1.1.1即虚接口SVE1/0,则报文直接从虚接口SVE1/0转发出去。下面会详细说明IP接入方式下如何使用这条路由。
第二条路由的目的地址为与VPN1绑定的虚接口SVE1/0的IP地址10.1.1.1/32,下一跳指向内部环回(InLoopBack0)接口地址127.0.0.1。
该条路由适用于TCP/WEB接入方式,当来自VPN资源服务器的报文匹配SVE1/0的IP地址10.1.1.1/32时,确定下一跳为127.0.0.1,即报文是发往本机的报文,此时IP层将报文直接经由TCP层上送到应用层的SSL VPN业务模块进行相应处理并转发。下面会详细说明TCP/WEB接入方式下如何使用这条路由。
在VPN1的路由转发表中,VPN Routing Table(VPN路由表)的内容为第二类路由。该第二类路由包括这样一条路由:其目的地址为VPN资源服务器所在网段10.3.1.0/24,下一跳为SSL VPN网关通过BGP连接的对端PE设备地址,3.3.3.9为对端PE设备的一个loopback接口地址。该条路由适用于任何接入方式,当来自用户的报文匹配10.3.1.0/24时,确定下一跳为3.3.3.9。
VPN2的VPN路由转发表设置与VPN1类似,这里不详细解释。
其次,为VPN的MPLS标签转发表:
Vpn-instance Name(VPN实例名):vpn1 Route Distinguisher:100:1
NO FEC(转发等价类) NEXTHOP OUTER-LABEL(外层标签)
1 10.3.1.0/24 172.1.1.2 1026(vpn)
Vpn-instance Name:vpn2 Route Distinguisher:100:2
NO FEC NEXTHOP OUTER-LABEL
1 10.4.1.0/24 172.1.1.2 1026(vpn)
NO VRFNAME(VRF名) INNER-LABEL(内层标签)
1 vpn1 1024
2 vpn2 1025
其中,在VPN1的MPLS标签转发表中,VRFNAME(VRF名)和INNER-LABEL(内层标签)的内容记载了各VPN的VPN标签;
Vpn-instance Name(VPN实例名)的内容为转发表项,该转发表项的转发等价类FEC为VPN资源服务器所在网段10.3.1.0/24,下一跳为从SSL VPN网关到VPN资源服务器经过的第一个P路由器的IP地址172.1.1.2。该转发表项适用于任何接入方式,当来自用户的报文匹配10.3.1.0/24时,确定下一跳为172.1.1.2,从而将报文转发到正确的P路由器。
下面结合上述UVR和VPN实例,对TCP/WEB接入方式的远程接入过程以及IP接入方式的远程接入过程分别举实施例进行描述。
实施例一:
本实施例是远程用户user1在TCP/WEB接入方式下通过SSL连接接入MPLS VPN的实施例。该实施例中,假设user1所使用的远程主机的公网IP地址为60.191.123.8,SSL VPN网关的公网IP地址为220.189.204.90,SSLVPN网关中与VPN1绑定的虚接口SVE1/0的私网IP地址为10.1.1.1,user1允许访问的VPN资源所在网段为10.3.1.0/24。为了描述简便,下面将user1所使用的远程主机地址称为用户的地址,用户通过远程主机进行的操作均视为用户的操作。
图4为本发明实施例一中远程用户在TCP/WEB接入方式下通过SSL连接接入MPLS VPN的流程图。如图4所示,该流程包括以下步骤:
步骤401:user1向SSL VPN网关发送登录认证请求。
步骤402:SSL VPN网关接收user1的登录认证请求,为user1进行登录认证处理,认证通过后,根据user1所属用户组确定user1所属VPN,然后返回用户资源页面。该用户资源页面中携带user1允许访问的VPN资源信息。
本实施例中,user1属于用户组Vpn1group,因此user1属于VPN1。
本步骤确定用户所属用户组和所属VPN的操作可以采用现有SSL VPN技术中的常规方式实现,也可以根据本发明设置的UVR表确定。
步骤403:当user1请求访问VPN资源服务器时,user1与SSL VPN网关之间建立SSL连接,通过建立的SSL连接向SSL VPN网关发送用户ID和被请求访问的VPN资源ID。
步骤404:SSL VPN网关根据user1发来的VPN资源ID,确定被请求访问的VPN资源所在VPN资源服务器的IP地址,这里假设为10.3.1.1,同时在UVR表中查找与user1的用户组Vpn1group绑定的虚接口SVE1/0,为user1建立虚接口SVE1/0(10.1.1.1)与被请求访问的VPN资源服务器(10.3.1.1)之间的TCP连接并维护双向连接对应关系表简称ST表。在TCP连接建立过程中,为TCP连接的Socket设置相应VPN实例标签索引。
具体来说,SSL VPN网关在确定被请求访问的VPN资源所在VPN资源服务器的IP地址后,在UVR表中查找user1所属VPN实例,这里为VPN1,并为socket打上VPN1实例标签索引1,然后向10.3.1.1发起TCP连接。TCP层的TCP模块会根据socket的VPN实例标签索引给TCP连接请求报文打上VPN实例标签索引1。其中,为报文打上VPN实例标签索引的操作并非在IP报文前面加上VPN实例标签索引而只是在报文属性中记录一下,在MPLS模块中才会真正在IP报文前面加上两层标签。
然后,IP模块根据报文的VPN实例标签索引1找到对应的VPN1实例,在查找到的VPN1实例中根据目的地址10.3.1.1查找转发路径,确定该报文由MPLS进行转发,将报文发给MPLS模块。MPLS模块会根据报文的VPN实例标签索引1查找到VPN1的VPN标签1024,以及根据VPN实例标签索引1和报文的目的地址10.3.1.1,在VPN1实例的MPLS标签转发表中进行匹配,匹配上VPN1实例中FEC为10.3.1.0/24的MPLS标签转发表项,从而获得下一跳以及MPLS转发标签1026;此时,MPLS模块为TCP连接请求报文打上VPN标签1024及MPLS转发标签1026并根据下一跳将报文转发到对端资源服务器。由于该VPN实例绑定的接口为SVE1/0,所以新建立的TCP连接的源地址为SVE1/0的IP地址,目的地址为10.3.1.1。后续user1发来的报文将通过该TCP连接发送。
步骤405:user1通过SSL连接向SSL VPN网关发送用户资源请求报文。该用户资源请求报文如图4中的报文①所示,报文①包括公网IP头、TCP头和数据部分。为了突出报文在互联网和MPLS交换网中的变化,省略了TCP头的描述,但不影响转发流程的说明。
其中,公网IP头的源地址和目的地址分别为user1的公网IP地址60.191.123.8,和SSL VPN网关的公网IP地址220.189.204.90。
步骤406:SSL VPN网关接收到user1通过SSL连接发来的用户资源请求报文时,根据ST表确定直接通过为user1建立的TCP连接进行转发。此时,TCP层根据为user1建立的TCP连接的信息,为报文打上VPN实例标签索引,然后MPLS模块会根据报文的VPN实例标签索引打上VPN标签1024及转发所需要的MPLS转发标签1026,并转发。
本步骤具体由SSL VPN网关中的多个模块配合完成,这些模块包括位于应用层的TCP/WEB接入方式处理模块和VPN标签处理模块、位于TCP层的TCP模块、位于IP层的IP模块,以及位于IP层与网络接口之间的MPLS模块。其中TCP/WEB接入方式处理模块在建立与远程接入相关的连接时,建立并维护ST表。具体来说,本步骤406包括以下子步骤:
c1、报文通过自身与user1之间的SSL连接进入SSL VPN网关后,由IP模块去掉报文的公网IP头,将报文的数据部分经由TCP模块上送到TCP/WEB接入方式处理模块;
c2、TCP/WEB接入方式处理模块根据ST表确定将所接收的报文通过为user1建立的TCP连接转发,将报文发送给TCP模块;
c3、TCP模块根据建立的TCP连接信息为报文打上私网IP头,并且根据socket的VPN实例标签索引为报文打上VPN实例标签索引,然后将报文发给IP模块。其中,私网IP头的私网源地址和私网目的地址分别是TCP连接两端的地址,即私网源地址为虚接口SVE1/0的IP地址10.1.1.1,私网目的地址为user1请求访问的VPN资源服务器的IP地址10.3.1.1;
c4、IP模块根据报文的VPN实例标签索引找到对应的VPN实例,在查找到的VPN实例中查找转发路径,确定该报文由MPLS进行转发,然后将报文发给MPLS模块;
c5、MPLS模块根据报文携带的VPN实例标签索引查找相应VPN实例,根据查找到的VPN实例为报文打上VPN标签和MPLS转发标签,并转发。具体来说,MPLS模块根据报文携带的VPN实例标签索引1得知报文属于VPN1,从VPN1实例中获得VPN标签1024,根据报文的私网目的地址在MPLS标签转发表中进行匹配,私网目的地址为10.3.1.1匹配上FEC为10.3.1.0/24的转发表项,获得下一跳172.1.1.2和MPLS转发标签1026,进而给报文打上VPN标签1024和MPLS转发标签1026,并根据下一跳172.1.1.2将报文转发到正确的P路由设备。
经过本步骤406的处理,图4中的报文①转换成了报文②,报文②包括MPLS转发标签、VPN标签、私网IP头和数据部分。其中,VPN标签为内层标签用于区分报文所属VPN,MPLS转发标签为外层标签用于MPLS交换网的转发。
步骤407:MPLS交换网通过报文携带的MPLS转发标签转发报文到对端的PE路由器。
步骤408:对端的PE路由器将报文转发给VPN资源服务器,并将VPN资源服务器的应答报文返回到MPLS交换网。
步骤409:与SSL VPN网关邻接的P路由器去掉应答报文的MPLS转发标签,然后把应答报文发送给SSL VPN网关。转发到SSL VPN网关的应答报文如图4示出的报文③。报文③包括VPN标签、私网IP头和数据部分。其中,私网IP头中的私网源地址为10.3.1.1,私网目的地址为10.1.1.1,VPN标签为1024。
步骤410:SSL VPN网关根据应答报文携带的VPN标签查找相应的VPN实例,根据应答报文的私网目的地址在查找到的VPN实例中进行匹配,匹配上前述VPN1实例中的第二条路由转发表项,获得下一跳为内部环回接口地址127.0.0.1,则直接将所接收应答报文转发到上层应用,即应用层的TCP/WEB接入方式处理模块。TCP/WEB接入方式处理模块处理完毕后,通过与user1之间的SSL连接将应答报文转发给user1。
具体来说,本步骤410包括以下子步骤:
d1、应答报文通过为user1建立的TCP连接进入SSL VPN网关后,MPLS模块根据应答报文携带的VPN标签1024确定应答报文属于VPN1,然后将去掉VPN标签的应答报文及其属于VPN1的信息发送给IP模块;
d2、IP模块根据应答报文属于VPN1的信息获取VPN1实例,并根据报文的私网目的地址10.1.1.1在VPN1实例中进行路由匹配,VPN1实例的具体内容已经在前文具体描述,这里匹配上VPN1实例中目的地址为10.1.1.1/32的路由转发表项,从匹配的路由转发表项中获取下一跳信息为内部环回接口地址127.0.0.1,然后直接将去掉私网IP头的应答报文经由TCP模块转发到应用层的TCP/WEB接入方式处理模块;
d3、TCP/WEB接入方式处理模块根据ST表确定将接收自TCP连接的应答报文通过SSL连接发送给user1,此时将应答报文发送给TCP模块;
d4、TCP模块根据所述SSL连接的信息为报文添加公网IP头,并转发给IP模块;
d5、IP模块根据目的地址查找公网路由,从而通过SSL连接将报文发送给user1。发送给user1的应答报文如图4中的报文④,报文④包括公网IP头和数据部分。
至此,本流程结束。
实施例二:
本实施例是远程用户user1在IP接入方式下通过SSL连接接入MPLSVPN的实施例。该实施例中,假设user1所使用的远程主机的公网IP地址为60.191.123.8,SSL VPN网关的公网IP地址为220.189.204.90,SSL VPN网关中与VPN1绑定的虚接口SVE1/0的私网IP地址为10.1.1.1,user1允许访问的VPN资源所在网段为10.3.1.0/24。
图5为本发明实施例二中远程用户在IP接入方式下通过SSL连接接入MPLS VPN的流程图。如图5所示,该流程包括以下步骤:
步骤501:user1向SSL VPN网关发送登录认证请求。
步骤502:SSL VPN网关接收user1的登录认证请求,为user1进行登录认证处理,认证通过后,根据user1所属用户组Vpn1group确定user1属于VPN1,然后返回用户资源页面。并且从为user1所属VPN设置的地址池中为user1随机分配而一个IP地址,作为user1的虚地址。本实施例假设分配给user1的虚地址为10.1.1.2。
步骤503:当user1请求访问VPN资源服务器时,user1与SSL VPN网关之间建立SSL连接,在IP接入方式下,SSL VPN网关需要维护用户、虚地址和SSL连接对应关系表简称UVS(User-Virtual IP-SSL,用户-虚IP地址-SSL)表。由于IP接入方式下,网关不需要与VPN资源服务器维持连接,因此user1仅需要通过建立的SSL连接向SSL VPN网关发送用户ID。
步骤504:user1通过SSL连接向SSL VPN网关发送用户资源请求报文。该用户资源请求报文如图5中的报文①所示,与实施例一不同之处在于,该报文①不仅包括公网IP头和数据部分,还包括私网IP头(TCP头仍省略)。
其中,公网IP头的源地址和目的地址分别为user1的公网IP地址60.191.123.8,和SSL VPN网关的公网IP地址220.189.204.90。私网IP头的源地址和目的地址分别为user1的虚地址10.1.1.2,和被请求访问的VPN资源服务器的私网IP地址10.3.1.1。
步骤505:SSL VPN网关接收到user1的用户资源请求报文时,通过UVS表可以确定报文来自用户user1,进而通过查找UVR表确定user1所属VPN,根据user1所属VPN的VPN实例,在IP层为所接收报文打上VPN实例标签索引,再由MPLS模块根据VPN实例标签索引为报文添加VPN标签和MPLS转发标签并转发。这里的转发是MPLS转发并发普通IP转发。
本步骤具体由SSL VPN网关中的多个模块配合完成,这些模块包括位于应用层的IP接入方式处理模块1、位于IP层的IP接入方式处理模块2、VPN标签处理模块和IP模块、位于TCP层的TCP模块、以及位于IP层与网络接口之间的MPLS模块。其中,位于应用层的IP接入方式处理模块1用于维护SSL连接以及UVS表,位于IP层的接入方式处理模块2用于处理转发,IP接入方式处理模块1和2实际上是一个模块同时工作在应用层和IP层,为了理解方便将其分成了两个模块,这两个模块共享数据,数据到达IP接入方式处理模块1也就到了IP接入方式处理模块2,反之依然。具体来说,本步骤505包括以下子步骤:
c1、报文通过自身与user1之间的SSL连接进入SSL VPN网关后,由IP模块去掉公网IP头,将保留私网IP头和数据部分的报文经由TCP模块发送给IP接入方式处理模块1,IP接入方式处理模块1把报文发送给IP接入方式处理模块2;
c2、IP接入方式处理模块2查找UVS表可以确定报文来自用户user1,进而确定以直接IP转发方式转发报文,此时将报文发送给位于IP层的VPN标签处理模块;
c3、VPN标签处理模块查找UVR表确定user1的Vpn1group绑定VPN1实例,并得到VPN1实例的VPN实例标签索引为1,此时为解析出来的IP报文打上VPN实例标签索引1,然后将报文转发给IP模块;
c4、IP模块根据报文的目的地址进行路由查找,确定由MPLS进行转发,然后将报文发给MPLS模块;
c5、MPLS模块根据报文携带的VPN实例标签索引查找相应VPN实例,根据查找到的VPN实例为报文打上VPN标签和MPLS转发标签并转发。该步骤与实施例一中的步骤c5相同。
经过本步骤505的处理,图5中的报文①转换成了报文②,报文②包括MPLS转发标签、VPN标签、私网IP头和数据部分。与实施例一不同的是,本实施例报文②中,私网源地址为user1的虚地址10.1.1.2。
步骤506:MPLS交换网通过报文携带的MPLS转发标签转发报文到对端的PE路由器。
步骤507:对端的PE路由器将报文转发给VPN资源服务器,并将VPN资源服务器的应答报文返回到MPLS交换网。
步骤508:与SSL VPN网关邻接的P路由器去掉应答报文的MPLS转发标签,然后把应答报文发送给SSL VPN网关。转发到SSL VPN网关的应答报文如图5示出的报文③。报文③包括VPN标签、私网IP头和数据部分。其中,私网IP头中的私网源地址为10.3.1.1,私网目的地址为10.1.1.2,VPN标签为1024。
步骤509:SSL VPN网关根据应答报文的VPN标签找到相应的VPN实例,根据应答报文的私网目的地址10.1.1.2在查找到的VPN实例中进行匹配,匹配上前述VPN1实例中的第一条路由转发表项,获得下一跳为虚接口SVE1/0,则直接通过SVE1/0将应答报文经由SSL连接转发给user1。
具体来说,本步骤509包括以下子步骤:
d1、应答报文进入SSL VPN网关后,MPLS模块根据应答报文携带的VPN标签确定应答报文属于VPN1,然后将去掉VPN标签的应答报文及其属于VPN1的信息发送给IP模块;
d2、IP模块根据应答报文属于VPN1的信息获取VPN1实例,并根据应答报文的私网目的地址10.1.1.2在VPN1实例中进行路由匹配,匹配上VPN1实例中目的地址为10.1.1.0/24的路由转发表项,从匹配的路由转发表项中获取下一跳信息为虚接口SVE1/0的IP地址10.1.1.1,由于其目的地址并非本机内部接口地址,所以虚接口在收到报文会直接转发。
d3、虚接口的转发功能是由位于IP层的IP接入方式处理模块2来实现。IP接入方式处理模块2根据应答报文中的私网目的地址即虚地址10.1.1.2以及UVS表确定将应答报文经由相应SSL连接发送给user1(10.1.1.2),此时将应答报文发送给位于应用层的IP接入方式处理模块1,由IP接入方式处理模块1将报文发送给TCP模块。
d4、TCP模块根据SSL连接的信息为应答报文添加公网IP头,并把报文转发给IP模块。
d5、IP模块通过查找公网路由,从而将报文通过SSL连接发送给user1。发送给user1的应答报文如图5中的报文④,报文④包括公网IP头、私网IP头和数据部分。
至此,本流程结束。
以上实施例一是支持TCP和/或WEB接入方式的方案,实施例二是支持IP接入方式的方案。在实际中,TCP、WEB和IP三种接入方式可以并存,或者仅同时支持其中两种。
对于公网用户user3的处理与现有SSL VPN网关的处理相同。具体包括:当SSL VPN网关接收到公网用户user3的用户资源请求报文时,查找UVR表确定user3属于用户组Pubgroup,且没有绑定任何VPN,此时确定接收到公共用户的报文,不进行打标签处理,直接通过公共路由也称全局路由向VPN资源服务器转发报文。同理,当SSL VPN网关接收到来自VPN资源服务器的报文且未携带VPN标签时,会通过全局路由送到上层经由SSL连接发送或者直接由虚接口经由SSL连接发送。
为了实现上述方法,本发明提供了一种网关,该网关应用于这样一种系统,即远程用户通过自身与该网关之间的SSL连接,访问MPLS VPN中VPN资源服务器的系统,该网关同时作为SSL VPN中的SSL VPN网关和MPLSVPN中的PE路由器。本实施例中将该网关称为SSL VPN网关。
图6为本发明实施例中SSL VPN网关的结构示意图。如图6所示,该SSL VPN网关包括配置单元(又称WMI单元)、第一网络接口、第二网络接口、处理单元、VPN实例存储单元(又称VRF单元)和对应关系存储单元(又称UVR单元)。
WMI单元,用于创建多个虚接口、一个VPN绑定一个虚接口,根据与VPN绑定的虚接口形成VPN实例,将形成的VPN实例存储在VRF单元中;根据用户的认证授权信息区别不同VPN的用户,将用户的认证授权信息与相应VPN实例绑定;将建立的各种绑定关系存储在UVR单元中。在创建虚接口时,WMI单元对应为每个VPN设置的地址池创建一个虚接口,对应的地址池和虚接口属于同一网段,该地址池只在IP接入方式下使用。
较佳地,WMI单元还根据建立的各种绑定关系形成如表1示出的UVR表,保存到UVR单元中。该WMI单元形成的VPN实例包括路由转发表和MPLS标签转发表,这两个转发表的内容与方法实施例所述相同,这里不赘述。
UVR单元,用于存储WMI单元建立的绑定关系。
VRF单元,用于存储VPN实例。
第一网络接口,为所在SSL VPN网关和用户之间提供数据传输通道,通过互联网与远程主机耦接。
第二网络接口,为所在SSL VPN网关和MPLS交换网提供数据传输通道,通过MPLS交换网与VPN资源服务器耦接。
处理单元,用于与user1进行信息交互,建立与远程接入相关的连接。当接收到user1通过SSL连接发来的报文时,根据UVR单元存储的绑定关系,从VRF单元获取user1所属用户组绑定的VPN实例,即VPN1实例,采用VPN1实例为所接收报文打上VPN标签1024和MPLS转发标签1026,并通过MPLS交换网转发给VPN资源服务器;当接收到该VPN资源服务器返回的应答报文时,根据该应答报文携带的VPN标签1024在VRF单元中查找相应VPN实例,根据查找到的VPN1实例将应答报文通过与user1之间的SSL连接转发给user1。
当采用TCP或WEB方式接入VPN资源服务器时,所述处理单元进一步用于:在建立与远程接入相关的连接时,建立user1与所在SSL VPN网关之间的SSL连接,为user1建立虚接口SVE1/0与请求访问的VPN资源服务器S 1之间的TCP连接并维护ST表;在建立TCP连接过程中,根据user1的认证授权信息绑定的VPN实例,为建立的TCP连接的Socket打上相应VPN实例标签索引1;
在接收到user1通过所述SSL连接发来的报文时,根据为user1建立的TCP连接的信息,在TCP层为所接收报文打上VPN实例标签索引1,再由处理单元中的MPLS模块根据VPN实例标签索引1找到相应VPN1实例,为报文添加VPN标签1024和MPLS转发标签1026,然后通过为user1建立的TCP连接将报文转发给VPN资源服务器S1;
在接收到通过所述TCP连接返回的应答报文时,根据应答报文携带的VPN标签1024查找相应VPN实例,根据所述应答报文的私网目的地址10.1.1.1在查找到的VPN1实例中进行匹配,匹配到VPN1实例中的第二条路由转发表项,获得下一跳为内部环回接口地址127.0.0.1,则直接将所接收的应答报文转发到上层应用,该上层应用通过所述SSL连接将应答报文发送给user1。
当采用IP方式接入VPN资源服务器时,所述WMI单元在创建虚接口时,对应为每个VPN设置的地址池创建一个虚接口,对应的地址池和虚接口属于同一网段。
所述处理单元进一步用于,在建立与远程接入相关的连接时,从为user1所属VPN设置的地址池中为user1分配虚地址10.1.1.2;建立user1与SSLVPN网关之间的SSL连接;
在接收到user1通过SSL连接发来的携带私网IP头(私网源地址为10.1.1.2)的报文时,根据user1所属用户组绑定的VPN1实例,在IP层为所接收报文打上VPN标签实例标签索引1,再由处理单元中的MPLS模块根据VPN实例标签索引1为报文添加VPN标签1024和MPLS转发标签1026;
在接收到应答报文时,根据该应答报文携带的VPN标签1024查找相应VPN实例;根据所述应答报文的私网目的地址10.1.1.2在查找到的VPN1实例中匹配到第一条路由转发表项,获得下一跳为虚接口SVE1/0的IP地址10.1.1.1,则通过虚接口SVE1/0将应答报文经由所述SSL连接转发给user1。
下面对处理单元着重进行描述。
处理单元包括SSL VPN业务模块、VPN标签处理模块、TCP模块、IP模块和MPLS模块。其中,根据SSL VPN网关支持的接入方式,SSL VPN业务模块具体包括TCP/WEB接入方式处理模块和IP接入方式处理模块中的一种或任意组合。
图7示出了当采用TCP/WEB方式接入VPN资源服务器时,SSL VPN网关中各组成模块的位置和连接关系。如图7所示,处理单元具体包括位于应用层的TCP/WEB接入方式处理模块和VPN标签处理模块、位于TCP层的TCP模块、位于IP层的IP模块和位于IP层与网络接口之间的MPLS模块。
其中,TCP/WEB接入方式处理模块,用于在user1请求登录认证时,向user1返回用户资源页面;当user1请求访问VPN资源服务器S1时,建立user1与所在SSL VPN网关之间的SSL连接,为user1建立虚接口SVE1/0与VPN资源服务器S1之间的TCP连接并维护ST表。
在建立TCP连接过程中,VPN标签处理模块根据user1所属用户组息绑定的VPN1实例,为TCP连接的socket打上VPN实例标签索引1。
当报文通过user1与SSL VPN网关之间的SSL连接进入SSL VPN网关后,IP模块去掉报文的公网IP头,将报文的数据部分经由TCP模块上送到TCP/WEB接入方式处理模块;
TCP/WEB接入方式处理模块进一步根据ST表确定将所接收的报文通过为user1建立的TCP连接转发,将报文发送TCP模块;
TCP模块根据为user1建立的TCP连接的信息为报文打上私网IP头,并且根据socket的VPN实例标签索引1为报文打上VPN实例标签索引1,然后将报文发给IP模块;
IP模块进行路由查找,即根据报文的VPN实例标签索引1找到对应的VPN1实例,并在VPN路由表和标签转发表中查找转发路径,从而确定由MPLS进行转发,然后将报文发给MPLS模块;
MPLS模块根据报文携带的VPN实例标签索引1在VRF单元中查找相应VPN1实例,根据查找到的VPN1实例为报文打上VPN标签1024和MPLS转发标签1026,然后转发出去。
当应答报文通过VPN资源服务器S1与SSL VPN网关之间的TCP连接进入SSL VPN网关后,MPLS模块根据应答报文携带的VPN标签1024确定报文所属VPN,将去掉VPN标签的报文及其所属VPN信息发送给IP模块;
所述IP模块根据所述所属VPN信息从VRF单元中获取相应VPN实例,并根据应答报文的私网目的地址10.1.1.2在获取的VPN1实例中进行匹配,匹配上VPN1实例中的第二条路由转发表项,获得下一跳为内部环回接口地址127.0.0.1,然后直接将去掉私网IP头的报文经由TCP模块转发到TCP/WEB接入方式处理模块;
TCP/WEB接入方式处理模块根据ST表确定将接收自所述TCP连接的应答报文通过与user1之间的SSL连接发送给user1。此时,将应答报文发送给所述TCP模块;TCP模块根据SSL连接的信息为应答报文添加公网IP头,并转发给IP模块;IP模块通过查找公网路由,把报文发送给user1。
图8示出了当采用IP方式接入VPN资源服务器时,SSL VPN网关中各组成模块的位置和连接关系。如图8所示,处理单元具体包括位于应用层的IP接入方式处理模块1,位于IP层的IP接入方式处理模块2和VPN标签处理模块、位于TCP层的TCP模块、位于IP层的IP模块,以及位于IP层与网络接口之间的MPLS模块。
IP接入方式处理模块1,用于在user1请求登录认证时,向user1返回用户资源页面,且从为user1所属VPN设置的地址池中为user1分配虚地址10.1.1.2;当user1请求访问VPN资源服务器时,建立user1与所在SSL VPN网关之间的SSL连接,并维护UVS表,该UVS表同时由IP接入方式处理模块2共享。
当报文通过user1与SSL VPN网关之间的SSL连接进入SSL VPN网关后,所述IP模块去掉报文的公网IP头,将保留私网IP头和数据部分的报文经由TCP模块发送到位于应用层的IP接入方式处理模块1,IP接入方式处理模块1把报文发送到位于IP层的IP接入方式处理模块2;私网源地址为user1的虚地址10.1.1.2;
所述IP接入方式处理模块2根据UVS表确定以直接IP转发方式转发报文,将报文发送给VPN标签处理模块;
VPN标签处理模块根据UVR单元保存的绑定关系,确定user1所属用户组绑定的VPN为VPN1,则为报文打上VPN实例标签索引1,然后将报文通过所述IP模块;
IP模块通过路由查找确定由MPLS进行转发,并将报文发送给MPLS模块;
MPLS模块根据报文携带的VPN实例标签索引1查找相应VPN实例,根据查找到的VPN1实例为报文添加VPN标签1024和MPLS转发标签1026并转发。
当应答报文通过第二网络接口进入SSL VPN网关后,所述MPLS模块根据应答报文携带的VPN标签1024确定报文所属VPN,将去掉VPN标签的应答报文及其所属VPN信息发送给IP模块;
IP模块根据所述所属VPN信息从VRF单元中获取相应VPN实例,并根据应答报文的私网目的地址,即user1的虚地址进行路由匹配,匹配上VPN1实例中的第一条路由转发表项,获得下一跳为SVE1/0。然后根据匹配的路由转发表项把报文发送到虚接口SVE1/0,虚接口SVE1/0的转发功能由位于IP层的IP接入方式处理模块2来实现,也就是说上述报文传送到IP接入方式处理模块2;
IP接入方式处理模块2根据UVS表确定通过虚接口SVE1/0将应答报文经由与user1之间的SSL连接转发,此时将应答报文发送给TCP模块;
TCP模块根据SSL连接的信息为应答报文添加公网IP头,并转发给IP模块;
IP模块通过查找公网路由,把报文发送给user1。
本发明还提供了一种远程接入MPLS VPN的系统,如图3所示,该系统包括用户使用的远程主机、互联网、SSL VPN网关、MPLS VPN网络以及MPLS VPN网络中的VPN资源服务器;远程主机通过自身与SSL VPN网关之间的SSL连接访问MPLS VPN中的VPN资源服务器;SSL VPN网关同时作为MPLS VPN的PE路由器;其中,SSL VPN网关可以采用前述实施例中的任意一种SSL VPN网关。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。