二层隧道协议研究及l2tpv3数据层的实现_研究生学位论文(编辑修改稿)内容摘要:

L2TP 中的非对称拨号终端访问服务器的 C/S 模式,也可以应用于对称的网对网互联和拨号 /专线终端对终端的访问。 上述思路就是开展本项研究的动因。 在相关研究工作 进展的过程中,作者发现 Cisco 公司也在作类似的研究,并在 2020 年发现了 IETF 建议草案 西南交通大学硕士研究生学位论文 第 3 页 L2TPv3[18~ 19],即二层隧道协议的第三版。 结合作者所在研究小组的工作和 L2TPv3,本论文反映的工作的重点为对 L2TPv3 的研究和相关软件开发工作。 L2TPv2 由于本文多处涉及隧道的概念,有必要在此做简要说明。 隧道技术是一种 将某层的有连接或无连接的数据分组 /报文进行包装( Encapsulation)后,借用可用网络环境提供的服务在远程节点间进行透明传送的技术。 利用公用数据网建立的连接被称为“隧 道”( Tunnel),利用隧道传送或中继的功能被称为隧道传输( Tunneling);而被隧道运载的数据或连接的协议层则被用于标识隧道的用途,例如第 2 层隧道协议则表示被运送的连接或数据与第 2 层的协议相联系。 对隧道功能的形象表达可以用“过渡”( Ferrying)来描述,公用数据网可以看作是河流,隧道视为“渡船”( Ferry),而过渡的乘客或车辆则是用户期望过河的数据。 在本文的讨论中上述两种表达方式是等价的。 在 隧道 传输过程中,隧道 协议将 在隧道的两端被中继、前传的用户数据帧或 分组 /报文 重新封装在 隧道帧 中发送。 L2TPv2(本小节内,为描述方便使用 L2TP 之处皆指 L2TPv2)是为支持 C/S 模式而定义的访问协议, L2TP 隧道两端的两个组成部件为非对称的LAC( L2TP Access Concentrator)和 LNS( L2TP Network Server)。 LAC 是(远端)用户终端(计算机)利用 PPP 接入 L2TP 隧道的访问集中器。 LNS 是 LAC在 L2TP 隧道上的对等实体,是应用服务器直接或通过局域网接入 L2TP 隧道的访问服务器。 L2TP 隧道对终端用户是不可见的,因此感到自己就像直接连接到远端的应用服务器上一样,而 意识不到自己的 PPP 连接被 LAC 与NAS 间的隧道“过渡”到远端。 L2TP 的隧道分为非自建隧道( Compulsory Tunnel) 和自建隧道两种。 非自建隧道示意如图 所示。 非自建隧道的创建不需要用户来操作,也不允许用户进行任何选择。 而是由网络提供商的 LAC 来建立,用户无权干预。 Remote System 先将网络层送来的数据包封装在 PPP 帧中,通过它与 LAC 之间的拨号连接将 PPP 帧送给 LAC,如果 L2TP 隧道是基于 Inter 的话, LAC 先将 PPP 帧封装在 L2TP中,再进行 IP 封装,通过 Inter 传送给 LNS。 LNS 在收到 IP 包后,拆封还原出 L2TP,根据 L2TP 协议的进行处理,拆封还原出 PPP 帧,最后对 PPP 西南交通大学硕士研究生学位论文 第 4 页 PSTN: 公用电话交换网 图 非自建隧道示意图 帧拆封,把还原出来的网络层的数据包交给 LNS 的网络层。 LNS 发送给Remote System 的数据包也可以通过相同的路径反向传送。 通过这种机制,LAC 将 Remote System 与它之间的 PPP 连接延伸到 LNS,是 Remote System 访问 LNS 就像访问本地服务器一样,假设 Remote System 的网络层也使用 IP协议,那么它就可以使用私有 IP 地址访问 LNS。 自建隧道示意如下图所示。 图 自建隧道示意图 自建隧道是依靠 LAC Client,其区别于非自建隧道主要在于:它的终端扮演了使用隧道的用户以及建立隧道的 LAC 的双重角色,由用户来自行创建隧道。 与非自建隧道的处理过程基本类似,只不过 PPP 帧的生成与封装全部在 LAC Client 中完成。 L2TPv3 的主要扩展 L2TPv3 对 L2TPv2 应用从单一的 非对称 的客户(拨号终端) /服务器模式拓宽到 对称 的终端 终端和服务器 服务器模式。 因此,隧道两端的设备连接关系就出现了 三种组合: LACLNS, LACLAC 和 LNSLNS,在不需要区L2TP 隧道 PPP 连接 LAC Client LNS Inter 主机 主机 Remote System PSTN LAC LNS Inter 主机 主机 L2TP 隧道 PPP 连接 西南交通大学硕士研究生学位论文 第 5 页 别是 LAC 还是 LNS 时,则统称为“ L2TP 控制连接终端” ( LCCE —— L2TP Control Connection Endpoint)。 下面分别对这三种组合的应用环境加以说明: ○ 1 LACLNS 组合 图 中,一方面, LAC 接收 二层 的数据流。 另一方面, LNS 逻辑上终止了本地的 二层 连接,并且发送三层数据流到本地网。 会话建立的行为可以由 LAC 或 LNS 来发起。 如图 所示。 分组交换网:包括 IP、 ATM 和 FR。 PSTN:公共电话网络 图 LACLNS 参考模型 ② LACLAC 组合 每个 LAC 使用 L2TP 协议把远程系统( Remote System)数据流发送到对等端的 LAC,反之亦然。 LAC 并不处理本地的二层帧,因此并不使用虚拟的二层接口。 而且一个 LAC 仅仅作为远端系统与 L2TP 隧道间的连接点。 这种连接是典型的对称连接,也就是说任何一方可以在任何时候发起 一个会话,甚至可以同时发起。 如图 所示。 Remote System PSTN LAC LAC 分组交换网 隧道服务 道服务 二层连接 Remote System PSTN 图 LACLAC 参考模型 Remote System PSTN LNS 分组交换网 隧道服务 二层连接 LAC 主机 主机 本地网 西南交通大学硕士研究生学位论文 第 6 页 ③ LNSLNS 组合 如图 所示。 LNS 除了负责传送数据流外,而且还可以终止 L2TP 会话。 这种方式下,两边都有虚拟接口与每个 L2TP 会话相关。 一个会话可以通过用户来建立,或者由某些信号所触发的事件来驱动使其建立。 如“自建隧道”。 值得注意的是:如果一个 LNS 由于事件驱动而建立一个会话,那么则把LNS 作为 LAC 客户来看待。 这三种拓扑结构是对以往单一模式的扩展。 不过 LAC 与 LNS 在功能处理上大同小异,只是在不同的场合扮演不同的角色,用户在使用过程 中可以通过相关的配置,使其完成所扮演的功能。 L2TPv3 的另外一个重要的扩展是对多种二层数据帧封装的支持。 L2TPv2 只支持 PPP 数据帧的封装, L2TPv3 扩展的目的是制订一个能够对所有数据链路层协议进行隧道传输的通用协议。 作者的工作及论文结构 作者的工作 本文作者在硕士研究生学习期间,参加并完成了玉溪法院案件信息管理软件系统的设计与开发工作。 工作完成后,笔者将自己的研究工作转向了网络技术方面,因此与同届的李杰和任挺同学一道,开展了二层隧道协议方面研究与开发工作。 主要包括以下几个方 面: 本地网 二层连接 LNS LNS 分组交换网 主机 主机 隧道服务 主机 主机 图 LNSLNS 参考模型 本地网 西南交通大学硕士研究生学位论文 第 7 页 ① 对 L2TPv2 与 L2TPv3 进行了比较,对尚未成为标准的 L2TPv3 协议进行了分析研究,提出了一些建议,以使其更加完善; ② 基于实现的需要,对 L2TPv3 协议状态机进行了分析,完成了协议状态表; ③ 完成了协议实现的总体框架设计,模块的划分; ④ 单独完成了系统中数据层模块的设计与实现; ⑤ 完成了单元测试与系统的集成测试; ⑥ 总结所作的工作,提出对未来工作的展望。 论文结构 论文总体上对 L2TP 协议的概念,一个典型实现以及对该实现的测试进行了描述。 主要分为以下几个方面。 第一章是隧道协议概要介绍,包括发展动因、版本变化、应用范围和基本原理。 第二章对 L2TP 协议介绍了协议的一些基本概念,包括协议隧道结构、协议帧的封装、 L2TP over UDP /IP 以及 Linux 协议栈之间的关系与 Linux下的实现思路。 第三章是协议相关部分的分析和设计。 其中对报文的格式进行了定义,以及控制连接、会话连接和协议的状态机做了具体地描述。 并在此分析的基础上提出了实现的总体框架。 第四章介绍协议的系统实现,包括各个模块所负责的功能,总体结构以及对象和接口等,主要是内核数据层模块的实现。 第五章是对系统的测试,重点在作者所负责的模块方面的测试。 第六章展望部分作者提出了一些还有待进一步需要研究的问题,以及我们所作的工作存在的不足,还有待进一步需要改进的地方。 西南交通大学硕士研究生学位论文 第 8 页 第二章 L2TPv3 协议基本概念及实现的思路 L2TPv31协议基本概念 部分术语定义 Attribute Value Pair (AVP)-属性值对 一个唯一的 属性由一个整数来表示,它是一个可变长度的串。 控制报文就是由多个 AVP 组成的,分别用来实现控制连接的建立、保持和拆除。 Call (Circuit Up)-呼叫 呼叫用来激活 LAC 上电路的状态为“ up”或“ active”。 呼叫可以由诸如通过 PSTN 的呼入和呼出信号来动态建立,也可以静态地配置,例如在一个接口上提供一个虚电路。 呼叫由呼叫的类型,被呼叫数等属性以及呼叫的数据量来定义。 CHAP-挑战认证协议 挑战握手认证协议,一种点到点的加密挑战 /应答认证协议,该协议不允许明文密码通过。 Circuit-电路 2 层连接的总称。 电路可以是虚拟的,例如 ATM 中的 PVC 或一个 L2TP会话,也可能直接与物理层相关,例如一个 RS232 串行线。 电路可以静态或者动态建立,在本文中,静态配置的电路大体上可以作为一个单一的动态电路来考虑。 Dominant LCCE-支配 LCCE 支配 LCCE 是指单独进行控制连接初始化的建立者或 tiebreaker 中竞争的获胜者。 Ining Call-呼入呼叫 呼入呼叫是指 LAC 上接收到一个呼叫的(电路的 up 事件)的行为。 呼叫是由远端系统发起的或者是 由本地事件触发的(例如虚接口收到 1 以下如不作特殊说明, L2TP 均表示 L2TPv3,但本章的基本概念多数也适用于 L2TPv2. 西南交通大学硕士研究生学位论文 第 9 页 的异常数据流)。 呼人呼叫如果决定要求使用隧道,那么 LAC 将产生一个 L2TP 的 ICRQ 报文。 Outgoing Call-呼出呼叫 向 LAC 发起一个呼叫的行为,是通过一端的 OCRQ 报文所产生的响应策略。 Outgoing Call Request -呼出呼叫请求( OCRQ) 是指向 LAC 发出的一个请求,以发起一个呼出呼叫。 该请求包含在LAC 上发起呼叫所需的信息,典型的情况下, LAC 预先不知道该信息。 Peer -端 在 L2TP 应用中,端一般是指一 个 L2TP 控制连接的远的一端,例如一个远端 LCCE。 LAC 的端可能是 LNS,也可能是另一个 LAC。 同样LNS 的端也可能是 LAC 或另一个 LNS。 Pseudowire (PW)-伪线 是指一个穿过 PSN 的仿效电路。 每一个 L。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。