(计算机应用技术专业论文)基于netgraph的cmmb协议栈的研究与实现.pdf_第1页
(计算机应用技术专业论文)基于netgraph的cmmb协议栈的研究与实现.pdf_第2页
(计算机应用技术专业论文)基于netgraph的cmmb协议栈的研究与实现.pdf_第3页
(计算机应用技术专业论文)基于netgraph的cmmb协议栈的研究与实现.pdf_第4页
(计算机应用技术专业论文)基于netgraph的cmmb协议栈的研究与实现.pdf_第5页
已阅读5页,还剩86页未读 继续免费阅读

(计算机应用技术专业论文)基于netgraph的cmmb协议栈的研究与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

t j 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均己在论文中作了明 确的说明并表示谢意。 签名:刍0 址日期:力承年歹月叫日 论文使用授权 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:佥丝 导师签名:三垂丝 日期:b 沙年歹月f 日 摘要 摘要 随着手机的日益普及和智能化,人们对于移动终端的各种应用的热情也越来 越高。越来越多的移动终端及其相关的产品极大的丰富和改善了人们的生活。 c m 但多媒体广播电视正式在这种情况下产生并走向成熟的。 c m m b ( c l l i n am o b i l em u l t i m e d i ab r o a d c a s t i i l g ) 标准是国家广播电影电视总 局推出的自主研发、具有自主知识产权的移动广播电视标准。国外主流广播电视 标准还有美国高通公司提出的m e d i a f l o ,欧洲的d v b h 和韩国的t - d m b 等。 本文实现的c m m b 协议栈是c m m bm r v 手机电视播放器的一部分。该协议 栈采用了在f r e e b s d 操作系统中用于p p p 等协议栈构建的n e t 孕叩h 机制。n e t 孕a p h 中的内存管理部分是用m b u f 机制实现的。鉴于国内外对于n e t 鳓和m b u f 机制 进行详细介绍的资料甚少,本文通过深入分析,详细阐述了n e t 鳓机制和m b u f 机制的实现原理,然后提出了这两种机制使用的方法。并结合实际的项目,提出 了把n e t g r a p h 从e c o s 操作系统上移植到、7 l ,i n d o w sm 0 b i l e 上的具体做法。移植工 作主要涉及到n e t 黟a p h 的软中断机制,s p l 互斥机制,以及对于m u f 长度的修改 方法。根据c m m b 协议标准,本文给出了一种在n e t 伊a p h 机制的基础上构建 c m h 侣协议栈的设计和实现方案,并结合n e t 鼬的特点设计和实现了协议栈底 层的驱动适配层。 实际测试和产品应用的结果表明,基于n e t 蓼a p h 构建的c 啪协议栈很好地 适应了嵌入式设备的要求,具有稳定可靠、内存利用率高、结构清晰、高内聚低 耦合的特点,实现了预期的目标。 关键词:c m m b ,n e t 掣a p h ,m b u f ,协议栈 4 - a b s t 咒l c t a b s t r a c t a sm o b i l ep h o n e sb e c o m em o r ea n dm o r ep r e v a i l e da n di n t e l l i g e n t ,p e o p l eb e c o m e m o r e 锄dm o r cp a s s i o n a t ea b o u tv a r i o u sa p l p l i c a t i o n sf o rm o b i l et e r m i n a l s i i l c r e a s i n g i m m b e ro fm o b i l et e n i l i n a l s 锄dr e l a t e dp r o d l l c t sh a v ee n o 皿o u s l y 训c h e da n d i i n p r 0 v e dp e o p l e sc v e f ) ,d a yl i f e c m m bh a sg r o w na 1 1 db e c o m em 抓玳r i g h tu n d e rm e c i i u m s t a n c e s c m m b ( c h i l l am o b i l em u l t i l n e d i ab r o a d c a s t i n 曲s t a l l d a r di sa m o b i l eb r o a d c a s t i n g t e l 晰s i o ns t a n d 莉s e l fd e v e l o p e db yn l es t a t eb r o a d c 枷n gf i h n 弛dt e l 嘶s i o n a d m i n i s 仃a t i o n ( sa r 聊,a i l ds 脚t o w n si t s 证d 印e n d e n ti n t e l l e 咖a 1p r o p 哪r i 出s t h em a i ns t a l l d a r d sa b r o a di 1 1 c l u d e :m e d i a f l od e v e l o p e db y 加n 甜c a nc o m p a i l y q u a l c o m m ,d v b hi i le u r o p e 锄dt - d m b i i lk d r e a t h ec m m b p r o t o c o ls t a c kd e v e l o p e di nt 1 :l i s 戗l e s i si sap a r to ft l l ec m m bm t v m o b i l ep h o n et vp l a y e rs o f h ) l ,a r e t h ep r o t o c 0 1s t a c kh 舔u _ t i l i z e dn l en e t 黟a p h m e c h a l l i s i i li nf r e e b s d0 s t h em 锄。巧m a i l a g 锄酬i nn e t g r a p hi sc o n 咖1 1 e d b y m b u fm e c h 锄i s m 舳v e 巧f i e wd o c u m e i l t sh a s 西v ed e t a i l e di i l t r o d u c t i o na b o u t n e t 鲫h a n dm b u et l l i sm e s i s 仃yt o 百v em o r ec o m p r e ! h 肌s i v ed e s c r i p t i o nf o rn e t 粤a p h 孤dm b u fm e c h a l l i s ma r e rt l l o r o u 曲s t u d y 孤da l s o 百v e st 1 1 es p e c i 6 cp r o c e d u r ef o r 仃a n s p l a n t i i l gn e t g r a p h 五me c o st o d o w sm o b i l ec o m b i n i i l g l ep r o j e c t t h e 仃a i l s p l 觚t i i l gp r o c e d w em a i l l l y i i l c l u d e st l l es m e c h a i l i s ma 1 1 ds p l 舢t e x m e c h a i l i s mi nn e t 铲a p h ,a i l da l s os o m em o d i f i c a t i o nt om em b u a c c o r d i n gt 0c m m b s t a i l d 矾,仳sm e s i sp r 0 v i d e sas c h e i i l et od e s i 印a i l di m p l 锄c n tc m m bp r o t o c o lb a s e d o nn e t 铲印h ,a i l da l s od e s i 盟e da n di m p l e m e i l t e dt h e 曲v e ra d 印t o r1 a y e ra tm eb o t t o m o f t h ep r o t o c o ls t a c k1 a y 既 t h et e s 妇ga n da p p l i c a t i o no ft h es o 胁a r ei n d i c a t 懿m a t :n l ec m m bp r o t o c 0 1 s t a c kb a s e d0 nn e t 孕a p hs a t i s 丘e dt l l er e q u i r e m e i l t so f 蹦l b e d d e dd e v i c e s ,髓di t sf e a n 】r e i i l c l u d e s :s t a b l e ,h i 曲m e m o 巧l l s a g er a t i o ,d e a rs 仃u c t l l r e ,h i 曲c o h e s i o n 锄d1 0 w c o u p l i n g 1 | 哂唧o r d s :c m m b ,n e t g r a i 她m u p r o t o c 0 1s t a c k 目录 第一章 1 1 1 2 1 3 1 4 目录 引言1 研究工作的来源、意义与目标1 心怂但多媒体广播电视2 1 2 1c m m b 多媒体广播电视系统2 1 2 2c m m b 的发展和应用3 其他主要广播电视标准。5 1 3 1m e d i a f l o 。5 1 3 2d v b h 。6 1 3 3t - d m b 。6 ,j 、l 砉7 第二章n e t 龋a p h 机制和m b u f 机制研究8 2 1m b u f 内存管理机制8 2 1 1m b u f 内存池。8 2 1 2 【b u f 结构9 2 1 3m b u f 内存的使用1 1 2 2n e t 蓼印h 机制原理。1 2 2 2 1 n e t 簪a p h 简介12 2 2 2 n c t 鲫h 的基本数据结构1 3 2 2 3 n e t 酉a p h 中数据和命令消息的传递1 4 2 3n c t 簪印h 构图方法2 0 2 3 1定义边h o o k 2 0 2 3 2 定义结点n o d e 2 0 2 3 3 定义命令c m d 2 1 2 3 4 定义类型t y p e 2 1 2 3 5 结点的连接与构图2 4 2 4 n e t g r a p h 中消息和数据的发送2 6 2 4 1 直接发送方式2 6 2 4 2 消息队列的发送方式。2 7 2 5 基于n e t g r a 】p 1 1 机制设计协议栈的优势。2 7 2 6 小结2 8 第三章 n e t 黟叩h 和m b u f 的移植和修改2 9 3 1软中断机制的分析和移植2 9 i 目录 3 2 3 3 3 4 第四章 4 1 4 2 4 3 4 4 s p l 互斥机制分析和移植31 修改m b u f 机制3 2 小结3 5 协议栈驱动抽象层设计3 6 驱动抽象层的结构3 6 4 1 1 相关的数据结构3 6 4 1 2 驱动的上层部分和下层部分4 0 4 1 3驱动抽象层的a l a n n 线程4 1 驱动抽象层流程4 2 4 2 1 初始化运行流程4 2 4 2 2 协议栈从驱动获取数据的流程4 4 4 2 3 驱动抽象层关闭流程一4 4 添加新设备驱动4 5 d 、结4 6 第五章协议栈的设计和实现4 7 5 1协议栈的设计思路4 7 5 2协议栈的结构框图4 8 5 3各个结点的功能4 9 5 3 1 解析复用帧4 9 5 3 2 解析控制信息表5 2 5 3 3 解析紧急广播5 3 5 3 4 解析复用子帧5 4 5 3 55 3 5 解析数据段5 5 5 3 6 解析e s g 6 0 5 3 7 解析音频段和视频段6 4 5 4 协议栈相关的流程6 6 5 4 1 系统初始化6 6 5 4 2 系统销毁6 6 5 4 3 打开设备6 7 5 4 4 关闭设备6 8 5 4 5 设置频点6 9 5 4 6 设置s e r v i c ci d 6 9 5 4 7 删除s e r v i c ei d 7 0 5 4 8 频道扫描7 0 5 4 9 紧急广播的接收7 1 5 4 1 0 读取数据7 2 目录 5 5小结7 2 第六章系统集成测试7 3 6 1测试环境和方法7 3 6 2测试内容和测试结果7 3 6 2 1 测试内容7 3 6 2 2 测试结果7 5 第七章总结7 7 致谢7 8 参考文献一7 9 n 第一章引言 第一章引言 1 1 研究工作的来源、意义与目标 c m m bm t v 播放器是基于c m m b 标准的移动电视接收收看解决方案,主要 设计依据为心心忸标准,目标是开发一套易于移植、面向手机等移动设备的移动 电视开发包,并提供w i n 3 2 和、矾n d o w sm o b i l e 平台下的参考实现。功能要求符合 c m m b 组织对终端功能的要求,主要有:节目收看,节目录制,本地文件播放, 电子节目指南,紧急广播,频道管理等功能,并且有富媒体数据业务等以后可能 加入的功能。 c m m b 协议栈位于操作系统和设备驱动之上,位于c m m b 应用层之下,是 连接这两层的中间层,既要传输数据流,又要传递控制流。在传递c m m b 设备卡 采集的数据的过程中,对数据包进行解复用,校验,并进行进一步解析,获取数 据业务流,音视频业务流和控制信息等。 由于c m m b 协议比较复杂,并且在项目进行过程中,c m m b 协议标准也正 在完善,难免在开发过程中会有一些对协议栈的修改工作,用层次化的实现易使 得层次之间的耦合度较大,从而对协议栈的修改和维护工作带来困难。因此,设 计一种模块化的协议栈更符合项目的需求。在f r e e b s d 操作系统中,协议栈是基 于n e t 蓼a p h 机制构建的,这样的协议栈模块之间的耦合度小,结构清晰,非常便 于修改和维护。而且,在e c o s 嵌入式操作系统中,也用到了n e t 鳓机制作为 协议栈的实现。经过对n e t 酉a p h 机制的分析和研究,认为该机制比较适合小型嵌 入式设备使用。本论文主要致力于研究n e t 莎a p h 机制的原理和应用方法,然后以 n e t 鲋1 1 ) h 机制为基础的模块化的方式构建c m m b 协议栈,并设计对上层应用和下 层驱动之间的接口。目的是减小模块之间的耦合度,模块之间的关系更加清晰, 让协议栈利于修改和维护。此外,利用m b u f 机制,可以减少协议栈的内存拷贝, 提高系统性能,减少内存碎片,提高内存利用率。 电子科技大学硕士学位论文 1 2 c m m b 多媒体广播电视 1 2 1c m m b 多媒体广播电视系统 c m m b 是英文c l l i l l am o b i l em u l t i m e d i ab r o a d c a s t i n g 的缩略语简称,意为中国 移动多媒体广播电视。c m 主要面向手机、p d a 等小屏幕便携手持终端以及车 载电视等终端提供广播电视服务。c m m b 的主要特点是: 可提供数字广播电视节目、综合信息和紧急广播服务,实现卫星传输与地面 网络相结合的无缝协同覆盖,支持公共服务。 支持手机、p d a 、m p 3 、4 、数码相机、笔记本电脑以及在汽车、火车、轮 船、飞机上的小型接收终端,接收视频、音频、数据等多媒体业务。 采用具有自主知识产权的移动多媒体广播电视技术,系统可运营、可维护、 可管理,具备广播式、双向式服务功能,可根据运营要求逐步扩展。 支持中央和地方相结合的运营体系,具备加密授权控制管理体系,支持统一 标准和统一运营,支持用户全国漫游。 系统安全可靠,具有安全防范能力,具有良好的可扩展性,能够适应移动多媒 体广播电视技术和业务的发展要求。 c m m b 的总体构成如图1 1 所示。 图1 1 移动多媒体广播电视系统总体构成 2 第一章引言 c m m b 采用“天地一体 的技术体系,即:利用大功率s 波段卫星覆盖全国 1 0 0 国土、利用地面覆盖网络进行城市人口密集区域有效覆盖、利用双向回传通 道实现交互,形成单向广播和双向互动相结合、中央和地方相结合的无缝覆盖的 系统。 地面发射中心将信号发向s 波段同步卫星后,同步卫星对接收到的信号进行 转发,转发后的s 波段信号直接被地面的接收终端接收下来,也可以通过增补转 发器处理后被地面的接收终端接收下来。该卫星还通过分发信道将信号发送给增 补转发器处理,通过增补转发器处理后转发,对卫星覆盖的阴影区域进行增补。 c m m b 是针对我国幅员辽阔、传输环境复杂、东部地区城市密集、西部地区 人口稀疏的特点,以及用户众多和业务需求多样化的情况,立足我国国情,通过 吸纳成熟的先进技术设计的“天地一体化 的技术体系,拥有低成本、可快速实 现移动多媒体广播信号全国覆盖的优点,从而可以促进东西部“数字鸿沟”的弥 合。c m m b 系统采用的s t i m i 传输技术充分考虑了在我国开展移动多媒体广播业 务的需求和特点,是一项具有先进性、实用性和经济性的自主技术。 c m m b 也是数字电视技术的一种。c m m b 采用先进的编码、压缩、调制等数 字技术,专为7 寸以下小尺寸屏幕便携接收终端提供广播电视节目服务,具有移 动接收、高效省电等传统数字电视所不具备的技术特点。 1 2 2c m m b 的发展和应用 在2 0 0 2 年,国家广播电影电视总局( 下称广电总局) 广播科学研究院在跟踪 国际相关领域先进技术的同时,着手研发移动多媒体广播技术。2 0 0 3 年,广电总 局科技司在广科院立项,开展移动多媒体广播技术研究,提出系统技术方案。2 0 0 5 年3 月,相关技术研究项目取得了阶段性成果,广电总局确定了”天地一体”的移动 多媒体广播( c m m b ) 技术体制和方案。至此,中国唯一的官方移动多媒体广播 标准正式亮相。c m m b 成为我国建国以来广电系统第一次自主研发、具有自主知 识产权的重要系统技术标准。正是作为手持电视这一新技术、新媒体的牵头者, 国家广电总局在通过自身资源与优势对手持电视予以大力扶持。经过长达6 年的 准备,c m m b 系统于2 0 0 8 年8 月正式播出,为北京奥运会提供服务。广电总局通 过赠送1 0 0 0 部终端给奥组委,并采取“免费租用”等方式借奥运会迅速扩大了自 己的影响。c m m b 系统在北京奥运会上大放光彩。 3 电子科技大学硕士学位论文 北京奥运会上,手持电视风光无限,以自己特有的生命力,去诠释着属于中 国自主研发移动多媒体广播行业标准的辉煌与灿烂;2 0 0 9 年3 月,广电总局再次 促成了手持电视运营商中广传播与中移动牵手,实现了手持电视与t d 技术的融 合,强强联合的举动势必会推动t d 和手持电视产业的发展。 自从2 0 0 8 年广电总局确定由中广传播负责在全国运营手持电视项目。手持电 视产业在中广卫星移动广播有限公司的全面推动下,迅速发展壮大。中广卫星移 动广播有限公司在全国各省设立子公司,各地级市设立分公司,实现了对全国用 户的统一管理和服务。 现在,在全国二百多个城市,只要拥有一部带有手持电视功能的移动终端, 用户就可以收看6 套电视节目、收听4 套广播节目,拥有这样的手持电视终端, 给人们带来方便的同时,也带来了新鲜感受。 手持电视是一个典型的新型消费形式,这种形式有着非常广阔的发展前景。 与此同时,手持电视产业的快速稳健发展吸引了国内外1 0 0 0 多家企业参与。手持 电视的接收设备产品已经系列化、产业化,发端、收端、芯片等产品都有众多企 业生产与销售,形成了成熟的设备产品体系。作为一项自主创新技术,国内大部 分的企业,特别是传统的电视机制造企业,都参与其中。而一些国际品牌商,如 三星、l g 、诺基亚也不甘落后,已经推出了各自的手持电视通信终端。为满足不 同人群的消费需求,提供了丰富的终端产品资源。 根据移动多媒体广播电视的特点和业务发展需要,c m m b 业务平台主要由公 共服务平台、基本业务平台、扩展业务平台等三个平台构成。 公共服务平台是向用户提供公益服务的移动多媒体广播电视业务平台,主要 由公益类广播电视节目和政务信息、紧急广播信息构成。c m m b 公共服务平台播 出的内容和开展的业务,为向合法用户提供的无偿服务。 基本业务平台是向用户提供基本数字音视频广播服务和数据服务的业务平 台,包括卫星平台和地方平台传送的数字音视频广播服务和数据服务。c m m b 基 本业务平台向合法用户提供的服务,为有偿服务。 扩展业务平台是根据用户不同消费需求向用户提供扩展广播电视节目服务和 综合信息服务的业务平台。提供的服务主要由四方面构成,一是经营类的广播电 视付费节目;二是经营类的音视频点播推送服务,利用系统闲置时间将用户订制 4 第一章引言 的广播电视节目推送到用户终端;三是综合数据信息服务,主要有股票信息、交 通导航、天气预报、医疗信息等;四是双向交互业务,主要有音视频点播、移动 娱乐、商务服务等。目前,c m m b 主要以音视频服务为主,扩展服务中综合信息、 双向交互等服务将随着业务的发展逐渐推广应用。c m m b 扩展业务平台向合法用 户提供的服务,为有偿服务。 相比其他标准,c m m b 有以下一些优势:c m l 、压b 借助卫星通信,能极好地解 决移动终端( 手机电视) 信号流畅的问题;c 啪由国家广电总局管理,其负责 的电影,电视,广播载体,具有丰富的电视内容资源。另外,c m m b 收费低廉,买了 接收终端的话,收看是完全免费的,c 啪还兼顾国家媒体信息发布功能 c m m 具有天地一体、覆盖面广的优点,同时也带来了卫星发射成本高昂、 卫星信号穿透力差、必须进行地面补点、架设增补站成本比较高等缺点。但随着 c m m b 的技术越来越成熟,普及程度和用户量的增加,c m m b 的覆盖面会越来越 广,建设成本会逐步降低。 1 3 其他主要广播电视标准 目前国际上没有统一的移动多媒体广播电视手机电视标准,美国以高通公司 为代表推出了m c d i a f l o 技术,欧洲以诺基亚公司为代表推出了d h 技术,而 韩国以三星公司为代表在欧洲d a b 技术基础上推出了t - d m b 技术。 1 3 1m e d i a f l o m e d i a f l o 是由美国高通公司提出的移动电视标准。这种名为“仅限于下行传 输”( f l 0 ) 的新型多播技术,采用综合优化,实现了以很小的功耗提供优良的移 动性和频谱利用率,能够大大降低同时向大批量用户发送相同多媒体内容的成本; 并确保良好的用户体验,即手机用户不仅能够享受传统的语音和数据业务,而且 能够通过同一手机在许多节目频道内容间“冲浪 。f l o 系统由四个子系统组成, 即网络运营中心、f l o 发射机、3 g 网络和支持m e d i a f l o 终端组成。 f l o 在m e d i a f l o 中是指“前向链路 ( f o 刚a r dl i l l l ( 0 1 1 1 y ) ,意思是从基站到 终端的数据使用单一路径传送。m e d j a f l o 系统是从现有的移动网络的频谱使用中 5 电子科技大学硕士学位论文 所分割的一块传递数据,例如美国使用的m e d i a f l o 的频谱是以前用于极高频5 5 电视频道( 唧t vc h 猢e l5 5 ) 的7 1 6 7 2 2 m h z 。 由于大多数的电力消耗问题,传统电视与透过空气介质的数字电视讯号在行 动设备上的播放相当困难;并且,m e d i a f l o 不需要用较高的分辨率去作传递,也 是因为m e d i a f l o 的串流只要2 0 0 。2 5 0 k b p s ,这对于较大尺寸画面是无法满足的。 1 3 2d v b h d h 标准是建立在d 和d v b t 两个标准之上的标准。 一个d h 系统前端由d h 封装器和d h 调制器构成,d h 封装 器负责将口数据封装成m p e g 一2 系统传输流( t s ) ,d h 调制器负责信道编码和 调制;系统终端由d v b h 解调器和d v b h 终端构成,d 一h 解调器负责信道解 调、解码,d h 终端负责相关业务显示、处理。 网络层不在d v b h 标准范围内,标准只实现数据链路层和物理层。 数据链路层采用时间分片技术,用于降低手持终端的平均功耗,便于进行平 稳、无缝的业务交换。采用多协议封装( m p e ) 前向纠错技术,可以提高移动使用中 的信噪比( c n ) 门限和多普勒性能,同时也能增强抗脉冲干扰的能力。 物理层在d v b t 的基础上进行补充,增加了4 k 传输模式和深度符号交织等 内容,除原有d t 的技术特点外,在传输参数信令( t p s ) 比特中增加了d v b h 信令,用于提高业务发展速度。 1 3 3t d m b 在韩国,由于使用了美国数字电视标准a t s c 对其国内地面电视广播业务进 行数字化,而这种标准无法支持移动电视业务。在人们对移动电视业务需求日趋 增长的情况之下,韩国人在经过两年多时间对目前现有可用的地面广播技术标准 进行一番精心比较分析后,最终选择了d a b e u r e k a - 1 4 7 欧洲标准作为韩国开展地 面手机电视业务的传输标准,并由此确立了韩国的地面手机电视国家标准t - d 。 t - d m 作为对d a b 标准的继承与发展,除了采用d a b 标准原先所使用的相 关技术外,为了进行视频广播,还使用了一序列新技术。包括在视频压缩上采用 6 7 电子科技大学硕士学位论文 第二章 n e t g r a p h 机制和m b u f 机制研究 2 1m b u f 内存管理机制 在网络协议栈中,对于内存管理机制通常有不同于一般的要求,因为协议栈 中要频繁地对很多细小的数据包的进行解析和封装。如果采用传统的内存管理机 制在堆上分配内存,则容易产生内存碎片;在解析过程中易出现内存的多次拷贝, 降低协议栈的性能;此外,经常需要在数据块的头部和尾部添加或删除数据,使 用传统的内存管理不易实现。 m b u f 机制【l 】正是应这种需求而实现的,它是一种静态内存管理机制,它的特 点是能够适应网络协议栈对于内存管理的要求:减少内存碎片,减少不必要的内 存拷贝,易于在内存块的头部和尾部添加或移除数据。 m b u f 来源于f r e e b s d 操作系统协议栈,是n e t 伊a p h 机制的基础,可以负责静 态分配的内存的划分,分配和释放。在e c o s 嵌入式操作系统的协议栈中,在使 用n e t 蓼a p h 机制的同时也使用了m b u f 机制。 2 1 1m b u f 内存池 m b u f 有两种静态内存池,一种是m b u f 控制块内存池,用于分配m b u f 控制块 ( 通常为1 2 8 字节) 。另一种是d u s t e r 内存池,用于分配大块( 通常为2 0 4 8 字节) 的c l u s t e r 内存( 簇) 。通常,c l u s t e r 内存块是挂接在n l b u f 控制块上的,用于保存 大块的数据。一个典型的m b u f 内存池划分如图2 1 所示。 黼内存池 c l u s l e r 内存池 图2 1m b u f 机制的内存池 8 第二章n e t g r a p h 机制和m b u f 机制研究 m b u f 内存管理机制使用了内存映射表来管理m b u f 和c l l l s t e r 静态内存的分配 和释放;此外,还使用了空闲链表来管理分配后重新释放的m b u f 内存,而用引用 计数数组来管理c l u s t e r 的重复引用和释放。 2 1 2m b u f 结构 m u f 控制块的主题结构定义如下: s 仇烈m b u f s 仃u c tmh d rmh d r : u l l i o n s 似 s 仃u c t p k 也d rm h j k m d r ; u i l i o n 灿c t m x tm l e x t ; i n t 8 jm h j a t a b 蝇m h l e n 】; ) m h - d a t ; ) m h ; i n t 8 jm - d a t a b u f 【m l e n ; ) m - d a t ; ) ; 其中i n b u f 头部的定义如下: s t n l c t m d r s t n l c tm b u f 木i i l :hn e x t ; s 由m c t1 1 1 b u f 木m h j e x t p h ; i n t 8 j 奉m h a t a ; i n t 3 2 j 山j e l l ; n l q咄t y p e ; i n t l6 _ j n 衄- n a g s ; ) ; m b u f 内存块的详细结构如图2 2 所示: 9 电子科技大学硕士学位论文 m b u f mh d f i 曲n c x t m 1 n e x t i 龃 盯l bd 啦 瑚曲i m ht y p e m h - 霸a g s md 缴 m 7 d 啦幽l l f m h 吐也l i r 一? t ? i :j j j :,:m 啦 、,、, , 一一隰罗 謦i 缮。| | i 图2 - 2 m b u f 内存块结构图 m b u f 结构总体来说分为头部m j d r 和数据部分m - d a t 两部分组成。 对于头部m1 1 d r ,其中包含这样几个成员: i i l l ln e x t :m u f 指针,用于构成m u f 链表,表示一个数据包的多个连续的数 据块; m hn e x t p k t :m b u f 指针,用于连接多个m u f 链表,指向下一个包的头部; l l l l ld a t a :缓冲区指针,用于指向m b u f 自身的缓冲区或c l u s t e r 缓冲区; 砌1 _ l e l l :m b u f 自身缓冲区的长度; m h 帅e :m u f 的类型,如下图所示,m u f 可以为图2 3 所示的这几种类型; 第一种为不带包头( m h 出= t l 】d r 指针指向包头) ,自身带有缓冲区( m _ d 础u f ) 的 m b u 通常用于比较小的数据包( 一般不超过1 0 0 字节) ;第二种和第三种都是带 有包头的m u f ,不同的是,第二种是带有d u s t e r 缓冲区的,第三种是自身带有缓 冲区的; 1 0 第二章n e t g r a 】p h 机制和m b u f 机制研究 m 蛔i f mh d r md a 1 黪“ m h f 图2 3m b u f 内存块的常用类型 m h 咖e :m b u f 标志,可以取以下几个值: j d e f i n em _ e x t o x o 0 0 1 产h 嬲a s s o c i a t e de x t 锄a 1s t o r a g e 堆 托e f i n em - p k l m d ro x o 0 0 2 产s t a no fr c c o r d 奉 斑e f i i l em _ e o ro x o 0 0 4 户e i l do f r e c o r d 母 其中,me x t 表示该u f 是带有d u s t e r 缓冲区的;mp k m d r 表示该m u f 是一个数据包的头部;me o r 表示该m b u f 是一个数据包的m b u f 链表的尾部; 2 1 3m b u f 内存的使用 m b u f 的一个典型的使用场景见图2 _ 4 。通常对于较大的数据包,用带有c l u s t e f 的u f 来保存,保存到c l u s t e r 中;而对于较小的数据包( 小于1 0 0 字节) 可以直 接用m b u f 自带的缓冲区来保存;可以看出,m b u f 既具备控制数据包链表的功能, 又具有小缓冲区的功能; p o i n 缸r m f 辨精n t 尊t m t m f 图2 _ 4 m b u f 的典型使用场景 在删b 协议栈的实现过程中,只用到了指向自身的缓冲区的m b u f 结构, 和带有d u s t e r 的m b u f 结构,并且没有使用m b u f 的数据包指针将多个数据包连接 1 l 电子科技大学硕士学位论文 起来;为了效率,修改了d u s t e r 的大小和m b u f 自身缓冲区的大小,使得对于大的 数据包,可以用一个c l u s t e r 装下,小的数据包,可以用一个m b u f 自身的缓冲区装 下,从而避免将数据包截断之后用多个m b u f 来表示;这样做是考虑到协议栈的解 析中有时要求数据包在内存中是连续的。例如:数据业务的复用子帧在解析过程 中要求数据块是连续的,以便对复用子帧数据包使用校验算法。 2 2n e t g r a p h 机制原理 2 2 1 n e t g r a p h 简介 n e t 鲫h 是f r e e b s d 操作系统在网络协议栈中新加入的一种协议栈的构 造机制,作为对现有的t c p 口协议栈的补充。n e t 铲a p h 机制实现了f r e e b s d 中p p p 协议栈【1 1 。用n e t g r a p h 机制实现的p p p 等协议栈与其他t c p i p 协议栈 的接口通过n e t 伊印h 的消息进行连接交互。简单来说,n e t g r a p h 的数据结构 是于一种无序图,由结点和边组成的。结点有能力获得数据和处理数据,不 同类型的结点之间通过各自的边进行连接。一旦两个结点已经通过边连在一 起,那么数据就可以在这两个结点之间流动。 另外,由于n e t 蓼a p h 使用了胁u f 机制,因此,在使用n e t 聊h 的同时, 可以在非f r e e b s d 的平台下,充分利用m u f 带来的好处:快速分配和回收内存, 减少数据拷贝等。 n e t 酉a p h 中最基本的两个元素是n o d e ( 结点) 和h 0 0 k ( 边) ,用n o d e 和 h o o k 可以构成任意复杂的网络图,如图2 5 所示。图中有三个结点:n o d e l ,n o d e 2 和n o d e 3 ;h o o k l a 依附在结点n o d e l 上,与依附在n o d e 2 的h o o k 2 a 相连,构成了 一条从n o d e l 到n o d e 2 的数据通路。同样,h o o k 3 a 和h 0 0 1 【2 b 相连构造了连接结点 n o d e 3 和n o d e 2 的一条数据通路。在n e 留a p h 的代码中,他们的类型分别定义为 两个结构体:s 仃u c tn g j o d e 和s 仃u c tn g 0 0 k 。 1 2 第二章n e t 鲫h 机制和m b u f 机制研究 图2 - 5n e t 鳓的构图 n o d e 结构体:可以在这个结构体上勾挂自己的回调函数,通过这些函数实现 某些具体的功能,比方说:某一个n o d e 负责解析一个完整的报文的头部,得到 一些参数,然后把这些参数和剩下的报文内容传给其他n o d e 。 h o o k 结构体:从创建开始,就附加在某个n o d e 上,并要连接另外一个h 0 0 k , 用于标识一个n o d e 与其他n o d e 的连接,它仅仅是一个名称标识。一个n o d e 上 通常有多个h o o k ,h o o k 起到的作用类似于路标,用于标识从当前n o d e 出发,有 哪些通路。 2 2 2 n e t g r a p h 的基本数据结构 ( 1 ) 结点( n o d e ) 能够使用边( h o o k ) 来接收和发送数据和消息。一个结点需要定义一个t y p e 结构,t y p e 结构规定了接收到的数据和消息的处理方式; s 饥l c tn & j 1 0 d e c h a r 木n 锄e ; 蛐n l c tn g - t y p e 木t ) ,p e ; l i s t - - h e a d ( h o o k s ,n g j l o o k ) h o o k s ; v o i d 幸p r i v a t e ; ) ( 2 ) 类型( 聊e ) 对应某种数据和消息的处理方式。聊e 结构中定义了数据和消息的处理接口, 当结点( n o d e ) 接收到数据或消息后,会将它们交给自己的t ) ,p e 结构进行处理。 1 3 电子科技大学硕士学位论文 自定义一个n o d e 类型来完成某种功能时,主要的工作就是实现t ) 7 p e 中的回调函 数的行为。 s t m c t n & 与p e c o n s tc h a r 宰n a m e ; n gi 1 1 i tt掌n gi n i t ; _ 一一o一 n 印n s 饥l c t o r j 幸c o n s t n l c t o r ; n g _ s h u t d o w n j 宰s h u t d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论