专利名称:虚拟内存协议分段卸载的制作方法
技术领域:
本发明涉及网络流量加速,尤其协议分段卸载等问题。例如传输控制协议(TCP) 分段卸载(TS0 Transmission Control Protocol segmentationoffloading)。
背景技术:
图1所示为通常实施的传输控制协议分段卸载(TS0)操作。大块向外的网络流量 例如有效载荷数据(payload data) 157,通常被分割为小段,例如数据包170。该操作称为 分段,通常通过传输控制协议在主机上执行。如果通过单个硬件或一单个处理器,例如集成 了网络接口控制器(NIC:network interfacecontroller)的硬件或处理器,以主机的名义 执行该操作,即称为TCP数据包分段卸载(TS0)。传统操作系统通常将虚拟内存划分为内核空间(kernel space) 140与用户空间 (user space) 150。禁止用户模式应用程序例如用户进程120,写入或进行其他访问内核空 间140的操作。允许用户模式应用程序在内存区域用户空间150中运行。通常,TCP有效载荷数据,例如有效载荷数据157,由一用户进程例如用户进程120 发出。一内核进程110可以创建报头数据145,并保存该报头数据145于一系统内存(system space) 130的内核空间140中。TS0用于提高系统吞吐率(throughput),减少中央处理器 (CPU)的使用,但是在TS0的传统实施中,为确保传输控制协议分段单元160的物理寻址,存 储在用户空间150中的有效载荷数据157必须通过中央处理器(未显示)从用户空间150 复制至邻接(contiguous)的内核空间140,从而创建一有效载荷数据的备份147。将系统 内存130中有效载荷数据从用户空间150至内核空间140的操作属中央处理器密集型,将 降低流向向外的TCP流量吞吐。因此,现有技术需要改进向外的网络流量的操作。
发明内容
本发明涉及网络流量有效传输的方法与系统。根据一实施例提供一种执行分段 卸载的方法。一接口为一网络处理器执行一系统内存的一用户存储空间(user memory space)的直接虚拟存储寻址,从而获取由运行在一主机处理器上的一用户进程发出的有效 载荷数据。然后,该网络处理器通过(across) —个或多个数据包将有效载荷数据进行分 段。在上述实施例中,通过一个或多个数据包进行有效载荷数据分段,可以涉及通过 执行TCP分段创建一个或多个传输控制协议(TCP)数据包。在上述实施例的各种实例中,该方法进一步涉及在系统内存中存储一缓冲器描述 符。该缓冲器描述符包含(i)描述包含至少一部分该有效载荷数据的系统内存中的一数据 包缓冲器的一起始地址的信息以及(ii)描述该起始地址为虚拟或物理地址的信息。在上述各实施例中,该方法可以进一步涉及在系统内存中存储多个缓冲器描述 符。例如,一第一缓冲器描述符可以包含(i)描述包含该有效载荷数据的一第一部分的
4系统内存中的一第一数据包缓冲器的一第一起始地址的信息以及(ii)描述该第一起始地 址为虚拟或物理地址的信息,以及一第二缓冲器描述符可以包含(i)描述包含该有效载 荷数据的一第二部分的系统内存中的一第二数据包缓冲器的一第二起始地址的信息以及 (ii)描述该第二起始地址为虚拟或物理地址的信息。在某些例子中,缓冲器描述符也可以包含描述一页目录(page directory)的一虚 拟存储基址的信息。在所述例子中,执行用户存储空间的虚拟存储直接寻址可以进一步涉 及利用该起始地址定义的页目录的目录项目(directoryentry)将该起始地址转换为用户 存储中与数据包缓冲器相关的一物理地址。本发明的其它实施例提供一种执行传输控制协议(TCP)分段卸载的方法。通过一 互连总线连结至一系统内存的一主机接口接收描述用户存储空间内TCP有效载荷数据虚 拟内存地址的信息,以响应一主机处理器上运行的一用户进程并将TCP有效载荷数据存储 至系统内存的用户内存空间内。该主机接口基于存储在系统内存中的一页表与虚拟存储 地址代表一网络处理器执行直接虚拟存储寻址,并代表该网络处理器从用户存储空间获取 TCP有效载荷数据。然后,该网络处理器通过一个或多个TCP数据包对TCP有效载荷数据进 行分段。本发明的其它实施例提供一网络装置,其包括一处理器、一系统内存、一网络接 口、一个与该处理器及该系统内存连结的互连总线,以及一个与该网络接口及该互连总线 连结的接口。该处理器负责执行一个或多个内核进程以及一个或多个用户进程。该系统内 存存储有一页表数据结构,其包含用于将虚拟地址与物理地址相关联的信息。该系统内存 的一第一部分用于运行一个或多个内核进程,该系统内存的一第二部分用于运行一个或多 个用户进程。该网络接口用于通过一个或多个网络数据包对有效载荷数据进行分段,并通 过网络传输该一个或多个网络数据包至一目的地。该接口基于与有效载荷数据及页表数据 结构相关的一虚拟存储地址以网络处理器的名义执行该系统内存的直接虚拟存储寻址,以 代表该网络接口从该系统内存的第二部分获取有效载荷数据。在上述实施例的多个例子中,有效载荷数据可以是传输控制协议(TCP)有效载荷 数据,该一个或多个网络数据包可以是一个或多个TCP数据包。上述实施例的各种实例中,可以进一步操作接口以从系统内存获取一缓冲器描述 符。缓冲器描述符可以包含(i) 一虚拟存储地址以及(ii) 一个页表数据结构的页目录的虚 拟存储基址。在所述例子中,执行系统内存的直接虚拟存储寻址可以涉及利用虚拟存储地 址定义的页目录的目录项目,将虚拟存储地址转换为系统内存第二部分内的一物理地址。本发明的其它实施例提供一种执行分段卸载的方法。该方法涉及通过以网络处 理器的名义执行一系统内存的一用户存储空间的直接虚拟存储寻址,获取主机处理器运行 的用户进程发出的有效载荷数据的步骤,以及网络处理器通过一个或多个数据包对有效载 荷数据进行分段的步骤。在上述实施例中,通过一个或多个数据包对有效载荷数据进行分段,可以涉及通 过执行TCP分段创建一个或多个传输控制协议(TCP)数据包。本发明的其它实施例提供了一个可由一个或多个网络装置处理器读取的程序存 储装置,该装置嵌入一个可由一个或多个处理器执行的指令程序,从而实现传输控制协议 (TCP)分段卸载的方法步骤。接收描述传输控制协议有效载荷数据的虚拟存储地址的信息,以对存储在系统内存用户存储空间的TCP有效载荷数据进行响应。然后,基于存储在系统 内存中的页表与虚拟存储地址,执行系统内存的直接虚拟存储寻址,从而自用户存储空间 中获取TCP有效载荷数据。最后,通过一个或多个传输控制协议数据包,对TCP有效载荷数 据进行分段。本发明的其它实施例详见附图及以下详细描述。
本发明实施例通过附图为示例性说明,但并不用于限制本发明的范围。附图中相 似的部件使用相同的附图标记,其中图1所示为传统方式实现的TS0卸载处理;图2所示为依照本发明不同实施例的传输控制协议分段卸载处理;图3为本发明实施例所应用的系统示意图;图4A-4B示出可应用于本发明各个相关实施例的示例性虚拟寻址机制;图5为依照本发明实施例的向外的TCP流量处理流程图。
具体实施例方式本发明涉及有效传输网络流量的方法与系统。依据实施例,传输控制协议分段卸 载(TS0)处理无需将有效载荷数据从用户空间复制至内核空间以由或以网络接口的名义 对虚拟内存直接寻址,。此外,一实施例中提供数据分散/聚集(scatter-gather)功能,该 功能使数据可以存储于非连续用户空间及/或非连续内核空间且在该非连续用户空间及/ 或非连续内核空间形成一个或多个TCP数据包以获取所述数据包并将其连接在一起。在各 个实施例中,数据分散/聚集功能所采用的缓冲器描述符可以指向物理内存或虚拟内存。为简单起见,本发明的实施例描述于TCP流量分段的背景之下。但是需要注意的 是,本发明所描述当TS0操作通常足以实现其它传输层协议的卸载分段,或者通过网际协 议(IP)对本身不支持分段的协议进行分段,例如通用数据报协议(UDP)。因此,本发明实 施例提供的技术方案可以通过降低CPU开销来提高高带宽网络连接的向外吞吐率。下述说明中介绍了多个具体细节以提供对本发明实施例的充分理解。但是,本领 域技术人员可在无需熟悉部分具体细节的情况下执行本发明实施例。在其它实例中,主要 结构与装置详见流程图。本发明实施例包括多个步骤,描述如下。所述步骤可通过硬件部件执行或者采用 可执行机器指令实施。所述步骤可由硬件装置执行,也可内嵌于机器可执行指令中,通过调 用指令自身通用或特定的程序予以执行。所述步骤亦可通过软、硬件、固件与/或人工操作 相结合执行。本发明实施例可以一计算机程序产品提供,其可以包括一存储所述指令的机读介 质,所述指令能够为一计算机(或其他电子设备)编写程序以执行一操作。该机读介质可 以包括但不局限于软盘、光盘、压缩盘只读存储器(⑶-ROM)、磁光碟、ROM、随机存取存储器 (RAM)、可擦可编程只读存储器(EPR0M)、电可擦除只读存储器(EEPR0M)、磁卡或光卡、闪存 存储器或者任何其它形式的可存储电子指令的媒体/计算机可读介质。此外,本发明的实 施例也可以是下载的一计算机程序产品,所述程序可以自一远程计算机通过通信链接(例如调制解调器或网络连接)传输附于载波或其他传播介质的数据信号至一发出请求的计 算机。本发明涉及术语定义见下。“连接”或“连结”以及相关应用于操作范畴中的术语,并不单单局限于直接连接或 连结。“在一实施例中” “根据本发明的一实施例”以及类似的表述通常指代下述的特定 的性能、结构或特点包括于本发明的至少一个实施例中,以及可能包括在本发明的多于一 个实施例中。需要说明的是,这样的表达并不特指同一个实施例。如果说明书中在陈述一个部件或功能被包括或者具有某种属性时使用了“可 能”“可以”“能够”这样的表述,是指这样的部件或功能并不是必须被包括或具有某种属性。“响应”包括全部或部分的响应。图2所示为本发明实施例的TS0技术。可以理解的是本实例为包括硬件及软件的 多个功能单元的简要逻辑视图,。因此,图2无需示出所示硬件及/或软件或其之间连接的 实际物理视图。与图1表示的TS0技术相比,本实例中,不需将TCP有效载荷数据从用户内存空间 复制至内核内存空间,也不需存储在邻近存储器上。本例中,可以认为(正如现实中的)TCP 有效载荷由一个或多个用户进程发出,例如用户进程220。本实施例中,网络驱动器215、内核进程210及/或用户进程220可通过存储拟用 于介质接入控制(MAC)传输的数据或支持该传输的信息,影响系统内存230的内容。所示 系统内存230包含多个缓冲器描述符240、一报头缓冲器250、一页表255,以及多个有效载 荷缓冲器(例如有效载荷缓冲器1至有效载荷缓冲器N)。页表255是一个转换数据结构,详见下文,该页表允许接口硬件与系统内存联接 以直接寻址虚拟内存而从确保有效进行TS0处理。根据一项实施例,该页表转换数据结构 模拟32位英特尔架构(IA32)页表。在该实施例中,采用IA32系统时,网络驱动器215可 以重复使用该系统的自身页表结构。采用其它系统时,网络驱动器215可以从该自身页表 创建所需的页表结构。缓冲器描述符240指向对应的包含有TCP有效载荷数据的有效载荷缓冲器。在 本实例中,用户进程220可以发出TCP有效载荷数据并通过网络(未显示)传输该有效载 荷数据。用户进程220通过网络驱动器215,将传输控制协议有效载荷数据存储至系统内 存230。在一项实施例中,网络驱动器215可以应用多个缓冲器描述符240(例如缓冲器 描述符1至缓冲器描述符N)以指定多个存储在非邻接的存储器上的有效载荷数据缓冲器 260 (例如缓冲器描述符1至缓冲器描述符N)。通过缓冲器描述符260,用户进程发出的 TCP有效载荷数据得以分配。单个缓冲器描述符也可以表示存储有TCP有效载荷数据的单 个有效载荷缓冲器,或多个缓冲器描述符也可被限于表示存储在邻接存储器上的多荷载缓 冲器。特别的,在多个缓冲器描述符存储于物理上不邻近存储器的实施例中,可以提供一数 据分散/聚集功能以确保有效地从用户存储空间检索获取非邻接的有效载荷缓冲器。该数 据分散/聚集功能将在后文详述。内核进程210可以创建适当的传输控制协议模板报头(未显示),并将传输控制协 议模板报头存储在内核存储空间中的报头缓冲器250中,以备数据包290后续使用。
7
在一项实施例中,每个缓冲器描述符240均包括一页目录基地址寄存器字段 (PDBR field) 241、一缓冲器地址字段242、一 MSS字段243、一 CMD字段244、以及一长度字 段245。网络驱动器215可创建缓冲器描述符240以指向存储器(缓冲器)片,该存储器 片起始于由缓冲器地址242指定的一地址并具有由长度字段245规定的一定数量的字节。 匪S字段243规定一最大分段大小(maximum segment size,匪S),TCP分段进程280利用 该最大分段大小将TCP有效载荷数据合理分段为适当数量的数据包290。网络驱动器215 可以采用多个缓冲器描述符描述一个数据包的多个缓冲器。然后,数据分散/聚集硬件270 能够获取并连接该多个缓冲器以形成一个数据包,用于介质接入控制传输。缓冲器描述符240可以指向物理内存或虚拟内存。在一项实施例中,CMD字段244规定了虚拟内存的位数,从而描述缓冲器地址字段242包含的地址为虚拟地址或物理地 址。按照下文规定,当缓冲器地址字段242包含的地址为一虚拟地址时,PDBR字段241则 包含可用于将该虚拟地址转换为一物理地址的页表255中页目录基地址,从而实现用户存 储空间的直接虚拟内存寻址,以从相应有效载荷缓冲器恢复有效载荷数据。在一项实施例中,一个或多个上述功能单元的功能性可以进行多种组合。例如数 据分散/聚集模块270与TCP分段模块280可以组合。而且,可以采用任何适当的通信方 法(例如通过一个或多个通信路径传递信息、参数、及/或信号等)连接各个功能单元。 此外,所述功能单元可以按照任何适当的互连架构(例如完全连接、超链接等)实现物理 联接。依据本发明实施例,功能单元可以采用任何适当的逻辑类型(例如数字逻辑、软 件代码等)执行本发明所述的操作。本发明实施例相关的任何功能单元可以包括机器可读 介质,该可读介质包括本发明所述的操作执行指令。机器可读介质包括任何采用机器(例 如计算机)可读形式提供信息(例如存储及/或传输)的机制。例如可用计算机处理 的介质包括但不限于只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储器、光学存储介 质或闪存装置。依据一项实施例及如下文所述,连接至系统总线的一总线/存储接口以网络装置 的名义的网络接口执行数据散/聚功能。网络接口执行TCP分段处理。至于用户进程220,值得注意的是,在不同实施例中,如果有效载荷缓冲器260可 以重新使用及/或相关存储器可以释放,则可通过锁定及/或信令技术与用户空间进程通 信。在一实施例中,一旦网络装置215针对一特殊有效载荷缓冲器创建相应的缓冲器描述 符,则该网络装置215可以标记页面为用户空间应用程序只读。采用这种方法时,如果该用 户空间应用程序220再次写入缓冲器,则例外情况将被提出,内核将能够制出一份适于用 户应用程序220的可写复件。在其它替代实施例中,用户空间进程220可以等待,直至尝试 再次写入有效载荷缓冲器之前已经发出来自效载荷缓冲器的有效载荷数据。例如在Linux vmspliceO系统调用情况下,页面停止分享之前,用户进程220不应再次写入页面。在其它 实施例中,可以按照一个较高的级别执行同步处理(例如其它终端确认收到有效载荷数 据的高级协议)。图3为本发明实施例所应用的网络装置300的示意图。本实施例中,网络装置300 包括一网络接口 350、一总线或存储器接口 340、一互连总线、一通用处理器310、以及一系 统内存。通用处理器320可为适于执行由操作系统发出的软件指令的处理器。因此,通用处理器可以但不限于采用个人计算机当前使用的多种类型的处理器例如Intel、AMD处理器等。按照本发明所公开的,本领域技术人员必须能够了解本发明不同实施例中可能采用 的多种通用处理器。在一项实施例中,处理器320可以由半导体器件实现,例如可编程门阵 列或专用集成电路。总线或存储器接口 340控制互连总线330及对系统内存320的访问。在本发明特 定实施例中,互连总线330采用外设部件互连标准(PCI)总线,系统内存320采用随机存取 存储器330,总线或存储器接口 340为可控制外设部件互连标准(PCI)总线并提供系统内存 330访问的芯片集。需要注意的是互连总线330可以但不限于采用外设部件互连标准(PCI) 接口、扩充外设部件互连标准(PCI-X :Peripheral Component Interconnect Extended)接 口、快捷夕卜设部件互连标准(PCIe :Peripheral Component Interconnect Express)接口或 超传输(HT =HyperTransport)接口。按照图2所示,系统内存320可能已存储一个或多个缓冲器描述符(例如缓冲器 描述符240)、一包含在报头缓冲器(例如报头缓冲器250)的传输控制协议模板报头、一 页表以及一个或多个有效载荷缓冲器(例如有效载荷缓冲器1至有效载荷缓冲器N)及其 它信息。页表255是一种转换数据结构,下文将作进一步描述,该页表允许接口硬件连结至 系统内存以实现直接虚拟内存寻址,从而确保有效实现传输控制协议分段卸载处理。依据特定实施例,网络接口 350可以为一网络接口装置(NIU :networkinterface unit),例如网络接口卡(NIC),或其它网络接口装置,以确保网络装置300与外网连接。在 一项实施例中,网络接口 350包括一网络处理器或其它数字逻辑(未显示)以确保执行通 用处理器310的传输控制协议分段卸载处理。在一项实施例中,可以通过网络处理器执行 传输控制协议分段卸载处理。或者,可在硬件中执行传输控制协议分段卸载处理,内核仅对 数据分散/聚集表中的各个向量进行存储地址转换处理。 在一项实施例中,总线或存储器接口 340执行数据分散/聚集处理,能够基于存储 于系统内存320的页表转换数据结构或基于芯片内缓存(称作转换后备缓冲器或TLB345) 中最近使用的页目录项目及页表项目,执行系统内存320的直接虚拟内存寻址。在本发明 的部分实施例中,总线或存储器接口 340执行虚拟寻址的目的仅在于通过外设部件互连标 准(PCI)总线,访问储存在用户存储空间的有效载荷缓冲器内的TCP有效载荷数据。在这 种情况下,总线或存储器接口 340仅包括一系统内存320的转换后备缓冲器TLB345。按照 下文所述,上述TLB可能包括4-KB与4-MB页面两者的参考。多数情况下,采用同一任务项 下的转换后备缓冲器TLB,进行内存分页。PCI总线循环至页面目录,且仅当转换后备缓冲 器TLB345不包含被请求页面的转换信息时,需执行系统内存320内的页表。当页目录项目 或页表项目在不同任务间变更时,可以停止转换后备缓冲器TLB 345的运行。图4A-4B示出可应用于本发明各个相关实施例的示例性虚拟寻址机制。图4A表 示将虚拟地址400映射至示例性4-KB页面440时,页目录410及页表430的数据层次。页 目录410中的各项目,例如目录项目411,指向页表430。页表430各项目,例如页表项目 431,指向特定物理地址指定的物理内存中的页面440,例如物理地址441。根据(i)可由上述缓冲器描述符的页目录基地址寄存器PDBR字段420指定的页 目录410的基地址以及(ii)虚拟地址400的偏移字段403、目录字段401、页表字段402,总 线/存储器接口 340可以执行用户存储空间的直接虚拟内存寻址,从而以网络处理器的名义,例如以网络接口 350的名义,从相应的有效载荷缓冲器上获取有效载荷数据。如果相关通用处理器中止页目录410的一项或多项,可以采用寄存器(未显示) 示出。在该中止发生时,应由网络接口 350及/或总线或存储器接口 340通过访问系统内 存320刷新页表。图4B所示为采用页目录460将虚拟地址映射至示例性4_MB页面480的制程。页 目录460的各项目,例如目录项目461,指向物理内存中的4-MB页面480。根据(i)可由上述缓冲器描述符的页目录基地址寄存器PDBR字段470指定的页 目录460的基地址以及(ii)虚拟地址450的偏移字段452、目录字段451,总线/存储器接 口 340可以执行用户存储空间的直接虚拟内存寻址,从而以网络处理器的名义,例如以网 络接口 350的名义,从相应的有效载荷缓冲器上获取有效载荷数据。如果相关通用处理器中止页目录460的一项或多项,可以采用寄存器(未显示)。 在这种情况下,应由网络接口 350及/或总线或存储器接口 340通过访问系统内存320刷 新页表。图5为示出本发明实施例的向外TCP处理流程图。依据特定实施例,本发明所述 之各个步骤及判断单元可以通过硬件部件实现,内嵌于机器可执行指令中,通过调用指令 自身通用或特定的程序予以执行。所述步骤亦可通过软、硬件、固件与/或人工操作相结合 执行。依据本实施例,向外TCP流量处理从判断流程510起始。在判断流程510,判断是 否存在有效载荷数据。如果存在,继续至判断流程520 ;如不存在,返回至判断流程510直 至出现有效载荷数据。在本发明一项实施例中,网络接口(例如网络接口 350)或总线/ 存储器接口(例如总线或存储器340)定期中断以触发检查待处理的向外的有效载荷数据 是否可用。或者,每当网络驱动器(网络驱动器215)将缓冲器描述符存储至系统内存(例 如系统内存230)时,该中断可被事件触发并被接收。此外,该中断可基于一存储至系统内 存的一有效载荷缓冲器得以接收。采用本技术领域内任何现有中断机制接收上述中断,包 括但不限于采用轮询结构体系或采用与网络接口相关的网络处理器的异步中断端口。其中 在该轮询结构体系中,总线/存储器接口或网络接口定期检测一中断寄存器。此外或者作 为替代方案,当网络接口具备进程及存储资源,能够通过网络传输附加数据至与网络相联 接装置时,可以按照需要基准控制网络接口或总线/存储器接口。按照本申请书规定,本领 域技术人员能够识别本发明不同实施例中可能采用的多种中断及/或轮询机制。如果已经确认判断流程520存在有效载荷数据,需要进一步判断有效载荷数据存 储在一虚拟地址缓冲器(例如存储于用户空间)或存储在一物理地址缓冲器(例如存 储于内核空间)。如果有效载荷数据存储在虚拟地址缓冲器上,继续进行流程540 ;否则,执 行流程530。根据一项实施例,参照与有效载荷数据相关的一缓冲器描述符,判断有效载荷 数据是否存储在虚拟地址缓冲器上。例如如上所述,各有效载荷缓冲器可以具备一对应的 缓冲器描述符,其包含定义系统内存中有效载荷数据起始地址的一个或多个地址的相关信 息、有效载荷数据长度(例如字节)的相关信息、应用于有效载荷数据的最大分段大小的 相关信息、定义上述地址的类型为虚拟地址或物理地址的虚拟存储指示器的相关信息以及 其它用于定位、获取、或处理有效载荷数据的信息。在其它实施例中,由于全部有效载荷数 据均存储至虚拟内存中,因此不需上述确认工作。
在流程530,已经判断该有效载荷数据存储在物理地址缓冲器上。因此,该有效载荷数据的地址(例如依据对应缓冲器描述符所确定的)得以识别并将其作为物理地址。在流程540上,已经确认有效载荷数据存储在虚拟地址缓冲器上。因此,采用虚拟 寻址机制(例如页表转换数据结构,如页表255或图4A、图4B所示的机制),将有效载荷 数据地址(例如由对应缓冲区描述符所规定的)转换为物理地址。在一项实施例中,利用 地址不同部分提供的信息,移动页表,从页表转换数据结构中提取物理地址。在流程550上,利用在流程540中确认的物理地址、或在判断流程520中确认为物 理地址的原始缓冲器地址,从系统内存获取有效载荷数据。依据一项实施例,总线或存储器 接口执行虚拟内存直接寻址,并以网络接口的名义从系统内存获取数据。在一项实施例中, 获取动作以数据分散/聚集进程结束。在数据分散/聚集进程中,多组有效载荷数据存储 在非邻近存储器上,作为多荷载缓冲器的构成部分,并通过获取多荷载缓冲器的方式拼凑 数据。在多数可能使用情况下,一个数据包包含一个指向由内核创建的(MAC+IP+TCP)报头 的物理地址缓冲器、一个或多个指向由用户模式应用程序发出的传输控制协议有效载荷的 虚拟地址缓冲器。通过虚拟内存寻址功能,不得从用户存储空间复制至内核存储空间,避免 在网络流量分段处理过程中网络装置通用处理器的资源使用量增加。在流程560上执行传输控制协议分段处理。在一项实施例中,从物理地址缓冲器 及虚拟地址缓冲器获取所有数据(分别为报头及有效载荷数据)之后,执行传输控制协议 分段卸载,将有效载荷分段为多个符合最大分片尺寸要求的数据包。例如通过对从适当 数量符合最大分片尺寸要求的数据包收集的有效载荷数据进行划分,形成一个或多个数据 包(例如数据包290)。依据一项实施例,采用独立于发出有效载荷数据的通用处理器的 网络处理器,进行分段处理,提高系统吞吐率,减少通用处理器的运行磨损。通过校验与卸 载(CSO),计算正确的网际协议IP,并校验各段传输控制协议。依据本发明实施例,可在不 需网络装置通用处理器干预的情况下,完成传输控制协议分段卸载、校验与卸载。虽然本文中提出并描述了一些特殊的实施例。但应该理解的是这些特殊的实施例 仅作为示例提出,并不作为对本发明的限制。本发明还可有其他多种实施例,在不背离本发 明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和 变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
一种执行分段卸载的方法该方法包括一接口为一网络处理器执行一系统内存的一用户存储空间的直接虚拟内存寻址,从而获取由运行在主机处理器上的用户进程发出的有效载荷数据;以及所述网络处理器通过一个或多个数据包对有效载荷数据进行分段处理。
2.根据权利要求1所述的方法,其中,所述通过一个或多个数据包对有效载荷数据进 行分段处理的步骤包括通过执行传输控制协议分段,创建一个或多个传输控制协议数据 包。
3.根据权利要求2所述的方法,其进一步包括在该系统内存中存储一缓冲器描述符, 该缓冲器描述符包含i、描述包含该有效载荷数据至少一部分的该系统内存中的一数据包缓冲器的一起始 地址的信息;以及ii、描述该起始地址为虚拟地址或物理地址的信息。
4.根据权利要求2所述的方法,其进一步包括在该系统内存中存储多个缓冲器描述 符,该系统内存中包括所述多个缓冲器描述符的第一缓冲器描述符包含i描述包含该有效载荷数据的一第一部分的系统内存中第一个数据包缓冲器的一第一 个起始地址的信息;以及ii描述该第一个起始地址为虚拟地址或物理地址的信息; 所述多个缓冲器描述符的一第二缓冲器描述符包含i描述包含该有效载荷数据的一第二部分的系统内存中第二个数据包缓冲器的一第二 个起始地址的信息;以及ii描述该第二个起始地址为虚拟地址或物理地址的信息。
5.根据权利要求3所述的方法,其中,该缓冲器描述符进一步包含描述一页目录的一 虚拟内存基地址的信息,且其中所述执行用户存储空间直接虚拟内存寻址进一步包括采用 由所述起始地址指定的该页目录的一目录项目,将该起始地址转换为该用户存储中的与该 数据包缓冲器相关的一物理地址。
6.一种执行传输控制协议分段卸载的方法,该方法包括主机接口对运行在中主机处理器上的用户进程发出响应,将传输控制协议有效载荷数 据存储至一系统内存的用户存储空间,该主机接口通过互连总线连接至系统内存,接收描 述该用户存储空间内该传输控制协议有效载荷数据的一虚拟内存地址的信息;该主机接口按照存储在该系统内存上的一页表及该虚拟内存地址,为该网络处理器执 行该系统内存的直接虚拟内存寻址,从而为该网络处理器从该用户存储空间获取该传输控 制协议有效载荷数据;以及该网络处理器通过一个或多个传输控制协议数据包对该传输控制协议有效载荷数据 进行分段。
7.一种网络装置包括处理器,负责执行一个或多个内核进程以及一个或多个用户进程; 系统内存,其与该处理器连接,其内存储有一页表数据结构,该页表数据结构包含与将 虚拟地址转换为物理地址相关的信息,该系统内存包含一第一部分内存,通过一个或多个内核进程运行,第二部分通过一个或多个用户进程运行;操作网络接口,通过一个或多个网络数据包对有效载荷数据进行分段,并通过网络传 输一个或多个网络数据包;互连总线与处理器及系统内存连结;以及操作与网络接口及互连总线联接的接口,按照与有效载荷数据及页表数据结构相关的 虚拟存储地址,执行系统内存的虚拟存储直接寻址,以网络接口的名义从系统内存的第二 部分获取有效载荷数据。
8.根据权利要求7所述的网络装置,其中该有效载荷数据包含传输控制协议有效载荷 数据;所述一个或多个网络数据包包含一个或多个传输控制协议数据包。
9.根据权利要求7所述的网络装置,其中该接口可进一步用于从该系统内存获取一缓 冲区描述符,该缓冲区描述符包含i、描述虚拟存储地址的信息;以及ii、该页表数据结构的一页目录的虚拟存储基地址的信息,以及所述执行该系统内存 的虚拟内存直接寻址包括利用由该虚拟存储地址定义的该页目录的一目录项目,在该系统 内存的第二部分内存中,将该虚拟存储地址转换为一物理地址。
10.一种执行分段卸载的方法包括通过为一网络处理器执行一系统内存的一用户存储空间的直接虚拟内存寻址,获取由 运行在一主机处理器上的一用户进程发出的有效载荷数据的步骤;以及该网络处理器通过一个或多个数据包,对该有效载荷数据进行分段的步骤。
11.根据权利要求10所述的方法,其中所述通过一个或多个数据包对有效载荷数据进 行分段的步骤,包括通过执行传输控制协议分段处理,创建一个或多个传输控制协议数据 包。
12.—个或多个网络装置处理器的可读程序存储装置,执行由一个或多个处理器可执 行的指令程序,实施传输控制协议分段卸载所需的方法步骤,具体包括以下方面对存储在系统内存用户存储空间的传输控制协议有效载荷数据发出响应,接收描述传 输控制协议有效载荷数据虚拟存储地址的有关信息;按照存储在系统内存中的页表及虚拟存储地址,执行系统内存虚拟存储直接寻址,从 用户存储空间获取传输控制协议有效载荷数据;以及通过一个或多个传输控制协议数据包对传输控制协议有效载荷数据进行分段。
全文摘要
本发明公开虚拟内存协议分段卸载,提供有效传输网络流量的方法与系统。依据实施例,提供了执行分段卸载的方法,例如传输控制协议分段卸载(TSO)。接口以网络处理器的名义执行用户内存空间的直接虚拟存储寻址,从而获取由在主机处理器上运行的用户进程发出的有效载荷数据。然后,网络处理器通过一个或多个数据包将有效载荷数据进行分段。
文档编号G06F12/08GK101827072SQ20091014746
公开日2010年9月8日 申请日期2009年6月9日 优先权日2008年6月9日
发明者周煦, 张冠松, 陈云宇, 黄林 申请人:飞塔公司