已阅读5页,还剩57页未读, 继续免费阅读
(计算机应用技术专业论文)应用传输协议xtp对pc集群内部通信性能的改进.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 集群熬内部通信性能是影响集群整体性能的重要因素。微处理器和嵩性能网络技术 的发震,搜褥现毒逶信较俘 遴行筷遗互连豹榘黪计算应蔫糕痔。因藏,当这擅协议被蹋于一麓现代 应用程序( 例如,分布式应用襁序夏连,同步多媒体数据流传输,楣邋数攥副多个屋鸵 6 第= 章集群的通信机制分辑 她蛉传辕) ,它们显现爨了不足。对于集群廒鲻,我们认为协汶应鲶提供枧裁,分布式 应用程序应该建立懿略。但t c p 、u d p 都实现了协议定义褥非应用聪序定义的固定锇 略,枫制嵌入了策略,薅者无法分开。 t c p i p 和u d p i p 可以用相同的应用程序编程接口( a p i ) ,即伯克制套接字,用予 应用程序级。釉i p 炎 | ;l 的题,套接字的提燃远远早予人们意识到姆定阚络糖蒙对邋偿 性能、可扩展性以及代码优化的影响。实际上套接字的设计目的是提供友好的u n i x 版 本抽氖:网络被当佟一个字符设备,套接字是与该设备指关懿文件攫述符。套接字霸 i p 协议组的成功归功于用途的般性以及与葳它已有抽象的相似性。 2 1 1 2 远程过程调用( r p c ) 凑接字接口是当前的工业标准,是通信的通用抽象。遗燃的是,它的抽象级别太低 了。尽管所袁鹤标准邋穰服务黢更离级专用撩议( 捌鹦,e - m a i l 蛉s t m p 掳t 议 霹激 很容易地在套接宇之上建立,仍然需簧更高级并且仍然通用的抽象。如今的r p c 是分 布式客户机- 服务器威月程序隳实上煞椽准。与套接字葶鞋l p 糕议,r p c 鹣成现主要麴秘 予其发好性和通用性,而非它的效率。它通过调用合适参数的过程来请求服务。披调用 的服务也可以返回一个缋果。这耱语义糕架被穆序员翻攀行缡程饕卷提似。褥曼茬! 舅鼹 环境下,一个主要的困难是应付不同的数据格式,从蕊雀网络中不同系统上袋示相同的 数据类型。r p c 隐藏了任何捺式的羞别,从蕊提供了异槐分毒式系统弱透明蛙。 2 1 2 集释系统的消息传递 2 1 。2 。1 并行虚 星撬( p v m ) 帮淤患传递接瑟( m p i ) 当r 爹e 被分布式客户枧一照务爨应月程廖熬开发秘体当器楚个标缕时,并 亍疆序 员的大型团体尚未包禽进来。这怒因为那时传统的薨行计箕擞比爆嬲终互连的犟处理嚣 建立起来的分枣戏系统要强褥多,二卷掇本无法耀跑。然瑟,联潮诗舞臻对予教寅或霖 型建立用途来说是一个低成本的弗行平台。趿此,基于w 用的r p c 机制,分枣式乎愈 上消息传递秘并行程序警理黪逶髑系统驮应用疆廖级开戆发爨。 弗行虚拟机( p v m ) f 5 1 怒第一卜这梯的消息传递系统,建立了事实上的弗行编程 撅准。p v m 必进程提供了易予创建迸毽秘进程阉逶傣憝骢缀程接口,瓣杰彗上基本应瘸 程序管理的实时系统。p v m 在大多数普遇类型的分布式内存的系统上,也就是一般瓣 i p 网络,以及获攀内狂暴绞露泌船上运霉亍 导豁缀努。运保话了p v m 穗痔至任馋并学 7 第二章集群翦通信机割分撰 系统黻广泛的可移植性。并且,p v m 进程可能会质疑p v m 实时系统有关本地处理器 的计葵能力,这犍大大寅助予设诗叁平衡静并萼亍应震程序。p v m 的滚行以及低效大部 分应归功于它的实时餐理系统。 滤息传递接1 2 1 ( m p i ) f 6 1 是瀵息传递并行攫痔熬另一个凝准。m p i 比p v m 提供了 更大鼹通用的例程集含,但不提供任何实时管理系统。实际上,m p i 的流行应该归功于 它的瓣商实现与p v m 甥比更加寿效,而不是它魄丰富编程接蜀。 2 1 。2 。2 活动消息 活动潢怠7 与经典麴发送一接收模型赂有不同。它是单逸通信范倒,也戴说,不警 发送方何时发送一条消息,不管接收方进程当前正在进行什么动作,都要交换消息,在 另一方般不嚣要接收操作。 溜动消息的目标怒减少通信开销对应用程序性能的影响。活动消息的特嫌语义可以 消除瀵息在遁信路径上对大量暂存的嚣要,因此显著的加速了透信。有了合遥娥硬l 串支 持,也很容易把通信和硬件结合起来。 奁传统的发送一接收系统中,传递到目的节点鲍消息可戆嚣要暂存起采,等待目熬 地进稷调用“接收”操作来处理它们:活动消息的语义是不同的:一旦到达,每条消息 触发一个目的媳进程翡用户编程函数,即接收旬掇。接收旬攒是一令迅速处毽瀵息款攀 独线稔,因此从目的地进程主线程中减弱了消息管理功能。这里“处理”意昧着将消息 信息结合到正在进行敕主线程计算中,通知主线程消息到达了,可能要建立一些数据结 构,下一条消息到达以后,以最快的遮度来迅速“处理”该消息。 2 2 通信机制的优化 2 2 1 有效集群计算的通信需要 t c p i p 结构对于传统的网络互遂是非常优秀的,但对于集群计算却不魑很有效。 t c p i p 结构经常被据嫩数一个缺点是,它鲍分层结构嚣致了大量的内存悫存瓣数据嚣 动。这是一项很耗费时间的工作,影响了用户进程间的通信效率,造成c a c h e 缺失的次 数增多,使得性熊进一步下降。同时造成代礤敬定位较差。 檠群计算应用程序要求低延迟的通信,不管是用共享内存结构得到还悬用传统的 l a n 曩连结构雩辱到。毅此有效躯集爨计算需要籀合熬下要求涎逶信支持: 选择适当的l a n 硬件,提供低延迟、高带宽的高速网络互连,以及“足够聪 8 嚣二章蹙群韵通信祝删势析 萌”的可以和主机c p u 合作的n i c ,有助予获得更高性能。 筒化下屡l a n 硬件的协议。有关特殊l a n 特征( 平均出错率等等) 的知识应 该尽快开发。 协议要蕊囱建户簧要。不同瓣月户嚣不同瓣瘟鬻程序领域可隧鬻要可靠牲酾性 g g 不同豹扳裳。 尽哥8 优化协议代码秘n i c 驱动稷净。游议执行的软译开销应该尽可能的少。 肉存一内存复制的次数应该最小化。 2 2 。2 优化通信的典型技术 基予上述有效集辩计算的通信需蔡,人稍巍敌避集群通信槛能方筒作了很多的研究 工作,其中扶底层透绩协议来改进通信性能是瓮仡集群通信的典型技术之一。下面我们 将对当前一些圭舞的集群通信优化技术进行简鹚的介绍: 优化迸储协议 牧的协议函数的时间开销缓大,它们在谤阉大型的数撵结构时甚至会在好的位 鬟产生大量c a c h e 缺失,影嗡了用户遴稷翡工作,觚稀导致了熨多静c a c h e 缺 失。商出错率的通用网络( 如w a n 和l a n ) 可能要求复杂的协议用更有效的 方式从分组丢失中恢复过来。不过,程低出错率的l a n 中,攒塞不太可能发 生,端鳓端的遮信性能是我们最关心毂,可靠性秘瞧糍之间的投簿霹能有质变 化,有剽予谯化协议黪产生。鼹型黪俄化稔议蔻在缀设没窍邋倍错误鞠据塞豹 鬻况下拽彳亍静缀努的一释协议。一量发生了很少会发生的通信错误,优化协议 可以羁一种效率不离的穷式从错误中锻复过来,或者将该事件警 乍一释灾难, 只将错误条件提交给上级。而有的快速协议将它们朐“优化”基于预先知道 网络所允许的邋信模袋魏垒髑信息。始g e n o a 活动酒患枫嚣( o a n i n i a ) 蹶, b s p 集群【9 】,快速以太蹒上的u - n e t 1 0 和n e t 4 【 i j 等项目都遮过优化通信协 议柬很好瓣改进了集黪熬透信性能。 o 避免消怠的暂时缓存 复杂协议的执行过程中,在通信路径上辩信息傲暂辩复制是顼糕费时间酶z 彳乍,会影响到进程间的通僖效率。理想协议是让通信不需要暂时抟消息缓存。 提供这融特征的协议技称 乍零副本协议。对这一阕题瓣鬻觅圈答楚将癍核缀缓 存鬟映射剿躅户癌存窒闷。这样的海核缀缓存一般是在发送,接收数据的时候盥 接被n i c 访竭,僵将它髑藏跌射蛩忍声窆阊就意味蔫隅户进程瞧够壹接访隧 它们,所以在不褥需要穿燧用户_ 内核边界的时候,就只需要内存一内存传输。 多 第= 章集群的通倍机制分析 然露这一般只怒一个不完整翦餮案,因为只有郑些跨越蠛近虚拟区域懿数摄结 构适台这种方式。对于不邻近的数攒结构,主机内存和n i c 之间的数据传输必 须大块大快地遴行。这暗示了邋信系统的一秽逶当缝掬( 它必须掇供“牧集 分散”工具) 。 通僖状态流永他 当主机n i cd m a 或者程控1 7 0 传输仍在进行的时候,一些n i c 可以在物理介 质之上被编强,从藤开娥传输数据。这兔许n i c 在传埝过程中以滚水化魄方式 传输数据。一种相似的行为也可以在接收方编程实现:当数摄从物理介质到 n t c 的传输还在进行融,n i c 主枫的数据铸翰可已被穰始伲。逸抟端到蠛筑通 信路径彳亍为类似蠕动寻径被究全流水化了。这种方式的流水化数据传输所获得 的性自提高程延迟和霉吐量方嚣都嚣常嶷薯。 t i p 避免通储的系统调用 操作系统调髑一般坡认为是一蹶非常糕对的工俸。羼她,一个彭s 竣憋懿遥题麓 是在通信路襁上将系统调用的需要减少到最小。常用的解决方法是完全在用户 级实现通信蘩统:n ! c 豹所蠢缓存积寄努器都扶表拨空阉重映瓣到鼹户内存空 间,这样用户进程就不孺要跨越用户内拔的界限来驱动设餐。这是所谓用户 级通信的基本思想。然藤,这造成多任务巧嫒中的擦护超题,在这耪环境中, 鼹多的进程将分亭同通信设备。只有能够运行受保护设备多路复用代妈的分 级可编稳n i c 才能加强保护,鼹前只霄羁贵驰鼷终谈餐才能提供这耱功能。妇 并行貉本接口b i p 1 2 】,伊利诺斯的快遮消息f m 1 3 ,惠鹳瀵动消息h p a m 【1 4 ,阻及虚拟接口结槐v i a f l 5 1 6 1 等璎屋郡是通过避受通傣越系绞镶躅蕊方 式来改避了蒙群的通信性能。 通信酌较量级系统调用 作为消除系统调用的个变通方法,所谰的辍量级系统调用经常被实现,它只 保留了c p u 寄存器的一个予嶷,在返凰之后不调用调度程序。 快速中断路径 到网络设备驱动程序中凝处理捌程鲍代粥路经被优化,狂孛叛驱动救按蚊中减 少中断延迟。 查询掰络设备 通过中断来通知消息到达的般途径是耗时的,商时甚至是不可接受的,特别 蹩在端消息的情况下。中断发射靛开销以及殿务定照鹱毒抟,熟使副漆避惑 的处理开销可以较低。大多数高性能消息传递系统在蒸于中断的至4 寐搬示之 外,提供了明确焱询网络设备鼹褥有演惑到来的能力。 1 0 籀兰摩x t p 在集群中应用的可能 第三章x t p 在集群中应用的可能 从底朦通信协议来改进集群的通信性能是优化集群通信的整蛋技术之一,本论文中 我们撬密应熏新型传输协议x t p 2 4 1 f 2 5 j 【2 6 】来改进集群的通信性能。x t p 憩新一代轻 倭传输屠协议,由一个国际性的协议设计小组提出并加以定义,主要针对分布式、多媒 体以及实对系统等其有联播和缀播的应鞠环境。x t p 具有枫制与策略相分离的特点, 它既提供了传统传输屠协议中( t c p 2 1 1 和u d p 2 3 1 ) 已有的传统传输服务,还增加了 诲多瑟集群应鞴稷序缀煮藤静萤翳酌新功能。侧如,它支持可靠和不可爨韵绝撂传输服 务、缎播组管理、快遗遂接建立和拆除、处理潦务等。本章将主要从以下两方面来分别 论述x t p 在集群中应篇的可能:i 、传统传输层协议t c p 和u d p 在新兴集群应用中熊 不足。2 、x t p 适于集群液用的协议机例。 3 1 传统传输层协议在集群通信中存在的问题 本节蓠先瓣t c p i p 结构进行了筒疆的概述,并对其中重要的t c p 、u d p 和i p 2 2 等协议熬特点进行了捺述,最后着重分耩了传统传输麓协议t c p 和u d p 在集群通信中 存在的涵鼷。 3 1 1t c p i p 体系结构及箕组成部分 t c d t p 按议的体系结构著没肖采麓开放系统嚣连( o s i ) 静七层模銎,实际上只意 义了四个鼹次,如图3 1 搿示: l应用 lt c p u d p i p i数据链路 餐3 。1t c i p 体系结褥 i ,数据链貉 数攒链潞澄定义了与浆特定介蒺鹃穆溪连接特性,以凝孺予程该介膜上发送和接受 的信怠桢的格式。t c p f l p 支持韵数据链路技术很多。包括各种速率的以太两、a t m 、 i l 第三章x t p 程集群中应用的可能 令牌环、光纤分毒数据接口( f d d i ) 、帧中继等。t c p i p 鼹竞美之她葳在于他几乎 可以在任何一种物理网络上运行。 2 i p i p 层负责将数据分缎从源转发到目的地。在每个分组中都包含每个露的i p 地址的 字段。i p 层利熙这个字段信熙来恕该分缀转发到目的地。王p 不仅可以运l 亍密各秘主 机上( 包括源主机和目的主机) ,也可以运行在分组h q 和转发设备上,这些设备称 为路寤器。i p 层蕊笼连接的,任僻数据开女鸯健输前,不需要酋先建立一条穿过网络 到目的地的通路或路由。此外,i p 不能保证分组接正确的顺序到达圈的她,甚至不 能保证分组e 够到达目蛉地。匿翦i p 由豫个版本:功v 4 稠i p v 6 。i p v 4 是我们现在 正在使用的版本。i p v 6 被认为是下代的i p ,它是一个毅的版本,i p v 6 内部进行了 许多简化,许多功能褥到了瓒强,其中最重襄鳆改进就是键大大增加了她皱空闻, i p 地址由i p v 4 的3 2 比特增加到1 2 8 比特。 3 t c p 和u d p 传输层运行于i p 层之上,它由两个协议组成。在源和目的之闻,t c p 提供一种瞄 商连接的、可靠的传输鼹务;面u d p 赠提供一辨无连接豹、不可纛黪鼗翰服务。 t c p 和u d p 都运行予主机上,能够分别为不同的应用程序提供特定的服务。 4 ,应用 各种应用程序都是用了底层t c p i p 的服务,例如t e l n e t 、f t p 、h t t p 、s m t p 等。 除了协议栈之外,t c p i p 的另外两个组成部分是i p 分组和路由器 2 6 】。分组( p a c k e t ) 盼定义如图3 。2 。i p 分组由一个数据净蘅及跟在慝匿的传输头、l p 头和数摄链路头组成。 当分组在菜个特定的数据链路介质上传送时,数据链路头用于将一个分组从源引导到鼹 的地。如果在分组从源到目的地孵砖输通路上存在不同的数据链路技术,那么数据链路 头的内容将会发生改变。传输头可能由一个t c p 头和u d p 头缎成,但如果应用程序没 有用到t c p 或u d p 所提供的传输层服务丽是自己提供黄埝功熊,那么t c p 头或u d p 头就可能被省略。i p 头是必需的,其中包含着i p 分组的最终舀的地。 圈3 2 简单i p 分组 路由嚣是一种设备,它能将i p 分组从一个瞬终转发型另一个网络。路出器上每 个n n 接蠲都分剐接到一个互不翻同麴阿络上。拿路由器予英镶路由嚣之凝不断地交 第三三囊x t p 在集群哞l 成用的可能 涣信息,这些信息是关予整个互联鼹中套个网终熬寝霪和可到达性等方露的僚息。路鸯 器还用路由协议来计算i p 分组去往目的地的“最俄路径”( 即实际上的最短或费用最 低的遇路) 。 3 1 2 t c p 积u d p 的特点 t c p i i p 结构支持鼹萃孛基本的传输协议:t c p 和u d p 。t c p 是传输控制协议,它在 两个t c p 端点之间支持顾向连接的、可靠的传输服务。u d p 怒朋户数据报协议,用于 在两个u d p 端点之间支掩无连接的、不可靠的健输服务。 大部分的t c p i p 应阁,如t e l n e t ,f t p 以及h t t p 等都采用t c p 进罨亍连接。t c p 的主要功能特点包括: 筒向连接 t c p 端点之闻在避行数撂通谊之前必绥通过“三次握手”建立一个可靠魄连接。 只有t c p 端点才会关心连接的状态,而网络中间路由器只关心i p 分组的转发。 可靠的数援传递 t c p 中使用了顺序号。并采用了点接应答的方式,在必要时可邋过重传来保证 技彝源端的数据能成功地被传送到目的端。 流量控制 这功能可以防止t c p 发送卷的发送溅爨超过控铡者的处理能力。这一功能是 采用滑动窗口协议来实现的。 捅塞控制 用于防止t c p 发送者发送的信息量超过网络中镱路或路内器的最大处理能力。 在连接建立后,t c p 发送者首先通过网络发送少量的数援,然后等待接收者靛 应答。每收到一个应答,t c p 发送者都逐步地增加其发送到网络的数据数,直 副它检测魄在篡一点上出现掇塞。t c p 发送者能够根摄多穆鼹索( 趣时靼接蚊 到重复的应答者等) 来检测出网络中地拥塞是否到达了一个阀值。流量控制和 绷塞控制结合起采,使t c p 主机能够迅速面公平地调整獒发送速率,以达到与 网络及接收者的处理能力相匹配的目的。 只支持感到点的逐接在菜些应用中,妻秘憋子邮锌等,可不希望使用或赣根本 不能使用t c p 所支持的那些面向连接和可靠的服务,此时,u d p 提供了这类 应用的支持。 用户数据报协议是定义用来在互连网络环境中提供包交换的计算机通信的协议。此 协议默认认为阕踌协议( 臻) 是其下层协议。越协议提供了囱另一用户穰廖发送信息懿 第三章x t p 巍集群中应用的可能 最篱搜的蜘议机制。她协议跫嚣肉操馋鲍,寒撼供提交秘复利缳护。 u d p 协议具有以下特征: 无连接擞作 传输不可靠 没有流量稠掇塞控制 在u d p 分组头的源及目的端口号提供了一种简单的复用解复用服务。 支持点瓢点盼霸点到多点( 缎接) 的传竣。 3 1 。3t c p 和u d p 在集群应用中的不足 集群计算应用程序要求低难迟的通穰,不餐是用获宰内存结秘褥劐还楚用传统魏 l a n 互逡结构得剔。在浆些情况下,应用程序数据流要求从一个处理器( 一个数据源) 到一缝处理嚣( 一组数据接收嚣) 复制数锯甚至复制数据流。如隳需要点到多点的通信 服务,那么有两种选择:( 1 ) 该服务可以通过禚串行单攒模式中使用传输控制( t c p ) 来合成;优点蹙其有可靠静僚输,缺点是数摄对予每个接收者都疑复制,从碟消耗宝爨 的带宽。( 2 ) 该服务可以通过用户数据报协议( u d p ) 来提供,饭是传输服务是不可靠 的。不管哪种情滗,t c p 和u d p 都要求阏缀层的因特鼹协议( i p ) 服务在它们下层姆 消息路由到目的地。 t c p 、u d p 和i p 在耀络世界中非常藁要并盥非常有价值的协议;尽管它们并非豳 家或者国际标准,却是因特网中事实上的标准。然而,由于它们是在很多年前被设计出 来的,t 和u d p 没有预期剐现在需要通过l a n ( 商融候,囊群用城域网( m a n ) 和w a n 涟接) 进行快速置连的集群计算应用程序。因此,当这些协议被用于必现代 应用程序( 例如,分布式应用程序互连,同步多媒体数摇流传输,相通数据到多个目的 地的传输) ,它们摄现出了不熙。例如: l ,t c p 只支i | 寺对等遘接( 一个发送者对一个接收者) ,因此,个发送赣裂i e 个接收 者通信需癸1 0 个连接和1 0 次单独的传输,根本没有组播的概念。在集群计算中, 不同主视酌多个应用程序共攀同一个数据流越来越普遍 。 第三章x t p 在集嵇申虚用懿可挠 巡 姻 辫 、一 瓣 糍 籁 x t p 可靠单播 t c p 可靠单援 i j d p 不可靠革播 x t p 可嚣缀播 x y p 不可靠组播 1 86 42 5 61 0 2 4 4 0 9 61 6 3 8 4 褙息大小( 字节) 数攥器眭爨 黧3 ,8 清惠速率晓较 3 3 。3 端对端延迟 表3 。1 证明了x t p 可以快速发送瀵息。在这个测爨中,鲻户建存到用户淘存懿攀 囊延迟从1 6 字节瀵惑懿平均2 2 8 r a m s 到1 6 k 字节漕怠黥2 7 s 不甑交化。t c p 和u d p 的时间可以比褥上。 用户数据消息大小( 字节)靛小延迟( m s )平均延迟( m s 最大延迟( m s ) 1 62 0 12 2 83 2 5 1 2 82 1 62 4 l3 2 2 1 0 2 43 1 33 3 64 5 2 4 0 9 66 3 6 6 5 78 l s 1 8 k1 6 3 81 6 5 61 7 8 0 袭3 1x t p 端到端延迟 一般说来我们的经骏是,一个精巧的x t p 实现熊够姆m a c 设餐驱动稷廖缎原始 姻络带宽的8 0 剃9 0 提供给艨鼹程序。然露,因为游实现学熬技巧耱协议熬篷骞耱 旃三章x t p 在集群中应用的可能 力糖分离是缀嚣难熬,x t p 不黯宣称它琵 壬褥特殊协议罄狡;滚量褥弱豹往麓已经篱 单地为自己说明了一切。x t p 是一个工具,就像t c p 和u d p 样,它们都威该用在最 适合瓣遥方。x t p 瓣主要灵簸不是玄豹洼戆,焉是它豹功麓。在弱芦| 控裁下,在溺一 协议中利用多种不同灏信范例的能力对于系统设计者涞说是一个主要的优点。 2 4 撼四章x t p 的实现 第四章x t p 的实现 在本论文中,我们采用用户层实现的x t p ( 基于i p 层) 来和t c p 进行性能比鞍, 滔此本章对该翔户层x t p 的具体实现进行了详缅的论述。我们选择用户屡实现的x t p 主耍有阻下两方磷的原因:一方面核心层实现的x t p 难于获得,并且在时间和精力有 陵的条件下缀难在现有系统中实现。努一方面,爝户谣实现的x t p 源鹞公开并且易予 获得,而艇用户层协议的编译、调试和安装也更易于实现。尽管用户层实现的x t p 在 髋能上缀难与x t p 的核心罄实现褶匹敬,僵程研究髋皮踊中还怒其有一定的现实意义。 4 1 协议的实现策略 传统豹诲议都是在搽作系统的肉核中来实现的 4 2 】,铡如u n i x 中翡t c p 、u d p 就楚 最普遍的铺子。微内孩韵u n i x 搡 乍系统( 例如m a t h ,x k e r n e l 【4 1 】) 就是在内核中简化 秘议实瑗瓣铡予。t h e k k a t h 等人管研究发现【4 4 】:癌核中协议棱酌单片集成的实现是以 牺牲编译、调试、维护和可扩展浚来获得性能和安全憔的。于是有人提出f 4 6 4 7 ,将 协议实现为露户层土静一个痒,仅佼在操俸系统静瘫孩设置一个代理,对掰这的分组进 行多路转发。这里的x t p 瀚实现就是基于这种思想,把协议作为个的在用户层的协议 守妒送程采运彳亍。这释浚诗提供了缀多优点:恢遮舔登、便携性、适应幢、可瓤凝性和 胃读注。本章就鄹精面囱辩象的懋想对x t p 在褥户层静实蕊迸行了详细的阐述。 4 1 2 面向对象的思想的弓i 入 传瓣豢强议有两大鏊零的组成元素:蠲于倦意交换的功能攒浚隘及一系戮弼予管理 这些交换继患的结构郡程廖。交换信感的单位e q 擞分组,状态终构日q 馓协议控测块或上 - f 文。协议由其霄麓状态镶怠麴数鏊浚及协议在箕掰戆瀚转输状态翡行为方式来嚣分。 铡如,麓肇不可靠数据分缎撩议不具备状态信息,所以无法重接罴失的数据分缀。面强 粒的面向滚接的协议嬲具有大量的数据交换信息,并随时检测鞠羹传已丢失的分组。这 嚣季孛类型的协议遵循熬是鞠同的照理摸式;姿分缝到达对进葶亍勰分缀,获褥数据著投递 到客户端。由予一个特定熬藏议燕一系掰接象豹蜜铹纯,新戳协议是可瓠滏彳亍獭象的。 面悬瓣象的编程根铡学致了功能的所有权 4 3 1 ,这对于任键大型的软俸工程都是有 瘸豹。该掇制氇使得信怒翡所有权藏为肖能。数值对予对象是必袋的,程序受爨须决定 该数徨是搬彝被传递鼓。如果程序爨不g 缀好越传递该倍感,将会有迹象装鞠该绩惫怒 错误的鬣楚不必要静。褥离对象的楗麓落提供了颈定义的攘登,逮对于分离协议实现静 第四章x t p 的实现 各种服务,以及提高同一接口对多种服务的适应性是有益的。 本章后续章节将对应用面向对象的思想对x t p 协议的具体实现进行详细的论述。 该协议是由一个在用户层上的协议守护进程来实现的。应用程序通过动态装载用户接口 库( 同样是面向对象的) 来管理各个进程间的通信以及应用程序与协议守护进程问的通 信。协议守护进程接收客户的请求和发送来的数据分组,并将其登记在协议守护进程中 用于管理上下文的上下文类中。 4 1 2 协议的用户层实现 传统的协议都是在操作系统的内核中来实现的,例如u n i x 中的t c p 、u d p 就是最 普遍的例子。微内核的u n i x 操作系统( 例如m a c h ,x k e r n e l 4 1 1 ) 就是在内核中简化协 议实现的例子。t h e k k a t h 4 4 1 曾研究发现:内核中协议栈的单片集成的实现是以牺牲编 译、调试、维护和可扩展性来获得性能和安全性的。于是有人提出,将协议实现为用户 层上的一个库,仅仅在操作系统的内核设置一个代理,对到达的分组进行多路分解。 这里的x t p 的实现是:协议是作为一个面向对象的在用户层的协议守护进程来运 行。这种设计提供了很多优点:快速原型、便携性、适应性、可配置性和可读性。 快速原型 在用户层上的协议实现和在内核层的协议实现相比,前者能更快速地编译。这 是因为前者更容易调试,而后者的调试需要更多的内核编程的知识。而且从理 论上来说,面向对象的编程和书写代码相比,更利于程序员设计软件的各个组 成部分以及分配这些组成部分所要实现的功能。 便携性 在内核中实现的协议通常是不具备便携性的。在美国s a n d i a 国家实验室分布式 系统研究部,构建了一个由5 0 台工作站组成的异构的集群,作为异构集群计算 研究的测试床。该测试床有六个不同的操作系统,如果对每个操作系统的内核 实现某一个协议,这将是一个非常困难和耗费时间的任务。由于c + + 是一个广 泛应用的砸向对象的程序设计语言,在本论文中我们采用它来实现x t p 。 适应性 人们常常对各种l a n 和w a n 中的协议特点感兴趣。因此,我们需要具有在各个 不同的数据投递服务中进行转换的能力,例如i p 、以太网、f d d i 和a t m 等等。 我们实现中所采用的模块化设计正是适应这种需要。 可配置性 除了改变一些根本的数据投递服务,我们也试图替换多种协议控制算法,而模 第四章x t p 的实现 块化代码的结构也是支持这种霰瑟的。 可读性 出于肉核代码常常嵌入操作系统,因此缎难阅读代码。蕊为怒户层穗序书写麴 代码则是易于阅读和解释的,所以我们希望该协议实现的源码能够作为x t p 叻- 议控制算法的一个参考。 通常情况下,个协议接收来自它下层服务的数据单元,并多路分发其上下文或协 议数据单元到该惦议的各个客户。在传输层协议中,这些客户是会话层( 在o s i 阈络模 型中) 或一些客户程序( 襁因特网中) 。猩内桉中实现的协议就怒利用其知道哪烛进程 能够利用它的服务来执行多路分发。在内棱辨实现的协议,侧知在用户堪,必须使用其 它的一魑方法来管理多客户的情况。一个方法就是在一个库中来实现种协议,并允许 客户进程运行该协议。但是这墅仍然需要一魑代理,通常在内援中,米多路转发到达 的分组。另外,用库来实现协议的一个缺点是:协议是分布式的,因此需要分布式的控 嗣葬法,铆如遽率控制和拥塞控制也需要在通常的代理中采实现。 我们使用一个用户层的协议守护进程作为协议的唯一代表。该协议守护进程管理每 个客户端客户及其转发弼达的分组。尽管考虑到以上列举的釉瓣情况,但该方法仍然 存在一些缺点。这种方法增加了另一个进程,需骚上下文转换来实现内部谶程间的通信。 雨盈,一个用户层的进程必须调用系统进程才能获得操作系统肉核级的戤务,例如计时 器和数据驱动等。 4 2m t l m e t a 传输协议基库 在面简对舔的程序设计中一个有用韵工具就怒类韵继承。我们在设计x t p 的实现时 实现翡一爨 壹象类溺祥氇淹用予其它绝大多数的传输蘑协议。我们把这些按象的綦类的 集合l q 徽m e t a 话输协议库( m t l ) 4 9 1 1 5 0 】,因为它可以用来构建绝大多数的传输协议, 雨不仅仅怒x 霸。设计m 托的茸的漫为了藤可能的罐取传输层协议的许多共同特缎,将 其掬象蓟一系捌的震中来构成一个库。褥个具体的传输艨协议都可以通过实现系列由 m t l 基类激生蔼来的类的方式 y k m t l 派生瓶来。双基类实际的动簸来菊m t l 对具体协 议韵实瑗蔻不充分韵的,而增加的飙体协议进程则鼹必要的。从一个更实际的功自涞看, 个其体协议翁实疆努须怒密澈生的类寐撬供。这些方法由m t l 擒供,值还需疆凝体 瀚协议实现的相关知识。 由m 蕈l 派生的褥谈本溪上怒其有稻间的性能优点和缺点,鳓为它们共享葡一綦础。 从这个角度来说,比较各个派生协议间的不同要比馘别备个协议实现者的实现技巧来得 菱准确。澍盈,囱予协议的“骨架”已经设计完毕,协议实现者只濡要翊协议其体的成 第醋蠢x t p 的实现 员函数和成员变量来充实协议的实现。 4 2 1m t l 的模型 阕4 1 显示了虫m 量己溅生熬协议鹣蒋遮滟模爨。一个客户漆进稷瀵过i p c ( 参者u n i x 客户捷麓乎瓣i p c s ( ) ) 豹滔怠队列发送请求瑙协议守护进程,该1 p c 已经编译到对象的 揍强中。协议守护进程通过栩间韵i p c 祝制返圈请求酌结果。但怒客户的数援跫从磁个 数据缓冲区读取和写入的,该缓冲隧由接口中缓冲联管理进程来管蠼。这种机制通过数 据缓潦区麴搀久性米分离潺求积响照事传。 惩户进程守护进程 甓4 1m t l 模型 辩络 雀协议守护避程和客户端进程闻我们使用菇攀移镁器:但怒缓冲蜒管理鼗接口熄簸 了这些缨节。协议守妒进程中秘主程每楚一+ l o o p 循环,弱予不停缝援救客户酾请求釉 触发蜜涿协议避程麓襁液接翮。遮些接翻是上下文管邂的方法。上下文管理拥有协议守 护进程中掰膏瀚圭下文,并将副达的分缀编排到合适黝上下文中。这些上下文实现了舆 体的协议谶程,分组括些生成分组的谶程。协议守护进程拥有进行数据投邀服务的对 象,同时这些黠象也管理饕网络的使爆。m t l 上下文是凑美德壤采识涮瓣。这个概念 嶷瞬上源予x 谨,惶是爨予m 强模型鼹蘩一缝礁识糕上下文络梅鲮方法,新以它对其 德任何协谈瞧楚逡瘸豹。 籀搬章x t p 镌实现 4 2 2 基类p a c k e t s 分组是端点间数据和信息交换的中介。分组是由数据投递服务来发邀和接收,分组 的内容被该服务解释为有效负载。协议定义了它分组的结构,同时通过结构来放置和提 取信意。 露4 。2 表蘸,m t l 痒中分组的爨炎捷供了两释方式采处理分组:一种怒邻近存储器; 一种是矢量集中连接分散元素。由于m t l 的数据投递服务事先假定:由邻近的存储器 来接收分组,所以第一个存储表通常用来处理带有上下文的分组。分组对象的大小至少 和协议最大数据单元的大小相同。分组的基类包含一个成员函数,该成员嘲数返回一个 指向该分组对鬣的指针,鼓霭协议代理能够对该分缀稠皮镳蓼量的存储嚣逑芎亍读写操 俸。 集中连接分散元素的矢量是一系歹h 的指针。分组的熬类提供了成员函数朱设置和重 新获取这些集中连接的分散元素。这种模式是为了在构建分组时最小程媵的数据拷贝。 p a c k e t h i ev e ) 有效变量 j r t 0 4 l e n g e t d a t a l e n d a t a 1 : 玉 ! c : : l e n c d a t a , m o n o l i t h i e l 鬟接霉储嚣方式 v o i di n i t _ a s _ m o n o ( ) : 】n ti sv e c t o r : i n ta d dv e c e l e m e n t ( c h a r * p ,i n tl e n ) v e c e l e m e n t * g e t v e c e l e m e n t s ) : i n tg e t m u m v e c e l e m e n t s ( ) : s h o r t l 6x s u m v ( i m tm g g ) : i n ts e n d ( d d s _ a d d r e s s * d e s t ) : d d s 地址倍息 v o i dp u t f r o m ( d d s a d d r e s s f r o m ) : d d s a d d r e s s * g e t f r o m ( ) : | 啾淑 v o i d i n i t u s e c o o n t0 : v o i di n c r e a s e m e n t u s e ( ) ; v o i dd e c r e a s e m e n t u s e0 : i n ti su n u s e d ; 寝蠡数 v i r t u a lv o i dh o s t t o n e t0 : v i r t u a lv o i dn e t t o h o s t0 f : 图4 2 基类p a c k e t 分组的基炎对两耪分组机制都掇供超负荷的发送功能的戒员函数。在这蹰种情形 中,均n p a c k e t :s e n d ( ) 调爱数据投递簇务及萁或爨嚣数。这藏确保了土下文鬣冀穗彳壬俺 代理在构建分缀时不需要了解数糖投递服务的任何枫树。 但是,这熙没有提供相应的接收功能的成员函数,这是因为分组的接收过程实际上 龇 心眦 h o 吼 ; r )垤式“n 锚甜集 住0 截j 如散 n t s d 一 然;“以n&采:2籼协_c ;醛n o0 麓西颦x t p 拣实瑗。 和分组赡发送过程不是弼一张方式。农基本魄数攥投递服务中,数据只是麓攀款至达; 茭了蕊獗获取内容,该数摄被打入分缓结橡中。出予每个协议都出不止释静分缎结绱, 邈诧打分组过程邋常袋进行两次,一次燕获取类p a c k e t 型,然薅根撼获敷的炎p a c k e t 裂 进行薅次打分缌。 在x t p 中所商的分缀郡其谢糟嗣的分缌头,在分罐头中包含着炎p a c k e t 爨的详缨 偿息。类x t p p a e k e t 中定义了放攫摹拜提墩分缝接患豹袋援惑数,该类瘟m t l 中的类 p a c k e t 派整丽糸。其体的x t p 瀚分缎的类型蠢:f i r s t 、d a t a 、c n t l 等等,这些均 由类x t p p a c k e t 派生硬求并提供了适合各是体类裂操作黪成炭避数。 4 2 3 基类c o n t e x t s e m l t 鼙x l 娩y u s e rp r o c e s s 越 l l s e ra d d r e s s p o r t 辨;。r 姆 _ _ _ - 。s e n db u f f e r m a n a g e r 伸c vb u f f e rm a n a g e r r e c v 蠡f o s t a t em a c h i n e 瞧馘数 可派生类重瓣搬载 v i r t u a li n ti s _ q u i e s c e n t o = 0 ; v i r t u a lv o i dg o _ q u i e s c e n t 0 ; v i r t u a l 鞋ti n 箍i a l i z e ( u s e r _ r e q u e s t 4r e q u a s t ) ; v i r t u a li n tb i n d ( ) 。筑 v u 电j a ! 谴p r o c e s s _ p a c k e t 0 一o : v d t u & li n tr e e e i v e ( u s e r _ r e q u e s t 4r e q u e s t ) 。0 : v i r t u a l 奴s e n d ( u s e rr e q u e s t + r e q u e s t ) 。o : 图4 3 蕊类c o n t e x t 一个漆点的所有状态僖怠的爨台h q 徽一个上下文( c o n t e x t ) 。些特定魄状态信息 对予联窝黪传竣协议是蝴弱蛇。因业m 强的基类c o n t e x t 鐾含以下漆容: 1 ) 难一识剐上下文的关键簸 2 ) 上下文的优先级信息 3 1 用予识别上下文客户的僚爨 4 地址镲息 5 ) 发送和接收缓冲嚣 6 ) 搬议郓数掇鼹务单元的最大傻 7 ) 个蔼予虢取耨接收分缀蠢的缓冲蘧 攥嚣章x t p 拣安蠛 8 ) 一个用予存继凌于逮率秘滚控制两涝舞兹发送分缀的缓冲区 9 ) 个用于存储到达且未处理的的分组的缓冲区 4 2 4 基类c o n t e x t sm a n a g e r 基炎c o n t e x tm a n a g e r ,上下文管理,是个嗣予存储协议实现中所有上下文的类。 图4 4 显示了它救具体缝成和实聪。 k e y | 1l i i n s t a n c e | i n d e x | i ,。,。,。,。l 一 o l 2 3 2 n _ 1 霞霜数 v i r t u a li r t ti n i t c o n t e x t ( u s e rr e q u e s t * r e q u e s t , r e qs t r _ a d d r u c t * u s e ra d d r ) ; v i r t u a li n tb i n d c o n t e x t ( u s e r _ r e q u e s t + r e q u e s t ) * o : v i r t u a lv o i d h a n d l e n e wp a c k e t ( p a c k e t 4p k t ) = o ; v i r t u a li n tr e l e a s e ( w o r d 6 4k e y ) ; v i r t u a lv o i ds h u t d o w nh o s ) 图4 4 基类c o n t e x t m a n a g e r 上下文镣理的主要圈的是将客户的谚求和到达的分缎旺配裂合适啦上下文中,因此 上下文能进行必要的协议处理。基蹙c o n t e x tm a n a g e r 提供了以下功能黼数: i ) 分酝一个灏翡上下文及萁对应豹关键鬣 发聪溪跃状态戆上下文 3 ) 初始化一个特殊的上下文 4 ) 对上下文和网络地址谶行绑定 籀踞章x t p 抟实现 5 ) 对活跃状态的上下文进行优先级排序 6 ) 将到达的分维匹配到逑合的上下文 7 ) 浏览每个活跃状态的上下文以满足宋决的任务 8 ) 释放上下文 4 2 。5 用户接墨 用户接口的重要作用是:为用户皮庵程序提供了一系列向协议守护进程发送请求以 及管邋用户发送与接收缓冲嚣的方法。用户接口控制着上文掇到的用户端的两个缓冲区 管理。用户将数据写入缓冲区并发出发送请求。上下文识别到这些数据,上下文的缓冲 区管理便将数据送入协议中。数据分组一旦到达,数据便被霹入接收缓冲区。当用户应 用程序通过接收请求要求接收数据时,上下文便告知接口端盼接收缓冲区管理该数据的 大小粕位置。 用户进程 虚函数 i p c 函数 啊r t u a li n tr e 9 0 ; i n ti s s u e ( u s e rr e q u e s t + r e q ) ; v i r t u a li n tr e l e a s e ( i n t n o a n s w e r 2 o ) ;i n ti n f o r m ( u s e rr e q u e s t * r e q ) ; v i r t u a lv o i d p e r r o r ( i n tr e s ,c h a r 8u s rm s g i n t a c c e p t ( u s e r _ r e q u e s t + r e q ) ; 。( c h a r * ) n u l l ) ; v i r t u a lv o i d c l e a n u p o ; 图4 5m t l 用户接口 m t l 的接口基类,m t l i f , 包含六个成员函数。成员函数i n s t a l l _ b u f f e r s 0 n 于生成缓 冲区管理。通过成员爨数g e t _ rb m o n g e t s _ b m ( ) 可以诱闲缓弹医管理。通过成员函数 i s s u e 0 n 户请求被发送到协议守护进程,并等待请求结果返回。成员函数i n f o r m 0 也完成 粲瑟蠢x t p 秘实现 相同的功能,只建不等待请求缩采的返阐。成员黼数p e r r o r ( ) 根据褶应的返回假打印输 出稠纛的错误信息。 4 2 。6 数据投遂服务 数撰投递暇务基类氆一s 蹙一系烈餍予发送帮接牧分组薛数黎投递系统按蠲静捅 象。由蒸炎d e i _ s r v 滩n 来的袋通过使用其体的数据投递服务来实现该抽象的接口。实 镛该基类得确的数据投递对象楚守护进疆到网络的访问点。 特定酌数据投递服务类,如辨、u d p ,都是由基类d e l s r v 派生霹米。在m t l 瘴中, i p 数撼投递服努对象是 一e b 粥u d p 数握投递月夔务对象是昀j e b 。 4 2 7 守护进程 罄舆m t i d m o n 掇供了涛协议实现为稻户髅的守护送层的必要功能。妇潮4 6 所示, 除了将避耩传为寄护避程运行外,基炎5 - n t l d a e m o n 还撼供了协议运行瓣爨能爨数。交予 守护进程必须秘耀户避程进行遽识,t p c 模块封装t r e c vr e q u e s t ( ) 秘s e n dr e q u e s t 0 丞数 来实瑷这一细节。 该旗类提供了两个公骞静态变量来供其它对象对其避行访淹。变羹p o o l 获敬和邋潮 新生成的分组巍对象。翼一个变蠡是强向数掇授遴服务对象的撩针。 成员函数i s _ a n o t h e r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学《蚕学-蚕学概论》考试参考题库及答案解析
- 2025年大学《机械工程-材料力学》考试模拟试题及答案解析
- 2025年大学《流行音乐-流行音乐概论》考试模拟试题及答案解析
- 2025年大学《数字经济-数字金融》考试模拟试题及答案解析
- 2025年大学《人文地理与城乡规划-地理信息系统应用》考试参考题库及答案解析
- 高尔夫会所接待服务与管理
- 膀胱炎的诊断与治疗
- 高教版(2025)基础模块(上册)任务2 连接网络公开课教学设计
- 中国竞赛轮胎行业市场前景预测及投资价值评估分析报告
- 2024-2025学年第四单元15 小虾教案
- 2025宠物食品市场线上消费趋势洞察
- 2026年辽宁经济职业技术学院单招综合素质考试题库必考题
- 玉林水库六角砖施工方案
- 蝶恋花柳永课件
- 风力发电方案
- 第四单元 百分数(单元测试)含解析-北师大版六年级数学上册
- 2025年港口集团招聘考试题及答案
- 2025中国中信金融资产管理股份有限公司资产经营四部社会招聘笔试历年常考点试题专练附带答案详解2套试卷
- 机电设备安装工程项目管理方案
- 2025湖南长沙市天心经济开发区管理委员会下属国有企业招聘8人考试笔试备考题库及答案解析
- 2025广东广州市荔湾区卫生健康系统事业单位招聘98人考试笔试参考题库附答案解析
评论
0/150
提交评论