CN114930786A - 流传输协议封包形成的负载转移 - Google Patents
流传输协议封包形成的负载转移 Download PDFInfo
- Publication number
- CN114930786A CN114930786A CN202080091693.3A CN202080091693A CN114930786A CN 114930786 A CN114930786 A CN 114930786A CN 202080091693 A CN202080091693 A CN 202080091693A CN 114930786 A CN114930786 A CN 114930786A
- Authority
- CN
- China
- Prior art keywords
- packet
- network interface
- header
- load transfer
- media
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/65—Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2416—Real-time traffic
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/34—Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/166—IP fragmentation; TCP segmentation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/321—Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/326—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L67/025—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本文描述的示例涉及向网络接口提供流传输协议封包分段负载转移请求。该请求可指定要传输的内容的片段和与内容相关联的元数据。负载转移请求可以使得网络接口为封包生成至少一个头部字段值并且在封包传输之前插入至少一个头部字段。在一些示例中,网络接口基于带有插入的至少一个头部字段的封包来为传输层协议生成验证值。一些示例提供了预封包化内容被存储并且可用来拷贝到网络接口。在这样的示例中,网络接口可以在传输封包之前修改或更新某些头部字段。
Description
优先权要求
本申请根据35 U.S.C.§365(c)要求2020年2月3日递交的标题为“OFFLOAD OFSTREAMING PROTOCOL PACKET FORMATION”的美国申请16/780,609号的优先权,该美国申请以其整体被并入在此。
背景技术
流媒体,例如流传输音频或视频,正在消耗越来越大比例的互联网流量。托管和服务媒体的服务器和数据中心生成封包,以将媒体传输到远程客户端设备。实时流传输协议(Real Time Streaming Protocol,RTSP)是用于建立和控制媒体会话的协议。RTSP包括诸如播放、记录和暂停之类功能,以促进实时控制从服务器到客户端的媒体流传输,例如视频点播。其他控制协议(也被称为信令协议)包括H.323、会话发起协议(Session InitiationProtocol,SIP)、RTSP以及Jingle(XMPP)。
附图说明
图1A描绘了系统的示例。
图1B描绘了示例系统。
图2描绘了使用数据和各种头部的封包的形成的示例。
图3描绘了RTP封包头部的示例。
图4A描绘了由操作系统执行来发现和请求RTP分段负载转移传输操作的过程。
图4B描绘了由设备驱动器执行的与RTP分段负载转移命令性能相关的示例过程。
图4C描绘了由网络接口控制器执行的与RTP分段负载转移命令性能相关的示例过程。
图5描绘了可用于存储流传输视频的预封包化内容并且将该内容提供给一个或多个客户端设备的系统。
图6A描绘了一个示例,其中文件被存储为用于多种格式的多个封包。
图6B描绘了由于发送器和客户端之间的带宽可用性的变化而在流质量之间进行调整的示例。
图7A和7B描绘了可被执行来传输预封包化文件的过程。
图8描绘了一种系统。
图9描绘了示例环境。
具体实施方式
实时传输协议(Real-time Transport Protocol,RTP)与实时控制协议(Real-time Control Protocol,RTCP)被结合使用,用于媒体流输送。RTP携带媒体流(例如,音频和视频),而RTCP用于监视传输统计数据和服务质量(quality of service,QoS),并且辅助音频和视频流的同步。RTP被设计成独立于媒体格式。支持的音频有效载荷格式包括但不限于G.711、G.723、G.726、G.729、GSM、QCELP、MP3和DTMF。视频有效载荷格式包括但不限于H.261、H.263、H.264、H.265和MPEG-1/MPEG-2。例如,一些媒体流传输服务使用基于HTTP的动态流传输(Dynamic Streaming over HTTP,DASH)协议或者HTTP实况流传输(HTTP LiveStreaming,HLS)。在RFC 3016中规定了将MPEG-4音频/视频映射到RTP封包的封包格式。RTCP促进了抖动补偿和检测封包丢失和无序输送,这在互联网上的用户数据报协议(UserDatagram Protocol,UDP)传输期间尤其常见。在一些使用情况下,与媒体(例如,RTP)相比,控制协议(例如,RTCP)流量的带宽通常低于5%。
流传输内容涉及通过以下各项中的一个或多个来将内容封包化:创建头部、片段、封装、计算校验和、循环冗余校验(cyclic redundancy check,CRC)、版本比特、协议指示符、帧标记、加密、添加填充、有效载荷类型指示符(例如,参见RFC 3551)、序列号、时间戳(例如,视频流通常使用90kHz时钟)、同步源标识符(例如,多个同步源(Synchronizationsource,SSRC))、贡献源标识符(contributing source identifier,CSRC)、长度标识符,等等。简而言之,将数据封包化仍然涉及大量的工作。
对于媒体流量的处理,协议处理和封包化工作通常在软件中执行,该软件由中央处理单元(central processing unit,CPU)实时执行,作为媒体的每一次连接和上传/下载的一部分。然而,可用于处理和传输流的CPU周期限制了单个核心可以传输的流的数目。此外,CPU利用率也受到传输片段大小的影响,从而使得较高的片段大小(例如,在封包中传输的数据)也可增大CPU利用率。
一些解决方案通过使用分段负载转移来减小CPU传输流量的负担。分段负载转移将封包化的负担从CPU执行的软件转移到网络控制器(network controller,NIC)。这可以为许多传送类型大幅增大吞吐量并且降低CPU利用率。分段负载转移在环境和其他操作系统中得到支持。例如,传输控制协议(Transmission Control Protocol,TCP)分段负载转移(TCP segmentation offload,TSO)可用于将封包形成负载转移到NIC。
当从TCP分段负载转移(TSO)操作生成的封包被发送时,这些封包被快速连续地生成和传输。这意味着它们通常有最小的帧间间距,并且以突发或封包链的方式通过基础设施。接下来描述示例TCP负载转移(TSO)流程。在1处,操作系统(operating system,OS)向网络设备驱动器发送TSO传输命令,带有指向拥塞窗口大小的要发送的数据(通常最多达64KB)的指针。这个TSO命令包括:指向原型头部(例如,模板头部,其中一些头部字段已完成,并且具有适当的长度)的指针,指向数据缓冲区的指针,以及元数据,该元数据包括头部类型(例如,TCP、UPD、IPv4、IPv6)、要使用的片段大小、窗口长度。原型头部具有已填充的静态字段和字段的初始值,例如序列号,这些序列号将在每个封包中被更新,以基于先前序列号指代适当的序列号,以便识别传输的封包的序列号。在2处,设备驱动器读取TSO命令并且准备上下文描述符以通知NIC关于元数据原型头部。在3处,设备驱动器准备数据描述符,其指示出每个数据缓冲区在何处、其长度以及其与哪个上下文槽/流相关联。
在4处,设备驱动器为NIC将描述符排队。在5处,网络接口控制器(networkinterface controller,NIC)读取描述符,并且在6处,NIC读取原型头部。在7处,NIC为每个封包:创建原型头部的拷贝,将其写入到发送(TX)先入先出(first in first out,FIFO)缓冲区中;从系统存储器读取片段大小的数据(例如,1440字节),并且将其写入到TX FIFO中(将其附加到原型头部的拷贝);为这个封包更新头部,包括:序列号、IP头部长度(最终封包可能比窗口中的其他封包短)、校验和(IP和TCP)、TCP标志(一些标志不变,而其他标志只在第一封包或最终封包中被设置);并且将封包排队到出口。
在8处,NIC向设备驱动器指示出传输操作已完成(通常经由中断和状态字段中的描述符完成比特)。在9处,设备驱动器向OS指示出TSO传输命令已完成。在10处,资源被释放(对于DMA被锁定到物理地址的存储器页被释放)。在11处,关联的TCP连接的传输控制块(Transmit Control Block,TCB)被更新。
然而,对于RTP协议(以及类似的流传输协议),封包化是由CPU执行的软件执行的,并且TSO不被用于这些流传输协议。因为封包节奏设定,流传输协议不能利用TSO,并且TSO不生成动态头部字段,例如时间戳和验证指示符(例如,校验和或者CRC值)。此外,流媒体使用计量的数据传输节奏,而TSO则提供成块的和突发性的数据传输。
各种实施例扩展了传输层分段负载转移,以允许对于流传输协议(例如,RTP、DASH、HLS)将头部和封包形成负载转移到NIC。各种实施例在传输层分段或分片负载转移到NIC期间提供流传输头部复制和更新。例如,诸如时间戳和校验和之类的流传输头部字段的动态生成或更新被负载转移到NIC或SmartNIC。各种实施例为诸如RTP之类的流传输协议的底层传输层(例如,TCP、UDP、QUIC)提供分段负载转移,并且在NIC处提供头部更新和时间计量(例如,封包节奏设定)。UDP数据报可以被分解成多个IP片段。NIC的QoS或者封包节奏设定特征可以提供用于一些流传输协议的封包节奏设定。然而,如果不使用封包节奏设定(例如当缓冲时),那么流传输内容可以根据突发被发送。
各种实施例提供了设备驱动器和设备驱动器开发套件(device driverdevelopment kit,DDK),其允许了使用应用程序接口(application program interface,API)或者使用封包形成或修改的负载转移,用于使用网络接口的流传输协议流量。
各种实施例尝试通过减少流媒体内容的传输期间的头部准备和处理的CPU或核心利用率来优化流媒体流量(例如,音频、视频、传感器数据(例如,自主车辆)、遥测数据)的处理。各种实施例可以减少每个字节的周期,这可以衡量用于准备封包以传输到网络的CPU周期。提供流传输服务的内容输送网络(content delivery network,CDN)可以使用各种实施例。CDN可以在流传输内容时节省大量的CPU资源。各种实施例将使得CDN能够为更多的连接提供服务和/或实现功率/热量节省。
图1A描绘了系统的示例。在这个系统中,计算平台100可以通过将各种封包头部生成或修改任务负载转移到网络接口150来生成封包以用于传输。计算平台100可包括各种处理器102和存储器120。处理器102可以执行虚拟执行环境104、操作系统106、网络接口驱动器108、以及应用110。
处理器102可以是能够执行指令的执行核心或者计算引擎。核心可能够访问其自己的缓存和只读存储器(read only memory,ROM),或者多个核心可以共享缓存或者ROM。核心可以是同质和/或异质的设备。可以使用任何类型的处理器间通信技术,例如但不限于消息传递、处理器间中断(inter-processor interrupt,IPI)、处理器间通信,等等。可以按任何类型的方式来连接核心,例如但不限于总线、环状或者网状。处理器102可支持一个或多个指令集(例如,x86指令集(带有已随着更新版本添加的一些扩展);加州森尼维尔市的MIPS技术公司的MIPS指令集;加州森尼维尔市的ARM控股公司的ARM指令集(带有可选的额外扩展,例如NEON)),包括本文描述的(一个或多个)指令。
虚拟化执行环境至少可包括虚拟机或者容器。虚拟机(virtual machine,VM)可以是运行操作系统和一个或多个应用的软件。VM可以由规范、配置文件、虚拟盘文件、非易失性随机访问存储器(non-volatile random access memory,NVRAM)设置文件和日志文件来定义,并且由主机计算平台的物理资源支持。VM可以是安装在软件上的OS或应用环境,它模仿专用硬件。终端用户在虚拟机上的体验与他们在专用硬件上的体验将是相同的。被称为管理程序的专门软件完全模拟PC客户端或服务器的CPU、存储器、硬盘、网络和其他硬件资源,使得虚拟机能够共享这些资源。管理程序可以模拟多个相互隔离的虚拟硬件平台,允许了虚拟机在同一底层物理主机上运行和Server操作系统。
容器可以是由应用、配置和依赖关系组成的软件包,以便应用在一个计算环境到另一个计算环境上可靠地运行。容器可以共享安装在服务器平台上的操作系统,并且作为孤立的进程运行。容器可以是软件包,该软件包包含软件运行所需要的一切,例如系统工具、库和设置。容器不像传统的软件程序那样安装,这允许了它们与其他软件和操作系统本身隔离开来。隔离可包括允许特定的容器访问可寻址的存储器或存储装置的某个区域,但不允许另一个容器访问。容器的隔离性质提供了几个好处。首先,容器中的软件在不同的环境中的运行将是相同的。例如,包括PHP和MySQL的容器可以在Linux计算机和机器上相同地运行。其次,由于软件不会影响主机操作系统,所以容器提供了额外的安全性。虽然安装的应用可更改系统设置和修改资源,例如注册表,但容器只能修改容器内的设置。
在一些示例中,操作系统106可以是Server、FreeBSD、或者任何其他操作系统中的任何一者。操作系统106可以在虚拟执行环境104内或者虚拟执行环境104外运行。驱动器108可以提供虚拟执行环境104或者操作系统(operating system,OS)106和网络接口150之间的接口。在一些示例中,OS106就网络接口150的能力向设备驱动器108进行查询,并且获悉RTP分段负载转移(RTPSegmentation Offload,RTPSO)特征,据此网络接口150可以生成RTP封包头部的一个或多个头部字段和TCP头部(或者其他流传输协议或传输层头部)的一个或多个头部字段。
应用110可以是任何类型的应用,包括媒体流传输应用(例如,视频或音频)、虚拟现实应用(包括耳麦和声音发射器)、增强现实应用、视频或音频会议应用、视频游戏应用、遥测检测设备(例如,运行收集守护进程)、或者任何将内容流传输到接收器的应用。在一些示例中,应用110在虚拟执行环境104内或者虚拟执行环境104外运行。响应于来自应用110的对要使用RTP传输的数据或内容的可用性的指示,OS 106向网络设备驱动器108发送RTPSO传输命令。RTPSO传输命令可具有关联的指针,指向以下两者中的较小者:拥塞窗口大小的数据,或者X毫秒的待发送内容。RTPSO传输命令可包括指向存储器120中的原型头部的指针,指向数据缓冲区122中存储内容的位置的指针,以及元数据。原型头部可包括完成的RTP、TCP、IPv4字段,但将一些字段留空或者带有虚设数据。元数据可包括以下各项中的一个或多个:头部类型、TCP片段大小、要发送的总数据字节、传输速率、初始时间戳值、RTP时间戳递增的时钟速率。
响应于接收到RTPSO命令,设备驱动器108在描述符队列124中为RTPSO事务准备描述符。设备驱动器108可以准备上下文描述符来通知网络接口150相关的元数据和原型头部。设备驱动器108可以准备数据描述符,该描述符识别以下各项中的一个或多个:数据缓冲区的存储器地址、要传输的内容的长度、以及关联的RTPSO上下文槽。设备驱动器108将描述符排队,以便网络接口150在描述符队列124中取回。
接口130和接口152可以提供平台100和网络接口150之间的通信耦合。例如,通信耦合可以基于外围组件互连快速(Peripheral Component Interconnect express,PCIe)或者任何公共或专有的标准。
网络接口150可包括或者访问处理器154和存储器156,以至少存储数据、原型头部、元数据和描述符。DMA引擎184可用于将描述符或数据拷贝到存储器156或者存储器120。例如,描述符和元数据可被存储在描述符缓冲区158中。传输队列159可以存储原型头部和内容,以便在封包中传输。
流媒体负载转移电路160可以使用流传输协议头部更新器162来更新以下各项中的一个或多个:存储在传输队列159中的RTP原型头部的序列号和时间戳字段。流媒体负载转移电路160可以使用序列号跟踪器166来生成连接的第一序列号(例如,随机值)或者顺序的序列号。可以基于来自计算平台100的元数据中的初始时间戳值和时钟速率来生成时间戳字段。流媒体负载转移电路160可以使用验证值生成器164来在序列号或时间戳字段被更新之后,基于RTP头部状态为TCP封包生成验证值(例如,校验和或者CRC值)。流媒体负载转移电路160可被实现为由处理器154、专用集成电路(application specific integratedcircuit,ASIC)、现场可编程门阵列(field programmable gate array,FPGA)或者可编程或固定功能设备执行的程序。注意,流媒体协议可以通过提供计量的和速率控制的内容传送而不是TCP的突发性和无计量的封包传输,而与TCP不同。
基于封包中的RTP片段的已完成传输,网络接口150向设备驱动器108指示出传输操作已完成。设备驱动器108向OS 106指示出,TSO传输命令已完成,并且资源可被释放(例如,存储器)。此外,关联的TCP连接的传输控制块(TCB)可以被更新,以识别传输的TCP片段。
封包可以指可能在网络上发送的各种格式的比特集合,例如以太网帧、IP封包、TCP片段、UDP数据报、RTP片段,等等。对L2、L3、L4和L7层(或者第2层、第3层、第4层和第7层)的引用分别指的是OSI(Open System Interconnection,开放系统互连)层模型的第二数据链路层、第三网络层、第四传输层和第七应用层。
封包可以与流相关联。流可以是在两个端点之间传输的一个或多个封包。流可以由一组定义的元组来识别,例如识别端点的两个元组(例如,源地址和目的地地址)。对于一些服务,可以通过使用五个或更多个元组(例如,源地址、目的地地址、IP协议、传输层源端口和目的地端口)来以更精细的粒度识别流。
描述接下来转向由网络接口150接收封包的接收路径。网络接口150包括一个或多个端口168-0至168-Z。端口可以表示物理端口或虚拟端口。在端口168-0至168-Z处接收到的封包被提供给收发器170。收发器170根据相关协议对接收到的封包提供物理层处理172和MAC层处理174。
封包指引器180可以应用接收侧缩放,以确定计算平台100中的接收队列和关联核心来处理接收到的封包。封包指引器180使得接收到的封包被存储到接收队列182中,以便传送到平台100。
直接存储器访问(direct memory access,DMA)引擎184可以将封包的内容和相应的描述符从描述符队列158传送到存储器120。例如,封包的一部分可以经由DMA被拷贝到存储器120中的封包缓冲区。直接存储器访问(DMA)是一种技术,它允许了输入/输出(I/O)设备绕过中央处理单元(CPU)或者核心,并且直接向或从系统存储器发送或接收数据。由于DMA允许了CPU或核心在向或从系统存储器发送或接收数据时不管理拷贝操作,因此CPU或核心可用来执行其他操作。如果没有DMA,那么当CPU或核心在使用编程的输入/输出时,CPU或核心通常在读取或写入操作的整个持续时间中被占用,无法执行其他工作。通过DMA,CPU或核心可以例如发起数据传送,然后在数据传送正在进行的同时执行其他操作。当数据传送完成时,CPU或核心可以从DMA控制器接收中断。
DMA引擎184可以执行DMA合并,据此DMA引擎184在其发起DMA操作到平台100中的队列之前收集封包。也可以利用接收片段合并(Receive Segment Coalescing,RSC),据此,来自接收到的封包的内容被组合成封包或者内容组合。中断节制可用于确定何时执行中断以通知平台100,一个或多个封包或者对一个或多个封包的任何部分的引用可从队列中获得来处理。定时器的期满或者达到或超过封包的大小阈值可导致生成中断。中断可以被指引到旨在处理封包的特定核心。
图1B描绘了示例系统,据此媒体服务器190可以使用本文描述的流传输协议负载转移特征来经由连接192向一个或多个客户端设备194-0至194-A提供内容。客户端设备194-0至194-A中的任何一者可以使用流媒体播放器196-0至196-A来显示和控制要取回哪些媒体以及从媒体的什么地方开始重放。连接192可以提供与任何网络、架构或互连的通信,例如以下各项中的一个或多个:以太网(IEEE 802.3)、远程直接存储器访问(remotedirect memory access,RDMA)、InfiniBand、互联网广域RDMA协议(Internet Wide AreaRDMA Protocol,iWARP)、快速UDP互联网连接(quick UDP Internet Connection,QUIC)、基于聚合以太网的RDMA(RDMA over Converged Ethernet,RoCE)、外围组件互连快速(Peripheral Component Interconnect express,PCIe)、英特尔QuickPath互连(QuickPath Interconnect,QPI)、英特尔超级路径互连(Ultra Path Interconnect,UPI)、英特尔片上系统架构(Intel On-Chip System Fabric,IOSF)、Omnipath、计算快速链路(Compute Express Link,CXL)、HyperTransport、高速架构、NVLink、高级微控制器总线体系结构(Advanced Microcontroller Bus Architecture,AMBA)互连、OpenCAPI、Gen-Z、加速器缓存相干互连(Cache Coherent Interconnect for Accelerator,CCIX)、3GPP长期演进(Long Term Evolution,LTE)(4G)、3GPP 5G、以及这些的变体。可以使用诸如基于架构的NVMe(NVMe over Fabrics,NVMe-oF)或NVMe之类的协议将数据拷贝或存储到虚拟化存储节点。
图2描绘了使用数据和各种头部的封包的形成的示例。各种实施例允许了网络接口在封包中添加流传输头部,例如RTP相关头部,并且根据适用的流传输控制协议来设定流量传输的节奏。描绘了经由以太网帧在TCP/IP上的RTP的示例。然而,UDP/IP或快速UDP互联网连接(QUIC)/UDP/IP可被用于其他实现方式中。RTP原型头部(例如,模板头部)可被附加到应用数据,例如媒体文件。可以形成TCP或其他协议头部,并且将其附加到RTP原型头部与应用数据的组合。此外,可以形成IP头部,并且将其附加到TCP头部与RTP原型头部与应用数据的组合。可以形成以太网帧来传输使用IP、TCP和RTP头部封装的各种应用数据。当然,也可以使用其他协议。
图3描绘了RTP封包头部的示例。根据一些实施例,网络接口可以生成并且在RTP封包头部模板中插入序列号和时间戳字段。在封包头部模板中,序列号和时间戳字段可以被留空或者包括要被覆写的虚设数据。根据RFC 3550(2003),RTP规定,RTP序列号的初始值是随机或伪随机值,以使得对加密的已知明文攻击更加困难。随机值可以在连接设置时被生成,并且作为初始值被包括在给定流的上下文中。根据一些实施例,起始序列值和后续序列值的生成可以由网络接口执行。网络接口可以生成初始值并且按每个流状态维持以跟踪并且提供一个或多个流的序列号,甚至在第一个序列号之后。
根据一些实施例,负载转移到网络接口至少发生在时间戳和数据验证字段(例如,校验和)的生成上,因为封包中的字段在传输前被更新并且由网络接口重计算。因此,除了以太网网络接口控制器执行一些TCP/UDP/IP头部字段(例如,校验和)的生成以外,控制器还可以为流传输协议(例如,RTP)生成头部更新。例如,对于UDP,可以在封包的一部分(例如,封包和/或头部)上生成校验和。
安全实时传输协议(Secure Real-time Transport Protocol,SRTP)(RFC 3711(2004))定义了RTP配置文件,它为有效载荷数据的传送提供加密服务。当使用这种服务时,加密编码可以作为预处理的一部分被执行,或者可以被负载转移到网络接口。例如,在生成序列号和时间戳之后,可以由网络接口执行封包上的验证值(例如,TCP校验和头部字段)的生成。
图4A描绘了由操作系统执行来发现和请求流传输协议传输操作的过程。在402,OS就NIC的能力向设备驱动器进行查询,并且获悉流传输协议负载转移特征。在安装新的网络接口(例如,虚拟或者物理)时,OS经由驱动器发现NIC的能力。设备驱动器可以将RTPSO特征通知给OS。
在404,响应于对使用流传输协议传输的数据或内容的可用性的指示,OS向网络设备驱动器发送流传输协议负载转移传输命令。流传输协议负载转移传输命令可以是RTP分段负载转移(RTPSO)命令。流传输协议负载转移传输命令可具有指向以下两者中的较小者的关联指针:TCP拥塞窗口大小的数据(通常最多达64KB),或者X毫秒的待发送内容。流传输协议负载转移传输命令可包括指向原型头部的指针,指向存储内容的数据缓冲区的指针,以及元数据。原型头部可包括完成的RTP、TCP、IPv4字段,并且一些字段是空的或者带有虚设数据。元数据可包括头部类型、TCP片段大小、要发送的总字节数(数据字节,不包括头部)、节奏设定信息(例如,3Mbps)、初始时间戳值(这可能在RTP原型头部或者元数据中)、时钟速率(RTP时间戳递增的速率,通常为8k至90k Hz)。
在406,OS接收对流传输协议负载转移传输命令状态的指示,并且执行状态更新。设备驱动器可以向OS指示出该命令传输命令已完成或者已失败。在失败的情况下,OS可以请求另一个具有相同内容的RTPSO传输命令。基于对流传输协议负载转移传输命令已成功完成的指示,在408,OS可以执行清理并且发起状态更新。OS释放资源,例如对于DMA被锁定到物理地址的存储器页被释放。关联的TCP连接的传输控制块(TCB)被更新,并且RTCP被用已完成RTPSO信息来更新。
图4B描绘了由设备驱动器执行的与流传输协议负载转移传输命令的性能相关的示例过程。在410,设备驱动器识别包括流传输协议分段负载转移的网络接口能力。在412,响应于接收到流传输协议负载转移传输命令,设备驱动器为流传输协议负载转移传输事务准备描述符。在一个特征中,设备驱动器准备上下文描述符,以告知网络接口要从事的流传输协议负载转移传输事务的相关元数据和原型头部。设备驱动器可以准备数据描述符,该描述符识别数据缓冲区的存储器地址、要传输的内容的长度以及关联的流传输协议负载转移传输上下文槽。在414处,设备驱动器将描述符排队以供NIC取回。描述符可以识别要传输的片段大小的数据。
在416,设备驱动器接收对传输操作的状态的指示。状态更新可以经由中断和状态字段中的描述符完成比特发生。状态更新可以指示出传输操作是否完成或者不成功。在418,设备驱动器向OS指示出流传输协议负载转移传输命令已完成。
图4C描绘了由网络接口控制器执行的与流传输协议负载转移传输命令的性能相关的示例过程。在430,NIC从主机计算系统描述符缓冲区读取描述符,并且将描述符拷贝到NIC的描述符缓冲区中。在432,NIC处理用于传输的封包。使用流传输协议负载转移来准备封包用于传输可包括434-444中的任何一者。
在434,NIC将原型头部拷贝到传输(TX)FIFO存储器缓冲区中。在436,NIC从系统存储器读取片段大小的数据,并且将数据拷贝到TX FIFO存储器缓冲区中。该片段被附加到原型头部的拷贝。例如,如果没有RTP扩展,则片段大小的数据可以是1428字节。然而,可以发送短的封包,或者可以发送填充的封包。在一些示例中,NIC可以从系统拷贝一页或者4KB大小的数据,并且在内部将数据拷贝到NIC,并且访问片段大小的数据。
在438,NIC更新原型头部的至少一个流传输协议头部部分。例如,NIC可以更新RTP封包头部的序列号和时间戳字段中的一个或多个。在一些示例中,用于连接中的第一RTP头部的第一序列号可以是根据RFC 3550(2003)的伪随机选择值。对于后续的RTP片段,NIC基于已发送的RTP数据字节的数目,将序列号从其初始(随机)值递增。RTP序列号更新可以与IP序列号变化不同,因为IP序列号更新将包括每个封包的TCP和RTP头部,但在考虑何时递增RTP序列号时不包括这些字节。
在一些示例中,基于初始时间戳值、时钟速率和到目前为止发送的流传输协议字节的数目来更新流传输协议头部中的时间戳。时间戳值是相对于内容本身而言的,并且被客户端用来在适当的时间和间隔重放接收到的样本。与之不同,IEEE 1588描述了标记发送封包的时间。然而,在流传输协议头部中可以使用任何时间戳。
在440,NIC为封包更新一个或多个传输层头部字段。在一些示例中,由于TCP校验和包括RTP头部和有效载荷,所以TCP校验和头部字段是在为封包确定RTP头部字段值(例如,至少序列号和时间戳)之后生成的。例如,RFC 793(1981)中描述了校验和计算。在442,封包被排队到出口。
在444,NIC向设备驱动器指示出传输操作已完成(通常经由中断和状态字段中的描述符完成比特)。然而,如果传输操作没有完成,则NIC可以指示出传输操作没有完成或者重试传输。
对内容进行预封包化
为了流传输媒体内容,数据中心或者内容输送网络(CDN)打开媒体文件,对文件进行转码以将编码格式修改为客户端可解码的格式,并且将文件封包化以经由各种流传输协议传输到客户端。CPU周期被用来准备媒体的传输,并且媒体的准备可能对每个流请求发生。为了减少这种开销,流媒体提供者可以将内容预先转码为常见的分辨率或质量水平(例如,360p、480p、720p、1080p、超高清(Ultra High Definition,UHD)、2k、4k......)。这些不同分辨率或质量水平的文件被保存为媒体的不同版本。当流传输请求到达时,服务器会考虑资源、带宽、质量和其他因素,选择最适当的项目版本来呈现最佳的流传输体验,但内容在其在网络上被发送之前仍然必须被封包化。然而,由于CPU周期被花费来处理和传输流,单个核心可以传输的流的数目是有限的。在具有许多个接收流的客户端设备的超大规模应用中,系统可缩放性可受到限制。
各种实施例对文件(例如,视频或音频)的各种分辨率或质量水平版本进行预处理,生成文件的预封包化版本,并且存储文件的预封包化版本。服务器系统可被配置为基于其支持的(一个或多个)流传输协议和用于请求的最常见的封包大小来对文件进行预封包化。一些封包协议处理可以在请求时间之前被执行并且只被执行一次,而不是对每个流执行。这样一来,用于从块存储中取得文件并且使其为使用网络传输进行传输做准备的大部分延时和处理功率在请求时间之前被执行一次。为网络传输准备文件可以避免每次文件被流传输到远程客户端时让文件为传输做准备,对于流行的内容而言,这可能是数十万或者数百万次。各种实施例减少了为传输准备封包所花费的延时或时间,并且可能减少用于封包传输的功率和/或CPU周期的量。
各种实施例增大了可在请求发生之前完成的流传输内容的处理和封包化的量,以减少流传输期间CPU上的工作,从而在内容被流传输的同时释放CPU以服务于其他任务。诸如序列号、时间戳或者传输层头部校验和之类的RTP头部字段的生成可以被负载转移到NIC(或者SmartNIC)。
图5描绘了可用于存储流传输视频的预封包化内容并且将内容提供给一个或多个客户端设备的系统。计算资源504可包括任何类型的处理器,例如但不限于以下各项中的一个或多个:任何类型的微处理器、中央处理单元(central processing unit,CPU)、图形处理单元(graphics processing unit,GPU)、处理核心、ASIC、或者FPGA。在一些示例中,计算资源504可以使用本文的实施例来针对一个或多个水平的清晰度或质量(例如,高、中和低质量)生成包括媒体文件(或者其他内容)的封包,并且这些预生成的封包已准备好要传输,除了连接接口510要使用封包更新电路512生成的某些头部字段以外。
额外地,或者替换地,可以为各种视频编码格式对媒体文件进行预封包化。视频编码格式可包括以下各项中的一个或多个:运动图片专家组(Moving Picture ExpertsGroup,MPEG)格式,例如MPEG-2,高级视频编码(Advanced Video Coding,AVC)格式,例如H.264/MPEG-4AVC,H.265/HEVC,开放媒体联盟(Alliance for Open Media,AOMedia)VP8,VP9,以及电影与电视工程师协会(Society of Motion Picture&Television Engineers,SMPTE)421M/VC-1,以及联合摄影专家组(Joint Photographic Experts Group,JPEG)格式,例如JPEG,以及运动JPEG(Motion JPEG,MJPEG)格式。
计算资源504可以在存储器506中存储预生成的各种水平的清晰度的封包。第一清晰度水平的文件被分段成多个预生成的封包并且存储在存储器506中。同样的文件,但具有一个或多个不同的清晰度水平,可以被分段成多个预生成的封包并且存储在存储器506中。存储器506可以表示易失性、非易失性或者持久性的存储器或存储装置,并且本文描述了存储器506的非限制性示例。
计算资源504可以对文件进行转码,并且对文件进行预封包化,并且在用户对文件提出请求之前将预封包化的文件存储在本地或远程存储器中。在一些示例中,对于对文件的第一请求,整个文件可以被预封包化并且被存储,以便文件的一部分被预封包化并且准备好传输给同一用户、在以后的时间传输给同一用户、或者传输给不同的用户。内容提供者可以使用用户界面呈现的文件动作提示,例如“以网络/流传输就绪格式保存文件”,或者网络管理员通过命令行界面输入的命令,针对各种质量水平或编码格式发起文件的预封包化。云服务提供者(cloud service provider,CSP)可以提供预封包化服务,以对客户的文件进行预封包化。在一些示例中,操作系统或者虚拟化执行环境可以主动对媒体文件进行预封包化。在一些示例中,实况视频馈送可被存储为一个或多个质量水平或编码格式的预封包化内容。例如,第一质量水平或编码格式的预封包化内容可被存储在一文件中,而第二质量水平或编码格式的预封包化内容可被存储在第二文件中。
多个预封包化文件携带或包括相同的媒体(例如,图像、视频或者音频(例如,播客)),比如闪回、淡出到黑暗、节目介绍(例如,在一系列或一季的节目中始终重复的标题和角色介绍)、媒体信用,等等。在一些示例中,参考预封包化文件可以被创建并访问和传输一次或多次。例如,如果“喷气式战斗机”系列在各集之间共享相同或者相似的媒体,则可以重复使用参考预封包化文件的一个或多个拷贝。例如,如果封包23000具有与封包5相同的内容,则可以不存储封包23000,而是索引、封包列表或者位置表可以指示出发送封包5以代替封包23000。各种实施例可以更新重复使用的预封包化文件的封包头部中的时间戳和序列号(以及其他字段)。例如,如果选择封包5代替封包23000被传输,则封包5的各种头部被更新,以与本来会被用于封包23000的头部相对应。
可以跨节目或者甚至跨系列使用参考预封包化文件,以便不同的节目共享相同或相似的媒体内容。例如,如果“喷气式战斗机”系列与电影“飞行王牌”共享相同或相似的媒体,则参考预封包化文件的一个或多个拷贝可以在系列或电影间被重复使用。
在一些示例中,预封包化的媒体或音频内容可以只被存储一次或者被存储在多个位置,而不是对于包括相同或相似内容的多个节目被存储。因此,可以通过识别重复的内容和引用参考预封包化内容以消除重复的预封包化内容,来减少用于预封包化内容的存储空间。
一些多媒体压缩是有损的,因此一些封包可能没有携带相同的内容,并且相似的内容可以被接受作为原始内容的替代品。例如,对于较低的质量水平,可以传输相似但不相同的媒体。例如,MPEG视频压缩分析可以识别媒体之间的差异,从而对于小于阈值水平的差异,预封包化文件可被用于一节目(处于任何质量水平)或者以较低质量呈现的其他不同节目。
预封包化文件可以是媒体的一部分,它创建有一定的封包头部信息。预封包化文件可以被存储,并且响应于对媒体的一部分的请求而可供传输。连接接口510可以使用封包更新电路512在传输之前为连接接口510中的封包生成和更新字段(例如,序列号、时间戳和校验和或者CRC)。在一些示例中,文件可以被预封包化并且作为封包被存储在存储器或存储装置中,并且随着封包被形成并准备好传输,将封包发送到接收器,而无需由网络接口更新。
对于特定的质量水平,可以通过使用链接列表对封包排序以便读出,从而对于要显示的下一时间戳或帧,列表可以进行到对N+1封包的索引。然而,切换到下一质量水平可能涉及到识别下一质量水平中的相应索引,以识别要显示的下一时间戳或帧,以保持重放顺序。不同质量水平之间的索引之间的转换可以基于百分比转换、时间戳转换或者缩放的封包计数,由此将转换因数应用到当前质量水平中的当前索引水平,以确定另一质量水平中的索引。例如,从高质量切换到中等质量可以应用index_medium_quality=index_high_quality*K的转换率,其中index_medium_quality被向下舍入到最近的整数。
连接接口510可包括网络接口、架构接口或者到连接550的任何类型的接口。连接接口510可以使用速率管理器514来基于诸如连接550的带宽条件之类的反馈来动态地确定是否调整传输的文件的媒体质量水平。连接接口510可以使得计算资源504在使用预生成的封包的文件的流传输到使用预生成的第二视频质量水平的封包的第二视频质量水平之间动态地转变,同时维持时间戳排序以确保客户端设备处的连续时间重放。针对图6A和6B提供的示例展示了在使用预生成的封包维持时间戳排序的同时在不同视频质量之间转变的示例。此外,取决于质量和分辨率变化或其他因素所需要的预封包化可用性,流可以在预封包化内容和非预封包化内容之间切换。
客户端570-0至570-A可以运行流媒体播放器572-0至572-A,以播放从计算平台502或者其委托系统(例如,CDN或存储节点)接收的媒体。可以通过经由连接550传输的封包来接收媒体。
图6A描绘了一个示例,其中文件被存储为多个封包(例如,封包1至封包N),用于任何或所有高清晰度、中清晰度或者低清晰度。单个文件可被表示和存储为多个不同水平的预转码视频质量,这些质量水平被存储为可用来传输到客户端的封包。在拥塞管理和自适应比特率流传输的情况下,由此较低或较高清晰度的文件要被流传输,则较低或较高清晰度文件的封包可用来传输,但要如本文所述对某些头部字段进行更新。
采用诸如RTP控制协议(RTP Control Protocol,RTCP)之类的实时流传输机制的CDN的用例可以随着变化的带宽使用而发生。发送方和客户端接收方之间的带宽的退化可导致使用较低的流质量。例如,如果内容发送器网络接口由于拥塞而接收到流控制消息,那么网络接口可以导致传输的内容的质量改变为较低的质量。如果在接收方客户端处检测到封包丢弃,则网络接口可以使得传输的内容的质量改变为较低质量(较低带宽)的流。根据一些实施例,网络接口可以触发传输的内容的质量的变化。
图6B描绘了由于发送器和客户端之间的带宽可用性的变化而在流质量之间进行调整的示例。在这个示例中,带宽退化导致网络接口将文件的质量水平从高清晰度降低到中清晰度。进一步的带宽退化导致网络接口将文件的质量水平从中清晰度降低到低清晰度。在带宽恢复之后,网络接口将文件的质量水平从低清晰度提高到高清晰度。
改变流质量可涉及到使用预生成的并且可从存储装置中访问的预封包化文件。随着网络拥塞的发生和清除,流可以被动态地切换到更高的质量水平。将多个质量水平存储在单个预封包化文件中,将使得如下能力能够实现:通过在维持时间戳排序的同时将指向下一封包的指针改变到适当的流,实时地在质量流之间快速切换。
封包可以以如下方式被存储在存储器或存储装置中:顺序的封包(例如,封包1至封包N)的封包地址与虚拟地址相关联,该虚拟地址从0x00000000开始并且对于每个接连的封包递增。可以执行物理地址转化到所确定的封包的物理存储位置。
当切换质量水平时,要同步或维持时间戳或时间码,以提供连续重放。根据各种实施例,接下来对于表格1描述的比特掩码提供了这种转变。表格1描绘了使用比特掩码来确定如何在提议的文件格式内在质量水平之间无缝切换同时维持时间戳排序示例。样本寻址方案显示出了通过更新由RTCP数据确定的CurrentAddress的质量掩码,在文件内的质量水平之间快速流传输的方式。文件内容将不限于三个质量水平,而是可包括提供者认为足够的任何数目的不同质量水平。在这个示例中,不考虑文件大小,因为只有当前质量水平的比特被流传输。
表格1
例如,封包的下一地址可以从以下逻辑操作来确定:
(当前地址&0x01111111)|(RTCP指示质量掩码)
当前地址可以表示在切换到另一流质量之前为当前流质量接下来要流传输的封包的地址。为了确定存储器中的下一封包的地址以取回流,执行下一地址操作。对于高质量,下一地址是RTCP指示质量掩码0x00000000与逻辑操作(当前地址与0x01111111)的逻辑或。对于中等质量,下一地址是RTCP指示质量掩码0x10000000与逻辑操作(当前地址与0x01111111)的逻辑或。对于低质量,下一地址是RTCP指示质量掩码0x20000000与逻辑操作(当前地址与0x01111111)的逻辑或。
使用RTCP的应用可以检测和指示客户端能够达到的质量水平,并且调整质量,而不需要参考时间戳表格来确定在哪里拾取流,以及选择哪个封包来传输不同质量水平的转码文件。而是,可以从所选质量水平中选择下一个顺序封包,并且通过根据持续增大的重放时间对封包和封包内容的地址进行排序,以及使用应用到封包存储地址的比特掩码来确定不同质量水平的封包的地址,从而来维持时间戳排序。
RTP流被间隔开以便以与内容被渲染的速率相似的节奏到达客户端。缓冲解决了轻微的抖动和轻微的到达/渲染速率差异。流中的初始数据(例如在初始缓冲期间)可以按比重放/渲染速率高得多的速率被发送。一旦达到期望的缓冲水平,速率就将降低,以匹配重放速率。类似地,如果控制协议确定缓冲区过小或过大,则由网络接口管理的RTP分段负载转移节奏设定速率可以由流传输控制协议调整,以保持最佳的缓冲区大小。即使在同一个流中,也有可能在每个RTP分段负载转移封包生成操作中有不同的节奏设定速率。类似地,用户交互,例如跳转到新的时间/章节或者快进,可能会导致需要更多的缓冲区,因为文件将清除现有的缓冲区,并且用来自媒体文件的新部分的内容来取代它。例如,对于现有的流,如果质量水平被改变,则网络接口可以将封包间间隙调整为更小,并且为新的流(例如,不同的媒体文件)或者在快进或倒退到现有流中的同一媒体文件的不同部分时提供突发传输。
图7A描绘了一种过程。此过程可被各种实施例用于响应于用户请求对视频进行转码。在702,接收到对视频流的用户请求。该请求可以识别媒体(例如,视频或音频)、质量水平、可接受的编码格式(例如,H.264、H.265、VP8、VP9、MPEG,等等)。在704,确定视频是否先前已被转码。如果视频先前被转码到期望的质量或编码格式,则该过程继续到706。如果视频没有被转码到期望的质量或编码格式,则该过程继续到710。
在706,使用适用的协议对转码后的视频进行封包化,以便传输到用户设备。例如,适用的协议可以是基于TCP/IP的RTP。在708,生成的封包被传输到用户设备。
在710,视频可以在主机计算平台处被转码以便传输到用户设备。例如,转码可以涉及改变质量水平、视频编码格式、改变或添加隐藏字幕,等等。该过程继续到早前描述的706。
图7B描绘了一种过程。该过程可以由一系统执行,该系统可以将某些头部生成操作负载转移到网络接口。在750,网络接口接收到对诸如视频或音频之类的媒体流的用户请求。在752,提供所请求的媒体流的预封包化文件,以便传输到网络接口。预封包化文件可以有完成的头部字段,并且包括针对适用的质量水平和编码格式的媒体内容。在一些示例中,一些头部字段,例如序列号、时间戳和验证值(例如,校验和)可以被留空或者留有虚设内容,以便由网络接口覆写。例如,可以在请求之前生成RTP头部和TCP、UDP或者QUIC头部,并且将其存储起来以便在响应请求时使用。在754,网络接口可以生成并且将头部插入到预封包化文件部分中。网络接口可以使用通用处理器或者分立控制器来生成头部字段。在756,可以使用诸如有线或无线网络或架构之类的连接将封包传输到请求者。
在758,确定媒体格式是否要改变。例如,如果发送方和接收方之间的可用带宽减小或增大到超过阈值水平,则媒体格式可被改变为较低或较高的质量。在一些示例中,例如,如果用于重放媒体的播放器改变了,但内容重放的连续性要继续,那么所请求的编码媒体格式可以改变。对于确定媒体格式要改变,该过程继续到760。如果媒体格式不改变,则该过程继续到752。
在760,为调整后的媒体格式选择预储存的封包来传输。可以从存储器或存储装置取回调整后的媒体格式的预生成的封包,并且将其提供给网络接口。可以选择预生成的封包,以便取回与下一时间戳相对应的封包,以继续按重放顺序将媒体传输到接收器。本文描述的各种实施例可用于选择调整后媒体格式的封包的地址。该过程继续到754,以便网络接口选择性地修改预生成的封包。
图8描绘了一种系统。该系统可以使用本文描述的实施例来将头部更新负载转移到网络接口,或者将各种媒体格式的内容预封包化。系统800包括处理器810,该处理器为系统800提供处理、操作管理和指令的执行。处理器810可包括任何类型的微处理器、中央处理单元(CPU)、图形处理单元(GPU)、处理核心、或者用来为系统800提供处理的其他处理硬件、或者处理器的组合。处理器810控制系统800的整体操作,并且可以是或者可以包括一个或多个可编程通用或专用微处理器、数字信号处理器(digital signal processor,DSP)、可编程控制器、专用集成电路(application specific integrated circuit,ASIC)、可编程逻辑器件(programmable logic device,PLD),等等,或者这种设备的组合。
在一个示例中,系统800包括与处理器810耦合的接口812,它可以代表更高速度的接口或者高吞吐量接口,用于需要更高带宽连接的系统组件,例如存储器子系统820或图形接口组件840,或者加速器842。接口812代表接口电路,它可以是独立的组件,或者可被集成到处理器管芯上。如果存在,则图形接口840与图形组件相对接,用于向系统800的用户提供视觉显示。在一个示例中,图形接口840可以驱动向用户提供输出的高清晰度(highdefinition,HD)显示器。高清晰度可以指具有大约100PPI(每英寸像素)或更大的像素密度的显示器,并且可包括诸如全HD(例如,1080p)、视网膜显示器、4K(超高清或UHD)之类的格式或其他格式。在一个示例中,显示器可包括触摸屏显示器。在一个示例中,图形接口840基于存储在存储器830中的数据或者基于由处理器810执行的操作或者这两者来生成显示。在一个示例中,图形接口840基于存储在存储器830中的数据或者基于由处理器810执行的操作或者这两者来生成显示。
加速器842可以是固定功能的负载转移引擎,该引擎可被处理器810访问或使用。例如,加速器842之中的一加速器可以提供压缩(DC)能力、密码服务(例如公钥加密(publickey encryption,PKE))、密码、散列/认证能力、解密、或者其他能力或服务。在一些实施例中,额外地或者替换地,加速器842之中的一加速器提供如本文所述的现场选择控制器能力。在一些情况下,加速器842可以被集成到CPU插座(例如,包括CPU并且提供与CPU的电接口的主板或电路板的连接器)中。例如,加速器842可包括单核或多核处理器、图形处理单元、逻辑执行单元、单级或多级缓存、可用来独立执行程序或线程的功能单元、专用集成电路(application specific integrated circuit,ASIC)、神经网络处理器(neuralnetwork processor,NNP)、可编程控制逻辑、以及可编程处理元件,例如现场可编程门阵列(field programmable gate array,FPGA)或者可编程逻辑器件(programmable logicdevice,PLD)。加速器842可以提供多个神经网络、CPU、处理器核心、通用图形处理单元,或者图形处理单元可供人工智能(artificial intelligenc,AI)或机器学习(machinelearning,ML)模型使用。例如,AI模型可以使用或包括以下各项的任何一者或者组合:强化学习方案、Q学习方案、深度Q学习、或者异步优势行动者-评价者(Asynchronous AdvantageActor-Critic,A3C)、组合神经网络、递归组合神经网络、或者其他AI或ML模型。多个神经网络、处理器核心或图形处理单元可供AI或ML模型使用。
存储器子系统820代表系统800的主存储器,并且为将由处理器810执行的代码或者在执行例程时将要使用的数据值提供存储。存储器子系统820可包括一个或多个存储器设备830,例如只读存储器(read-only memory,ROM)、闪存、一个或多个品种的随机访问存储器(random access memory,RAM)(比如DRAM)、或者其他存储器设备、或者这种设备的组合。存储器830存储和容宿操作系统(operating system,OS)832等,以为系统800中的指令的执行提供软件平台。此外,应用834可以在来自存储器830的OS 832的软件平台上执行。应用834代表具有其自己的操作逻辑的程序,以执行对一个或多个功能的执行。进程836代表向OS832或一个或多个应用834或者其组合提供辅助功能的代理或例程。OS 832、应用834和进程836提供软件逻辑以为系统800提供功能。在一个示例中,存储器子系统820包括存储器控制器822,它是用于生成和发出命令给存储器830的存储器控制器。将会理解,存储器控制器822可以是处理器810的物理部分或者接口812的物理部分。例如,存储器控制器822可以是集成的存储器控制器,与处理器810一起被集成到电路上。
虽然没有具体图示,但将会理解,系统800可包括设备之间的一个或多个总线或总线系统,例如存储器总线、图形总线、接口总线,或者其他。总线或其他信号线可以将组件通信地或电气地耦合在一起,或者同时将组件通信地且电气地耦合。总线可包括物理通信线路、点到点连接、桥接器、适配器、控制器、或者其他电路或者这些的组合。总线可包括例如以下各项中的一个或多个:系统总线、外围组件互连(Peripheral ComponentInterconnect,PCI)总线、Hyper Transport或工业标准体系结构(industry standardarchitecture,ISA)总线、小型计算机系统接口(small computer system interface,SCSI)总线、通用串行总线(universal serial bus,USB)、或者电气与电子工程师学会(Institute of Electrical and Electronics Engineers,IEEE)标准1394总线(Firewire)。
在一个示例中,系统800包括接口814,它可以耦合到接口812。在一个示例中,接口814代表接口电路,它可包括独立的组件和集成电路。在一个示例中,多个用户接口组件或外围组件或者这两者耦合到接口814。网络接口850向系统800提供通过一个或多个网络与远程设备(例如,服务器或其他计算设备)通信的能力。网络接口850可包括以太网适配器、无线互连组件、蜂窝网络互连组件、USB(通用串行总线)、或者其他基于有线或无线标准的或专属的接口。网络接口850可以将数据传输到在同一数据中心或机架中的设备或者远程设备,这可包括发送存储在存储器中的数据。网络接口850可以从远程设备接收数据,这可包括将接收到的数据存储到存储器中。可以联系网络接口850、处理器810和存储器子系统820使用各种实施例。
在一个示例中,系统800包括一个或多个输入/输出(I/O)接口860。I/O接口860可包括一个或多个接口组件,用户通过这些接口组件与系统800进行交互(例如,音频、字母数字、触觉/触摸、或者其他接口)。外围接口870可包括上文没有具体提到的任何硬件接口。外设一般是指依赖性地连接到系统800的设备。依赖性连接是指这样的连接:系统800提供软件平台或硬件平台或者这两者,操作在该平台上执行,并且用户与该平台进行交互。
在一个示例中,系统800包括存储子系统880,来以非易失方式存储数据。在一个示例中,在某些系统实现方式中,存储装置880的至少某些组件可以与存储器子系统820的组件重叠。存储子系统880包括(一个或多个)存储设备884,其可以是或者可以包括用于以非易失性方式存储大量数据的任何传统介质,例如一个或多个磁性的、固态的、或者基于光学的盘,或者这些的组合。存储装置884以持久的状态保存代码或指令和数据886(即,尽管到系统800的电力中断,该值仍被保留)。存储装置884可以被笼统地认为是“存储器”,虽然存储器830通常是执行或操作存储器,以提供指令给处理器810。存储装置884是非易失性的,而存储器830可包括易失性存储器(即,如果到系统800的电力被中断,数据的值或状态是不确定的)。在一个示例中,存储子系统880包括控制器882来与存储装置884相对接。在一个示例中,控制器882是接口814或处理器810的物理部分,或者可包括处理器810和接口814两者中的电路或逻辑。
易失性存储器是在到设备的电力被中断的情况下状态不确定(并且因此存储在其中的数据不确定)的存储器。动态易失性存储器使用刷新存储在设备中的数据以维持状态。动态易失性存储器的一个示例包括DRAM(Dynamic Random Access Memory,动态随机访问存储器),或者某种变体,例如同步DRAM(Synchronous DRAM,SDRAM)。如本文所述的存储器子系统可与若干个存储器技术兼容,例如DDR3(双倍数据速率版本3,由JEDEC(JointElectronic Device Engineering Council,联合电子设备工程委员会)于2007年6月27日最初发布),DDR4(DDR版本4,初始规范由JEDEC于2012年9月发布),DDR4E(DDR版本4),LPDDR3(低功率DDR版本3,JESD209-3B,2013年8月由JEDEC发布),LPDDR4(LPDDR版本4,JESD209-4,最初由JEDEC于2014年8月发布),WIO2(宽输入/输出版本2,JESD229-2,最初由JEDEC于2014年8月发布),HBM(高带宽存储器,JESD325,最初由JEDEC于2013年10月发布),LPDDR5(当前在被JEDEC讨论),HBM2(HBM版本2,当前在被JEDEC讨论),或者其他存储器技术或存储器技术的组合,以及基于这种规范的衍生或扩展的技术。
非易失性存储器(non-volatile memory,NVM)设备是一种存储器,其状态即使在到该设备的电力被中断的情况下也是确定的。在一个实施例中,NVM设备可包括可块状寻址的存储器设备,例如NAND技术,或者更具体而言,多阈值级NAND闪存(例如,单级单元(Single-Level Cell,“SLC”),多级单元(Multi-Level Cell,“MLC”),四级单元(Quad-Level Cell,“QLC”),三级单元(Tri-Level Cell,“TLC”),或者一些其他NAND)。NVM设备还可包括可字节寻址的就地写入的三维交叉点存储器设备,或者其他可字节寻址的就地写入的NVM设备(也称为持续性存储器),例如单级或多级相变存储器(Phase Change Memory,PCM)或者带开关的相变存储器(phase change memory with a switch,PCMS),使用硫属化合物相变材料(例如,硫属化合物玻璃)的NVM设备,包括金属氧化物基、氧空位基、和导电桥随机访问存储器(Conductive Bridge Random Access Memory,CB-RAM)的电阻性存储器,纳米线存储器,铁电随机访问存储器(FeRAM、FRAM),包含了忆阻器技术的磁阻随机访问存储器(magneto resistive random access memory,MRAM),自旋转移矩(spin transfertorque,STT)-MRAM,基于自旋电子磁结存储器的设备,基于磁性隧道结(magnetictunneling junction,MTJ)的设备,基于DW(Domain Wall,畴壁)和SOT(Spin OrbitTransfer,自旋轨道转移)的设备,基于晶闸管的存储器设备,或者上述任何项的组合,或者其他存储器。
电源(未描绘)向系统800的组件提供电力。更具体而言,电源通常与系统800中的一个或多个电力供应源相对接,以向系统800的组件提供电力。在一个示例中,电力供应源包括AC到DC(交流电到直流电)适配器,以插入到壁式插座中。这种AC电力可以是可再生能量(例如,太阳能)电源。在一个示例中,电源包括DC电源,例如外部AC到DC转换器。在一个示例中,电源或电力供应源包括无线充电硬件,以经由接近充电场来充电。在一个示例中,电源可包括内部电池、交流供应源、基于运动的电力供应源、太阳能电力供应源、或者燃料电池源。
在一示例中,可以使用处理器、存储器、存储装置、网络接口和其他组件的互连计算托架来实现系统800。可以使用高速互连,例如PCIe、以太网或者光学互连(或者这些的组合)。
本文的实施例可被实现在各种类型的计算和联网设备中,例如交换机、路由器、机架和刀片服务器,例如在数据中心和/或服务器场环境中使用的那些。数据中心和服务器场中使用的服务器包括阵列式服务器配置,例如基于机架的服务器或刀片服务器。这些服务器经由各种网络配设在通信中互连,例如将各组服务器划分为局域网(Local AreaNetwork,LAN),在LAN之间有适当的交换和路由设施,以形成私有内联网。例如,云主机设施通常可采用具有众多服务器的大型数据中心。刀片包括单独的计算平台,该计算平台被配置为执行服务器类型的功能,即,“卡上服务器”。因此,每个刀片包括传统服务器所共有的组件,包括主印刷电路板(主板),其提供内部布线(例如,总线),用于耦合适当的集成电路(integrated circuit,IC)和安放到板上的其他组件。
图9描绘了环境900包括多个计算机架902,每个包括机架顶部(Top of Rack,ToR)交换机904、pod管理器906、以及多个汇集式系统抽屉。各种实施例可被用于交换机中。一般而言,汇集式系统抽屉可包括汇集式计算抽屉和汇集式存储抽屉。可选地,汇集式系统抽屉也可包括汇集式存储器抽屉和汇集式输入/输出(I/O)抽屉。在图示的实施例中,汇集式系统抽屉包括汇集式计算机抽屉908,以及ATOMTM汇集式计算抽屉910、汇集式存储抽屉912、汇集式存储器抽屉914、以及汇集式I/O抽屉916。每个汇集式系统抽屉经由高速链路918连接到ToR交换机904,例如40千兆比特/秒(Gb/s)或100Gb/s以太网链路或者100+Gb/s硅光子(Silicon Photonics,SiPh)光学链路。在一个实施例中,高速链路918包括800Gb/s SiPh光学链路。
多个计算机架902可以经由其ToR交换机904来互连(例如,到pod级交换机或数据中心交换机),如到网络920的连接所示。在一些实施例中,经由(一个或多个)pod管理器906将计算机架902的群组作为分开的pod来管理。在一个实施例中,单个pod管理器被用于管理pod中的所有机架。或者,分布式pod管理器可被用于pod管理操作。
环境900还包括管理接口922,其被用于管理该环境的各种方面。这包括管理机架配置,相应的参数被存储为机架配置数据924。
在一些示例中,可联系以下事物来使用本文描述的网络接口和其他实施例:基站(例如,3G、4G、5G,等等),宏基站(例如,5G网络),皮站(例如,IEEE 802.11兼容接入点),纳米站(例如,用于点对多点(Point-to-MultiPoint,PtMP)应用),驻地内数据中心,驻地外数据中心,边缘网络元件,雾网络元件,和/或混合数据中心(例如,使用虚拟化、云和软件定义联网来跨物理数据中心和分布式多云环境输送应用工作负载的数据中心)。
可以利用硬件元素、软件元素或者两者的组合来实现各种示例。在一些示例中,硬件元素可包括设备、组件、处理器、微处理器、电路、电路元件(例如,晶体管、电阻器、电容器、电感器,等等)、集成电路、ASIC、PLD、DSP、FPGA、存储器单元、逻辑门、寄存器、半导体器件、芯片、微芯片、芯片组,等等。在一些示例中,软件元素可包括软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号,或者这些的任何组合。确定一示例是否利用硬件元素和/或软件元素来实现可按照给定的实现方式所期望的根据任何数目的因素而变化,例如期望的计算速率、功率水平、耐热性、处理周期预算、输入数据速率、输出数据速率、存储器资源、数据总线速度以及其他设计或性能约束。处理器可以是硬件状态机、数字控制逻辑、中央处理单元或者任何硬件、固件和/或软件元素的一个或多个组合。
一些示例可以利用制品或者至少一个计算机可读介质来实现或者被实现为制品或者至少一个计算机可读介质。计算机可读介质可包括非暂态存储介质来存储逻辑。在一些示例中,非暂态存储介质可包括一种或多种类型的能够存储电子数据的计算机可读存储介质,包括易失性存储器或非易失性存储器、可移除或不可移除存储器、可擦除或不可擦除存储器、可写或可改写存储器,等等。在一些示例中,逻辑可包括各种软件元素,例如软件组件、程序、应用、计算机程序、应用程序、系统程序、机器程序、操作系统软件、中间件、固件、软件模块、例程、子例程、函数、方法、过程、软件接口、API、指令集、计算代码、计算机代码、代码段、计算机代码段、字、值、符号,或者这些的任何组合。
根据一些示例,计算机可读介质可包括非暂态存储介质来存储或维护指令,这些指令当被机器、计算设备或系统执行时,使得该机器、计算设备或系统执行根据描述的示例的方法和/或操作。指令可包括任何适当类型的代码,例如源代码、经编译的代码、经解释的代码,可执行代码、静态代码、动态代码,等等。可根据预定的计算机语言、方式或语法来实现指令,用于指示机器、计算设备或系统执行特定的功能。可利用任何适当的高级别的、低级别的、面向对象的、视觉的、编译的和/或解释的编程语言来实现指令。
至少一个示例的一个或多个方面可由存储在至少一个机器可读介质上的表示处理器内的各种逻辑的代表性指令来实现,这些指令当被机器、计算设备或系统读取时,使得该机器、计算设备或系统制作逻辑来执行本文描述的技术。这种被称为“IP核心”的表现形式可被存储在有形机器可读介质上并且被提供到各种客户或制造设施以加载到实际制作该逻辑或处理器的制作机器中。
短语“一个示例”或者“一示例”的出现不一定全都指的是同一示例或实施例。本文描述的任何方面可以与本文描述的任何其他方面或类似方面相组合,无论这些方面是否是针对同一附图或元素来描述的。附图中描绘的块功能的分割、省略或包括并不推断出用于实现这些功能的硬件组件、电路、软件和/或元件在实施例中一定会被分割、省略或包括。
可利用表述“耦合”和“连接”以及其衍生词来描述一些示例。这些术语并不一定打算是彼此的同义词。例如,使用术语“连接”和/或“耦合”的描述可指示出两个或更多个元素与彼此发生直接物理或电气接触。然而,术语“耦合”也可以指两个或更多个元素没有与彼此发生直接接触,但仍与彼此合作或交互。
术语“第一”、“第二”之类的在本文中并不表示任何顺序、数量或重要性,而是用来区分一个元素与另一个元素。本文的术语“一”并不表示对数量的限制,而是表示至少一个被提及的项目的存在。本文提到信号时使用的术语“断言”指的是该信号的一种状态,在这种状态下,信号是有效的,并且该状态可以通过向该信号施加任何逻辑电平(无论是逻辑0还是逻辑1)来实现。术语“随后”或“之后”可以指紧随在后或者跟随在某个或某些其他事件之后。根据替换实施例,也可以执行其他步骤序列。此外,取决于特定的应用,可以添加或去除额外的步骤。可以使用变化的任何组合,并且受益于本公开的本领域普通技术人员将会理解其许多变化、修改和替换实施例。
诸如短语“X、Y或Z中的至少一者”这样的析取语言,除非另有具体声明,否则在上下文内被理解为一般用来陈述一项目、术语等等可以是X、Y或Z,或者其任何组合(例如,X、Y和/或Z)。从而,这种析取语言一般不打算也不应当暗示某些实施例要求至少一个X、至少一个Y或者至少一个Z的每一者存在。此外,除非另有具体声明,否则诸如短语“X、Y和Z中的至少一者”这样的连接性语言也应当被理解为指X、Y、Z或者其任何组合,包括“X、Y和/或Z。”
下面提供本文公开的设备、系统和方法的说明性示例。设备、系统和方法的实施例可包括下面描述的示例中的任何一个或多个,以及其任何组合。
一些示例包括一种方法,该方法包括操作系统就网络接口的能力向设备驱动器进行查询并且获悉流传输协议负载转移特征。所述方法可包括流媒体负载转移命令被发送到所述驱动器,所述命令识别要传输的内容和原型头部。
一些示例包括一种方法,该方法包括网络接口使用所述网络接口的流媒体负载转移能力来准备封包。所述方法可包括所述网络接口将原型头部拷贝到传输存储器缓冲区中;从系统存储器读取片段大小的数据并且将所述数据拷贝到存储器缓冲区中;更新所述原型头部的至少一个流传输协议头部部分和所述封包的一个或多个传输层头部字段。
示例1包括一种装置,该装置包括网络接口,该网络接口包括:实时流传输协议负载转移电路,用于为封包更新至少一个流传输协议头部字段并且提供所述封包来传输到介质。
示例2包括任何示例,其中,所述至少一个流传输协议头部字段是基于流传输协议的并且包括序列号或时间戳中的一个或多个。
示例3包括任何示例,其中,所述负载转移电路用于:生成伪随机起始序列号,为后续封包传输更新所述序列号,并且将从所生成的序列号得出的值包括在至少一个头部字段中。
示例4包括任何示例,其中,所述负载转移电路基于以下各项中的一项或多项来生成时间戳:初始时间戳值、时钟速率、或者发送的字节的数目,并且所述负载转移电路将所生成的时间戳包括在至少一个头部字段中。
示例5包括任何示例,其中,所述负载转移电路基于带有更新后的至少一个头部字段的所述封包来为传输层协议生成验证值。
示例6包括任何示例,其中,所述网络接口包括存储器,所述存储器接收原型头部的拷贝,并且所述负载转移电路更新所述原型头部的至少一个头部字段。
示例7包括任何示例,并且包括与所述接口通信地耦合的计算平台,其中,所述计算平台包括服务器、数据中心、机架、或者主机计算平台。
示例8包括任何示例,并且包括与所述接口通信地耦合的计算平台,其中,所述计算平台执行操作系统,该操作系统提供识别要传输的内容的分段负载转移命令。
示例9包括任何示例,其中,所述封包包括媒体文件部分,该媒体文件部分是在对所述媒体文件部分的请求之前被生成和存储的。
示例10包括任何示例,并且包括与所述接口通信地耦合的计算平台,所述计算平台为至少一个媒体质量水平存储预封包化文件。
示例11包括任何示例,其中,所述网络接口包括处理器,用于检测流量接收速率的变化并且将媒体的质量水平修改到为封包中的传输提供的第二质量水平。
示例12包括任何示例,其中,为了将媒体的质量水平修改到为封包中的传输提供的第二质量水平,所述网络接口为所述第二质量水平选择与下一个时间戳相关联的预生成的封包。
示例13包括非暂态计算机可读介质,包括存储在其上的指令,所述指令如果被至少一个处理器执行,则使得所述至少一个处理器:向网络接口提供媒体流传输协议封包分段负载转移请求,所述请求指定要传输的内容的片段和与所述内容相关联的元数据,并且使得网络接口在封包传输之前为所述封包更新至少一个头部字段值。
示例14包括任何示例,其中,所述至少一个头部字段包括序列号或时间戳中的一个或多个。
示例15包括任何示例,并且包括存储在其上的指令,所述指令如果被至少一个处理器执行,则使得所述至少一个处理器:使得所述网络接口基于带有更新后的至少一个头部字段的所述封包来为传输层协议生成验证值。
示例16包括任何示例,并且包括存储在其上的指令,所述指令如果被至少一个处理器执行,则使得所述至少一个处理器:在对至少一个文件的请求之前,针对至少一个媒体质量水平,预封包并且存储所述至少一个文件。
示例17包括一种系统,该系统包括:计算平台,其包括至少一个处理器和至少一个存储器,其中:所述至少一个处理器用于向网络接口提供流传输文件封包分段负载转移请求,所述请求指定要传输的内容的片段和与所述内容相关联的元数据以及网络接口,其中,所述网络接口包括负载转移电路,用于在传输之前更新包括所述内容的片段的封包的至少一个头部字段。
示例18包括任何示例,其中,所述至少一个头部字段是基于实时传输协议(RTP)的并且包括序列号或时间戳中的一个或多个。
示例19包括任何示例,其中,所述负载转移电路执行以下各项中的一项或多项:生成伪随机起始序列号,为后续封包传输更新所述序列号,并且将所生成的序列号包括在至少一个头部字段中或者基于以下各项中的一项或多项来生成时间戳:初始时间戳值、时钟速率、或者发送的字节的数目,并且所述负载转移电路将所生成的时间戳包括在至少一个头部字段中。
示例20包括一种在媒体服务器处执行的方法,该方法包括:对于媒体文件,在接收到传输所述媒体文件的请求之前存储所述媒体文件的封包化版本,所述封包化版本包括有效载荷和一些头部的字段。
Claims (25)
1.一种装置,包括:
网络接口,其包括:
实时流传输协议负载转移电路,用于为封包更新至少一个流传输协议头部字段并且提供所述封包来传输到介质。
2.如权利要求1所述的装置,其中,所述至少一个流传输协议头部字段是基于流传输协议的并且包括序列号或时间戳中的一个或多个。
3.如权利要求1所述的装置,其中,所述负载转移电路用于:生成伪随机起始序列号,为后续封包传输更新所述序列号,并且将从所生成的序列号得出的值包括在至少一个头部字段中。
4.如权利要求1所述的装置,其中,所述负载转移电路基于以下各项中的一项或多项来生成时间戳:初始时间戳值、时钟速率、或者发送的字节的数目,并且所述负载转移电路将所生成的时间戳包括在至少一个头部字段中。
5.如权利要求1所述的装置,其中,所述负载转移电路基于带有更新后的至少一个头部字段的所述封包来为传输层协议生成验证值。
6.如权利要求1所述的装置,其中,所述网络接口包括存储器,所述存储器接收原型头部的拷贝,并且所述负载转移电路更新所述原型头部的至少一个头部字段。
7.如权利要求1所述的装置,包括与所述接口通信地耦合的计算平台,其中,所述计算平台包括服务器、数据中心、机架、或者主机计算平台。
8.如权利要求1所述的装置,包括与所述接口通信地耦合的计算平台,其中,所述计算平台执行操作系统,该操作系统提供识别要传输的内容的分段负载转移命令。
9.如权利要求1所述的装置,其中,所述封包包括媒体文件部分,该媒体文件部分是在对所述媒体文件部分的请求之前被生成和存储的。
10.如权利要求9所述的装置,包括与所述接口通信地耦合的计算平台,所述计算平台为至少一个媒体质量水平存储预封包化的文件。
11.如权利要求9所述的装置,其中,所述网络接口包括处理器,用于检测流量接收速率的变化并且将媒体的质量水平修改到为封包中的传输提供的第二质量水平。
12.如权利要求11所述的装置,其中,为了将媒体的质量水平修改到为封包中的传输提供的第二质量水平,所述网络接口为所述第二质量水平选择与下一个时间戳相关联的预生成的封包。
13.一种非暂态计算机可读介质,包括存储在其上的指令,所述指令如果被至少一个处理器执行,则使得所述至少一个处理器:
向网络接口提供媒体流传输协议封包分段负载转移请求,所述请求指定要传输的内容的片段和与所述内容相关联的元数据,并且
使得网络接口在封包的传输之前为所述封包更新至少一个头部字段值。
14.如权利要求13所述的非暂态计算机可读介质,其中,所述至少一个头部字段包括序列号或时间戳中的一个或多个。
15.如权利要求13所述的非暂态计算机可读介质,包括存储在其上的指令,所述指令如果被至少一个处理器执行,则使得所述至少一个处理器:
使得所述网络接口基于带有更新后的至少一个头部字段的所述封包来为传输层协议生成验证值。
16.如权利要求13所述的非暂态计算机可读介质,包括存储在其上的指令,所述指令如果被至少一个处理器执行,则使得所述至少一个处理器:
在对至少一个文件的请求之前,针对至少一个媒体质量水平,预封包并且存储所述至少一个文件。
17.一种系统,包括:
计算平台,其包括至少一个处理器和至少一个存储器,其中:
所述至少一个处理器用于向网络接口提供流传输文件封包分段负载转移请求,所述请求指定要传输的内容的片段和与所述内容相关联的元数据,以及
网络接口,其中
所述网络接口包括负载转移电路,用于在传输之前更新包括所述内容的片段的封包的至少一个头部字段。
18.如权利要求17所述的系统,其中,所述至少一个头部字段是基于实时传输协议(RTP)的并且包括序列号或时间戳中的一个或多个。
19.如权利要求17所述的系统,其中,所述负载转移电路执行以下各项中的一项或多项:
生成伪随机起始序列号,为后续封包传输更新所述序列号,并且将所生成的序列号包括在至少一个头部字段中,或者
基于以下各项中的一项或多项来生成时间戳:初始时间戳值、时钟速率、或者发送的字节的数目,并且所述负载转移电路将所生成的时间戳包括在至少一个头部字段中。
20.一种在媒体服务器处执行的方法,该方法包括:
对于媒体文件,在接收到传输所述媒体文件的请求之前存储所述媒体文件的封包化版本,所述封包化版本包括有效载荷和若干个头部的字段。
21.如权利要求20所述的方法,包括:
使得传输带有所述有效载荷和所述若干个头部的字段的封包。
22.一种方法,包括:
操作系统就网络接口的能力向设备驱动器进行查询并且获悉流传输协议负载转移特征。
23.如权利要求22所述的方法,包括:
向所述设备驱动器发送流媒体负载转移命令,该命令识别要传输的内容和原型头部。
24.一种方法,包括:
网络接口使用所述网络接口的流媒体负载转移能力来准备封包。
25.如权利要求23所述的方法,包括:
所述网络接口将原型头部拷贝到传输存储器缓冲区中;
从系统存储器读取片段大小的数据并且将所述数据拷贝到存储器缓冲区中;并且
更新所述原型头部的至少一个流传输协议头部部分和所述封包的一个或多个传输层头部字段。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/780,609 | 2020-02-03 | ||
US16/780,609 US20200177660A1 (en) | 2020-02-03 | 2020-02-03 | Offload of streaming protocol packet formation |
PCT/US2020/065435 WO2021158298A1 (en) | 2020-02-03 | 2020-12-16 | Offload of streaming protocol packet formation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114930786A true CN114930786A (zh) | 2022-08-19 |
Family
ID=70848937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080091693.3A Pending CN114930786A (zh) | 2020-02-03 | 2020-12-16 | 流传输协议封包形成的负载转移 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20200177660A1 (zh) |
CN (1) | CN114930786A (zh) |
DE (1) | DE112020006664T5 (zh) |
WO (1) | WO2021158298A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3541040B1 (en) * | 2018-03-16 | 2022-04-13 | Acklio | Method and apparatus for processing message data |
WO2020040741A1 (en) * | 2018-08-21 | 2020-02-27 | Rovi Guides, Inc. | Systems and methods for real-time adaptive bitrate transcoding and transmission of transcoded media |
US20200177660A1 (en) * | 2020-02-03 | 2020-06-04 | Intel Corporation | Offload of streaming protocol packet formation |
US11720413B2 (en) * | 2020-06-08 | 2023-08-08 | Samsung Electronics Co., Ltd. | Systems and methods for virtualizing fabric-attached storage devices |
WO2021255585A1 (en) * | 2020-06-18 | 2021-12-23 | Financial & Risk Organisation Limited | Online application layer processing of network layer timestamps |
CN112612518B (zh) * | 2020-12-08 | 2022-04-01 | 麒麟软件有限公司 | 一种基于飞腾平台的网络checksum算法优化方法 |
US20210149821A1 (en) * | 2020-12-23 | 2021-05-20 | Intel Corporation | Address translation technologies |
JP2022166934A (ja) * | 2021-04-22 | 2022-11-04 | 富士通株式会社 | 情報処理装置、過負荷制御プログラムおよび過負荷制御方法 |
US11811637B1 (en) * | 2021-11-24 | 2023-11-07 | Amazon Technologies, Inc. | Packet timestamp format manipulation |
US20220224746A1 (en) * | 2022-04-01 | 2022-07-14 | Intel Corporation | Media streaming endpoint |
US11632413B1 (en) * | 2022-07-18 | 2023-04-18 | Rovi Guides, Inc. | Methods and systems for streaming media content |
US12063260B2 (en) | 2022-08-31 | 2024-08-13 | Rovi Guides, Inc. | Intelligent delivery and playout to prevent stalling in video streaming |
US20240146986A1 (en) * | 2022-10-31 | 2024-05-02 | Adobe Inc. | Automatic deferred edge authentication for protected multi-tenant resource management systems |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7451229B2 (en) * | 2002-06-24 | 2008-11-11 | Microsoft Corporation | System and method for embedding a streaming media format header within a session description message |
US7283522B2 (en) * | 2002-09-27 | 2007-10-16 | Sun Microsystems, Inc. | Method and apparatus for offloading message segmentation to a network interface card |
US8325600B2 (en) * | 2005-12-30 | 2012-12-04 | Intel Corporation | Segmentation interleaving for data transmission requests |
US8102863B1 (en) * | 2006-06-27 | 2012-01-24 | Qurio Holdings, Inc. | High-speed WAN to wireless LAN gateway |
US9124541B2 (en) * | 2011-06-30 | 2015-09-01 | Cisco Technology, Inc. | Zero copy acceleration for session oriented protocols |
US20160080241A1 (en) * | 2014-09-17 | 2016-03-17 | Broadcom Corporation | Gigabit Determination of Available Bandwidth Between Peers |
US10499411B2 (en) * | 2016-11-04 | 2019-12-03 | Mediatek Inc. | Method and apparatus for data transmission enhancements in mobile communications |
US10536561B2 (en) * | 2017-10-16 | 2020-01-14 | Cisco Technology, Inc. | Data stream pipelining and replication at a delivery node of a content delivery network |
US10686731B2 (en) * | 2017-12-19 | 2020-06-16 | Xilinx, Inc. | Network interface device |
US10366017B2 (en) * | 2018-03-30 | 2019-07-30 | Intel Corporation | Methods and apparatus to offload media streams in host devices |
US10924775B2 (en) * | 2018-06-26 | 2021-02-16 | Qualcomm Incorporated | Uplink and downlink methods for efficient operation of live uplink streaming services |
US20200177660A1 (en) * | 2020-02-03 | 2020-06-04 | Intel Corporation | Offload of streaming protocol packet formation |
-
2020
- 2020-02-03 US US16/780,609 patent/US20200177660A1/en active Pending
- 2020-12-16 WO PCT/US2020/065435 patent/WO2021158298A1/en active Application Filing
- 2020-12-16 CN CN202080091693.3A patent/CN114930786A/zh active Pending
- 2020-12-16 DE DE112020006664.9T patent/DE112020006664T5/de active Pending
Also Published As
Publication number | Publication date |
---|---|
DE112020006664T5 (de) | 2022-12-01 |
WO2021158298A1 (en) | 2021-08-12 |
US20200177660A1 (en) | 2020-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200177660A1 (en) | Offload of streaming protocol packet formation | |
US10944660B2 (en) | Managing congestion in a network | |
US20200280518A1 (en) | Congestion management techniques | |
US20210349820A1 (en) | Memory allocation for distributed processing devices | |
US20240364641A1 (en) | Switch-managed resource allocation and software execution | |
US20200236140A1 (en) | Transport layer security offload to a network interface | |
US11909642B2 (en) | Offload of acknowledgements to a network device | |
US20210211467A1 (en) | Offload of decryption operations | |
US20200259763A1 (en) | Intelligent resource selection for received content | |
US20220210084A1 (en) | Timestamp synchronization between host and network interface device | |
CN118433113A (zh) | 基于接收方的精密拥塞控制 | |
EP4254904A1 (en) | Media streaming endpoint | |
US20220321491A1 (en) | Microservice data path and control path processing | |
US10324980B2 (en) | Method and system for caching of video files | |
EP4187869A1 (en) | Egress packet scheduling | |
US10911063B2 (en) | Adaptive speculative decoding | |
US20220116325A1 (en) | Packet format adjustment technologies | |
US20220303230A1 (en) | Operations to copy portions of a packet | |
US20230061794A1 (en) | Packet transmission scheduling | |
US11568089B2 (en) | Offloading operations from a primary processing device to a secondary processing device | |
US20220201061A1 (en) | Offload of media frame broadcasting to a network interface device | |
US11212349B1 (en) | Switching between network protocols for a data storage system | |
US11863318B2 (en) | Error correction for network packets | |
US20230043461A1 (en) | Packet processing configurations | |
Schwemmer et al. | MEP V2, a new event building protocol for the LHCb experiment |
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 |