【技术实现步骤摘要】
一种支持优先级的标签化网络栈方法和系统
本专利技术涉及数据中心和云计算服务器网络优化领域,特别涉及一种支持优先级的标签化网络栈方法和系统。
技术介绍
随着以无人机、传感器网络等为代表的移动和物端技术的应用,云服务需要面对的并发度有几个数量级的提高,具有明显的高并发、低延迟的需求。物端的行为、动机、访问时间均具有不确定性,海量并发请求之间对资源的无意识竞争,会导致服务延时的波动,形成尾延迟效应。美国工程院院士、谷歌数据中心资深专家JeffreyDean博士等早在2013年就总结了数据中心“尾延迟(TailLatency)”问题,一般以99分位延迟来衡量,会明显高于平均延迟。长尾延迟将严重影响服务质量,甚至会造成直接或间接的经济损失。例如,谷歌因为用户响应时间增加0.5秒广告而收入下降20%,Dropbox因为用户体验差而离开亚马逊云。为保证服务器一定的尾延迟,通常要牺牲服务器的利用率,用空闲大量备用资源的方式来保障尾延迟,从而造成资源和空间的浪费。如何保障高吞吐低尾延迟是一个突出的挑战问题。传统网络栈主要涉及网卡、驱动、TCP/IP协议栈、应用等多个层次,而当前主要研究仍然是在某一层次优化通用的整体延迟层面,例如用户态协议栈或内核旁路、智能网卡offload、调度优化等。传统内核的网络协议栈因处理过程复杂,是产生服务响应尾延迟的重要因素之一。传统内核协议栈与整个内核代码集成在一起,难以进行深度定制和优化,因此无法针对服务的尾延迟等指标和优先级等可区分请求进行特殊的优化。相反,用户态协议栈因为不依赖内核和系统服务,可以有效避免不必要的系统调用和内存拷贝,精简协 ...
【技术保护点】
1.一种支持优先级的标签化网络栈方法,其特征在于,包括:步骤100、服务器网卡对接收到的数据包提取数据载荷中预设偏移处的值,作为优先级标签,根据该优先级标签将该数据包放入相应优先级的DMA队列;步骤200、驱动将高优先级的DMA队列中数据包存进主机内存的高优先级队列供协议栈使用,将低优先级的DMA队列中数据包存进主机内存的低优先级队列;步骤300、TCP/IP协议栈取包时优先处理该高优先级队列中的数据包,对应产生高优先级事件提交上层应用事件处理框架,保障高优先级数据包继续获得优先服务权,直到取包数量达到阈值或该高优先级队列中为空时,TCP/IP协议栈才处理该低优先级队列中的数据包,对应产生低优先级事件,处理设定数量的低优先级数据包后再查看高优先级队列;步骤400、该应用事件处理框架优先取出该高优先级事件,处理对应的高优先级请求,优先发给应用;该应用事件处理框架收到待发送的响应数据时,把优先级标签写入该响应数据的该预设偏移处,同时在该响应数据之外标注优先级给本地该TCP/IP协议栈用,以使该响应数据包传递给协议栈的顺序也遵循高优先级优先的原则。
【技术特征摘要】
1.一种支持优先级的标签化网络栈方法,其特征在于,包括:步骤100、服务器网卡对接收到的数据包提取数据载荷中预设偏移处的值,作为优先级标签,根据该优先级标签将该数据包放入相应优先级的DMA队列;步骤200、驱动将高优先级的DMA队列中数据包存进主机内存的高优先级队列供协议栈使用,将低优先级的DMA队列中数据包存进主机内存的低优先级队列;步骤300、TCP/IP协议栈取包时优先处理该高优先级队列中的数据包,对应产生高优先级事件提交上层应用事件处理框架,保障高优先级数据包继续获得优先服务权,直到取包数量达到阈值或该高优先级队列中为空时,TCP/IP协议栈才处理该低优先级队列中的数据包,对应产生低优先级事件,处理设定数量的低优先级数据包后再查看高优先级队列;步骤400、该应用事件处理框架优先取出该高优先级事件,处理对应的高优先级请求,优先发给应用;该应用事件处理框架收到待发送的响应数据时,把优先级标签写入该响应数据的该预设偏移处,同时在该响应数据之外标注优先级给本地该TCP/IP协议栈用,以使该响应数据包传递给协议栈的顺序也遵循高优先级优先的原则。2.如权利要求1所述的支持优先级的标签化网络栈方法,其特征在于,步骤100中根据该优先级标签将该数据包放入相应优先级的DMA队列,包括:将高优先级标签对应的数据包放入高优先级的DMA队列,低优先级标签对应的数据包放入低优先级的DMA队列。3.如权利要求1或2所述的支持优先级的标签化网络栈方法,其特征在于,该步骤100包括:步骤110、服务器网卡的网口接收以太网帧,解析帧的各层协议,提取五元组、校验和,计算校验和,并比较,若不正确则丢弃;步骤120、根据五元组的哈希值得到密钥地址,用密钥对数据载荷解密;步骤130、解密后,提取数据包的数据载荷中预设偏移处的值,与预设的优先级标签值进行比较,若相等则为高优先级,否则为低优先级,并将该数据包放入相应优先级的DMA队列。4.如权利要求3所述的支持优先级的标签化网络栈方法,其特征在于,该步骤300,包括:步骤310、检查各接收队列,若该高优先级队列有数据包,则从该高优先级队列中取出一个数据包并将其标记为高优先级;若该高优先级队列为空,检查该低优先级队列,若有包则取出并标记为低优先级;若该高优先级队列和该低优先级队列列均为空或达到设定策略阈值,跳出收包处理环节,跳转到步骤330发包处理环节;步骤320、检查该数据包是否带有数据载荷,若有,则检查该数据包的优先级,并根据优先级将该数据包加入对应优先级的接收缓冲区,并生成对应优先级的应用事件发送给应用或用户,跳转到步骤310重复执行,直到达到该设定策略阈值;步骤330、检查用户高优先级发送请求队列,若有高优先级发送请求,将该请求取出准备处理;若高优先级发送请求队列为空,检查低优先级发送请求队列,若有低优先级发送请求则将其取出准备处理;重复执行该步骤330,若在达到该设定策略阈值或没有用户发送请求时,则跳转到步骤340;步骤340、进行流状态更新维护,跳转到步骤310。5.如权利要求4所述的支持优先级的标签化网络栈方法,其特征在于,该步骤400包括:步骤410、取出的该高优先级事件的事件标识若为listener,则接受并建立socket连接;若该高优先级事件的事件标识为EPOLLIN,则接收数据包,并根据事件优先级,分发请求数据到各请求处理线程的对应的优先级队列中,得到高优先级请求队列和低优先级请求队列;步骤420、合并该高优先级请求队列和该低优先级请求队列为单队列模式,将高优先级请求排在队头,提交给应用进行处理,跳转到步骤410重复执行,直到达到该设定策略阈值时跳转到步骤430;步骤430、将应用处理得到的响应结果按优先级需求打好标签放入发送缓冲区,交给协议栈处理,且在达到设定策略阈值时,开始处理低优先级请求的发送,每处理完一个低优先级请求后检查高优先级请求队列是否有新的元素,若有,则依旧处理该高优先级请求至该高优先级请求队列排空,跳到步骤410继续处理。...
【专利技术属性】
技术研发人员:张文力,刘珂,常轶松,于蓝,陈明宇,
申请(专利权)人:中国科学院计算技术研究所,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。