CN113645178B - 增强udp网络协议以有效传输大型数据单元的技术 - Google Patents

增强udp网络协议以有效传输大型数据单元的技术 Download PDF

Info

Publication number
CN113645178B
CN113645178B CN202010884184.8A CN202010884184A CN113645178B CN 113645178 B CN113645178 B CN 113645178B CN 202010884184 A CN202010884184 A CN 202010884184A CN 113645178 B CN113645178 B CN 113645178B
Authority
CN
China
Prior art keywords
udp
packet
packets
value
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010884184.8A
Other languages
English (en)
Other versions
CN113645178A (zh
Inventor
A·杰哈
S·拉马钱德兰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN113645178A publication Critical patent/CN113645178A/zh
Application granted granted Critical
Publication of CN113645178B publication Critical patent/CN113645178B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/164Adaptation or special uses of UDP protocol
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/20Hop count for routing purposes, e.g. TTL
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/19Flow control; Congestion control at layers above the network layer
    • H04L47/196Integration of transport layer protocols, e.g. TCP and UDP
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Abstract

公开了增强UDP网络协议以有效传输大型数据单元的技术。用户数据报协议(UDP)是一种众所周知的协议,用于在网络的两个节点之间传输数据。当数据太大而无法容纳于可以在两个节点之间传输的单个UDP数据包中时,需要对数据进行分段并与多个数据包一起传输,然后在接收节点上重新组装。本文公开了例如用于从节点的中央处理单元(CPU)卸载这种分段、传输和重新组装的技术。例如,通过重新利用UDP传输中使用的旧协议字段(例如互联网协议(IP)标识(ID),生存时间(TTL),服务类型(TOS)和/或以太类型字段)对有效分段、乱序接收和重新组装所需的信息进行编码,可以有效地执行这种卸载。

Description

增强UDP网络协议以有效传输大型数据单元的技术
背景技术
数据包(或数据报)通常通过操作系统的网络堆栈(network stack)运行每个数据包来处理,其分层处理该数据包中的每个报头-例如,以太网报头,互联网协议(IP)报头和传输控制协议(TCP)/用户数据报协议(UDP)报头。由于需要处理每个数据包报头,因此高带宽网络接口可能会导致中央处理器(CPU)利用率高,因为CPU处理大量数据包。因此,可以实现各种解决方案以将某些处理从CPU卸载到另外的一个或更多个硬件组件上,例如网络媒体访问控制(MAC)硬件。例如,已经实现了分段(segmentation)卸载(主要是针对固有排序的TCP连接),从而使CPU上运行的网络堆栈仅处理一个大的TCP有效载荷,而网络MAC硬件负责将较大的TCP有效载荷分段为可以容纳在底层以太网介质的最大传输单元(MTU)中的最大分段大小(MSS)部分,同时根据执行的分段更新TCP/IP报头。
然而,对于UDP业务,分段卸载更具挑战性,因为UDP有效载荷中没有内置或固有的排序。例如,在应用程序向网络堆栈发送大的UDP有效载荷,并且该堆栈(在CPU上执行)将一个UDP报头添加到该大的有效载荷,并将有效载荷传递给网络MAC硬件的情况下,有效载荷可能无法运行准确的重建。例如,MAC硬件可以将UDP有效载荷分割成MTU大小的帧,每个帧携带IP/UDP报头,并根据该分段修改适当的字段。但是,这些个体的MTU大小的帧在传输过程中仍然可能丢失/通过网络乱序路由,因此可能无法根据传输顺序到达接收器。结果是,并且由于UDP/IP报头信息不包括排序信息,因此可能无法重新组装应用程序发送到网络堆栈的原始UDP有效载荷(例如,由于帧可能不知不觉而丢失)和/或因为接收到的帧可能是乱序的,并且正确的顺序未知。
考虑到这一点,一些常规系统要求使用网络堆栈的每个应用程序都要完全了解底层的卸载能力和操作。例如,可以在有效载荷本身中编码元数据,其帮助卸载感知应用程序检测出或排序或糟糕地重新组合的有效载荷。然而,这些操作需要重写应用程序,并且取决于发送方的特定硬件如何分割有效载荷,应用程序仍可能无法准确处理数据。
发明内容
本公开的实施例涉及用于序列感知用户数据报协议(UDP)分段卸载(USO)的有效技术。公开了重新利用旧报头字段来呈现(render)UDP分段卸载(USO)序列感知的系统和方法,使得由应用程序生成并通过网络传输的原始有效载荷可以在接收器处可信且准确地重新组合。
与如上所述的常规系统相比,可以修改以太网和/或互联网协议(IP)报头中的旧位定义-并且可以将关联的硬件配置为执行此类修改-以对较大的UDP有效载荷的各个帧之间的排序信息进行编码。可以对修改进行编码,以使较大的UDP有效载荷的各个帧的典型路由和转发不受影响–从而允许本文所述的系统和方法对应用程序透明,从而无需重写或更新它们即可考虑(account for)或利用USO功能。结果,可以降低用于处理高带宽UDP业务的CPU利用率(例如在汽车系统,存储网络(例如,网络附加存储(NAS))等中),以提高总体系统性能,同时保持相同的系统语义状态。
附图说明
下面参考附图详细描述用于序列感知用户数据报协议(UDP)分段卸载(USO)的有效技术的系统和方法,其中:
图1描绘了根据本公开的实施例的序列感知UDP联网系统的框图;
图2A-图2D描绘了根据本公开的实施例的在序列感知UDP联网系统中生成最大传输单元(MTU)大小的数据包的可视化;
图3包括根据本公开的实施例的表示用于序列感知UDP联网的方法的流程图;以及
图4是适合用于实现本公开的一些实施例的示例计算设备的框图。
具体实施方式
公开了与用于序列感知用户数据报协议(UDP)分段卸载(USO)的有效技术有关的系统和方法。尽管本文主要针对汽车和数据中心应用进行了描述,但这仅出于示例目的,并且本文所述的系统和方法可以在任何基于UDP的网络解决方案中实现。另外,尽管本文主要将以太网的使用描述为用于数据链路层,但这并不旨在进行限制,并且本发明的系统和方法可以附加地或替代地实现串行线路互联网协议(SLIP)、点对点协议(PPP)和/或UDP网络堆栈的数据链路层上的其他协议类型。
本文描述的系统和方法可以被实现,以使得它们对于应用程序是透明的。例如,应用程序不必知道正在发生UDP排序和USO。这样,因为网络堆栈可以被配置为处理排序的帧,并且考虑乱序和/或丢失的帧,所以该应用程序可以不知道(oblivious)在接收到的帧中编码的排序。另外,本文描述的系统和方法可以与现有网络架构向后兼容,使得如果接收到被分段和排序的UDP数据包,但是接收硬件未配置用于这种分段,则接收硬件仍可以按照普通UDP数据包来处理该数据包。结果,两者都被配置用于为本文描述的排序的接收器和发送器与未配置的那些之间的通信-例如,在接收器未配置且发送器被配置用于USO的情况下-UDP数据包的发送和接收仍然可以无缝发生。另外,尽管本系统和方法适用于USO,但是USO的实现方式使得现有的传输控制协议分段卸载(TSO)硬件可以重复使用-在实施例中进行了较小的调整-以执行本文所述的USO。
现在参考图1,图1描绘了根据本公开的一些实施例的示例序列感知UDP联网系统100(在本文中可替代地称为“系统100”)。应当理解,本文描述的这种布置和其他布置仅作为示例阐述。除了或代替所示的布置或元素之外,还可以使用其他布置和元素(例如,机器,界面,功能,命令,功能分组等),并且可以完全省略一些元素。此外,本文描述的许多元件是功能实体,其可以被实现为分立的或分布式组件或与其他组件结合并且以任何合适的组合和位置来实现。本文描述为由实体执行的各种功能可以由硬件、固件和/或软件来执行。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。在一些实施例中,系统100(例如,发送器102,接收器104等)可以包括图4的示例计算设备400的部分或全部组件,或者可以包括示例计算设备400的组件的附加或替代组件。
系统100可以包括通过一个或更多个网络106(例如但不限于,局域网(LAN),广域网(WAN),低功耗广域网(LPWAN),个域网(PAN),存储区域网络(SAN),系统区域网络(SAN),城域网(MAN),校园区域网(CAN),虚拟专用网络(VPN),企业专用网络(EPN)和/或无源光纤局域网(POLAN))通信地耦合的发送器102和接收器104。发送器102和接收器104通过一个或更多个网络106进行的连接可以包括有线连接,无线连接或其组合。
发送器102和接收器104可以各自包括系统100内的物理设备或组件,和/或可以各自代表包括任意数量的设备和/或组件的单独的系统。例如,在一些实施例中,发送器102和接收器104中的每一个可以包括较大系统的组件,例如通过以太网连接进行通信的汽车的组件,或数据存储(例如,网络存储,例如网络附加存储(NAS))的组件。在其他实施例中,发送器102可以对应于第一系统的发送设备,并且接收器104可以对应于第二系统的接收设备。这样,发送器102和接收器104可以位于同一地点,并且可以通过本地(有线和/或无线)连接进行通信,和/或可以相对于彼此位于远程(例如,客户端节点和主机节点,例如在分布式或云计算环境中)。发送器102和接收器104因此可以包括可能够使用UDP进行通信的任何两个组件、设备和/或系统。尽管被称为发送器和接收器,但这并不旨在进行限制,并且当接收数据时,发送器102可以是接收器,而当发送数据时,接收器104可以是发送器。然而,为了清楚起见,发送器102和接收器104被如此标记。
发送器102和接收器104可以分别包括一个或更多个处理器108和120,诸如一个或更多个中央处理单元(CPU)和/或图形处理单元(GPU)。在一些实施例中,为了减轻一个或更多个处理器108和/或120上的处理负担,可以执行USO,例如通过利用以太网介质访问控制(MAC)硬件118、130,以太网硬件116、128,IP硬件114、126和/或UDP硬件112。在一些实施例中,本文描述的一个或更多个硬件组件可以对应于网络接口卡(NIC)。
发送器102和接收器104的应用程序110、122分别可以包括生成应用程序数据以用于通过一个或更多个网络106发送的任何应用程序。例如,一个或更多个应用程序110、122可以包括但不限于隧道(例如,VPN隧道)应用程序,媒体流应用程序,游戏或游戏流应用程序,本地广播机制应用程序,NAS操作系统内的应用程序和/或汽车系统内执行的应用程序–例如非自动驾驶汽车系统、半自动驾驶汽车系统(例如,高级驾驶员辅助系统(ADAS))和/或自动驾驶汽车系统–用于跨以太网进行通信,以太网上的控制器局域网(CAN)等。应用程序110、122可以生成和/或解码用于UDP数据包的应用程序数据202(图2A-图2D)和/或应用程序层报头。
发送器102和接收器104的UDP硬件112、124可以分别对应于被配置用于生成和/或解码UDP数据包的UDP报头204(图2A-图2D)的硬件。UDP报头204可以包括表示源端口(例如16位),目的地端口(例如16位),长度(例如16位)和校验和(例如16位)的数据(例如报头字段),总共64位或8个字节。然而,取决于实施例以及发送器102和接收器104的系统配置,UDP报头204可以包括附加的和/或替代的报头字段和/或用于各个报头字段中的每一个的更多或更少的位。
发送器102和接收器104的IP硬件114、126可以分别对应于被配置用于生成和/或解码IP报头206(图2A-图2D)和/或另一类型的网络层报头(例如,ARP,RARP,ICMP,IGMP等)的硬件,这取决于实施例。IP报头206可以包括表示下列项的数据(例如报头字段):IP协议的版本(例如IPv4,IPv6等)(例如4位),报头长度(例如4位),优先级和服务类型(TOS)(例如8位,前3位用于优先级和后5位用于TOS),标识(例如16位),标志(例如3位,包括不分段(DF)位),分段偏移(例如13位),生存时间(TTL)(例如8位),协议(例如TCP或UDP)(例如8位),报头校验和(例如16位)),源IP地址(例如32位),目的地IP地址(例如32位)和选项(例如32位)。然而,取决于实施例以及发送器102和接收器104的系统配置,IP报头206可以包括附加的和/或替代的报头字段和/或用于各个报头字段中的每一个的更多或更少的位。
在一些实施例中,如本文关于图2A-图2D更详细描述的,可以修改IP硬件114以对IP报头206的IP ID位、TTL位、DF位和/或TOS位进行编码,以指示UDP序列的开始,UDP序列的结束,来自UDP序列的中间数据包,接收到的压缩包已排序,和/或其他有关序列感知UDP传输的信息。
发送器102和接收器104的以太网硬件116、128可以分别对应于被配置用于生成和/或解码以太网报头208(图2A-图2D)和/或另一类型的数据链路层报头(例如,PPP,HDLC,ADCCP等)的硬件,这取决于实施例。以太网报头208可以包括表示前导码(例如7个字节),帧起始定界符(SFD)(例如1个字节),目的地地址(例如6个字节),源地址(例如6个字节),以太类型(例如2个字节),长度(例如2个字节),数据(例如IP报头206,应用程序数据202或其一部分等)(例如46-1500个字节)和循环冗余校验(CRC)(例如4个字节)的数据(例如,报头字段)。然而,取决于实施例以及发送器102和接收器104的系统配置,以太网报头208可以包括附加的和/或替代的报头字段和/或用于各个报头字段中的每一个的更多或更少的位。
在一些实施例中,如本文相对于图2C更详细描述的,可以修改以太网硬件116以对以太网报头的以太类型部分进行编码,以指示与实际发送的协议类型不同的协议类型,并且可以修改以太网硬件128以对以太类型部分进行解码,从而根据数据包的实际以太类型处理接收到的数据包。
发送器102和接收器的以太网MAC硬件118、130可以分别对应于被配置为与有线、无线和/或光传输介质交互的硬件,以通过一个或更多个网络106发送每个最大传输单元(MTU)大小的数据包。这样,一旦网络堆栈(包括应用层,传输层,网络层和数据链路层)设置了与应用程序数据202相对应的MTU大小的数据包的报头,以太网MAC硬件118就可以控制MTU大小的数据包通过一个或更多个网络106的传输。类似地,以太网MAC硬件130可以接收MTU大小的数据包,并确定下一步将MTU大小的数据包向上传递到接收器104的网络堆栈以供应用程序122消化。
系统100可以被配置为利用UDP数据包的(例如IP报头、以太网报头等的)旧字段来插入或编码序列感知信息。结果,可以对整个应用程序有效载荷的每个MTU大小的帧进行编码,以使接收器可以识别哪些数据包需要重新组装,哪个数据包指示重新组装的结束以及如何处理乱序或丢失的MTU大小的帧。例如,当经由USO对大的UDP有效载荷进行分段时,在不控制接收器104处的排序和/或序列的情况下,系统仍可以确定何时开始重新组装帧以重建由发送器102分段的较大的有效载荷。一旦重新组装已开始,接收器还可以基于来自帧的解码信息确定较大的有效载荷的分段在何处结束(例如,哪个数据包或帧是有效载荷的最后一个数据包或帧)。另外,由于有效载荷可以分解成任意数量的分段帧(例如,MTU大小的帧),因此乱序或丢失的帧可以根据解码信息进行识别或排序,这可能发生在有效载荷被传递到应用程序之前,这样应用程序就无需知道是否接收到和/或以适当的顺序接收到数据包。
现在参考图2A,图2A包括用于将序列感知信息编码到UDP有效载荷的MTU大小的帧210A-210N中的过程的可视化200A。尽管仅示出了三个MTU大小的帧210,但这并不旨在进行限制,并且可以根据有效载荷的大小和MTU的大小来生成任意数量(N个)的MTU大小的帧。例如,应用程序数据202(例如,用户数据,应用程序报头等)可以由发送器102的应用程序110和/或网络堆栈的应用层生成,与网络堆栈的传输层相对应的UDP硬件112可以将UDP报头204附加到应用程序数据202,与网络堆栈的网络层相对应的IP硬件114可以将IP报头206附加到UDP报头204,并且与数据链路层相对应的以太网硬件116可以将以太网报头208附加到IP报头206。然后可以使用USO对该有效载荷进行分段,以生成所得到的MTU大小的帧210A-210N,并且可以通过一个或更多个网络106将各个MTU大小的帧210A-210N发送(例如,使用以太网MAC硬件118)到接收器104。
为了使接收器104理解MTU大小的帧210A-210N对应于已经被分段和排序的应用程序数据202的较大的有效载荷,可以通过利用DF位、TTL位和IP ID位来对IP报头206进行编码。例如,DF位可以被设置(例如,设置为“1”而不是“0”)以指示MTU大小的帧不应被分片(fragment)。当接收器104被配置为重新组装已经使用USO分段的有效载荷时,接收器104可以识别出接收到的区段(segment)(例如,MTU大小的帧)基于被设置的DF位被排序。除了DF被设置外,对于较大的有效载荷的每个区段,可以将IP报头206的IP ID字段设置为恒定值。例如,IP硬件114可以被配置为针对较大的有效载荷的每个分段数据包将IP ID设置为相同的IP ID–例如,与常规的IP ID字段相反,常规的IP ID字段为每个区段或新的有效载荷递增IP ID字段。这样,被设置的DF位可以向接收器104指示该区段属于较大的总体有效载荷,并且跨区段一致的IP ID可以向接收器104指示该区段是相同的较大的有效载荷的一部分。然后,接收器104可以继续聚合分段的数据包,直到接收到没有设置DF位、不具有相同的IPID(例如,在相同的5元组流内)和/或与对应于应用程序数据202的区段具有不同的MTU大小(例如,这些事件中的一个或全部可向接收器104指示已到达重新组装的终点)的区段或有效载荷为止。在一些实施例中,接收器104可以具有修改的通用接收卸载(GRO)堆栈,使得接收器104继续聚合数据包。
为了确保所接收到的被识别为(例如,使用DF位,IP ID和/或MTU大小)对应于较大的有效载荷的分段数据包的正确排序和/或定序,IP报头206的TTL和/或TOS字段可以被利用。例如,因为对于接收器104来说TTL字段可能需要为非零(例如,对于P2P连接为“1”)以知道数据包是有效的,所以TTL字段可以使用2到255之间的值(例如,由于TTL是8位字段)作为较大的有效载荷的分段数据包的区段数字来顺序地(例如,每个数字、每隔一个数字、每三个数字等)递增。作为非限制性示例,第一数据包可以包括在TTL字段中编码的“2”,下一数据包可以包括“3”,依此类推,直到生成较大的有效载荷的最终分段数据包为止。在一些实施例中,TOS字段可以用于对接收到的分段数据包进行序列和/或定序。例如,对于未使用的TOS字段的位(例如,其不与数据包的优先级定义重叠),可以递增这些位的值以对应于较大的有效载荷的分段数据包的序列或排序。
另外,IP硬件114可以为每个分段数据包更新总长度,IP校验和,和/或IP报头206的其他报头字段,并且UDP硬件112可以更新UDP长度,校验和,和/或每个分段数据包的UDP报头204的其他报头字段。
使用图2A的设计,可以支持372KB(例如1460×255)的最大USO有效载荷长度。另外,这种设计可以允许接收器104丢弃不完整系列的USO分段数据包-例如,在接收到序列号例如8但从未接收到序列号7的情况下,接收器104可以知道该系列不完整并且可以丢弃该数据包。因为图2A的设计是向后兼容的,接收到的不具有相同IP ID、不具有DF位设置等的数据包仍可以通过接收器104的网络堆栈作为普通UDP数据包来处理。此外,如果发送器102和接收器104均被配置为在图2A的设计中操作,可以减少一个或更多个处理器108、120(例如,CPU)所需的计算功率,并因此导致更好的UDP性能。此外,由于DF位被设置为用于两个以太网端点之间的通信-与交换机和/或中间网络节点对MTU发现应用程序的DF位的常规用法不同-当接收到具有DF位设置的数据包时(例如,在数据包的发送器未意识到DF位用于通信的情况下),该数据包将被接收器保留以进行潜在的重新组装,该接收器配置为将DF位解释为与分段数据包相对应,即使该数据包实际上并不是分段有效载荷的一部分。结果,数据包可能被接收器延迟处理。
现在参考图2B,图2B包括用于将序列感知信息编码到UDP有效载荷的MTU大小的帧212A-212N中的过程的可视化200B。尽管仅示出了三个MTU大小的帧212,但这并不旨在进行限制,并且可以根据有效载荷的大小和MTU的大小来生成任意数量(N个)的MTU大小的帧。例如,应用程序数据202(例如,用户数据、应用程序报头等)可以由发送器102的应用程序110和/或网络堆栈的应用层生成,与网络堆栈的传输层相对应的UDP硬件112可以将UDP报头204附加到应用程序数据202,与网络堆栈的网络层相对应的IP硬件114可以将IP报头206附加到UDP报头204,并且与数据链路层相对应的以太网硬件116可以将以太网报头208附加到IP报头206。然后可以使用USO对该有效载荷进行分段,以生成所得到的MTU大小的帧212A-212N,并且可以通过一个或更多个网络106将各个MTU大小的帧212A-212N发送(例如,使用以太网MAC硬件118)到接收器104。
为了使接收器104理解MTU大小的帧212A-212N对应于已被分段和定序的应用程序数据202的较大的有效载荷,可以通过利用IP ID位、TTL位和/或TOS位来对IP报头206进行编码。例如,可以设置IP报头206的IP ID字段,以递增每个区段或新有效载荷的IP ID字段,并且可以利用来自IP ID递增的序列信息来确定数据包的序列或排序。这样,由于每个区段被携带在具有唯一IP ID的IP数据包上,因此可以向接收器104的GRO堆栈发信号,以开始聚合分段数据包以及停止聚合分段数据包(例如,属于5元组流),从而用于根据TTL字段和/或TOS字段中的编码值进行重新组装。例如,TTL字段可以由IP硬件114设置为初始值(例如,“A”),该初始值向接收器104指示接收到的数据包是较大的有效载荷的初始分段数据包。IP硬件114可以将每个连续中间数据包的TTL字段设置为从初始值(例如,“A+1”,“A+2”等等)递增,直到可以用最终值(例如,“B”)设置的最终分段数据包为止,该最终值向接收器104指示该数据包是较大的有效载荷的最终分段数据包。
作为非限制性示例,发送器102的网络堆栈可以为有效载荷X插入TTL值“2”,其可以作为具有TTL“2”的IP ID 1-6被发送。接收器104可以在属于同一5元组流的IP ID上聚合具有相同TTL值的所有数据包。然后,在发送器102处的网络堆栈可以为有效载荷Y插入值“3”,其可以作为具有TTL“3”的IP ID 7-12发送,等等。
为了确保接收到的被识别为对应于较大的有效载荷的分段数据包的正确排序和/或定序,可以利用IP报头206的TTL、TOS和/或IP ID字段。例如,由于对于接收器104来说TTL字段可能需要为非零(例如,对于P2P连接为“1”)以知道数据包是有效的,因此TTL字段可以使用从2到255的值的一些子集作为较大的有效载荷的分段数据包的区段数字来从初始值顺序地递增。类似地,由于对于每个数据包IP ID字段递增,因此可以利用IP ID字段来确定重新组装有效载荷的排顺或序列。在一些实施例中,TOS字段可以类似于和/或附加于TTL字段用于定序和/或排序。例如,对于未使用的TOS字段的位(例如,其不与数据包的优先级定义重叠),可以递增这些位的值以对应于较大的有效载荷的分段数据包的序列或排序。
在某些实施例中,为了支持乱序或丢失的分段检测,可以将重新组装信令和定序信令分离为不同的报头字段,例如,使用IP ID,TTL和/或TOS中的两个或更多个。例如,如果TTL字段用于传送信令信息以用于开始和停止重新组装,则TOS字段可以用于传送定序,反之亦然。类似地,IP ID字段可传送定序,而TTL和/或TOS字段传送信令。
另外,IP硬件114可以为每个分段数据包更新总长度,IP校验和,和/或IP报头206的其他报头字段,并且UDP硬件112可以更新UDP长度,校验和,和/或每个分段数据包的UDP报头204的其他报头字段。
现在参考图2C,图2C包括用于将序列感知信息编码到UDP有效载荷的MTU大小的帧214A-214N中的过程的可视化200C。尽管仅示出了三个MTU大小的帧214,但这并不旨在进行限制,并且可以根据有效载荷的大小和MTU的大小来生成任意数量(N个)的MTU大小的帧。例如,应用程序数据202(例如,用户数据,应用程序报头等)可以由发送器102的应用程序110和/或网络堆栈的应用层生成,与网络堆栈的传输层相对应的UDP硬件112可以将UDP报头204附加到应用程序数据202,与网络堆栈的网络层相对应的IP硬件114可以将IP报头206附加到UDP报头204,并且与数据链路层相对应的以太网硬件116可以将以太网报头208附加到IP报头206。然后可以使用USO对该有效载荷进行分段,以生成所得到的MTU大小的帧214A-214N,并且可以通过一个或更多个网络106将各个MTU大小的帧214A-214N发送(例如,使用以太网MAC硬件118)到接收器104。
为了使接收器104理解MTU大小的帧214A-214N对应于已经被分段和定序的应用程序数据202的较大的有效载荷,可以通过利用IP ID位、TTL位和/或TOS位来对IP报头206进行编码,和/或可以通过利用以太类型位来对以太网报头208进行编码。例如,以太网硬件116可将对应于自定义以太类型的自定义值编码到以太网报头208的以太类型字段中。接收器104可以被配置为识别和处理(例如,经由以太网MAC硬件130,诸如以太网驱动器)此自定义以太类型字段,如指示接收到的数据包对应于较大的分段有效载荷,并且在将数据包沿网络堆栈向上传递到应用程序122之前,接收器104可以将以太类型转换为与IP以太类型相对应的值。
为了确保接收到的被识别为对应于较大的有效载荷的分段数据包的正确排序和/或定序,可以利用IP报头206的TTL、TOS和/或IP ID字段。例如,由于对于接收器104来说TTL字段可能需要为非零(例如,对于P2P连接为“1”)以知道数据包是有效的,因此TTL字段可以使用从2到255的值的一些子集作为较大的有效载荷的分段数据包的区段数字来从初始值顺序地递增。类似地,由于对于每个数据包IP ID字段递增,因此可以利用IP ID字段来确定重新组装有效载荷的排序或序列。在一些实施例中,TOS字段可以类似于和/或附加于TTL字段用于定序和/或排序。例如,对于未使用的TOS字段的位(例如,其不与数据包的优先级定义重叠),可以递增这些位的值以对应于较大的有效载荷的分段数据包的序列或排序。在一些实施例中,为了向接收器104指示应当开始或停止聚合具有自定义以太类型的数据包,可以用自定义值对TTL字段和/或TOS字段进行编码。例如,为了指示用于重新组装的初始数据包,可以将TTL字段和/或TOS字段设置为(0,1),并且为了指示用于重新组装的最终数据包,可以将TTL字段和/或TOS字段设置为(1,0)。这样,可以利用IP报头206的一个或更多个报头字段(例如,TTL字段,TOS字段等)来指示重新组装的开始和/或停止,以及可以利用IP报头206的一个或更多个报头字段(例如,IP ID字段,TTL字段,TOS字段等)来进行定序和/或排序。
一旦接收器104已经识别了自定义的以太类型,并且已经通过IP报头206确定了排序,则可以将用于重新组装的有效载荷的以太类型值设置为对应于IP以太类型(例如,IPv4,IPv6等),并且IP报头字段(例如IP ID,TTL和/或TOS)可以设置为与原始有效载荷相对应。这样,然后可以将该重新组装的有效载荷向上传递到接收器104的网络堆栈,以作为正常UDP数据包来处理。
另外,IP硬件114可以为每个分段数据包更新总长度,IP校验和,和/或IP报头206的其他报头字段,并且UDP硬件112可以更新UDP长度,校验和,和/或每个分段数据包的UDP报头204的其他报头字段。
由于图2C的设计是向后兼容的,因此接收到的不是自定义以太类型的数据包可以被正常处理。例如,由于设备不知道图2C的设计不可以使用专有的以太类型字段,因此可以未经修改地将数据包处理为符合原始网络堆栈实现方式。另外,由于以太网驱动器(例如,以太网MAC硬件130)可以处理自定义以太类型的识别,确定排序,重新组装数据包,然后将重新组装的数据包向上传递到网络堆栈,因此接收器104的CPU利用率可能降低。类似地,由于发送器102的以太网驱动器可以生成具有自定义以太类型的分段数据包,所以发送器102的CPU使用也可以降低。
现在参考图2D,图2D包括用于将序列感知信息编码到UDP有效载荷的MTU大小的帧216A-216N中的过程的可视化200D。尽管仅示出了三个MTU大小的帧216,但这并不旨在进行限制,并且可以根据有效载荷的大小和MTU的大小来生成任意数量(N个)的MTU大小的帧。例如,应用程序数据202(例如,用户数据,应用程序报头等)可以由发送器102的应用程序110和/或网络堆栈的应用层生成,与网络堆栈的传输层相对应的UDP硬件112可以将UDP报头204附加到应用程序数据202,与网络堆栈的网络层相对应的IP硬件114可以将IP报头206附加到UDP报头204,并且与数据链路层相对应的以太网硬件116可以将以太网报头208附加到IP报头206。然后可以使用USO对该有效载荷进行分段,以生成所得到的MTU大小的帧216A-216N,并且可以通过一个或更多个网络106将各个MTU大小的帧216A-216N发送(例如,使用以太网MAC硬件118)到接收器104。
为了使接收器104理解MTU大小的帧216A-216N对应于已被分段和定序的应用程序数据202的较大的有效载荷,可以通过利用IP ID位、DF位、TTL位和/或TOS位来对IP报头206进行编码。例如,DF位可以被设置(例如,设置为“1”而不是“0”)以指示MTU大小的帧不应被分片。当接收器104被配置为重新组装已经使用USO分段的有效载荷时,接收器104可以识别出接收到的区段(例如,MTU大小的帧)基于DF位被设置而被定序。此外,可以设置IP报头206的IP ID字段,以递增每个区段或新有效载荷的IP ID字段,并且可以利用来自IP ID递增(和/或TOS字段递增)的序列信息来确定数据包的序列或排顺。这样,由于每个区段被携带在具有唯一IP ID的IP数据包上,因此可以向接收器104的GRO堆栈发信号,以开始聚合分段数据包以及停止聚合分段数据包(例如,属于5元组流),从而用于基于TTL字段中的编码值进行重新组装。例如,由于TTL字段是8位值,并且通常不使用高位(例如,位序列中的第1位和第2位)–例如,因为TTL值通常不超过64–因此可以利用高位来编码到接收器104的重新组装的开始和停止。这样,高位可以由IP硬件114设置为初始值(例如,“(0,1)”),该初始值向接收器104指示接收到的数据包是较大的有效载荷的初始分段数据包。IP硬件114可以将每个连续的中间数据包的TTL字段设置为中间值(例如,“(1,1)”),并且IP硬件114可以将最终数据包设置为最终值(例如,“(1,0)”),以向接收器104指示该数据包是较大的有效载荷的最终分段数据包。
在某些实施例中,为了支持乱序或丢失的分段检测,可以例如使用IP ID,TTL和/或TOS中的两个或更多个将重新组装信令和定序信令分离为不同的报头字段。例如,如果TTL字段用于传送信令信息以用于开始和停止重新组装,则TOS字段可以用于传送定序,反之亦然。类似地,IP ID字段可传送定序,而TTL和/或TOS字段传送信令。
另外,IP硬件114可以为每个分段数据包更新总长度,IP校验和,和/或IP报头206的其他报头字段,并且UDP硬件112可以更新UDP长度,校验和,和/或每个分段数据包的UDP报头204的其他报头字段。
类似于图2A至图2C的设计,图2D的设计可以允许接收器104丢弃不完整系列的USO分段数据包-例如,在接收到序列号例如8但从未接收到序列号7的情况下,接收器104可以知道系列不完整并且可能丢弃该数据包。此外,因为图2D的设计是向后兼容的,接收到的不具有DF位设置、不具有TTL设置的高值等的数据包仍可以通过接收器104的网络堆栈作为正常UDP数据包来处理。此外,如果发送器102和接收器104均被配置为在图2D的设计中操作,则可以减少一个或更多个处理器108、120(例如,CPU)所需的计算功率,并因此导致更好的UDP性能。此外,作为仅使用TTL字段的高位的结果,系统仍可利用TTL字段对TTL相关信息进行编码(例如,在前6位内),同时仍允许高位被编码以用于重新组装开始和停止指示器。
结果,当系统100正在根据图2A-图2D的任何设计执行时,接收器104可以重新组装应用程序数据202以供应用程序122使用。以这种方式,可以以仍然无连接的方式使用UDP将来自应用程序110的数据发送到应用程序122,但是其还是序列感知的,以使得即使分段数据包乱序到达接收器104,接收器104也可以按序列重新组装分段数据包。这样,系统100可以受益于与UDP通信相关联的延迟和带宽减少,同时还获得了更普遍地与TCP通信相关联的定序的益处。
现在参考图3,本文描述的方法300的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,可以通过处理器执行存储在存储器中的指令来执行各种功能。方法300还可以体现为存储在计算机存储介质上的计算机可用指令。方法300可以由独立应用程序,服务或托管服务(独立地或与另一托管服务组合)或另一产品的插件提供,仅举几例。另外,通过示例的方式,关于图1的系统和图2D的可视化200D描述了方法300。然而,该方法300可以附加地或替代地由任何一个系统或系统的任何组合来执行,包括但不限于本文所述的那些系统。
图3包括根据本公开的实施例的表示用于序列感知UDP联网的方法300的流程图。在框B302处,方法300包括生成UDP有效载荷,UDP有效载荷包括来自应用程序的应用程序数据。例如,可以生成包括应用程序数据202、应用程序报头和UDP报头204的有效载荷。
在框B304处,方法300包括生成多个UDP数据包,每个UDP数据包包括应用程序数据的一部分。例如,发送器(例如,使用IP硬件114)可以执行USO操作,以将UDP有效载荷分段为多个MTU大小的帧216。每个MTU大小的帧216可以包括应用程序数据202的一部分,以使得当多个MTU大小的帧216被重新组装时,应用程序数据202可以被重新组装。
在框B306处,方法300包括将初始值编码为初始数据包的第一IP报头字段,将最终值编码为最终数据包的第一IP报头字段,并将中间值编码为每个中间数据包的第一IP报头字段。例如,IP硬件114可以将初始值(例如,“(0,1)”)编码为第一MTU大小的帧216A的TTL字段,将最终值(例如,“(1,0”))编码为最后一个MTU大小的帧216N的TTL字段,以及将中间值(例如,“(1,1)”)编码为每个另一MTU大小的帧216A+1至216N-1的TTL字段。这样,这些值可以向接收器104指示何时开始聚合数据包以及何时停止聚合数据包以及哪些数据包对应于总有效载荷。
在框B308处,方法300包括针对多个UDP数据包中的每一个递增第二IP报头字段的值。例如,IP硬件114可以递增IP ID字段,其从第一MTU大小的帧216A开始并且以最后一个MTU大小的帧216N结束。
在框B310处,方法300包括将多个UDP数据包发送到接收设备。例如,发送器102(例如,使用以太网驱动器,诸如以太网MAC硬件118)可以在一个或更多个网络106上发送多个MTU大小的帧216中的每一个。
示例计算设备
图4是适合用于实现本公开的一些实施例的一个或更多个示例计算设备400的框图。计算设备400可以包括互连系统402,互连系统402直接或间接耦合以下设备:存储器404、一个或更多个中央处理单元(CPU)406、一个或更多个图形处理单元(GPU)408、通信接口410、输入/输出(I/O)端口412、输入/输出组件414、电源416、一个或更多个呈现组件418(例如,一个或更多个显示器)以及一个或更多个逻辑单元420。
尽管图4的各个框示出为经由互连系统402与线路连接,但这不旨在是限制并且仅出于清楚起见。例如,在一些实施例中,呈现组件418(诸如显示设备)可以被认为是I/O组件414(例如,如果显示器是触摸屏)。作为另一个示例,CPU 406和/或GPU 408可以包括存储器(例如,存储器404还可以代表除了GPU 408、CPU 406和/或其他组件的存储器之外的存储设备)。换句话说,图4的计算设备仅是说明性的。诸如在“工作站”、“服务器”、“笔记本电脑”、“台式电脑”、“平板电脑”、“客户端设备”、“移动设备”、“手持设备”、“游戏机”、“电子控制单元(ECU)”、“虚拟现实系统”和/或其他设备或系统类型等类别之间未进行区分,因为所有均在图4的计算设备的范围内考虑。
互连系统402可以代表一个或更多个链路或总线,例如地址总线、数据总线、控制总线或其组合。互连系统402可以包括一种或更多种总线或链路类型,例如工业标准架构(ISA)总线、扩展工业标准架构(EISA)总线、视频电子标准协会(VESA)总线、外围组件互连(PCI)总线、外围组件互连快速(PCIe)总线和/或另一种类型的总线或链路。在一些实施例中,组件之间存在直接连接。作为示例,CPU 406可以直接连接至存储器404。此外,CPU 406可以直接连接至GPU 408。在组件之间存在直接或点对点连接的情况下,互连系统402可以包括PCIe链路来执行连接。在这些示例中,PCI总线不需要被包括在计算设备400中。
存储器404可以包括多种计算机可读介质中的任何一种。计算机可读介质可以是计算设备400可以访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质可以包括以任何用于存储信息(例如计算机可读指令、数据结构、程序模块和/或其他数据类型)的方法或技术实现的易失性和非易失性介质和/或可移除和不可移除介质。例如,存储器404可以存储计算机可读指令(例如,代表诸如操作系统之类的一个或更多个程序和/或一个或更多个程序元素)。计算机存储介质可以包括但不限于,RAM、ROM、EEPROM、闪存或其他存储技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储器、磁带盒、磁带、磁盘存储器或其他磁存储设备,或任何其他可以用于存储期望的信息并且可以由计算设备400访问的介质。如本文所使用的,计算机存储介质不包括信号本身。
计算机存储介质可以在经调制数据信号(诸如载波或其他传输机制)中体现计算机可读指令、数据结构、程序模块和/或其他数据类型,并且包括任何信息传递介质。术语“经调制数据信号”可以指的是以将信息编码到信号中的方式设置或改变其特征中的一个或更多个的信号。作为示例而非限制,计算机存储介质可以包括有线介质(诸如有线网络或直接有线连接),以及无线介质(诸如声学、RF、红外和其他无线介质)。以上任何内容的组合也应包括在计算机可读介质的范围内。
一个或更多个CPU 406可以被配置为执行计算机可读指令中的至少一些,以控制计算设备400的一个或更多个组件来执行本文描述的方法和/或过程中的一个或更多个。一个或更多个CPU 406可以每一个都包括一个或更多个能够同时处理多个软件线程的核心(例如,一个、两个、四个、八个、二十八个、七十二个等等)。一个或更多个CPU 406可以包括任何类型的处理器,并且可以根据所实现的计算设备400的类型来包括不同类型的处理器(例如,针对移动设备的具有较少核心的处理器和针对服务器的具有更多核心的处理器)。例如,根据计算设备400的类型,处理器可以是使用精简指令集计算(RISC)实现的高级RISC机器(ARM)处理器或使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或辅助协处理器(例如数学协处理器)之外,计算设备400还可包括一个或更多个CPU406。
除了一个或更多个CPU 406之外或可替代地,一个或更多个GPU 408可以被配置为执行计算机可读指令中的至少一些,以控制计算设备400的一个或更多个组件来执行一个或更多个本文描述的方法和/或过程。一个或更多个GPU 408可以是集成GPU(例如,具有一个或更多个CPU 406和/或一个或更多个GPU 408可以是分立的GPU。在实施例中,一个或更多个GPU 408可以是一个或更多个CPU 406的协处理器。计算设备400可以使用一个或更多个GPU 408来渲染图形(例如3D图形)或执行通用计算。例如,一个或更多个GPU 408可以用于GPU上的通用计算(GPGPU)。一个或更多个GPU 408可以包括数百或数千个能够同时处理数百或数千个软件线程的核心。一个或更多个GPU 408可以响应于渲染命令(例如,经由主机接口从一个或更多个CPU 406接收的渲染命令)来生成用于输出图像的像素数据。一个或更多个GPU 408可以包括图形存储器,例如显示存储器,用于存储像素数据或任何其他合适的数据,例如GPGPU数据。显示存储器可以作为存储器404的一部分被包括。一个或更多个GPU 408可以包括并行(例如,经由链路)操作的两个或更多个GPU。链路可以直接连接GPU(例如,使用NVLINK),也可以通过交换机连接GPU(例如,使用NVSwitch)。当组合在一起时,每个GPU 408可以针对输出的不同部分或针对不同的输出(例如,用于第一图像的第一GPU和用于第二图像的第二GPU)生成像素数据或GPGPU数据。每个GPU可以包括其自己的存储器,或者可以与其他GPU共享存储器。
除了一个或更多个CPU 406和/或一个或更多个GPU 408之外或作为其替代,一个或更多个逻辑单元420可以被配置为执行至少一些计算机可读指令以控制计算设备400的一个或更多个组件来执行一个或更多个本文描述的方法和/或过程。在实施例中,一个或更多个CPU 406,一个或更多个GPU 408和/或一个或更多个逻辑单元420可以分立地或联合地执行方法、过程和/或其部分的任何组合。逻辑单元420中的一个或更多个可以是一个或更多个CPU 406和/或一个或更多个GPU 408的一部分和/或集成在一个或更多个CPU 406和/或一个或更多个GPU 408中,和/或一个或更多个逻辑单元420可以是分立的组件或以其他方式设置在一个或更多个CPU 406和/或一个或更多个GPU 408外部。在实施例中,一个或更多个逻辑单元420可以是一个或更多个CPU 406和/或一个或更多个GPU 408的协处理器。
一个或更多个逻辑单元420的示例包括一个或更多个处理核心和/或其组件,例如张量核心(TC)、张量处理单元(TPU)、像素视觉核心(PVC)、视觉处理单元(VPU)、图形处理集群(GPC)、纹理处理集群(TPC)、流传输多处理器(SM)、树遍历单元(TTU)、人工智能加速器(AIA)、深度学习加速器(DLA)、算术逻辑单元(ALU)、应用程序专用集成电路(ASIC)、浮点单元(FPU)、输入/输出(I/O)元件、外围组件互连(PCI)或外围组件互连快速(PCIe)元件等。
通信接口410可以包括一个或更多个接收器、发送器和/或收发器,其使计算设备400能够经由包括有线和/或无线通信的电子通信网络与其他计算设备进行通信。通信接口410可以包括组件和功能,以使得能够在诸如无线网络(例如,Wi-Fi、Z-Wave、蓝牙、蓝牙LE、ZigBee等)、有线网络(例如,通过以太网或无线宽带技术进行通信)、低功耗广域网(例如,LoRaWAN、SigFox等)和/或因特网之类的多个不同网络中的任何一个上进行通信。
I/O端口412可以使计算设备400能够逻辑地耦合到包括I/O组件414、一个或更多个呈现组件418和/或其他组件的其他设备,其中一些可以被内置到(例如,集成到)计算设备400中。示例性I/O组件414包括麦克风、鼠标、键盘、操纵杆、游戏板、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等。I/O组件414可以提供自然用户界面(NUI),其处理由用户产生的空中手势、语音或其他生理输入。在某些情况下,可以将输入传送到适当的网络元件以进行进一步处理。NUI可以实现语音识别、手写笔识别、面部识别、生物特征识别、屏幕上以及与屏幕相邻的手势识别、空中手势、头部和眼睛跟踪以及与计算设备400的显示器相关联的触摸识别(如下更详细描述)的任意组合。计算设备400可以包括用于姿势检测和识别的深度相机,例如立体相机系统、红外相机系统、RGB相机系统、触摸屏技术以及它们的组合。另外,计算设备400可以包括使得能够检测运动的加速度计或陀螺仪(例如,作为惯性测量单元(IMU)的一部分)。在一些示例中,计算设备400可以使用加速度计或陀螺仪的输出来渲染沉浸式增强现实或虚拟现实。
电源416可以包括硬线电源、电池电源或它们的组合。电源416可以向计算设备400提供电力以使计算设备400的组件能够操作。
一个或更多个呈现组件418可以包括显示器(例如、监视器、触摸屏、电视屏幕、平视显示器(HUD),其他显示器类型或其组合)、扬声器,和/或其他呈现组件。一个或更多个呈现组件418可以从其他组件(例如,一个或更多个GPU 408、一个或更多个CPU 406等)接收数据,并且输出数据(例如,作为图像、视频、声音等)。
可以在计算机代码或机器可用指令的一般上下文中描述本公开,所述计算机代码或机器可用指令包括由计算机或其他机器(例如个人数据助理或其他手持式设备)执行的计算机可执行指令(例如程序模块)。通常,包括例程、程序、对象、组件、数据结构等在内的程序模块是指执行特定任务或实现特定抽象数据类型的代码。本公开可以在包括手持设备、消费电子产品、通用计算机、更多专业计算设备等在内的各种系统配置中实践。本公开还可以在分布式计算环境中实践,在其中由通过通信网络链接的远程处理设备执行任务。
如本文所使用的,关于两个或更多个元件的“和/或”的叙述应被解释为仅意味着一个元件或元件的组合。例如,“元件A,元件B和/或元件C”可以包括仅元件A、仅元件B、仅元件C、元件A和元件B、元件A和元件C、元件B和元件C或元件A、B和C。另外,“元件A或元件B中的至少一个”可以包括元件A中的至少一个、元件B中的至少一个、或元件A中的至少一个和元件B中的至少一个。此外,“元件A和元件B中的至少一个”可以包括元件A中的至少一个、元件B中的至少一个、或者元件A中的至少一个和元件B中的至少一个。
在此具体描述本公开的主题以满足法定要求。然而,描述本身并不旨在限制本公开的范围。而是,发明人已经预料到,所要求保护的主题还可以结合其他当前或未来技术,以其他方式来体现,以包括与本文档中所描述的步骤不同的步骤或步骤的组合。此外,尽管本文中可以使用术语“步骤”和/或“框”来表示所采用的方法的不同元素,但是除非并且除了当明确描述了各个步骤顺序时,否则这些术语不应解释为暗示本文所公开的各个步骤之中或之间的任何特定顺序。

Claims (20)

1.一种方法,包括:
生成包括来自应用程序的应用程序数据的用户数据报协议(UDP)有效载荷;
生成多个UDP数据包,每个UDP数据包包括所述应用程序数据的一部分;
编码初始值到所述多个UDP数据包的初始数据包的第一互联网协议(IP)报头字段,编码最终值到所述多个UDP数据包的最终数据包的所述第一IP报头字段,以及编码中间值到所述多个UDP数据包中在所述初始数据包和所述最终数据包之间的每个中间数据包的所述第一IP报头字段;
对于从所述初始数据包到所述最终数据包的所述多个UDP数据包中的每一个,递增第二IP报头字段的值;以及
将所述多个UDP数据包发送到接收设备。
2.根据权利要求1所述的方法,其中所述多个UDP数据包在被所述接收设备接收到时,使所述接收设备根据由所述多个UDP数据包中的每一个的所述第二IP报头字段的值定义的序列,使用所述多个UDP数据包来重新组装所述UDP有效载荷。
3.根据权利要求1所述的方法,其中所述第一IP报头字段是生存时间(TTL)报头字段或服务类型(TOS)报头字段中的至少一个,所述第二IP报头字段是IP标识(ID)报头字段。
4.根据权利要求1所述的方法,其中所述初始值指示所述接收设备开始聚合数据包,并且所述最终值指示所述接收设备停止聚合数据包。
5.根据权利要求1所述的方法,还包括将不分片(DF)位设置为1。
6.根据权利要求1所述的方法,其中所述第一IP报头字段是生存时间(TTL)报头字段,并且所述初始值、所述最终值和所述中间值被编码为所述TTL报头字段的两个最高位。
7.根据权利要求1所述的方法,其中所述生成多个UDP数据包包括:执行UDP分段卸载(USO)操作。
8.根据权利要求1所述的方法,其中所述初始值、所述最终值和所述中间值彼此不同,并且所述初始值、所述最终值和所述中间值选自:(0,1),(1,0)和(1,1)。
9.一种系统,包括:
用户数据报协议(UDP)硬件,用于生成包括来自应用程序的应用程序数据的UDP有效载荷;
互联网协议(IP)硬件,用于:
生成多个UDP数据包,每个UDP数据包包括所述应用程序数据的一部分;
将值编码到所述多个UDP数据包中的每一个的生存时间(TTL)字段,以指示至少所述多个UDP数据包的第一数据包、最终数据包以及所述第一数据包和所述最终数据包之间的中间数据包由接收设备聚合;以及
对于从所述第一数据包到所述最终数据包的所述多个UDP数据包中的每一个,递增IP标识(ID)字段的值;以及
驱动器,用于将所述多个UDP数据包发送到所述接收设备。
10.根据权利要求9所述的系统,还包括以太网硬件,用于将自定义以太类型编码到所述多个UDP数据包中的每一个的以太类型字段,以向所述接收设备指示所述多个UDP数据包将被聚合。
11.根据权利要求9所述的系统,其中所述驱动器是以太网驱动器。
12.根据权利要求9所述的系统,其中所述多个UDP数据包在被所述接收设备接收时,使所述接收设备根据由所述多个UDP数据包中的每一个的所述IP ID字段的值定义的序列,使用所述多个UDP数据包来重新组装所述UDP有效载荷。
13.根据权利要求9所述的系统,其中与所述第一数据包相对应的所述值中的第一值指示所述接收设备开始聚合数据包,而与所述最终数据包相对应的所述值中的第二值指示所述接收设备停止聚合数据包。
14.根据权利要求9所述的系统,还包括将1编码到所述多个UDP数据包中的每一个的不分片(DF)位。
15.根据权利要求9所述的系统,其中编码到所述TTL字段的所述值被编码到所述TTL字段的两个最高位。
16.一种方法,包括:
对UDP数据有效载荷执行用户数据报协议(UDP)分段卸载(USO)操作,以生成多个分段数据包,所述多个分段数据包中的每个分段数据包包括:
不分片(DF)位,其被设置为1;
生存时间(TTL)字段的两个最高位,其当所述每个分段数据包是初始数据包、最终数据包、或所述初始数据包和所述最终数据包之间的中间数据包时,则被相应地设置为初始值、最终值或中间值之一;以及
互联网协议(IP)标识(ID)字段,其被设置为相对于所述多个分段数据包中的分段数据包彼此依次递增的值;以及
发送所述多个分段数据包,以供接收设备处理。
17.根据权利要求16所述的方法,其中所述初始值、所述最终值和所述中间值均被编码到所述多个分段数据包中的至少一个。
18.根据权利要求16所述的方法,其中所述多个分段数据包在被所述接收设备接收到时,使所述接收设备根据由所述多个分段数据包中的每一个的所述IP ID字段的值定义的序列,使用所述多个分段数据包来重新组装所述UDP数据有效载荷。
19.根据权利要求16所述的方法,其中所述初始值指示所述接收设备开始聚合数据包,而所述最终值指示所述接收设备停止聚合数据包。
20.根据权利要求16所述的方法,其中所述多个分段数据包中与所述初始值相关联的分段数据包包括所述IP ID字段中相对于所述多个分段数据包中的分段数据包彼此的最小值。
CN202010884184.8A 2020-04-27 2020-08-28 增强udp网络协议以有效传输大型数据单元的技术 Active CN113645178B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/859,714 2020-04-27
US16/859,714 US11159655B1 (en) 2020-04-27 2020-04-27 Techniques for enhancing the UDP network protocol to efficiently transmit large data units

Publications (2)

Publication Number Publication Date
CN113645178A CN113645178A (zh) 2021-11-12
CN113645178B true CN113645178B (zh) 2023-06-16

Family

ID=78219138

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010884184.8A Active CN113645178B (zh) 2020-04-27 2020-08-28 增强udp网络协议以有效传输大型数据单元的技术

Country Status (3)

Country Link
US (1) US11159655B1 (zh)
CN (1) CN113645178B (zh)
DE (1) DE102021109826A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024123147A1 (ko) * 2022-12-09 2024-06-13 삼성전자 주식회사 인공지능 모델을 이용하여 gro를 수행하는 전자 장치 및 그 동작 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1905524A (zh) * 2005-07-29 2007-01-31 国际商业机器公司 基于处理器负载进行动态分段的方法和系统
CN101601256A (zh) * 2007-01-30 2009-12-09 国际商业机器公司 网络接口卡传输控制协议加速卸载故障检测和恢复机制
CN102227718A (zh) * 2008-11-26 2011-10-26 微软公司 用于远程桌面协议的硬件加速
CN103746966A (zh) * 2013-12-20 2014-04-23 西安电子工程研究所 一种基于udp的上层协议与以太网mac层的数据传输方法
CN106656724A (zh) * 2016-12-20 2017-05-10 上海优刻得信息科技有限公司 一种报文封装方法与设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8155117B2 (en) * 2004-06-29 2012-04-10 Qualcomm Incorporated Filtering and routing of fragmented datagrams in a data network
US8228896B2 (en) * 2006-09-22 2012-07-24 Avaya Inc. Method and apparatus for verification of at least a portion of a datagram's header information
US20090086729A1 (en) * 2007-09-28 2009-04-02 Parthasarathy Sarangam User datagram protocol (UDP) transmit acceleration and pacing
US7724776B2 (en) * 2007-10-30 2010-05-25 Telefonaktiebolaget L M Ericsson (Publ) Method and ingress node for handling fragmented datagrams in an IP network
EP2936720B1 (en) * 2012-12-20 2021-03-31 Lantiq Israel Ltd. Methods and apparatuses for reframing and retransmission of datagram segments
US10938965B2 (en) * 2018-06-18 2021-03-02 Mellanox Technologies, Ltd. Message segmentation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1905524A (zh) * 2005-07-29 2007-01-31 国际商业机器公司 基于处理器负载进行动态分段的方法和系统
CN101601256A (zh) * 2007-01-30 2009-12-09 国际商业机器公司 网络接口卡传输控制协议加速卸载故障检测和恢复机制
CN102227718A (zh) * 2008-11-26 2011-10-26 微软公司 用于远程桌面协议的硬件加速
CN103746966A (zh) * 2013-12-20 2014-04-23 西安电子工程研究所 一种基于udp的上层协议与以太网mac层的数据传输方法
CN106656724A (zh) * 2016-12-20 2017-05-10 上海优刻得信息科技有限公司 一种报文封装方法与设备

Also Published As

Publication number Publication date
CN113645178A (zh) 2021-11-12
DE102021109826A1 (de) 2021-10-28
US20210337048A1 (en) 2021-10-28
US11159655B1 (en) 2021-10-26

Similar Documents

Publication Publication Date Title
US8804504B1 (en) System and method for reducing CPU load in processing PPP packets on a SSL-VPN tunneling device
US20200120075A1 (en) Hardware-accelerated payload filtering in secure communication
US8798047B1 (en) Methods and systems for processing network information
US8427945B2 (en) SoC device with integrated supports for Ethernet, TCP, iSCSI, RDMA and network application acceleration
US20190229903A1 (en) Hardware offload for quic connections
US11757973B2 (en) Technologies for accelerated HTTP processing with hardware acceleration
US8705572B2 (en) RoCE packet sequence acceleration
US9049218B2 (en) Stateless fibre channel sequence acceleration for fibre channel traffic over Ethernet
EP3014852B1 (en) Methods for dynamically binding header field identifiers in a network control protocol
US10938965B2 (en) Message segmentation
US8400942B2 (en) Large frame path MTU discovery and communication for FCoE devices
US10884960B2 (en) Offloading data movement for packet processing in a network interface controller
US9288287B2 (en) Accelerated sockets
CN113645178B (zh) 增强udp网络协议以有效传输大型数据单元的技术
US20150139232A1 (en) Virtual Machine Data Packet Encapsulation and Decapsulation
US9875076B1 (en) Remoting client having GPU off-loader
WO2010087421A1 (ja) 送受信装置及びデータ処理方法
TW201436533A (zh) 資料流傳輸系統及方法
US8837289B2 (en) Terminated transmission control protocol tunnel
US11917020B2 (en) Communication device and communication method
US11025752B1 (en) Method to integrate co-processors with a protocol processing pipeline
JP5423404B2 (ja) オフロード処理装置、および、通信システム
KR20130085530A (ko) 영상 전송 장치

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant