我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:创富心水论坛 > 点对点协议 >

多核路由器中点对点协议设计实现pdf

归档日期:08-09       文本归类:点对点协议      文章编辑:爱尚语录

  1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

  A Thesis Submitted in Partial Fulfillment of the Requirements for the Degree for the Master of Engineering Design and Implementation of Multi-core-Based Router Point-to-Point Protocol Candidate : Yi Shangshu Major : Software Engineering Supervisor : Su Shuguang Huazhong University of Science and Technology Wuhan 430074, P. R. China January, 2014 万方数据 独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得 的研究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他 个人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集 体,均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 学位论文作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权 保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。 本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检 索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密□, 在 年解密后适用本授权书。 本论文属于 不保密□。 (请在以上方框内打“√” ) 学位论文作者签名: 指导教师签名: 日期: 年 月 日 日期: 年 月 日 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 摘 要 随着网络的快速发展,越来越多的业务接入网络,网络的数据流量成爆发式增 长,人们对网络带宽的需求越来越大,目前大部门数据中心的访问流量达到了10Gb/s 的级别。以往传统的基于单核处理器的路由器难以满足对日益暴增的网络数据的处 理,人们通过技术革新,将并发性高、处理能力强的多核多线程处理器应用在路由 器上。 根据研究,简单的将为单核处理器而开发的程序直接移植到多核处理器的路由 器上或者不改变软件架构而简单的增加多核处理器的处理核心数目,都不能使的路 由器对网络数据处理的能力得到显著的提高,如何将以前开发的程序针对多核处理 器进行并行化设计将是提高设备性能的必经之路。论文中,将Cpusets技术应用于 XLR系列SMP架构的多核多线程网络处理器上,对处理器核心划分成数据核和控制 核两部分,同时,从数据平面和控制平面对PPP协议的报文处理程序进行并行化分 解,根据需求,可以将分解后的业务 “指定”运行在某些处理器核心上,使得用户 可以灵活控制,摆脱了完全依靠操作系统对处理器核心之间进行负载均衡的依赖, 以提供满足不同芯片类型和多变应用需求的统一软件系统操作平台。在软件架构上, 为了提高PPP协议模块的独立性和对报文的转发效率,将协议划分出以PPP协议协商 为主的用户态模块和处理数据转发为主的内核模块。其中,PPP用户态Daemon采用 多线程设计以增加PPP协商并发度提高PPP用户上线速率,将PPP Daemon处理后的 结果数据同步到内核,以指导内核模块对数据报文的处理。 最后,通过对路由器PPP功能性测试、吞吐量测试和PPPoE用户上线速率测试, 有效的验证了基于多核路由器的PPP系统设计的合理性与高效性。 关键词:点对点协议 多核多线程处理器 数据平面与控制平面 任务分解 I 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 Abstract With the rapid development of Internet and the improving volume of business service, the explosive increasing traffic of data centers even reached the level of 10Gb/s. The traditional single-core processors is difficult to meet the performance requirements for embedded router of increasing of network data. researchers is looking for the multi-core multi-threaded processor technology and apply it on the router l. Research shows that the program developed for a single-core processor before migrate to multi-core processor directly or without change the software architecture just simple increase the number of chip’s core can’t improve the router processing efficiency significantly. How to make a developed program run in parallel will be a research focus. In this paper, by applying Cpusets technology to XLR series of multi-core multi-threading network processor, the processors is divided into data part and control part, meanwhile, separate PPP protocol into data plane part and control plane part, and assigned it to run on the specified CPU, so it can change the control easy according to requirements, and not longer depend on operating system to load balancing, what’s more, it can provide a universal software platform to meet different types of chips and varied application requirements. In the aspect of software architecture, in order to improve PPP module independence and packet forwarding efficiency, the agreement is divided into user mode module of protocol negotiation and kernel module of processing data forwarding, and the PPP daemon in user mode is designed multi-threaded to improve the PPP negotiation concurrency and the rate of PPPoE online. the result data synchronized to the kernel after consulting the PPP daemon processing, and the kernel modules read it directly to deal with packets. Finally, verified the PPP system design is reasonable and efficient through the function test, throughput test and online test of PPPoE on multi-core router. Key word :Point to Point Protocol Multi-core Processor Control Plane & Data Plane Task Decomposition II 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 目 录 摘 要 I Abstract II 1 绪论 1.1 研究背景与意义 (1) 1.2 国内外研究概况 (2) 1.3 论文主要研究内容 (4) 2 相关技术基础 2.1 PPP协议原理介绍 (6) 2.2 多核引擎模型概述 (9) 2.3 转发流程概述 (11) 2.4 本章小结 (17) 3 多核PPP系统的分析与设计 3.1 多核PPP系统的需求分析 (18) 3.2 多核PPP系统的总体设计 (22) 3.3 内核子模块设计 (26) 3.4 PPP守护进程多线 多核PPP系统的实现与测试 4.1 系统主要功能模块的实现 (42) 4.2 系统测试及性能分析 (47) 4.3 本章小结 (53) III 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 5 总结与展望 5.1 全文总结 (54) 5.2 展望 (55) 致 谢 (56) 参考文献 (57) IV 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 1 绪论 1.1 研究背景与意义 IP 网络的快速发展已经影响到人们生活和工作的各个角落,在社会发展的 历程中,信息技术的发展是所有技术发展中速度最快的领域之一,它的发展影 响和改变了人们生活、工作、消费的方式,在这样的发展趋势下,网络设备的 基础建设就显得尤为重要,如何促进网络技术革新是信息时代的到来给我们带 来的问题,而显著的提升网络设备性能就必须有优越性能的芯片,因而满足海 量信息的处理就必须发展基础的芯片技术。以往传统提高处理器处理能力的方 式都是单纯的提升处理器主频时钟,使得在一定的时间内能够处理更多的指 令,但是这种方式在发展到一定程度后会面临诸如散热问题,能耗问题等瓶颈, 阻止了芯片性能提高的步伐,因而技术人员更换技术策略,将工作重心转向多 核多线程技术上,以致后来处理器芯片的主频没有延续以往的提升速度,但处 理器的处理能力却得到不断的延续,在这一领域,出现了MIPS 公司单核心中 多个硬件线程的技术和英特尔公司的超线程处理器技术,这两种技术的出现改 变了传统的CPU发展方式,促使半导体技术快速的发展,这种技术的优越性就 是在多个芯片中可以集成多个处理器核心,在不提升主频和功耗的基础上使得 一个核的处理能力得以明显的提升。对比传统的单核处理器,这种方案使得处 [1] 理器具有低功耗、时延低、性能高等优点 。 目前,从处理器架构设计上可以将多核处理器分为异构和同构两种类型,一般 而言,核心地位对等、内核相同的称为同构多核,比如英特尔公司的多核处理器系 列和RMI公司的XLR系列。核心地位不对等、内核不相同的为异构多核型,异构型 的主要是采用主处理核心与协处理核心组合的设计方案,比如IBM公司研制的Cell [2] 多核处理器就是异构类型的 。本文所采用的是RMI公司的XLR732异构型多核处理 器,它的特点是每个核心上有4个硬件线个核心。线程间发生业务切换时, 处理器能在瞬间即可完成切换到指定线程状态,多核处理器的发展趋势使得以往在 1 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 单核处理器上设计开发的程序都必须重新设计以适应高并发的多核处理器,因而在 [3] 设计程序时必须提高程序的并行性和可重入性 。 路由器作为嵌入式领域的典型设备,是处理网络数据的专用设备,互联网 的快速发展带来的数据流量的日益暴增也给路由器提出了新要求,将多核处理 器应用在路由器上提升其处理能力也是路由器技术发展的主流,以前路由器上 的协议程序都是针对单核处理器设计开发的,因而针对新的多核路由器必须重 新设计程序。目前点对点协议(PPP )仍是路由器中广泛使用的链路层协议, 如何在多核路由器中重新设计PPP程序架构,有效的提升PPP转发性能也将是 一个热点。 PPP协议是在串行线IP (SLIP )协议的基础上发展而来的,SLIP协议不支 持同步传输方式、只能承载网络层中一种IP数据报文、没有协商处理流程等缺 点,在网络的更新换代过程中,渐渐的被点对点协议替代。点对点协议包括链 路控制协议族(LCP )、网络控制协议族(NCP )和PPP扩展协议族三大类组 [4] 成 。PPP协议从1994年至今本身并没有大的改变,但由于PPP协议所具有的其 他链路层协议所无法比拟的特性,如PPP协议具有支持同异步链路、在以太网 中的PPPoE 应用技术,有一个便于扩展各种协议的易扩充的协议框架、支持 LCP ,NCP 协议、提供验证协议,更好的保住了网络的安全性和PPP无重传机 制等优点,它得到了越来越广泛的应用,其扩展支持协议也层出不穷,随之而 来的是PPP协议功能的逐步强大。 随着网络高速发展的信息时代到来,使得路由器的结构越来越复杂化,而原有 的PPP软件架构不能满足日益增长的信息处理能力,将SMP多核技术应用在PPP协议 的实现上将很大程度上提高路由器PPP 的性能[5],因此本文设计并实现的基于多核路 由器的PPP协议具有广泛的实用价值。 1.2 国内外研究概况 目前在路由器系统设计中,PPP协议的设计主要有以下几种。 (1)基于单核处理器的集中式系统架构 2 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 图1-1 单核路由器模型 基于单核通用处理器的集中式架构结构简单,所有的处理由一颗通用处理器完 成,性能受到一颗CPU处理能力的限制,其示意图如图1-1。传统单核处理器执行流 水线会被诸如分页预测错误、流水线互锁事件和缓存缺失等原因阻塞。而单核系统 对性能的提高来自于提高CPU主频、内存访问速度和I/O外设的访问速度,而主频的 [6] 提升遇到了瓶颈,内存访问速度与I/O访问速度极度不平衡 。由于多个业务集中在 单个CPU上,在程序设计时需要最大限度的利用每个时钟周期的计算能力,而发挥 出处理器性能的关键在于控制流水线中程序的执行方式,其开发成本高[7] 。而其优 点是不用考虑复杂的并发场景,程序开发设计简单。 (2 )基于通用处理器的分布式架构 图1-2 通用处理器的分布式架构图 3 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 基于通用处理器的分布式结构如图1-2,控制信息由主控板CPU处理,转发报文 由接口板CPU处理,但没充分发挥多核通用处理器的优越性,PPP各个任务的动态 调度以及在各个CPU之间的负载均衡由操作系统完成,系统的性能不随着CPU核心 [8] 数增加而线性提升 。其优点是摆脱了单一的集中式架构,将系统分成了处理配置 为主的主控板和处理业务为主的接口板,通过扩充多个接口板提升了系统的性能。 (3 )通用处理器与ASIC/NP结合 图1-3 ASIC/NP 架构图 控制信息由通用CPU处理,转发报文专用ASIC或NP进行处理,报文处理能力很 强。其结构如图1-3所示。 基于ASIC 的转发引擎将报文处理流程固化到硬件中,系统开发周期长,系统功 能无法扩充。基于NP 的转发引擎基于微码实现报文处理流程[9],具有一定的扩充性, 但是受到微码空间的限制,很难实现复杂的业务处理;由于不同厂家的NP体系结构 以及开发环境完全不同,基于NP开发的软件重用性差,更换一款NP就需要重新开发 [10] 全套微码 。 1.3 论文主要研究内容 PPP在多核路由器上的设计适应未来互联网的发展需求,具有良好的发展潜力, 是目前路由器技术的研究热点。最近几年在多核路由器体系结构及其关键技术方面 4 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 取得了很大进展,但仍存在一些制约路由器性能的问题需要更深入的研究以取得进 一步的突破。 (1)基于SMP多核处理器模型的非对称应用 本系统基于SMP模型[11] 的非对称应用,目标在于同时拥有AMP和SMP模型的优 点,操作系统在SMP模式下运行,可以屏蔽Multi-core 的细节,基于多线程的并发程 序在操作系统的调度下可以在多个处理器上并行运行,继承了SMP处理器可以充分 利用内存资源、共享I/O、核与核之间通讯的性能很高、处理器核心数增加时无需改 变程序等特性;程序运行类似AMP模型,可以在指定的CPU上运行特定的作业。如 何兼具SMP与AMP模型的优点,简化系统设计,提高系统运行的效率,提供一个适 应需求不断变化的统一软件操作系统平台将是本文研究的一个方面。 (2 )PPP并行化设计 嵌入式多核环境下的任务并行性,不仅是多核处理器多个核心间的并行,而是 如何将程序进行并行化设计,划分独立的模块,减小模块间的依懒性,增加模块的 稳定性,使之可以更佳的适应多核处理器的特点。而细粒度的并行化分解是提高程 序并行化程度的有效措施[12] ,有效的进行模块划分、程序任务分解以及多线程程序 设计是提高程序并行化的方式。本论文通过对多核处理器下PPP协议基于控制平面和 数据平面进行并行化任务分解,来探讨多核环境下PPP 的架构设计和实现,以提高PPP 协议报文转发处理效率,增加数据报文处理和控制报文处理的隔离性;同时探讨在 多核多线程处理器环境下,如何进行多线程设计充分利用多核和多线程的优势,为 多核环境下的应用做出探索性的研究工作。PPP协议作为TCP/IP协议栈中广泛使用的 链路层协议之一,在多核处理器系统环境下对PPP协议进行并行化设计具有重要的实 用价值。 5 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 2 相关技术基础 本章简单阐述系统开发中应用的关键技术,包括开发系统所使用的SMP架构 CPU 的非对称应用技术、路由器系统中数据平面与控制平面划分技术、报文转发技 术以及PPP协议的基本原理。 2.1 PPP 协议原理介绍 PPP协议,其全称为Point-To-Point (点到点协议),在TCP/IP协议栈中的第二 层[13],作为一种提供在点到点连接上传输多协议数据报文的链路层协议,连接物理 层为网络层提供数据服务,支持同步链路和异步链路,其层次结构如图2-1所示。 图2-1 PPP 协议在 TCP/IP 协议栈中的位置 PPP协议能广泛得以应用,主要是因为具备如下优势: (1)支持同异步链路。 (2 )有一个便于扩充其他各种协议的协议框架。 (3 )其中链路控制层协议能够协商各种链路层参数。 (4 )网络控制协议能协商够诸如CBCP、IPCP 、MPLS等协议的多种网络层属 性参数。 (5 )提供PAP 、CHAP两种安全验证方式。 (6 )无重传的机制,网络开销小,速度快。 6 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 2.1.1 PPP 链路建链过程 PPP协议是在SLIP协议上发展而来的,继承了SLIP的优点[14],扩展了SLIP没有 的功能,设计用来为两个对等实体之间的链接传输数据包的,通过数据链接提供全 双工同异步操作。 PPP包含三类协议族[15] ,一类是为了可灵活移植到各种不同环境而提供的链路 控制协议族(LCP ),LCP可用于自定义协商封装格式选项,建立处理各种不同大 小的数据报文链路,探测环形链路以及拆除和监控PPP链路[16] ;一类是为了提供可 以协商所传输网络层的数据报文类型以及协议自身属性等功能的网络控制协议族 (NCP );另一类是PPP扩展协议族,主要用于提供一些特性功能,比如安全性验 证的协议PAP和CHAP[17] 。 PPP提供数据服务之前需要在对等实体间建立链路,链路建立状态过程如图2-2 所示,一般分为五个阶段:死亡阶段(Dead )、创建阶段(Establish )、认证阶段 (Authentication )、网络阶段(Network )、终止阶段(Terminate )。 图2-2 PPP 建链过程 (1)Dead阶段 PPP链路链接需要从这个阶段开始或者结束于这个阶段,当配置管理员配置链 路示意LCP可以协商了,同时,载波检测外部事件触发表明物理层已经准备好了, PPP链路就进入这个阶段,LCP状态机就开始初始化,为后一阶段做好准备。这里需 要注意的是当其中只有一个条件满足时是不会触发进入这个阶段的。 (2 )Establish阶段 7 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 LCP是通过交换配置协商报文来建立链接的,LCP状态机在根据配置处理报文 中携带的协商参数,并做出相应的动作,双方都受到了对方的ACK报文后,就进入 了创建阶段,在创建阶段之前需要协商很多链路层参数,诸如认证加密方式、魔术 字、最大接收单元、是否压缩PPP头等参数,如果双发都配置了验证,协商通过了 验证方式,创建阶段完成后就进入认证阶段,开始交换验证报文决定是否验证通过, 如果验证不通过且超过了最大失败次数就开始拆除链路,如果验证通过,PPP就从 认证阶段进入网络阶段,进行网络层参数协商。 (3 )Authentication阶段 LCP协商通过后,且双方都配置了身份认证选项,PPP就进入身份认证阶段 进行认证,PPP 的认证方式有PAP 、CHAP 以及微软为PC定制的MS-CHAP等,PAP 是口令验证协议,需要将用户名跟密码写入协商报文,对方收到后验证,CHAP 是挑战握手验证协议,这种验证方式比PAP要安全,在协商报文里不传输用户密 码,而是传输经过用户密码作为密钥加密后的随机报文,服务器端收到随机报文 zhikuquan20150721 后通过同样的方式对随机报文加密,然后对比收到的报文来确定是否验证通过。 验证通过后PPP进入网络阶段,失败超过系统设定的最大失败次数后通知LCP拆 链。 (4 )Network 阶段 PPP通过了创建阶段或者认证阶段进入NCP 阶段。NCP是网络控制协议,协商 包括IPCP 、MPLS 、CBCP等子协议[18] 。每个网络层协议都要自己独立的状态机,必 须分别由对应的网络控制协议来配置,在NCP未处于Opened状态时,PPP收到的任 何网络层数据报文必须丢弃,只有通过NCP协商进入Opened状态才能传输网络层数 据报文为网络层服务。 (5 )Terminate阶段 进入这一阶段的原因有很多,比如超过认证失败最大次数、用户计费授权失 败、管理员断开链路等,当这些事件发生时,PPP通过向相应协议状态机报Down 事件通过状态机开始拆链,如果非管理员shutdown,还需触发LCP重协商定时器 等。 8 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 2.2 多核引擎模型概述 多核路由器中使用的多核芯片大多为RMI公司的XLR系列,比如XLR732 ,该 芯片集成了8个核心,每个核心中有4个硬件线程,由于硬件线程切换的高效性和 每个线程都拥有独立的寄存器 [19] ,所以从逻辑上看该款芯片支持32个独立的 VCPU 。每个CORE拥有独立的一级CACHE (包括指令CACHE和数据CACHE ), 各CORE之间共享二级CACHE[20] ,各个CORE之间是完全并行的,但一个CORE 内 硬件线程的执行是串行的。XLR系列CPU为多核提供了专用的通信网络FMN ,各 CORE之间通过消息网络进行通信,消息网络的高带宽和低延迟解决了以往多核 [21] CPU上的通信瓶颈 。 多核系统中,支持Multi-core主要包括2种基本模型技术:异步多核处理器模型 [22] (AMP )和同步多核处理器模型(SMP) 。 2.2.1 AMP 模型 zhikuquan20150721 AMP是非对称多核处理器,该模型的处理器芯片中包含一个主核与多个协处理 核,在组织上有主从的关系,主核主要负责系统的任务分配,保证系统任务高效的 调度和负载均衡,一般不处理执行某个任务,而协处理器主要处理主处理器分配的 任务,或者执行某些预定的任务,在上一代路由器中采用AMP架构的较多,一般设 计为用通用处理器处理一般性的任务,比如配置管理等,而设计一个或者多个协处 理器完成核心的数据转发任务,可以根据任务的需求,自定义的将任务指定运行在 某些协处理核上,这种方案的路由器在处理大量网络数据时具有很强的能力, AMP模块中,各VCPU上运行的软件不同,而且VCPU之间存在业务依赖关系, 其模型主要缺点有: (1)用AMP模型的系统在设计时必须明确资源如何划分和共享,需求改变后, 后期调整比较麻烦; (2 )AMP模型中每个核心运行独立的操作系统,不是一个操作系统统一管理 所要资源,程序设计复杂; (3 )由于每个核上操作系统的独特性,当核数目增加时,程序需要重新设计, 9 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 开发成本较高; [23] (4 )每个核之间、进程之间同步采用类似网络消息的方式,性能较差 。 2.2.2 SMP 模型 SMP是对称多核处理,相对AMP 中核之间存在主从关系,SMP中由多核同构的 核和共享的内存系统构成,SMP中每个核都是对等的,所有核都是由一个操作系统 统一管理,用户应用程序并不是绑定在某一个指定的核上。通过统一的操作系统管 理所有资源,操作系统对外提供接口,操作系统会将任务分配给多个CPU上并发执 行,用户不用关心任务在核间调度的问题,屏蔽了多核的细节,提高了系统性能[24] 。 由于SMP模型中各CPU之间通讯的效率很高,各CPU共享内存、I/O等资源,SMP模 型具有优越的可扩展性,芯片核数目增加后,用户程序无需重新设计[25] 。 SMP模型中,各VCPU上运行的软件相同,VCPU之间完全对称,如果采用SMP 模型软件设计相对简单,只要做好临界资源的保护即可[26] 。目前操作系统大都支持 SMP架构模型,例如电脑上运行的Linux ,Solaris,Vxworks等。SMP模型本质上是 zhikuquan20150721 各个CPU之间的紧密耦合模型。SMP模型也存在缺点: (1)SMP模型各个任务的动态调度以及在各个CPU之间的负荷均衡由操作系统 完成,系统性能不能随CPU数目线 )编程模型相对复杂,同步和互斥需要慎重考虑; (3 )当CPU数目持续增加时,内存的访问效率将是整个系统的性能瓶颈。通过 NUMA可以解决SMP模型的逻辑扩展问题。 AMP模型可以将用户程序“指定”运行在某个核上,能够根据需求灵活调整, 但没有一个统一的操作系统管理所有系统资源。SMP模型相比AMP模型是其可作为 一种通用软件模型。为了克服其缺点,结合AMP模型的优点提出了“SMP模型的非 对称应用”。 2.2.3 SMP 模型的非对称应用 SMP模型的非对称应用操作系统在SMP模式下运行,结合AMP模型可“指定” 用户程序运行到某个CPU上等优点的新模型[28],相比AMP模型用户程序需要针对某 10 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 一特定型号CPU开发程序、开发成本高、系统升级复杂,SMP非对称应用模型摒弃 这些缺点,采用SMP模型中统一的操作系统管理所有系统资源,共享I/O和内存,用 户不用关心多核系统调度问题,系统不完全依靠操作系统进行核之间的负载均衡, 用户可以根据应用需求灵活调整,简化了程序设计,系统升级时可以简单的平滑处 理,并且这种模型不是针对某一型号CPU,具有通用性和很好的可扩展性,能够提 [29] 供一个平台多种应用的统一软件系统 。 SMP模型的非对称应用对于操作系统的基本需求是支持处理器亲和性特性,是 目前QNX和Vxworks等嵌入式操作系统推荐的Multi-core支持模型[30] ,在QNX系统中 称为:BMP (Bound Multi Processing ),在Vxworks系统中称为:AMP in SMP 。这 些系统都是基于Linux 的,Linux系统弄过扩展了处理器亲和性的概念,提供了Cpusets 的功能。Cpusets Linux官方定义为:Cpusets 向用户提供分配一组CPU和内存到一组 任务的机制,并能够约束任务的CPU和内存只在当前Cpusets 内。对于一个具有n个 CPU 的Multicore系统,假设m (0m=n )个CPU运行控制平面,其余n-m个CPU运 zhikuquan20150721 行数据平面,采用Cpusets技术将处理器划分两个子Cpusets :Control plane Cpusets 和Data plane Cpusets 。 包含在Control plane Cpusets 中的CPU称为控制核,包含在Data plane Cpusets 中 的CPU称为数据核,控制核上接收和处理达到本设备的控制报文,运行各种控制协 议,属于控制系统的全部进程和线程属于Control plane Cpusets ;数据核则仅仅运行 负责数据转发的软中断线程,快速转发报文,实现转发性能最大化[31] 。对于采用 ASIC/NP芯片转发的系统,则仅存在Control plane Cpusets,Data plane Cpusets为空。 在Control plane Cpusets 内部,可以继续划分Cpusets,比如可以为配置管理类进 程、路由协议类进程等分别继续划分子Cpusets,以提供可保障的CPU和内存资源[32] 。 2.3 转发流程概述 报文转发引擎包括两种模型:包转发引擎、流转发引擎。例如PPP报文的转发 引擎都是基于包的,即在转发过程中,各个环节是按照包的特征来处理的,需要针 对报文信息进行识别和判断;流转发引擎模型是对报文特征进行抽象的基础上,将 11 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 具有相同特征的报文用唯一的流ID进行标识,报文后续处理中只需要根据这个流ID 就可以完成相应动作,不需要再逐包解析报文信息;包转发引擎方式下的快转具备 了一定的流转发特征,但从严格意义上来说它还是基于包的,毕竟整个转发流程中 它还是根据包所携带的报文信息进行识别,而不是基于一个各模块统一识别的流 ID,IP报文转发模型如图2-3所示。 zhikuquan20150721 图2-3 IP 转发模型 一个报文从物理接口接收上来后,需要完成数据平面MBUF封装,这里需要填 写接收接口的索引、报文来源的标志和站点ID 。 XLR芯片上集成了部分高速网络接口,这些接口通过消息网络和各CORE连接, 从接口接收上来的报文经过硬件Parser解析后将通过消息发送给指定的VCPU ,另 外,为了兼容其他路由器的板卡,还支持以PCI 中断的方式接收报文,由于目前只 在CORE0 (其中一个VCPU运行控制平面)上打开了中断,所以这类报文的接收中 断将报给CORE0,中断响应处理中将向产品驱动的转发任务写消息,并写事件通知 该任务进行报文接收,完成报文接收后对报文进行MBUF封装,CORE0 中有固定两 个硬件线程实现报文分发的功能,封装后的MBUF经过流分类计算后分发给某个转 发VCPU[33] 。 按照流转发过程中各个关键处理模块的执行顺序,主要包括下面几个模块:链 路层接收处理模块、流分类处理模块、IP/MPLS报文接收处理模块、业务处理模块 (此模块在FIB查找前后都存在处理,并且也存在业务处理完成后不再返回转发流 程的情况,这里只考虑业务完成后返回转发流程的处理)、查找FIB/邻接表,链路 12 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 层、QOS发送处理模块[34] 。下面以以太网中IPv4报文类型为例,对转发流程做简要 介绍。 模块之间的关系,如图2-4所示。 zhikuquan20150721 图2-4 报文转发处理流程图 2.3.1 链路层接收 完成MBUF封装的报文,由驱动接口调用注册在接收接口上的链路接收函数进 行后续处理,从驱动传上来的报文可能是数据报文也可能是PPP协商报文,不管是 什么报文,只要接口封装为PPP ,驱动层就会调用注册给驱动的PPP 内核接收函数, PPP模块取出报文中协议字段,根据协议类型判断是数据报文还是协商报文,如果 是协商报文通过packet socket 由内核态上送至用户态,如果是数据报文则交给网络层 相应协议处理。内核接收函数首先判断报文是否需要同异步转换和合法性检查,然 后判断接口是否为MP子通道,对MP分片报文需要重组成功后在处理,最后对重组 成功的报文进行接收处理,读取报文中协议字段,根据协议类型交由相应模块处理。 PPP数据报文上送网络层处理后调用PPP 内核发送,PPP协商报文上送用户态,根据 13 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 用户态协议状态机状态和事件做出相应动作,对于需要发送协商报文通过packet socket发送至内核,内核通过PPP发送流程将报文发送。 其处理流程,如图2-5所示。 zhikuquan20150721 图2-5 报文接收处理流程 2.3.2 流分类 流分类主要功能是对每个参与转发的报文打流标签,相同流的报文保持流标签 一致,同时系统内可以保证流标签唯一,这样后续的处理模块可以根据这个流标签 进行识别和快速处理。 为什么要使用流分类?这和多核CPU有关,由于运行转发的VCPU共享数据平 面的代码段,各VCPU实现的功能相同,从接口接收上来的报文需要均衡地分担(这 里的均衡是基于流的,但不同流的带宽不同,所以这里提到的负载均衡并不是线 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 意义上的均衡)到各VCPU上,这样就需要在报文进入转发前先进行分类处理,在 实现上,流分类包括硬件流分类和软件流分类,并且硬件流分类和软件流分类也需 要协同工作。 (1)硬件流分类 多核环境下硬件流分类是基于CPU提供的硬件支持,在XLR 的CPU 中集成了几 类高速口,如GMAC,针对这类接口CPU实现了一种网络加速处理机制,这其中就 包括流分类,整个流分类处理包括三部分:Parser 、Packet Director和Packet Distribution Engine ,其中Parser用于从接收的报文中根据预先定义的字段提取信息,提取信息的 最大限制是128bit,这128bit可以包括6个组成部分,例如,一个以太报文承载的是 IP/TCP协议报文,可以设置它需要提取的信息包括:源IP 、目的IP 、协议号,提取 了报文信息后Packet Director 以这些信息为Key并进行分类,这里分类信息即是对应 的VCPU ID ,然后将分类后的报文提交Packet Distribution Engine进行分发,将报文 发送到指定的VCPU ,采用了硬件流分类处理后,相同流的报文会被发送到相同的 zhikuquan20150721 VCPU 。经过硬件流分类处理的报文还是比较粗糙的,如目前IPV4进行分类是基于 三元组的,这样不同的会话无法进行区分,所以需要软件流分类进一步进行分类, 软件分类后将计算出的流标签设置到MBUF 中,后续的业务处理中可以依据此流标 签进行匹配处理。 (2 )软件流分类 有些报文由于链路头信息不固定,如FR报文,不同封装、不同协议对应的链路 头都可能不同,无法采用硬件流加速进行分类处理,但又要求不同流在VCPU 间进 行负载分担,这样就要求采用软件实现分类功能,软件流分类模块根据VCPU角色 的不同具有不同的功能,在上面硬件流分类中提到的软件流分类功能只是起到计算 和设置流标签的功能,而在VCPU4上运行的流分类除了具备上述功能外,它还实现 了报文分类后分发的功能,即实现了硬件流分类中Parser 、Packet Director和Packet Distribution Engine 的功能,经过分类后的报文通过消息发送到指定的转发VCPU上, 在转发VCPU上流分类注册了消息回调处理函数,根据报文类型分别调用入口函数。 在转发过程中,除了链路层解析时会调用流分类处理函数外,隧道终结报文也 15 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 会调用流分类处理函数,同时,在分布式环境下,透传后的报文也需要重新进行流 分类处理,为什么隧道终结的报文需要重新进行流分类处理呢?由于隧道报文中的 乘客报文可能来自不同会话,但由于报文在第一次流分类处理时用到的是外层隧道 的信息,这样不同会话就会被打上相同的流标签,为了报文在出隧道能被正确地处 理,所以需要对隧道终结报文重新进行流分类处理。 各种类型报文打完流标签后,会判断当前VCPU 是否是专用于软件流分类的 VCPU ,如果不是则直接调用各报文处理函数,否则将通过消息将报文发送到指定 的VCPU上。 2.3.3 FIB 表和邻接表查找 报文转发的依据就是FIB表项和邻接表项[35],在多核环境下,数据平面的FIB表 是控制平面FIB表的镜像,但出于功能侧重点不同,两个平面FIB在存储内容上还是 存在差异的,数据平面FIB主要完成报文转发,和管理相关的成员如表项同步、关 联等信息不再记录,在减少部分成员的同时也增加了指向邻接表的成员,数据平面 被抽象为芯片的概念,所以数据平面中的FIB需要建立到邻接表的联系,报文一旦 获得正确FIB表项后就可以直接获取邻接表项,而不需要再次查找,而这种联系是 控制平面FIB和邻接表相互配合而建立。 2.3.4 链路层QOS 发送 报文获取FIB并进一步获取到邻接表后将进行链路层发送,对于大部分链路层 模块都可以实现报文的邻接表发送,链路层发送时只需要根据已经记录好的链路头 贴头就可以了,但对于某些需要进行特殊处理的链路层模块,如PPPOE 、GRE等需 要逐包修改内容,需要邻接表提供专用发送函数,各链路模块根据业务需要决定是 否使用专用发送函数。在专用发送函数中,链路发送走的是普通的链路封装流程, 效率当然是要慢很多。完成链路层封装的报文将进入QOS处理,目前为了实现QOS 处理的一致性,控制平面的OQS发送函数被数据平面QOS发送函数接管,从控制平 面发送的协议类报文,如ARP请求报文或链路协议报文也将进行数据平面的QOS处 [36] 理 。 16 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 至此,一个从驱动上送的报文就完成了上层处理,在QOS发送中将由接口下挂 的物理发送函数进行发送处理。 2.4 本章小结 本章介绍了首先从PPP在TCP/IP 的层次和PPP链路建链过程介绍了PPP协议的 基本原理,其次,简要介绍了AMP和SMP两种架构的多核引擎模型,并引入了基于 SMP模块的非对称应用,介绍了数据平面和控制平面转发的概念;最后从流分类、 FIB表、邻接表和QoS发送等方面介绍了报文的转发流程。 17 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 3 多核PPP 系统的分析与设计 通过上一章的介绍,已经对SMP多核多线程系统和PPP协议有了大概的了解。 本章就是在这些基础上,首先分析了PPP在多核路由器中多核并发的功能需求和性 能需求,其次,重点讲述了PPP基于数据平面和控制平面进行内核模块与用户态模 块划分的并行化模块设计,并详细说明了其内核模块的功能设计和用户态守护进程 多线 多核PPP 系统的需求分析 为了解决PPP在上一代路由器架构上的缺陷,提升软件性能,满足不同类型路 由器芯片架构的统一数据通信软件平台,同时满足企业网用户和运营商用户对软件 定制和高转发效率的要求。需要开发出一套向开发人员发布的SDK、API 、说明书、 DDK 、二进制lib等交付件,并与产品开发的二进制lib交付件一起链接、打包形成最 终发布的二进制映像文件发布给用户在网络设备上部署,满足最终用户的网络建设 和管理,对多核PPP系统提出了新的功能需求和性能需求。 3.1.1 功能需求 作为目前仍广泛使用的链路层协议之一,PPP在未来仍有广阔的应用,PPP具有 错误检测,环形链路检测、提供安全性验证、支持授权计费等特性,特别是授权计 费功能,在目前网络运营商中应用最为广泛,运营商向用户有偿提供账号密码使其 可以通过以太网上网,而运营商在以太网中控制的技术就是PPPoE技术,PPPoE是 PPP在以太网中的应用,这种技术可以灵活的控制用户上网策略。 PPP作为链路层协议,连接物理层和网络层,是为网络层提供数据承载服务的 协议之一,其需要提供的功能有: (1)PPP 的应用广泛性,可以运行在多种环境中,模块涉及到很多相关模块, 比如DDR 、FR 、HDLC等,底层可能是驱动层也有可能是DDR这些链路,因此PPP [37] 必须兼容这些环境 ; 18 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 (2 )PPP作为链路层协议除了为网络层承载数据服务外,本身还有一些协议功 能,比如PPP链路建链所使用的LCP子协议,网络层参数协商的NCP子协议; (3 )提供安全性验证的PAP和CHAP子协议,以及扩充到PPPoE用户上网计费 授权等功能; (4 )作为运营商广泛使用的链路层协议之一,需要兼容不同种类的物理链路, 因此PPP需要支持BRI/PRI 、POS 口、E1 口、同异步口等以适应链接不同类型的链路; 3.1.2 性能需求 网络时代的到来时的越来越多的用户接入互联网,互联网的业务也变得越来越 多样化,这使得必须提供足够吞吐量的网络设备来满足需求;另一方面,各种角色 的网络用户需求和不断创新的网络企业都使得网络应用不断增长,新业务需求不断 出现,服务提供商必须快速的满足多样的用户需求,从而保证在市场中的地位,避 免淘汰的可能。在这样的背景下,网络设备核心路由器必须跟进时代的步伐,在满 足新业务的同时必须不断提高路由器转发性能。而如今PPP作为广泛使用的链路层 协议,也艰巨不断去提升性能去满足市场的要求。 (1)多核并发的性能需求 网络信息量的爆发式增长加上提升芯片主频遇到瓶颈,人们发现传统的单核集 中式路由器已经不能满足海量数据处理的需求,技术人员开始将多核处理器芯片应 于路由器上,并在架构上采用分布式,即单个路由器节点采用主控板加多个接口板 的设计方案,每个接口板都能单独的处理数据,这样很有效的提升了路由器的性能。 在高端路由器中针对单一的业务,某些接口板处理器芯片甚至采用集成电路处理器 (ASIC )或者网络处理器(NP ),这种芯片处理的能力更强,但是路由器转发引 擎的设计对硬件的依懒性大,芯片微码空闲有限和扩展性差,通常设计用来处理单 一的业务或者快速的数据转发。针对业务复杂的PPP协议模块,采用上述处理器架 构的路由器处理性能大打折扣。 为了解决集中式路由器转发性能差,分布式专用芯片路由器业务差且部署成本 昂贵的问题,提出了路由器采用多核分布式技术处理业务的概念,充分利用处理器 19 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 多核的优势重新设计PPP软件架构,划分不同处理模块,做到在处理数据报文时随 时根据报文的类型进行分支业务处理,而业务处理模块是在不同核上并行处理的, 这样利用多核并发的优势最大程度提升了路由器性能,而且可以很容易地进行功能 扩展,其示意如图3-1所示。 图3-1 PPP 多核业务分配示意图 (2 )并行化模块设计的需求 Linux 以SMP的方式管理系统所有的CPU ,系统运行时大多数任务都共享所有 CPU,这样势必造成任务对CPU 的竞争,为了保证一些关键业务的性能,避免与其 他业务竞争CPU资源,就需要划分一些CPU 出来,让这些业务独享。这些划分出来 的CPU称之为CPUSETS 。多核系统上,将CPU从控制平面与数据平面分成两个子集: control plane cpusets和data plane cpusets 。control plane cpusets上的CPU负责运行控制 业务,data plane cpusets上的CPU负责运行数据业务。在控制平面或者数据平面都由 许多业务模块的任务运行,这些业务都共享控制平面或数据平面的CPU,在CPU忙 碌时各模块的性能是无法保证的,为了限制一些模块对系统整体性能的影响或为了 一些模块的性能,可以让指定模块的任务只在部分CPU上运行,业务模块可以通过 在控制平面的CPUSETS下创建自定义的CPUSETS来达到这个目的,这些自定义的 CPUSETS可以动态的创建删除和修改包含的CPU,添加指定的任务,一个任务被加 入CPUSETS后,其CPU亲和性会发生变化,即该任务只能在该CPUSETS所包含的 CPU上运行。例如,单核支持四硬件线程的八核设备拥有VCPU0~VCPU31 ,如图3-2 20 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 所示,将CORE0分配运行控制平面,其他核分配给数据平面。CORE0 中VCPU1可能 分配处理一些协商报文,获取路由信息等控制平面任务,或者CORE0 中VCPU1 、 VCPU2可能分配给驱动实现PCI类板卡响应中断处理,VCPU3可能分配处理FIB表, 获取邻接表等信息;VCPU8~VCPU31用于数据平面的报文转发。 图3-2 数据平面与控制平面业务划分示意图 在多核PPP系统中,为增加模块间的独立性和亲和Linux下CPU集的概念,需要 对软件进行模块并行化设计。其处理方案就是将PPP模块按功能进行用户态和内核 态的拆分,充分利用多核CPU的资源,将PPP协议并行执行的性能最大程度的提高。 其中用户态部分主要处理协议协商等控制部分,运行在单独的Core上,生成用于指 导数据平面对报文进行转发处理的控制信息、提供设备的维护管理功能。内核态部 分主要实现数据平面功能,运行在其他多个Core上,一方面利用底层驱动提供的API 进行报文收发、报文分类等,另一方面利用用户态提供的控制信息完成报文转发、 过滤、封装/去封装等操作。 (3 )PPP Daemon多线程设计的需求 人们想通过相同的接入设备来连接到远程站点上的多个主机,同时接入设备能 够提供与拨号上网类似的访问控制和计费功能。在众多的接入技术中,把多个主机 连接到接入设备的最为经济的方法就是以太网,而PPP协议可以提供良好的访问控 制和计费功能,于是产生了在以太网上传输PPP 的方法即PPPoE 。PPPoE协议的提出 解决了用户上网收费等实际应用问题,得到了宽带接入运营商的认可并广为采用。 面对不断增加的上网用户,如何解决用户大量同时上线是运营商对路由器性能提出 的新需求,也是新一代路由器所面临的问题。 PPP报文分为协议协商报文和数据报文两大类,数据报文是PPP承载着为网络层 21 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 提供服务的数据内容,协商报文主要是用于PPP建立和维护PPP链接,其中协商报文 处理的速率直接影响PPPoE用户上线速率。因此如何有效利用多核CPU 的优势并发 设计PPP协商处理程序将是关键所在。 3.2 多核PPP 系统的总体设计 以下就从PPP协议模块的软件总体架构设计、PPP多核并发业务划分和PPP并发 数据结构进行介绍来分析PPP模块针对多核路由器的总体设计。 3.2.1 总体架构设计 为增加模块的独立性,提供程序的并发度,将PPP业务划分为控制平面和数据平面 两大部分,控制平面主要在Linux用户态实现,数据平面主要在Linux 内核态实现。PPP 用户态部分以守护进程的形式存在,主要处理PPP各种子协议协商过程中状态机的转 变、与其他模块间事件的响应、PPP配置管理、备份、计费授权等,PPP 内核部分不是 以一个进程的形式存在,而是运行在驱动、接口管理的软中断上下文中,主要处理链 路层数据转发、上报链路层状态变化以及相应各种事件。其系统架构如图3-3所示。 图3-3 PPP 模块软件架构图 22 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 PPP在用户态有自己的进程PPP Daemon 、PPP命令行插件、用户态PPP提供的对 外接口PPP LIB 、完成命令或MIB解析处理的PPP MOR LIB 。PPP Daemon主要完成 PPP所用资源的初始化、PPP配置命令的下发、配置写DB 、协议协商处理、各种外 部事件的处理等;PPP命令行插件完成PPP命令的注册和解析;PPP MOR LIB完成命 令消息的组装并向PPP Daemon 的发送;PPP LIB提供用户态对外接口。 PPP 内核态存储的数据主要用来指导链路转发、与用户态PPP进行平滑处理,这 些数据一部分来源于PPP用户态(通过CIOCTL 的方式下发到PPP 内核),一部分来 源于内核态其它模块(内核通过其它模块提供的接口获取)。PPP 内核态的报文接 收处理,对于数据报文直接交给转发,对于PPP协议报文通过Packet Socket上送PPP 用户态;PPP用户态的协议报文发送处理,是由PPP用户态通过Packet Socket送至PPP 内核态进行发送。PPP 内核态外部事件处理需要通知PPP用户态,可以通过Kevent Notify来实现。内核PPP不需要有单独的线程来处理,而是运行在驱动软中断、PPP 进程等上下文中[38] 。 3.2.2 多核并发业务划分 根据软件功能的分工,从逻辑结构上可以将PPP模块划分为控制平面和数据平 面两大部分,控制平面主要负责PPP协议的协商、配置信息恢复、备份、计费授权、 链路状态维护和配置管理等,其实现主要在Linux 的用户态。数据平面主要负责报文 的转发、PPP MP分片报文的重组和周边业务处理,基于多核CPU的PPP数据平面处 理实现在Linux 内核中,这样将控制平面和数据平面分离有利于模块的独立性,将 [39] ,PPP控制 PPP核心的报文转发部分放在Linux 内核有利于系统的稳定性和高效性 平面的处理放在Linux用户态部分可以隔离控制平面的不稳定性,即使控制平面处理 的进程异常也不会影响到PPP数据报文的转发,路由器中数据业务的处理占主要部 分,因此针对多核路由器,可以利用SMP模型的非对称应用将控制平面的处理指定 在一个核上,其他核“分配”给处理数据平面业务,有利于提高路由器的性能和稳 定。PPP用户态和内核态之间制定的一套通信接口连接控制平面与控制平面。其逻 辑图如图3-4所示。 23 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 图3-4 PPP 数据平面与控制平面框架 (1)在驱动中断上下文中将PPP数据报文交由数据平面处理 (2 )数据平面将来自控制平面的报文或者数据平面需要转发的报文交给驱动层 发送处理 (3 )数据平面收到报文后,读取报文协议字段,根据协议类型将协商报文上送 控制平面处理 (4 )数据平面收到非法报文或者数据错误报文直接丢弃 (5 )控制平面中协商状态机收到对端报文后,将应答报文交给数据平面进行发 送处理 (6 )控制平面中协议协商后将协商结果同步到数据平面用于指导数据平面对报 文转发处理 (7 )数据平面与控制平面间的通讯,例如统计信息上报、事件等 (8 )驱动层与控制平面间通讯,例如数据下刷到驱动、物理接口状态变化等 3.2.3 PPP 并发数据结构设计 PPP守护进程为每个接口创建一个控制块,核心数据结构为PPP接口控制块信 息,PPP接口控制块上存储接口索引、接口配置信息、运行信息,及各协商阶段动 态协商信息。其中接口配置及PPP运行信息需要写入DBM ,进程启动时需要进行配 置恢复及运行数据的平滑处理。 24 万方数据 华 中 科 技 大 学 硕 士 学 位 论 文 用户态与内核态各自维护为每个接口分配的控制块,接口创建时,接口管理会 报事件,如果向接口管理注册了响应该事件函数,则创建一个控制块用于控制管理 该接口,接口事件主要有接口创建、删除、激活、去激活、down、up 、换封装等事 件。控制块保存了接口状

  优秀毕业论文,完美PDF格式,可在线免费浏览全文和下载,支持复制编辑,可为大学生本专业本院系本科专科大专和研究生相关类学生提供毕业论文范文范例指导,也可为要代写发表职称论文提供参考!!!

  ·白菜(Brassica+campestris)浸花法转基因技术与研究.pdf

  ·环孢素A对正常人PBMCs产生IFN-γ抑制作用和机制与研究.pdf

  ·高强度聚焦超声立体定向治疗并联机器人对组织损伤效应实验与研究.pdf

本文链接:http://websarmiento.com/dianduidianxieyi/710.html

上一篇:PPP验证(PAP和CHAP)

下一篇:没有了