(计算机应用技术专业论文)基于实时以太网的心跳协议.pdf_第1页
(计算机应用技术专业论文)基于实时以太网的心跳协议.pdf_第2页
(计算机应用技术专业论文)基于实时以太网的心跳协议.pdf_第3页
(计算机应用技术专业论文)基于实时以太网的心跳协议.pdf_第4页
(计算机应用技术专业论文)基于实时以太网的心跳协议.pdf_第5页
已阅读5页,还剩48页未读 继续免费阅读

(计算机应用技术专业论文)基于实时以太网的心跳协议.pdf.pdf 免费下载

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

文档简介

大连理工大学硕士学位论文 摘要 心跳机制是高可用集群的基础技术。人们提出了很多的模型和算法,并且得到了广 泛的应用,如心跳环机制,加速心跳协议,基于概率统计模型等,但这些模型都各有自 己的优缺点。目前主要存在下面两个问题:第一,多数心跳协议实现在应用层,这样心 跳包的发送会受到应用层任务切换的影响,切换时间长达数秒钟,产生较长的时延,难 以满足实时性的要求;第二,传统以太网使用c s m a c d 机制解决共享介质的访问问题, 心跳包可能由于网络负载过重而产生碰撞使得其它节点无法及时接收心跳包从而认为 该节点已经失效。由于以上问题的存在会导致心跳协议的误判率增加,无法及时检测到 错误的发生,达不到较好的实时性。 为解决以上问题,本文提出了一种基于实时以太网的心跳协议,该协议从两方面对 心跳协议进行改进,一方面将心跳协议实现于l i n u x 内核态,这样可以避免系统调度对 心跳协议的影响。另一方面,该协议利用实时以太网们陋p 的特性,把心跳包分为周期 心跳包与非周期健康询问包,并且能够协调各个节点心跳包的发送时间从而避免网络的 延迟及碰撞问题,有效地加快了节点失效的检测速度,提高系统的可用性及稳定性。 该协议原型在a m d6 4 计算机上给予了实现,运行的是l i n u x 2 6 1 5 系统。把心跳 协议在l i n u x 内核中给予实现,利用s kb u f f 结构构造心跳包,采用内核定时器驱动心 跳包的发送,可以大大降低心跳包的发送延迟,从而达到更好的实时性。并把心跳协议 的周期心跳包及非周期健康询问包注册在1 陋p 协议的接口中,利用1 匝p 的特性对这 两类包进行调度,使得心跳包及健康询问包在主站规定的时刻进行传输,避免心跳包的 碰撞及丢失而产生的误判率问题,大大降低了心跳协议的误判率。 关键词:心跳协议;以太网;高可用性;实时性;t t e p 大连理工大学硕士学位论文 ah e a r t b e a tp r o t o c o lb a s e do nt h er e a l - t i m ee t h e r n e t a b s t r a c t h e a r t b e a tm e c h a n i s mi st h eb a s i cp a r to ft h eh i g ha b i l i t yc l u s t e r a tp r e s e n tp e o p l eb r i n g f o r w a r dal o to fm o d e la n da r i t h m e t i c ,w h i c hh a sb e e nw i d e l yu s e di nm a n yf i e l d s s u c ha s h e a r t b e a tr i n gm e c h a n i s m ,a c c e l e r a t eh e a r t b e a tp r o t o c o l ,s t a t i s t i c sm o d e lb a s e do nt h e p r o b a b i l i t y ,b u ta l lt h e s em o d e l sh a v es o m ea d v a n t a g ea n dd i s a d v a n t a g e a tp r e s e n tt h e r ea r e t w oi m p o r t a n tp r o b l e m s a tf i r s t ,m o s th e a r t b e a tp r o t o c o l sa r ei m p l e m e n t e do nt h ea p p l i c a t i o n l a y e r , t h e ym u s tg ot h r o u g ht h el i n u xk e r n e l ,w h i c hw i l lb ei n f l u e n c e db yt h et a s ks w i t c h ,i tw i l l c a u s es e v e r a ls e c o n d sd e l a y s e c o n d l y ,t r a d i t i o n a le t h e r n e tu s et h ec s m a c dm e c h a n i s m w h i c hm a yc a u s ec o l l i s i o nw h e nt h e r ea r el o t so fp a c k e t si nt h ee t h e l - n e t w h e nt h eh e a r t b e a t p a c k e t sh a v es o m ec o l l i s i o ni tw i l lm a k et h eo t h e rn o d e sm a k eaw r o n gd e c i s i o n t os o l v ea b o v ep r o b l e m s ,t h i sp a p e rp r e s e n t sar e a l - t i m eh e a r t b e a tp r o t o c o lb a s e do nt h e r e a l - t i m ee t h e r n e t t h i sp r o t o c o li m p r o v e st h eh e a r t b e a tp r o t o c o lf r o mt w os i d e s f i r s t l y ,t h i s p a p e ri m p l e m e n t e dt h eh e a r t b e a tp r o t o c o li nt h el i n u xk e r n e lw h i c h c a na v o i dt h ei n f l u e n c eo f t h es c h e d u l i n g s e c o n d l y ,t h i sp r o t o c o lu s et h ec h a r a c t e ro ft h er e a l t i m ee t h e r n e tt r e pw h i c h d i v i d e st h ep a c k e t si n t op e r i o dp a c k e t sa n dt h en o n p e r i o dp a c k e t s , a n dt h e1 礓pc a n c o o r d i n a t ea l lt h eh e a r t b e a tp a c k e t ,m a k es u r et h e r ew i l lb en oc o l l i s i o nb e t w e e nh e a r t b e a t p a c k e t s s oi tc a na c c e l e r a t et h ed e t e c t i o ns p e e d ,a n di m p r o v et h eu s a b i l i t ya n dt h es t a b i l i t yo f t h es y s t e m t h i sp r o t o c o lw a si m p l e m e n t e do nt h ec o m p u t e ro fa m d6 4a n dt h eo p e r a t i o ns y s t e m v e r s i o ni sl i n u x - 2 6 1 5 3 t h i sp r o t o c o lw a si m p l e m e n t e di nt h el i n u xk e r n e l ,u s i n gt h es k b u f f s t r u c t u r et oc r e a t et h ep a c k e ta n ds e n dt h ep a c k e tb yt h et i m e rw h i c hc a nr e d u c et h ed e l a ya n d h a v ear e a l - t i m ea b i l i t y a tt h es a m et i m e ,t h i sp a p e rr e g i s t e r st h ep a c k e ti nt h e ,r n pi n t e r f a c e , u s i n gt h ec h a r a c t e ro ft h er e a l t i m ee t h e r n e tr m p t os c h e d u l et h e s ep a c k e t s t h e s ep a c k e t sw o u l db et r a n s m i t t e da tt h ep r e d e f i n e di n s t a n tw h i c hc a na v o i dt h ec o l l i s i o n ,a n d c a l lr e d u c et h em i s c a r r i a g eo f j u s t i c e k e yw o r d s :h e a r t b e a tp r o t o c o l ;e t h e r n e t ;h i g ha v a i l a b i l i t y ;r e a lt i m e ;t r e p - 大连理工大学硕士学位论文 大连理工大学学位论文版权使用授权书 本人完全了解学校有关学位论文知识产权的规定,在校攻读学位期间 论文工作的知识产权属于大连理工大学,允许论文被查阅和借阅。学校有 权保留论文并向国家有关部门或机构送交论文的复印件和电子版,可以将 本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、 缩印、或扫描等复制手段保存和汇编本学位论文。 学位论文题目:基垂宏壁么叁围卤31 b :剧鱼迎:塑 作者签名: 王迢盔 日期:2 1 :! 望年兰月上厶e t 导师签名:么幺i 叁广 日期:咀年业月互日 大连理工大学学位论文独创性声明 作者郑重声明:所呈交的学位论文,是本人在导师的指导下进行研究 工作所取得的成果。尽我所知,除文中已经注明引用内容和致谢的地方外, 本论文不包含其他个人或集体已经发表的研究成果,也不包含其他已申请 学位或其他用途使用过的成果。与我一同工作的同志对本研究所做的贡献 均已在论文中做了明确的说明并表示了谢意。 若有不实之处,本人愿意承担相关法律责任。 学位论文题目:蕉立窒堕丛丕圜趱! 坠兰起垫:幺 作者签名: 垄簿奶 日期:至塑年上l 月翌日 大连理工大学硕士学位论文 1 绪论 1 1课题背景 随着社会的不断发展和网络技术的不断进步,人们对互联网的依赖程度越来越高。 因此人们对计算机的可靠性和可用性提出了更高的要求,这是因为计算机的可靠性及可 用性对商业利益具有重大影响。为此,高可用计算机的研究和实现日益受到重视【1 1 。在 容错系统中,必须能够及时地诊断计算机系统的状态,尽可能地排除故障,使得系统恢 复到正常的工作状态1 2 j 。目前心跳检测协议是检测目标失效提高集群可用性的最普遍和 最为有效的方法之一【3 】o 所谓“心跳检测 【4 】,是指节点周期性向组中其它节点发送自 己的心跳包,表明当前系统状态,例如c p u 负载等,若组中其它节点没有在预定的时 刻收到此节点的心跳包,则可判断此节点出现系统故障。 在心跳协议的研究当中,如何提高心跳协议的检测速率及降低误判率是需要首先考 虑的问题之一。为解决这一问题,目前人们提出了很多的模型和算法,并且得到了广泛 的应用,如心跳环机制【5 1 ,加速心跳协议【6 j ,基于概率统计模型【7 】等,这些模型都在某 一种程度上对心跳协议进行了改进,但提高心跳协议的检测速度和降低误判率在传统心 跳协议中是矛盾的【剐,例如,心跳环机制为了减轻网络的负载从而减少碰撞降低误判率 却同时也降低了检测速度也使其可靠性存在隐患,首先检查结果是依靠单节点检测,另 外环机制中一个节点的实效会破坏这个系统【9 1 。 本文提出的心跳检测协议从这两个方面分别提高检测的速度和可靠性。即从心跳模 型上保证检测具有更高的可靠性及较低的误判率。基于实时以太网的心跳协议的设计目 标是: 心跳协议的心跳包及健康询问包能够通过实时以太网无碰撞的在网络中传输,带宽 利用率高,能够严格满足通信时限要求,降低心跳协议的误判率,从而提高心跳协议的 检测速度。 1 2 国内外的研究现状 自从上世纪使用心跳检测机制成功地在异步式分布系统中开发出一致算法后【1 0 1 ,人 们对心跳检测机制的研究就一直在不断发展。目前心跳协议的应用已经非常广泛,尤其 在容错系统中做为系统中非常重要的一部分,为此国内外已经展开了对心跳协议的研究 【1 1 l ,目前比较成熟的心跳模型有h e a r t b e a t 、心跳环机制、加速心跳协议以及基于概率统 计模型等,下面分别介绍这几种经典的心跳协议。 基于实时以太网的心跳协议 1 2 1 h e a r t b e a t 机制 h e a r t b e a t 机制是由l i n u x h a 开源项目组开发的心跳管理软件【1 2 】,它对心跳协议的 早期研究中起到了很好的指导作用,历史比较悠久,是一个比较成熟的机制,在当时是 一款性能比较良好的心跳管理软件。l i n u x h a 是比较早地对高可用集群提出的一个相 对比较完善的解决方案,它主要针对提高集群的一下几方面做出了有益的尝试,首先是 它可以提高集群的可靠性,使得集群的可靠性在当时的基础上可以进一步的增强。然后 又针对提高集群的可用性、服务性等方面做出了尝试,并取得了一定的效果。而h e a n b e a t 机制正是l i n u x h a 开源项目中的一个比较重要管理软件。 在h e a r t b e a t 中实现了串行线、u d p 广播、u d p 多播等心跳传输方式以及口地址接 管和资源管理机制【1 3 】,使得h e a r t b e a t 机制心跳协议具有很好的灵活性,能够适应多种 模式的需求,在早期的心跳协议中具有很好的性能。并且h e a r t b e a t 项目还实现了两种 类型的心跳:环行( r i i l g ) 心跳和广播心跳。环行心跳模型是指在系统中每个节点只能与 相邻节点进行通信,因此这种模型使得每个节点也只能检测相邻节点的健康状态,这种 心跳模型实现较简单,能够最大的减少网络中的心跳包的发送,降低心跳包在网络传输 中的耗费,但这种模型容易出现因为单节的故障而导致整个系统d o w n 掉,因此这种模 型的可靠性不是很强。广播心跳是指在系统中每个节点的心跳包都是通过广播心跳包的 形式来发送,在这种模式下不会出现环行心跳的单点故障的问题,但随之而产生的问题 是网络中会产生大量的心跳包,会加重网络的负载,并会产生数据包的碰撞,导致心跳 检测准确率的下降。 大连理工大学硕士学位论文 1 2 2 心跳环机制 心跳环机制是在h e a r t b e a t 心跳机制基础上做了进一步的改进【1 4 1 。它的设计目标是 使得心跳环算法具有消息复杂性低,较好可扩展性和较强适应性等优点。心跳环机制采 用分布式的设计方法,把集群中的节点分成组来处理,每个组之间没有任何联系,每个 组作为一个独立的检测单位。在组中采用环行心跳机制,组中每个节点只与其相邻节点 互发送心跳包检测其状态。并且在组中采用了“推和“拉 相结合的模式【1 5 1 ,即当相 邻节点发现故障时,再向其发送询问,进一步提高检测的可靠性。 1 2 3 加速心跳协议 加速心跳协议在心跳协议研究的领域中是一种历史比较悠久的心跳协议,它综合考 虑了检测延迟,误判率和消息复杂度这三个方面的因素【1 6 1 ,适用范围较广。结构采用主 从结构,在协议中有一个主节点余下的节点为从节点,所有从节点只向主节点发送自己 的心跳包,主节点来检测判断系统中哪些从节点发生故障,效率较高,并且网络负载较 小1 1 7 l 。但存在的问题是可扩展性不好,当网络中从节点数目增加时,主节点的性能将成 为系统的瓶颈。并且存在单点故障问题,主节点的实效将导致整个系统的崩溃。 1 2 4 基于概率统计模型 基于概率统计模型方案,它所使用的检测方法与h e a r t b e a t 机制、心跳环机制、加 速心跳协议有着本质的不同【1 8 】。此模型需要解决的问题是当一个节点的心跳包没有被系 统中其他节点收到,此节点正在失效的概率有多大。心跳包没有被收到,有两种可能其 一是此节点真的失效无法发送心跳包1 1 9 l ,其二是此节点实际上并没有失效并且也发送了 心跳包,但此心跳包在传输中丢失掉了【删。所以此模型主要考虑网络延迟,特别是广域 网传输的延迟通常会很大,而且信息包的到达不确定性较强。针对这种情况,此模型采 用概率统计理论和建立合理的统计模型是可以比较理想的解决预测问题。每次的心跳包 延迟和丢失在多大可信的前提下,认为这不代表节点发生故障。 1 3 课题研究内容 随着整个社会的信息化程度不断提高,社会生活逐渐与计算机系统密不可分。人们 越来越关心计算机系统的可用性。对于那些执行关键业务的计算机,要求全年不间断的 运行业务,暂时的停机都会导致巨大的损失。高可用集群采用冗余的硬件和专门的软件, 可以在系统出现问题时迅速进行恢复,大大提高了系统的可用性。心跳机制是高可用集 群的基础技术。心跳周期性地检测集群中各节点的工作状态1 2 1 1 ,当某个节点工作状态出 现变化时,能够快速可靠地通知集群中的其它节点,实现服务的动态调度和任务迁移。 基于实时以太网的心跳协议 目前人们提出了很多的模型和算法,并且得到了广泛的应用,如心跳环机制,加速心跳 协议,基于概率统计模型等,但这些模型都各有自己的优缺点。在此背景下,本文研究 的主要工作是在l i n u x 上设计和实现一个基于实时以太网的心跳协议,该协议利用实时 以太网t t e p 的特性,把心跳包分为周期心跳包与非周期健康询问包,并且能够协调各 个节点心跳包的发送时间从而能够避免网络的延迟及碰撞问题,有效地加快了节点失效 的检测速度,进而提高系统的可用性及稳定性。 大连理工大学硕士学位论文 2 心跳检;9 1 0 机制 本章介绍了心跳检测机制及其重要性,同时对它的各种形式和相关部分进行了分 析。 2 1 心跳检测机制的定义 心跳检测机制是检测网站中节点是否失效的有效机制【2 2 1 ,在任一给定时间,网站系 统中的节点都有可能一部分由于某种原因发生故障从而导致节点失效,面另一部分可能 没有发生故障正常运行,心跳机制正是检测在任一时间网站中是否有节点发生故障失效 的机制f 矧。具体实现方法为:系统通过心跳网络进行周期性的问候信息交流,是指节点 周期性向组中其它节点发送自己的心跳包,表明当前系统状态,例如c p u 负载等,若 组中其它节点没有在预定的时刻收到此节点的心跳包,则可判断此节点出现系统故障。 当前比较流行的心跳网络有两种方式,第一种为串行心跳线方式【州,它是每两对节 点间采用串行心跳线直接进行心跳包的点对点的传输过程,此种方式心跳包传输速度比 较快,并且不会与其它节点的心跳包发生碰撞,但此种心跳线的成本比较高。另一种心 跳网络为以太网方式【冽,此种方式的心跳包在以太网的基础上进行传输,成本比较小, 但速度不如串行心跳线快,在网络负载很重的情况下也有可能存在心跳包的碰撞丢失问 题。然而在实际的应用中,心跳包的传输量并不是很大,所以以太网方式价格比较低廉, 成本不高比较容易在实际环境中进行推广,所以目前大多数心跳网络均是采用以太网方 式来实现【矧。 2 2 心跳检测方法 下面几节主要介绍心跳检测机制的各种方法和相关问题的解决。 故障检测机制中最常用的方法就是推,拉及它们的各种变种模型。 ( 1 ) 推模型 髭。锄撕 。+ i , 计算机2 ,计算机l 吣。i m a l j v e 图2 1 推模型心跳诊断 f i g 2 1p u s hh e a r t b e a td e t e c t i o n 基于实时以太网的心跳协议 在推模型中,被监控节点向监控节点发送心跳包信息,控制流方向与信息流方向是 一致的p ”,如图2 1 所示。计算机1 周期地向计算机2 发送心跳包信息,同时计算机2 也向 计算机1 发送心跳包信息,当计算机1 在一段时间内没有收到计算机2 的心跳包,则计算 机1 就怀疑计算机2 出现问题,在此模型中由于信息是单向传输的,所以效率比较的高, 如果有多个监控者同时监控一个对象,这样的话就可以用多播来实现。但是单一采用这 种模型实现的效果并不是很理想,因为会存在这种情况:计算机1 按照一定的周期想计 算机2 发送自己的心跳包,以表明自己的健康状态,而此心跳包由于网络负载比较大, 在传输的过程中发生了心跳包与心跳包或此节点的心跳包与其它网络中传输的数据包 发生了碰撞,这样会导致计算机1 的心跳包需要重发,而重发的这个时间在c s m a c d 机 制中并没有明确的规定,是一个随机的回避时间,这样就会使得计算机1 发往计算机2 的 心跳包产生一定的延迟或者甚至是丢包。不管是延迟还是丢包计算机2 在规定的时间内 没有收到计算机1 发送过来的心跳包,这时计算机2 并没有别的办法可以确定计算机1 是 否真的发生了故障,而事实上计算机1 并没有发生故障只是此时计算机1 发送的心跳包由 于网络的原因发生了延迟或丢失。但如采用此种模型并不能对此进行验证,从而发生了 一定的误判。 ( 2 ) 拉模型 图2 2 拉模型心跳诊断 f i g 2 2 p u l lh e a r t b e a td e t e c t i o n 在拉模型中,与推模型相反,监控者会周期的向被监控者发生信息,询问被监控者 的健康状态【2 8 j ,如图2 2 所示,在图中计算机2 周期地询问计算机1 的健康状态,计算 机1 接收到计算机2 的询问后恢复自己的当前状态,这种模型因为确定一次状态需要两 次信息的传输,故效率较低。另外此种方式在网站中传输的数据包量也比较的大,因为 每要确定一个节点的状态就要至少发送两次心跳包,这样会随着网站中节点数据的增 加,而导致心跳包在网站中传输的数据量增大,从而影响到整个网络的性能。 ( 3 ) 双模型 从上面对推模型及拉模型的分析中可以看出,在拉模型中监控者需要周期的向被 监控者发送询问信息,这样拉模型就需要记录需要询问的所有监控者的信息,这样信息 大连理工大学硕士学位论文 存储量比较大,效率并不是很高【捌。而推模型并不需要存储太多相关信息,只需要把自 己的信息以广播或组播的形式发送到网络中,这样网络中其它所有的监控节点都可以接 收到此节点的相关信息,效率比较高。 双模型把推模型和拉模型的特性组合起来,这种模型的工作分为两个阶段,首先阶 段一为使用推模型,所有的被监控的节点周期性的发送自己的心跳包信息,若监控节点 在一个周期之内仍没有收到被监控节点的信息,则进入阶段- - a p 启用拉模型,因为监控 节点没有收到被监控节点的可能性有两种i 刈:一种为被监控节点真的本身实效了,无法 发送心跳信息,另一种为被监控节点本身并没有失效只是心跳包在网络传输过程中发送 了碰撞丢失或延迟导致监控节点没有收到被监控节点的心跳信息,所此模型在此时会进 入阶段二其中拉模型,监控节点会主动发送询问信息给被监控节点,询问被监控节点是 否失效,若被监控节点没有失效,在接收到监控节点的询问信息后会恢复自己的状态信 息。 ( 4 ) 闲谈类型错误侦测 通过对上面几种机制的分析可以看出,如果心跳包在网络中传输的数据过多,会导 致心跳包在网络中发生延迟或碰撞的情况,使得监控节点在规定的检测时间内没有收到 心跳包,这样会产生一定的误判,而闲谈类型错误侦测机制正是针对如何减小心跳包在 网络中的信息量而设计的。它有着如下性质: 不会因为进程数目而影响检测的误判率1 3 l l 。 不会由于时钟漂移的原因而影响检测的误判率1 3 2 1 。算法以一个已知的概率来判断 成员的实效问题。对于一个节点的心跳包没有按照规定时刻到达,会用一个概率的方法 来判断此没有按时到达的节点是真的发生了故障还是误判。此算法对于实效的判断方法 有一定的弹性,一小部分的心跳包的丢失并不会影响算法的最后判断的结果。 当心跳协议实现在应用层时会随着系统负载的加重而影响心跳协议的响应速度【3 3 l , 所以此算法针对这一问题,对判断超时的时间也进行了动态的调整,当系统进程数目增 加时也会相应把判断超时时间加长。 算法也对网络负载进行了一定的动态的调整,算法认为需要的带宽与进程数基本成 线数增长比率。在大型网络中,子网所使用的带宽基本是一个常数m j 。 ( 5 ) 层次类型错误侦测 层次类型错误侦测模型也是针对如何尽可能地减少心跳包在网络中传输的数量而 设计的。它的实现方法为:将网络中所有节点进行分层,组织成树的结构,树中只有子 节点与父节点有心跳包的交互,这样可以减少心跳包在网络中的传输数量,可以达到比 较理想的效果。但是随之而产生的问题是这样信息的传递速度比较慢,因为信息只与树 基于实时以太网的心跳协议 中连接的节点发送。想要询问某一节点是否发生故障,需要遍历此节点到被询问节点的 所有节点。另外,此模型的算法也比较的复杂,需要比较良好的算法来建立节点树,而 当树种某一节点发生故障失效需要从此树中删除时还需要调整此树结构。 大连理工大学硕士学位论文 3 基于实时以太网的心跳协议的设计 心跳机制是高可用集群的基础技术。心跳周期性地检测集群中各节点的工作状态, 当某个节点工作状态出现变化时,能够快速可靠地通知集群中的其它节点,实现服务的 动态调度和任务迁移。目前人们提出了很多的模型和算法,并且得到了广泛的应用,如 心跳环机制,加速心跳协议,基于概率统计模型等,但这些模型都各有自己的优缺点。 目前主要存在的问题有两个:第一,多数为在应用层利用s o c k e t 以u d p 或t c p 报文 方式实现心跳协议。其中u d p 报文比t c p 报文简短,比较符合心跳协议的要求。但在 传输速率的问题上,无论t c p 还是u d p 的套接字都实现在应用层,在发送及接收心跳 报文时候心跳报文至少要经过传输层,内核层及网络接口,使得传输的路径过长,并受 到应用层任务切换的影响,这会导致切换时间长达数秒钟,产生较长的时延,难以满足 实时性的要求;第二,传统以太网使用c s m a c d 机制解决共享介质的访问,心跳包可 能由于网络负载过重而产生碰撞使得其它节点无法及时接收心跳包从而认为该节点已 经失效。由于以上问题的存在会导致心跳协议的误判率增加,无法及时检测到错误的发 生,达不到较好的实时性。 3 1 系统设计目标 本文针对上述提出的两个问题进行了深入的研究与探索,对于第一个问题,可将心 跳检测器运行于系统内核空间来解决此问题。将其设计成网络层协议能够更加迅速及时 地检测到集群节点机器的工作状态,具有很好的实时性。解决了任务的调度和实时响应 的问题,在下文中会对其进行详细的介绍,但还需要解决传输的调度问题,特别是网络 负载很重的情况下心跳包的发送会产生碰撞从而导致误判率提高的问题。故本文提出了 一种基于实时以太网的心跳协议来解决第二个问题,由一种实时的以太网协议即硬实时 通信协议t r e p ( t i m c t r i g g e r e de t h e r n e tp r o t o c 0 1 ) 来保证心跳协议数据包传输的实时性。 从而可以排除网络拥塞对数据包的影响,解决检测协议由于网络负载过重导致误判的问 题。故本协议从两方面来提高实时性,首先将其实现在内核空间避免系统调度对其产生 的影响,然后将其实现在实时以太网的基础上,利用实时以太网的特性避免心跳包在传 输过程中产生碰撞的问题。 基于实时以太网的心跳协议的设计目标是:使得心跳协议的心跳包及健康询问包能 够通过实时以太网无碰撞的在网络中传输,带宽利用率高,能够严格满足通信时限要求, 降低心跳协议的误判率,从而提高心跳协议的检测速度。 基于实时以太网的心跳协议 3 2 核心态的心跳协议的设计 在上文中提到传统的心跳检测系统是实现在应用层,两个检测进程互发u d p 心跳 包来判断对方的健康状况1 3 5 1 ,采用应用层定时器发送u d p 心跳包,用多线程或多进程 实现心跳包的接收与发送 a 6 1 ,这样会由于系统调度而产生一定的延迟,本文将心跳协议 实现在内核态来避免这个问题。 本检测协议首先被设计为独立的网络层协议,运行在内核空间。在网络系统结构中 是与口协议处于同一层次的,能够更加迅速及时地检测到集群节点机器的工作状态, 当发送心跳包以及接收心跳包时可避免数据包由内核空间到应用层空间的拷贝的系统 开销,心跳包的发送采用系统定时器由软中断实现,并采用n c t l i n k 套接字机制与应用层 进行通信具有较高的效率和较小的系统开销,并且由于实现在内核态不需要进行口地 址的转换,具有很好的实时性。 本协议与传统心跳协议的相比主要有以下几点优势: ( 1 ) 传统的心跳检测系统是实现在应用层对性能提升的一个重要阻碍是心跳信息 在内核与应用层空间之间的拷贝,当大量心跳数据包从网络上传输过来时,都是内核p 栈先收到,而后拷贝到用户空间,而心跳协议发送心跳包也是先从用户空间拷贝到内核 再由内核发送出去,当心跳信息量大时,这种拷贝的损耗就相当可观了。而将心跳检测 移到内核就可避免这么损耗,当发送数据时可直接在内核构造心跳包进行传输,当接收 数据时可直接从网卡驱动中接收到本协议的数据包,可避免这种频繁的内核与应用空间 之间的拷贝所造成的开销问题。 ( 2 ) 传统的心跳检测系统心跳包发送与接收由多进程或多线程实现,若由多进程实 现则频繁的进程间切换会带来巨大的系统开销,若由多线程实现,会因一个线程的阻塞 而导致所在进程被挂起,影响其他线程执行。而将心跳检测移到内核采用内核线程实 现就不会因一个内核线程被挂起而影响其他内核线程的执行,也避免了多进程间切换所 产生的开销。 ( 3 ) 当操作系统的可运行队列很长系统负载很重时即当c p u 系统队列长度大于3 时可认为系统负载较重,很有可能出现心跳检测进程未能及时地得到调度时,就会导致 心跳包的发送延迟,这种延迟会导致出现节点失效的误判,并且这种调度因素的影响是 随机和不可预测的,会导致检测系统的震荡。如果采取延长心跳周期来避免调度因素, 又使得系统的检测速度大大降低,且准确率不一定能提高。将心跳检测移内核中实现, 心跳包的发送采用系统定时器由软中断实现,而软中断具有很好的实时性,它通常是在 时钟硬中断结束后被调度执行,而先于进程调度。因此只有在定时器执行完毕后才进行 进程调度,开始运行进程代码。这样就可以避免进程调度因素对心跳包发送的不利影响, 大连理工大学硕士学位论文 更好地保证了检测的快速和可靠。当然,当心跳周期很短,频繁发送心跳包时由于软中 断实时性较高而导致应用层其它进程出现延迟问题。对于这个问题本文通过大量实验测 出一个合理的心跳周期,使得对对应用层进程影响不是很大。 ( 4 ) 传统的心跳检测的心跳包为u d p 数据包,由于在应用层实现,只需指明口地 址而在以太网中实际网络包的传输是靠物理地址实现的,所以需要一个由口地址到物 理地址的转换过程。而将心跳检测移到内核中,心跳包在内核中由本协议生产,在填充 报文的各个域后可以直接调度网卡发送函数将心跳包传输到以太网中,故将协议实现在 内核在发送心跳包时不需要母地址到物理地址的转换,可以直接调用网卡发送函数进 行发送。 3 2 1 模块说明 如图3 1 所示,将心跳协议实现在内核态中共需要7 个模块,分别为网络接口模块, 协议接收模块,监听模块,健康询问模块,协议与应用层接口模块,收集系统负载模块, 心跳包发送模块。下面将会分别对这7 个模块进行详尽的描述。 ( 竺蒌霉测协议挚拔收艟 一么 ( - e m p l ) i 网络设备接ul 图3 1 核心态心跳协议模型 f i g 3 1 m o d e lo ft h eh e a r t b e a ti nt h ek e r n e l ( 1 ) 网络设备接口模块 该负责接收网络上的数据包,以及向网络中发送心跳包和健康询问包及其它非实时 数据包。 ( 2 ) 协议包接收模块 该模块将对网络设备接口模块所接收的网络信息进行协议解析以及错误检测,首先 检查该数据包是否合法,包括包的长度是否过大,报文的数据内容是否完整,报文的目 基于实时以太网的心跳协议 的地址是否正确等等,若是非法的数据包,则将其丢弃,若是合法的数据包,则对其进 行协议判断,判断协议的协议号字段是否为心跳包协议,若是心跳协议数据包,则传输 给监控模块;若收到的是健康询问包则启动收集系统负载模块,若是其它协议的数据包 则提交给相应的上层协议。 ( 3 ) 监控模块 监控模块的工作过程为: 若接收到的心跳包是新入网节点的心跳包,则激活一个新的计时器为其心跳包 计时;否则更新相应的计时器。 当有计时器超时并且其监听的心跳包并没有到达时,则激活一个计数器同时激 活其健康询问模块。 在所对应的计时器超时且计数器未满时,若未接收到健康反馈心跳包,则计数 加1 ;否则计数器清0 并关闭计数器。 计数器满并且仍没有接收到心跳包时则激活心跳协议a p i 接口模块。 ( 4 ) 健康询问模块 当监听模块在定时器超时时并且没有接收到相应节点的心跳包,则会启动健康询问 模块,健康询问模块的作用是向相应节点发送健康询问包实则为i c m p 协议的p i n g 包, 以判断相应节点是否处于活跃状态。 ( 5 ) 心跳协议a p i 接口模块 当健康询问模块,发送p i n g 包询问相应节点的状态,若此节点仍没有对其进行回复, 则健康询问模块判断此节点失效,并将此信息通知给心跳协议a p i 接口模块,心跳协议 a p i 接口模块将监控模块检测到的失效节点相关信息,通过心跳协议a p i 接口把它发送 出去。 ( 6 ) 收集系统负载模块 收集系统负载模块的作用为收集系统负载信息。如c p u 利用率,内存利用率,c p u 负载信息等。并将这些信息封装在心跳包中进行周期的发送,以使网络中其它节点了解 此节点的健康状况。 ( 7 ) 心跳包发送模块 心跳包发送模块的作用为调用网卡的发生函数将心跳包发送到网络中。心跳数据包 有节点心跳包和健康反馈心跳包两种数据信息。 大连理工大学硕士学位论文 3 2 2 工作流程 首先启动网络设备接口模块( 1 ) 监听到网络数据包,当接收到数据包后唤醒协议接 收模块( 2 ) ;协议接收模块( 5 ) 接收数据包后判断心跳包类型。若是心跳包,转监控模块 ( 3 ) ;若是健康询问包则转到收集系统负载模块( 6 ) 。 监控模块( 3 ) 启动定时器,心跳包发送模块( 7 ) 周期地发送心跳包,或发送健康反馈 心跳包。 监控模块( 3 ) 在计时器超时,没有接收所对应的心跳包则启动计数功能,并转健康 询问模块( 4 ) ;若条件都不满足时,且计数器满则转心跳协议a p i 接口模块( 5 ) 。 3 3 实时以太网t t e p 以太网经过几十年的发展,由于其价格低廉,目前已经广泛应用在各行各业。并且 有这不错的表现。但在一些实时领域以太网的性能表现确不能满足需求,因为在传统以 太网中采用的是c s 蝴d 机制即载波监听多路访问机制,这是一种非确定性的通信方 式,采用这种机制存在着碰撞的可能性,因为在每次向网络发送数据前都要检测当时是 否有其它节点也在发送数据,如果发生这种碰撞则两个数据包都不能成功发送到网络 中,需要等待一段时间重新进行传输。在实时性要求比较高的领域,这种数据包的丢失 会可能会带来灾难性的影响。 针对以上问题,而本文采用了一种本实验室设计的基于时分多路技术和主从模式的 适合硬实时通信的方案:t i e p ( t i m e - t r i g g e r e de t h e r n e tp r o t o c 0 1 ) 1 3 7 j 。此协议具有比较好 的实时性,能够尽可能地避免数据包在网络中发生碰撞。 3 3 1协议描述 1 瞪p 协议分为主从模式,主站首先收集从站的要发送的信息情况,然后主站可对 要发送在网络中的数据包进行调度,协议不仅调度消息的发送时刻也调度消息的生产时 刻,保障了生产时刻优先于发送时刻。协议对实时数据与非实时数据以及周期数据及非 周期数据分别进行处理,对于实时数据在发送实时数据阶段发送,此阶段不能发送非实 时数据,对于非实时数据则是在非实时数据阶段进行发送。对于周期性数据协议处理的 效果比较理想,可以提前调度其生产及发送时刻,而对于非周期数据本协议将它直接或 间接转化成周期数据进行处理。并且本协议可以实现从站在线向主站申请和移出信息; 新节点可以在线向主站申请入网,和其它从站进行通信,完善了网络的可扩展性。 传统e t h e m e t 不能保证实时性的原因是不能避免冲突【3 踟。而1 陋p 协议中对实时数 据可以进行调度规定其生产、传输时刻从而可以避免冲突及碰撞。协议中分为主站,以 及从站,主站在网站中只有一个其余节点为从站。 基于实时以太网的心跳协议 3 3 2 协议特点 t t e p 协议的特点主要有以下几种: ( 1 ) t r e p 协议是一种面向消息的协议,主站调度网络中的消息,跟网络中的节点个 数没有关系。 ( 2 ) 1 匝p 协议支持时间触发和事件触发,对于周期性的实时消息为时间触发调度方 式,对于异步的实时消息为事件触发。 ( 3 ) ,r 】吧p 协议可以支持节点在线加入,及时协议在运行过程中其他节点也可以请求 入网;t f e p 协议也可支持消息流的在线加入与移除。 ( 4 ) 1 m p 协议可以对周期实时消息统一调度生产的,而对于异步实时消息则由从节 点事件触发的。 ( 5 ) r 】匝p 协议将非实时数据及节点入网申请帧在非实时数据传输阶段进行传输;对 于实时消息则在实时数据传输阶段进行传输。 3 3 3 调度与传输 妇) 、jj、,7 j o 、,、t ,、o 、j ,r 、 lt dma 、u 口“n ,o 工, - 一r :s y n 。in o n r e a l t i m e 了 刁历露i jo 【丽翔a 丽司a 冈。阑ps y n 匀 p i 一 - 刊t 一 l - : ,i :一- jjn-:,i:一l 一m 1 _ - 叫 b 1 墅! q 2 上呈堡l 尘l二:l 量垒( 丛:12 ! 图3 2t r e p 协议中的e c 和m c f i g 3 2 e ca n d m c i n t l l e 狙 m p 协议中将总线时间分为连续相等的传输单元e c ( e l e m e n t a r yc y c l e s ) ,每个e c 长度大小是固定的,它是传输的基本单位。如图3 2 ( a ) 所示,每个e c 内分为3 个阶段: s y n 阶段,c s m a c d 阶段,t d m a 阶段。 在1 匝p 协议中另一个比较重要的概率是宏周期m c ( m a c r oc y c l e ) 。如图3 2 ( b ) 所示。 宏周期是指所有周期消息的最小公倍数,如果在宏周期内的所有消息可以调度,那么在 整个网络时间内消息都是可以调度的。 大连理工大学硕士学位论文 s i a v e4 ( a ) b u s s l a v e1 ( b ) s l a v e _ 4 b u s _ 将实时消息放入网卡的发送缓冲区 ! 五塑雯豆 n 节点上消息s 的实际生产过程 医量蚕羽消息在总线上传输 图3 3t t e p 协议中的e c 和m c f i g 3 3 e ca n d m c i n t p 协议中,生产与传输的关系如图3 3 所示。a ( x ,y ) 代表x 节点上的非周期消息y 。 s ( x ,y ) 代表x 节点上的周期消息y 。p r _ s ( x ,y ) 代表消息s ( x ,y ) 的生产。图3 3 ( a ) 展示了 一次调度结果。s l a v e4 在接收到主站的调度帧s y n 后,首先对其进行解析,从s y n 帧中得到此次传输单元应该生产及传输的消息,例如本例中传输了3 个消息,分别为消 息3 ,消息6 及消息7 图3 3 ( b ) 展示了两个节点的情况,在第一个e c 中分别生产了消息 1 、消息3 、消息7 ,并在第一个e c 中传输了消息3 ,消息1 。消息7 由于网络带宽的关 系安排在下个e c 中进行传输。 如图3 4 所示,假定系统中有2 个从站s l a v e l 和s l a v e 2 ,一个主站m a s t e r 。从站1 传输消息s ( 1 ,8 ) ,从站2 传输消息s ( 2 ,8 ) 。b u s ( t h e o r y ) 是主站经过调度计算得到的s ( 1 ,8 ) 和s ( 2 ,8 ) 的传输安排,t s y n o 是调度算法计算时为s y n 帧保留的时间。b u s ( a c t u a l ) 是实 际总线上s ( 1 ,8 ) 和s ( 2 ,8 ) 的传输情况。 s l a v e l 副a v e 2 m a s t e r b u s 爿 j j s ( 2 8 ) 一罐幺嘲r r 1 研。一j 缴旺轳。叫南l p - + i z ,7 。 除蝴嘲 乒t s 一1r 1r 1r 防嘞确翮嘲 s 搿,$ 菱翩 图3 4 消息的传输和生产 f i g 3 4m e s s a g e st r a n s m i s s i o na n dp r o d u c t i o n 基于实时以太网的心跳协议 3 4 协议系统结构 上

温馨提示

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

评论

0/150

提交评论