一种支持优先级的标签化网络栈方法和系统技术方案

技术编号:21146066 阅读:54 留言:0更新日期:2019-05-18 06:40
本发明专利技术公开了一种支持优先级的标签化网络栈方法和系统,其中服务器网络全数据通路支持优先级的优化系统包括:支持数据包按优先级分流的标签化网卡模块、支持优先级的用户态协议栈模块、以及支持优先级的应用事件处理框架模块。本发明专利技术提供的一种数据中心服务器网络全数据通路优化支持优先级的方法和系统,能有效改善数据中心服务器上资源使用的不确定性,可期待高效地获得服务吞吐能力和高优先级服务请求尾延迟的双数量级改进。

【技术实现步骤摘要】
一种支持优先级的标签化网络栈方法和系统
本专利技术涉及数据中心和云计算服务器网络优化领域,特别涉及一种支持优先级的标签化网络栈方法和系统。
技术介绍
随着以无人机、传感器网络等为代表的移动和物端技术的应用,云服务需要面对的并发度有几个数量级的提高,具有明显的高并发、低延迟的需求。物端的行为、动机、访问时间均具有不确定性,海量并发请求之间对资源的无意识竞争,会导致服务延时的波动,形成尾延迟效应。美国工程院院士、谷歌数据中心资深专家JeffreyDean博士等早在2013年就总结了数据中心“尾延迟(TailLatency)”问题,一般以99分位延迟来衡量,会明显高于平均延迟。长尾延迟将严重影响服务质量,甚至会造成直接或间接的经济损失。例如,谷歌因为用户响应时间增加0.5秒广告而收入下降20%,Dropbox因为用户体验差而离开亚马逊云。为保证服务器一定的尾延迟,通常要牺牲服务器的利用率,用空闲大量备用资源的方式来保障尾延迟,从而造成资源和空间的浪费。如何保障高吞吐低尾延迟是一个突出的挑战问题。传统网络栈主要涉及网卡、驱动、TCP/IP协议栈、应用等多个层次,而当前主要研究仍然是在某一层次优化通用的整体延迟层面,例如用户态协议栈或内核旁路、智能网卡offload、调度优化等。传统内核的网络协议栈因处理过程复杂,是产生服务响应尾延迟的重要因素之一。传统内核协议栈与整个内核代码集成在一起,难以进行深度定制和优化,因此无法针对服务的尾延迟等指标和优先级等可区分请求进行特殊的优化。相反,用户态协议栈因为不依赖内核和系统服务,可以有效避免不必要的系统调用和内存拷贝,精简协议处理流程,提高并行处理能力,直接和应用服务绑定,除了性能优势之外,也具有更大的灵活性和可控性。国际上用户态网络协议栈是比较新的研究方向,现已有LWIP、mTCP、F-Stack、SeaStar等相关研究。但现有协议栈方案均未区分应用请求的优先级,一系列的排队还是不可避免的对整个请求响应过程带来了巨大的延迟,致使在服务器内排队严重的云计算/数据中心环境中,高优先级请求的延迟得不到保障。一个明显的情况是,因为现有用户态协议栈方案仅基于五元组等TCP/IP包头内容进行流处理,忽略了应用层信息等可用来区分请求优先级的内容,致使面对数据中心内一条长流承载多个具有不同优先级请求的这类应用,不能区分请求的优先级,而使得高优先级请求的延迟得不到保障。观察到各级排队延迟给整个请求响应过程所带来的延迟问题,自然而然会想到一个解决办法:对于那些亟需响应的请求,是否可以让他们不和普通的请求一起排队,从而避免这些排队延迟以严格保证其响应速度?然而,真正开展软硬件协同的网络全数据通路优化是存在多方面挑战的,从网卡到驱动到协议栈再到应用层次,任一层次的忽视或处理不当都将使优化效果打折扣。
技术实现思路
本专利技术的目的在于面对服务器内排队严重的云计算/数据中心环境,提出一种新的服务器网络栈设计方案,以保障高吞吐的同时确保高优先级请求的低尾延迟。鉴于现有网卡只依赖于TCP/IP包头等协议控制信息为数据包划分多队列,这使得数据包到队列的映射是以数据流为粒度的,也就是同一个数据流的数据包会被映射到同一个队列中。后续处理过程中,随着数据包头的剥去,所有数据包更无优先级区分。而在数据中心常常面对这样的应用,如WeChat、IoT,它们会保持长流(Long-livedTCPflow),在这个长流中承载多个具有不同优先级的请求。如何保障一条流内的多个不同优先级的请求能得到相应优先级的处理,而不是粗粒度的以流为单位进行调度,是本专利技术所要面对的挑战。即本专利技术旨在依照请求的优先级来进行队列映射,实现请求级的优先级调度。将属于同一优先级的请求映射到同一队列中,同一队列可能会有来自不同流的但属于同一优先级的请求的包,同一条数据流的包也不再像之前的映射方案中只属于同一个优先级队列,而是会被分散到多个队列中。具体来说,本专利技术公开了一种支持优先级的标签化网络栈方法,其中包括:步骤100、服务器网卡对接收到的数据包提取数据载荷中预设偏移处的值,作为优先级标签,根据该优先级标签将该数据包放入相应优先级的DMA队列;步骤200、驱动将高优先级的DMA队列中数据包存进主机内存的高优先级队列供协议栈使用,将低优先级的DMA队列中数据包存进主机内存的低优先级队列;步骤300、TCP/IP协议栈取包时优先处理该高优先级队列中的数据包,对应产生高优先级事件提交上层应用事件处理框架,保障高优先级数据包继续获得优先服务权,直到取包数量达到阈值或该高优先级队列中为空时,TCP/IP协议栈才处理该低优先级队列中的数据包,对应产生低优先级事件,处理设定数量的低优先级数据包后再查看高优先级队列;步骤400、该应用事件处理框架优先取出该高优先级事件,处理对应的高优先级请求,优先发给应用;该应用事件处理框架收到待发送的响应数据时,把优先级标签写入该响应数据的该预设偏移处,同时在该响应数据之外标注优先级给本地该TCP/IP协议栈用,以使该响应数据包传递给协议栈的顺序也遵循高优先级优先的原则。所述的支持优先级的标签化网络栈方法,其中步骤100中根据该优先级标签将该数据包放入相应优先级的DMA队列,包括:将高优先级标签对应的数据包放入高优先级的DMA队列,低优先级标签对应的数据包放入低优先级的DMA队列。所述的支持优先级的标签化网络栈方法,其中该步骤100包括:步骤110、服务器网卡的网口接收以太网帧,解析帧的各层协议,提取五元组、校验和,计算校验和,并比较,若不正确则丢弃;步骤120、根据五元组的哈希值得到密钥地址,用密钥对数据载荷解密;步骤130、解密后,提取数据包的数据载荷中预设偏移处的值,与预设的优先级标签值进行比较,若相等则为高优先级,否则为低优先级,并将该数据包放入相应优先级的DMA队列。所述的支持优先级的标签化网络栈方法,其中该步骤300,包括:步骤310、检查各接收队列,若该高优先级队列有数据包,则从该高优先级队列中取出一个数据包并将其标记为高优先级;若该高优先级队列为空,检查该低优先级队列,若有包则取出并标记为低优先级;若该高优先级队列和该低优先级队列列均为空或达到设定策略阈值,跳出收包处理环节,跳转到步骤330发包处理环节;步骤320、检查该数据包是否带有数据载荷,若有,则检查该数据包的优先级,并根据优先级将该数据包加入对应优先级的接收缓冲区,并生成对应优先级的应用事件发送给应用或用户,跳转到步骤310重复执行,直到达到该设定策略阈值;步骤330、检查用户高优先级发送请求队列,若有高优先级发送请求,将该请求取出准备处理;若高优先级发送请求队列为空,检查低优先级发送请求队列,若有低优先级发送请求则将其取出准备处理;重复执行该步骤330,若在达到该设定策略阈值或没有用户发送请求时,则跳转到步骤340;步骤340、进行流状态更新维护,跳转到步骤310。所述的支持优先级的标签化网络栈方法,其中该步骤400包括:步骤410、取出的该高优先级事件的事件标识若为listener,则接受并建立socket连接;若该高优先级事件的事件标识为EPOLLIN,则接收数据包,并根据事件优先级,分发请求数据到各请求处理线程的对应的优先级队列中,得到本文档来自技高网
...

【技术保护点】
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

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1