HTTP中的“隧道”和“穿隧”是一个概念吗?

01 L2TP的作用

如图1-1所示,展现使用L2TP技术组建VPDN网络的典型场景。

图1-1 L2TP典型组网图

随着企业的发展和业务的增加,在不同地域成立的分支机构和出差的员工,需要和总部建立快速、安全和可靠的网络连接。

传统的拨号网络需要租用因特网服务提供商ISP(Internet Service Provider)的电话线路,申请公共的号码或IP地址,不仅产生高额的费用,而且无法为远程用户尤其是出差员工提供便利的接入服务。

为了更好的利用拨号网络,方便远程用户的接入,产生了基于拨号网络的VPN,即VPDN。通过VPDN技术,远程用户和企业总部网关之间建立了一条点到点虚拟链路。

VPDN有以下3种常用的隧道技术:

  • 点到点隧道协议PPTP(Point-to-Point Tunneling Protocol)
  • 二层转发L2F(Layer 2 Forwarding)
  • 二层隧道协议L2TP(Layer 2 Tunneling Protocol)

L2TP集合了PPTP和L2F两种协议的优点,目前已被广泛接受,主要应用在单个或少数远程终端通过公共网络接入企业内联网的需要。

02 L2TP的基本概念

图1-2 L2TP组网图

01 VPDN

VPDN是承载PPP报文的VPN,可以为企业、小型ISP、移动办公人员提供接入服务。

PPP终端接入拨号网络,拨号到NAS。NAS收到PPP报文后进行L2TP封装,最外层的IP报头经过公网路由转发后到达LNS。LNS收到报文后解封装,还原PPP报文,完成了PPP报文在公共网络上的透明传输,从而在PPP终端和LNS之间建立了VPDN连接。

随着以太网络的普及,PPP终端不再受限于传统的拨号网络,使用PPPoE技术,即可通过以太网络接入LAC。

02 PPP终端

L2TP应用中,PPP终端指发起拨号,将数据封装为PPP类型的设备,如远程用户PC、企业分支网关等。

03 NAS

NAS网络接入服务器(Network Access Server)主要由ISP维护,连接拨号网络,是距离PPP终端地理位置最近的接入点。NAS用于传统的拨号网络中,为远程拨号用户提供VPDN服务,和企业总部建立隧道连接。

04 LAC

L2TP访问集中器LAC(L2TP Access Concentrator)是交换网络上具有PPP和L2TP处理能力的设备。LAC根据PPP报文中所携带的用户名或者域名信息,和LNS建立L2TP隧道连接,将PPP协商延展到LNS。

在不同的组网环境中,LAC可以是不同的设备:

在传统的拨号网络中,ISP在NAS上部署LAC。

LAC可以发起建立多条L2TP隧道使数据流之间相互隔离,即LAC可以承载多条VPDN连接。

LAC在LNS和PPP终端之间传递数据。即LAC从PPP终端收到报文后进行L2TP封装发送至LNS,从LNS收到报文后进行解封装并发送至PPP终端。

05 LNS

L2TP网络服务器LNS(L2TP Network Server)是终止PPP会话的一端,通过LNS的认证,PPP会话协商成功,远程用户可以访问企业总部的资源。

对L2TP协商,LNS是LAC的对端设备,即LAC和LNS建立了L2TP隧道;对PPP,LNS是PPP会话的逻辑终止端点,即PPP终端和LNS建立了一条点到点的虚拟链路。

LNS位于企业总部私网与公网边界,通常是企业总部的网关设备。必要时,LNS还兼有网络地址转换(NAT)功能,对企业总部网络内的私有IP地址与公共IP地址进行转换。

06 隧道和会话

在LAC和LNS的L2TP交互过程中存在两种类型的连接。

隧道(Tunnel)连接

L2TP隧道在LAC和LNS之间建立,一对LAC和LNS可以建立多个L2TP隧道,一个L2TP隧道可以包含多个L2TP会话。

会话(Session)连接

L2TP会话发生在隧道连接成功之后,L2TP会话表示承载在隧道连接中的一个PPP会话过程。

03 L2TP的工作原理

01 L2TP协议架构

L2TP协议包含两种类型的消息,控制消息和数据消息,消息的传输在LAC和LNS之间进行。L2TP协议通过这两种消息,扩展了PPP的应用。

控制消息

用于L2TP隧道和会话连接的建立、维护和拆除。在控制消息的传输过程中,使用消息丢失重传和定时检测隧道连通性等机制来保证控制消息传输的可靠性,支持对控制消息的流量控制和拥塞控制。

数据消息

用于封装PPP数据帧并在隧道上传输。数据消息是不可靠的传输,不重传丢失的数据报文,不支持对数据消息的流量控制和拥塞控制。

图1-3说明了PPP报文、控制消息和数据消息在L2TP协议架构中的位置和关系。

图1-3 L2TP协议架构

控制消息承载在L2TP控制通道上,控制通道实现了控制消息的可靠传输,将控制消息封装在L2TP报头内,再经过IP网络传输。

数据消息携带PPP帧承载在不可靠的数据通道上,对PPP帧进行L2TP封装,再经过IP网络传输。

L2TP协议使用UDP端口1701,这个端口号仅用于初始隧道的建立。L2TP隧道发起方任选一个空闲端口向接收方的1701端口发送报文;接收方收到报文后,也任选一个空闲端口,给发起方的选定的端口回送报文。至此,双方的端口选定,并在隧道连通的时间内不再改变。

02 L2TP报文结构

远程用户拨号产生的PPP报文经L2TP封装后的报文格式如图1-4所示。

图1-4 L2TP报文格式

L2TP报文进行了多次封装,比原始报文多出38个字节(如果需要携带序列号信息,则比原始报文多出42个字节),封装后报文的长度可能会超出接口的MTU值,而L2TP协议本身不支持报文分片功能,这时需要设备支持对IP报文的分片功能。当L2TP报文长度超出发送接口的MTU值时,在发送接口进行报文分片处理,接收端对收到分片报文进行还原,重组为L2TP报文。

03 L2TP报文封装

L2TP是PPP的扩展,使PPP报文可以通过隧道方式在公网网络中传输。

如果组网中只应用PPP,则PPP终端发起的拨号,最远只能到达拨号网络的边缘节点NAS,此时NAS可以称为PPP会话的终止节点。而应用L2TP,则可以使PPP报文在公网透传,到达企业总部的LNS,此时LNS相当于PPP会话的终止节点。

图1-5 L2TP报文封装图

如图1-5所示,企业分支发送报文到企业总部,有以下过程:

【1】PPP终端:IP数据报文进行PPP(链路层)封装,发送报文。

【2】LAC:收到PPP报文后,根据报文携带的用户名或者域名判断接入用户是否为VPDN用户。

【3】是VPDN用户:对PPP报文进行L2TP封装,根据LNS的公网地址,再对L2TP报文进行UDP和IP封装。封装后的报文最外层为公网IP地址,经过公网路由转发到达LNS。

【4】非VPDN用户:对PPP报文进行PPP解封装,此时LAC为PPP会话的终止节点。

【5】LNS:收到L2TP报文后,依次解除外层的IP封装、L2TP封装、PPP封装,得到PPP承载的信息,即PPP终端发送的IP数据报文。根据报文中的目的地址,查找路由表使报文达到企业总部的目的主机。

企业总部回应分支用户时,回应报文到达LNS后查找路由表,根据转发接口进行L2TP处理,报文封装的过程和分支到总部一致。

04 L2TP报文传输

L2TP传输PPP报文前,需要建立L2TP隧道和会话的连接。对于首次发起的L2TP连接,有如下流程:

【1】建立L2TP隧道连接

LAC收到远程用户的PPP协商请求时,LAC向LNS发起L2TP隧道请求。LAC和LNS之间通过L2TP的控制消息,协商隧道ID、隧道认证等内容,协商成功后则建立起一条L2TP隧道,由隧道ID进行标识。

【2】建立L2TP会话连接

如果L2TP隧道已存在,则在LAC和LNS之间通过L2TP的控制消息,协商会话ID等内容,否则先建立L2TP隧道连接。会话中携带了LAC的LCP协商信息和用户认证信息,LNS对收到的信息认证通过后,则通知LAC会话建立成功。L2TP会话连接由会话ID进行标识。

【3】传输PPP报文

L2TP会话建立成功后,PPP终端将数据报文发送至LAC,LAC根据L2TP隧道和会话ID等信息,进行L2TP报文封装,并发送到LNS,LNS进行L2TP解封装处理,根据路由转发表发送至目的主机,完成报文的传输。

04 L2TP的工作过程

VPDN连接在远程用户和LNS之间建立。ISP将距离远程用户地理位置最近的NAS部署为LAC,LAC和LNS之间建立L2TP隧道连接。

【1】远程用户在电话网络中拨号,发起PPP连接到ISP部署的本地NAS。

【2】NAS接入远程用户的呼叫,和远程用户进行PPP协商。

【3】NAS作为LAC,根据远程用户拨号的用户名或者域,判断接入的用户是否为VPDN用户。如果接入用户是VPDN用户,则交由L2TP模块进行封装处理,将PPP报文通过L2TP隧道发送到LNS;如果不是VPDN用户,则正常处理和转发PPP报文。

【4】LNS从L2TP隧道收到远程用户的接入请求,对远程用户认证后,为远程用户分配IP地址,通过隧道和LAC发送到远程用户。

【5】远程用户获取IP地址,向总部主机发送报文进行通信。

【6】LNS收到经由隧道传输的报文后,查找路由表,转发报文到内部目的主机。

经过L2TP处理,远程用户使用拨号建立到LNS的点到点连接,其中LAC和Internet对用户透明。具体报文处理过程如图1-6所示,LAC和LNS均使用远程认证。

图1-6 L2TP隧道的呼叫建立流程

【1】远程用户PC发起呼叫连接请求到LAC。

【2】PC机和LAC进行PPP LCP协商。

【3】LAC对PC机提供的用户信息进行CHAP认证。

【4】LAC将用户信息(用户名和密码)发送给RADIUS服务器进行认证。

【5】RADIUS服务器认证通过则返回对该用户认证的结果。

【6】当LAC上指定LNS为域名时,LAC检查该LNS域名是否解析,如未解析则根据域名向DNS服务器请求解析对应的IP。如果LNS的IP地址解析成功,则触发建立隧道过程;否则用户上线失败。

【7】LAC和LNS之间建立L2TP隧道连接。

【8】LAC和LNS之间建立L2TP会话连接。

【9】LNS处理在会话连接中收到的PPP协商信息。

【10】LNS将接入请求信息发送给RADIUS服务器进行认证。

【11】RADIUS服务器认证通过则返回响应信息。如果RADIUS服务器上为该用户配置了Frame-IP、Frame-Route属性或者指定了地址池名称,响应报文中会携带该Frame-IP、Frame-Route或者指定的地址池名称。

【12】可选择是否对远程用户CHAP重认证,在LNS完成二次认证。

【13】LNS将二次认证信息发送给RADIUS服务器进行认证。

【14】RADIUS服务器认证通过则返回响应信息。

【15】LNS处理响应报文中携带的信息,保存分配给该用户的Frame-IP、Frame-Route或者指定的地址池名称。L2TP连接成功,为远程用户分配IP地址。

【16】远程用户和总部通信,LNS相当于远程用户的网关。

阅读剩余
THE END