CN105993148B - 网络接口 - Google Patents

网络接口 Download PDF

Info

Publication number
CN105993148B
CN105993148B CN201480065315.2A CN201480065315A CN105993148B CN 105993148 B CN105993148 B CN 105993148B CN 201480065315 A CN201480065315 A CN 201480065315A CN 105993148 B CN105993148 B CN 105993148B
Authority
CN
China
Prior art keywords
data
frame
buffer area
network interface
write
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
CN201480065315.2A
Other languages
English (en)
Other versions
CN105993148A (zh
Inventor
马修·查普曼
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.)
Cisco Technology Inc
Original Assignee
Zomojo Pty Ltd
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 Zomojo Pty Ltd filed Critical Zomojo Pty Ltd
Publication of CN105993148A publication Critical patent/CN105993148A/zh
Application granted granted Critical
Publication of CN105993148B publication Critical patent/CN105993148B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • H04L12/427Loop networks with decentralised control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/42Loop networks
    • H04L12/423Loop networks with centralised control, e.g. polling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9021Plurality of buffers per packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/40Support for services or applications
    • 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
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Communication Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

本说明书中公开了一种低延时网络接口以及补充的数据管理协议。所述数据管理协议通过将控制数据与网络数据整合从而减少了网络接口和对应的主机计算系统之间的专用的控制交换。网络接口还可以促进端口转发和数据记录而不需要外部网络交换机。

Description

网络接口
技术领域
本发明涉及一种用于计算系统的网络接口以及管理数据通信的方法。
背景技术
网络接口有助于计算系统和数据网络之间的通信。典型的网络接口具有与外部网络建立通信连接的专用硬件。该硬件可以与主机计算系统的其他部件集成。专用的固件和/或软件也可以并入网络接口。网络接口的常用名包括网络接口卡(NIC)、网络接口控制器、网络接口适配器和网络接口单元。
支持网络功能的计算系统通常具有至少一个专用的网络接口。网络接口在主机计算系统的内部系统总线(例如PCI或PCI快速总线)和外部数据网络(例如以太网)之间提供桥接。网络接口可以与其他系统部件(例如与系统主板集成的“板上”(on-board)网络控制器)集成或者被提供为模块化部件(例如PCI-e卡)。
常规的网络接口具有两个主要功能:接收来自外部网络的数据;以及将数据从主机计算系统传输到外部网络。在这两种操作期间,网络接口与主机计算系统的系统总线交互以管理数据交换。这些交互遵照允许主机计算系统执行的软件应用与网络接口交互的协议(通常由网络接口限定并且通过用于网络接口的驱动器实施)。
常规的接口驱动协议通常以通信延时为代价而优先考虑资源最小化。使用常规的驱动协议在网络接口和主机计算系统之间的数据事务通常包括控制消息交换以协调数据传输(例如数据分配指针和读取确认的交换)。这会产生推迟系统间的网络数据传输的显著延时。
发明内容
第一方面,本发明提供一种数据接收方法,包括通过网络接口接收来自外部网络的数据,并且通过内部系统总线将所述数据传输到主机计算系统内的存储器中。网络接口规定主机计算系统存储器内的数据的分配,而不受主机计算系统的干预。
第二方面,所述数据接收方法包括:
通过网络接口接收来自外部网络的多个数据帧,并且
通过内部系统总线将每个数据帧从所述网络接口传输到在主机计算系统的存储器中分配的接收缓存区,
所述网络接口规定所述接收缓存区内的数据帧的分配,而不受所述主机计算系统的干预。
在一个实施方式中,所述方法包括采用开环写入协议将每个接收的数据帧从所述网络接口传输到所述接收缓存区。
在一个实施方式中,所述方法包括将接收的数据帧相继写入所述接收缓存区内的连续的存储器范围。
在一个实施方式中,所述方法包括在用于多个数据帧的存储容量的连续存储器中分配所述接收缓存区。
在一个实施方式中,所述方法包括将分配的存储器分成多个具有相同存储容量的接连单独可寻址的缓存槽(slot)。
在一个实施方式中,所述方法包括将接收的数据帧接连地写到所述接收缓存区内的每个缓存槽。
在一个实施方式中,所述方法包括递归地覆写所述接收缓存区,而不需要所述主机计算系统的读取确认。
在一个实施方式中,所述方法包括将超出所述缓存槽的所述存储容量的已接收的数据帧分成片段,并且将帧片段分配到所述接收缓存区内的多个接连的缓存槽。
在一个实施方式中,所述方法包括生成控制数据,所述控制数据通过限定在接连的缓存槽中的帧数据的关系便于片段化的数据帧的重构。
在一个实施方式中,所述方法包括将所述控制数据附加在每个帧片段的结尾处,使得所述控制数据在与帧片段相同的总线事务中写在对应的缓存槽的结尾。
在一个实施方式中,所述控制数据还限定分配给对应的缓存槽的所述帧片段的长度。
第三方面,本发明提供了一种网络接口,该网络接口包括网络侧、主机侧和控制系统,所述网络侧接收来自外部数据网络的数据,所述主机侧通过内部系统总线将所述数据传送到主机计算系统内的存储器中,所述控制系统规定数据在主机计算系统存储器中的分配,而不受主机计算系统的干预。
第四方面,所述网络接口包括:
网络侧,所述网络侧接收来自外部数据网络的多个数据帧,
主机侧,所述主机侧通过主机内部系统总线将所述数据帧传送到在主机计算系统的存储器内分配的接收缓存区,以及
控制系统,所述控制系统规定所述接收缓存区内的数据帧的分配,而不受主机计算系统的干预。
在一个实施方式中,所述网络接口包括写入控制器,所述写入控制器使用开环写入协议将每个接收的数据帧传送到所述接收缓存区。
在一个实施方式中,所述写入控制器被配置成将所述数据帧相继写入所述接收缓存区内的连续的存储器范围。
在一个实施方式中,所述网络接口包括缓存区管理模块,所述缓存区管理模块在分配给所述接收缓存区的连续的存储器中分配具有相同存储容量的多个接连单独可寻址的缓存槽。
在一个实施方式中,所述网络接口包括写入控制器,所述写入控制器将接收的数据帧接连地传输到所述接收缓存区内的每个缓存槽。
在一个实施方式中,所述写入控制器递归地覆写所述接收缓存区,而不需要所述主机计算系统的读取确认。
在一个实施方式中,所述网络接口包括帧管理模块,所述帧管理模块将超出所述缓存槽的存储容量的已接收的数据帧分成片段并且将帧片段分配到所述接收缓存区内的多个接连的缓存槽。
在一个实施方式中,所述帧管理模块生成控制数据,所述控制数据通过限定接连的缓存槽中的帧数据的关系来促进片段化的数据帧的重构。
在一个实施方式中,所述写入控制器将所述控制数据附加在每个帧片段的结尾处使得控制数据在与帧片段相同的总线事务中写到对应的缓存槽的结尾处。
在一个实施方式中,所述控制数据还限定分配给所述对应的缓存槽的所述帧片段的长度。
第五方面,本发明提供了一种缓存区访问协议,包括:
从存储器缓存区内的多个缓存槽读取写入迭代计数器,所述写入迭代计数器限定上次在相应缓存槽写入数据的时刻,
确定写入地址,所述写入地址限定接收数据的下一个缓存槽,所述写入地址是根据所述写入迭代计数器确定的,并且
循环地轮询所述写入地址以检测对应的缓存槽的写入更新。
第六方面,所述缓存区访问协议包括:
访问循环缓存区内的多个数据缓存槽并且从每个访问的缓存槽读取写入迭代计数器,所述写入迭代计数器在数据最终写入相应缓存槽时限定写入迭代,
确定用于所述循环缓存区的写入地址,所述写入地址限定待用数据覆写的下一个缓存槽,所述写入地址通过分配给邻近的缓存槽的所述写入迭代计数器的转变被限定,并且
循环地轮询所述写入地址以检测写入更新,所述写入更新是根据对于对应的缓存槽的所述写入迭代计数器的变化确定的。
在一个实施方式中,所述协议包括:
从所述循环缓存区内的指定的缓存槽复制写入迭代计数器并且根据复制的写入迭代计数器创建读取迭代计数器,并且
将所述读取迭代计数器与分配给所述循环缓存区内的接连的缓存槽的多个写入迭代计数器比较以识别所述写入地址。
在一个实施方式中,所述协议包括:
在所述循环缓存区内的指定的缓存槽初始化读取指针,
将分配给所述指定的缓存槽的所述写入迭代计数器与所述读取迭代计数器比较,并且
增加所述读取指针以与所述循环缓存区内的接连的缓存槽对准,直至所述读取指针与写入地址一致。
在一个实施方式中,所述协议包括在检测到写入更新之后,增加所述读取指针以与相继的缓存槽对准。
在一个实施方式中,所述协议包括维持用于所述循环缓存区的循环计数器,所述循环计数器限定当前的写入迭代,所述循环计数器在每个写入迭代完成时增加。
在一个实施方式中,所述协议包括随着到相应的缓存槽的每个写入事务,将所述循环计数器写入所述循环缓存区内的每个缓存槽,所述循环计数器提供写入迭代计数器用于读取同步。
在一个实施方式中,所述协议包括:
在检测到写入更新时,从与所述写入地址对应的缓存槽提取数据,
在提取所述数据后检查所述写入迭代计数器以确认提取过程,并且
如果在所述写入更新的检测之后所述写入迭代计数器已经变化,则生成读取错误。
在一个实施方式中,所述协议包括:
在写入更新后从与所述写入地址对应的当前缓存槽中读取长度参考,并且
在所述长度参考表明所述当前缓存槽包含帧片段时,将来自所述当前缓存槽的数据与来自相继的缓存槽的数据组合。
第七方面,本发明提供一种缓存区访问系统,包括:
参考模块,所述参考模块从存储器缓存区内的多个数据缓存槽读取写入迭代计数器,写入迭代计数器限定上次在相应缓存槽中写入数据的时刻,
同步模块,所述同步模块确定写入地址,所述写入地址限定接收数据的下一个缓存槽,所述写入地址是根据所述写入迭代计数器确定的,以及
写入监测器,所述写入监测器循环地轮询所述写入地址以检测对应的缓存槽的写入更新。
第八方面,所述缓存区访问系统包括:
参考模块,所述参考模块访问循环缓存区内的多个数据缓存槽并且评估来自每个访问的缓存槽的写入迭代计数器,所述写入迭代计数器限定上次在相应缓存槽中写入数据时的写入迭代,
同步模块,所述同步模块确定循环缓存区的写入地址,所述写入地址限定待用数据覆写的下一个缓存槽,以及
写入监测器,所述写入监测器循环地轮询写入地址以检测写入更新,所述写入更新是根据对应的缓存槽的写入迭代计数器的变化确定的。
在一个实施方式中,所述参考模块从所述循环缓存区内的指定的缓存槽复制写入迭代计数器并且根据复制的写入迭代计数器创建读取迭代计数器,并且所述同步模块将所述读取迭代计数器与分配给所述循环缓存区内的接连的缓存槽的多个写入迭代计数器比较以识别所述写入地址。
在一个实施方式中,所述同步模块在所述循环缓存区内的指定的缓存槽初始化读取指针,将分配给指定的缓存槽的所述写入迭代计数器与所述读取迭代计数器比较,并且增加所述读取指针以与所述循环缓存区内的相继的缓存槽对准直至所述读取指针与所述写入地址一致。
在一个实施方式中,在所述写入监测器检测到写入更新时,所述同步模块增加所述读取指针以与所述缓存区内的相继的缓存槽对准。
在一个实施方式中,所述系统包括提取模块,所述提取模块在检测到写入更新时从与所述写入地址对应的缓存槽提取数据,在提取数据后检查所述写入迭代计数器以确认提取过程,并且如果在所述写入更新的检测之后所述写入迭代计数器已经变化,则生成读取错误。
在一个实施方式中,所述系统包括帧重构模块,所述帧重构模块在写入更新后从与所述写入地址对应的当前缓存槽读取长度参考,并且在所述长度参考表明相应缓存槽包含来自单个帧的数据时,将来自所述当前缓存槽的数据与来自相继的缓存槽的数据组合。
第九方面,本发明提供一种数据传输方法,包括将输出网络数据缓存在主机计算系统处理器内,并且将缓存的输出网络数据直接写入网络接口内的专用的存储器中,所述专用的存储器映射到所述主机计算系统内的本地存储器分级体系。
第十方面,所述数据传输方法包括:
将来自网络接口的专用的存储器映射到主机计算系统内的本地存储器分级体系,
将输出网络数据缓存在主机计算系统处理器的写入组合缓存区内,
将来自所述写入组合缓存区的所述输出网络数据写入所述专用的存储器,并且
将数据从所述网络接口传输到外部网络。
在一个实施方式中,所述方法包括将帧参考写入所述网络接口内的分立的控制寄存器以发起向外部网络的数据帧的传输,所述帧参考限定了所述专用的存储器中的对应的帧的位置。
在一个实施方式中,所述方法包括将所述分立的控制寄存器映射到所述主机计算系统的基地址寄存器零。
在一个实施方式中,所述方法包括将所述专用的网络接口存储器映射到所述主机计算系统的基地址寄存器二,并且使能所映射的存储器的写入组合。
在一个实施方式中,所述方法包括从专用的存储器中提取单独的数据帧用于传输到外部网络,所述数据帧由写入到所述分立的控制寄存器的帧参考和在所述专用的存储器中与所述数据帧一起写入的帧长度限定。
在一个实施方式中,所述方法包括将控制数据与所述输出网络数据一起写入所述专用的存储器,所述控制数据包括限定对应数据帧的大小的帧长度。
在一个实施方式中,所述方法包括在与所述输出网络数据一起写入到所述专用的存储器的所述控制数据中包含反馈描述符,所述反馈描述符便于从所述网络接口到所述主机计算系统的确认消息的传输。
在一个实施方式中,所述方法包括将帧标识符从专用的存储器写入到主机计算系统存储器内的分配的反馈寄存器,以报告从所述网络接口到外部网络的对应的数据帧的传输。
在一个实施方式中,所述方法包括在包含对应的数据帧提取的整合的存储器访问事务中,从所述专用的存储器中提取限定主机计算系统反馈寄存器的帧标识符和参考地址。
第十一方面,本发明提供一种数据传输系统,包括存储器管理模块和写入控制器,所述存储器管理模块将来自网络接口的存储器映射到主机计算系统内的本地存储器分级体系,所述写入控制器在将所述输出网络数据直接写入映射的存储器之前,将输出网络数据缓存在主机计算系统处理器内。
第十二方面,所述数据传输系统包括:
存储器管理模块,所述存储器管理模块将来自网络接口的专用的存储器映射到主机计算系统内的本地存储器分级体系,以及
写入控制器,所述写入控制器在将输出网络数据写入专用的网络接口存储器之前将输出网络数据缓存在写入组合缓存区内。
在一个实施方式中,所述系统包括控制模块,所述控制模块将帧参考写入所述网络接口内的分立的控制寄存器以发起从所述网络接口到所述外部网络的数据帧的传输,所述帧参考限定对应帧在所述专用的存储器中的位置。
在一个实施方式中,所述存储器管理模块将所述分立的控制寄存器映射到所述主机计算系统的基地址寄存器零。
在一个实施方式中,所述存储器管理模块将专用的网络接口存储器映射到所述主机计算系统的基地址寄存器二,并且使能所映射的存储器的写入组合。
在一个实施方式中,所述系统包括传输引擎,所述传输引擎从所述专用的存储器中提取单独的数据帧用于传输到外部网络,所述数据帧通过写入到所述分立的控制寄存器的对应的帧参考和与数据帧一起写入所述专用的存储器中的帧长度被限定。
在一个实施方式中,所述系统包括控制模块,所述控制模块在所述写入控制器将所述网络数据写入所述专用的存储器前将控制数据与输出网络数据组合,所述控制数据包括限定了对应的数据帧的大小的帧长度。
在一个实施方式中,所述控制模块将反馈描述符包含在与所述输出网络数据组合的控制数据中,所述反馈描述符有助于从所述网络接口到所述主机计算系统的确认消息的传输。
在一个实施方式中,所述系统包括通知引擎,所述通知引擎将帧标识符从专用的存储器写入到主机计算系统存储器内的分配的反馈寄存器,以报告对应的数据帧从所述网络接口到外部网络的传输。
在一个实施方式中,所述通知引擎在包括对应的数据帧提取的整合的存储器访问事务中,从所述专用的存储器提取限定所述主机计算系统反馈寄存器的帧标识符和参考地址。
第十三方面,本发明提供一种网络接口,包括多个数据端口和控制系统,所述数据端口与外部数据网络连接,所述控制系统管理在数据端口和主机计算系统的内部系统总线之间的数据交换,
所述控制系统包括记录模块,所述记录模块复制在所述系统总线和单独的数据端口之间交换的数据,并且将复制的数据传输到指定的记录端口。
第十四方面,所述网络接口包括:
网络侧,所述网络侧与外部数据网络连接以便于数据交换,所述网络侧具有多个数据端口,每个数据端口限定用于通信的数据通道,
主机侧,所述主机侧与主机计算系统的内部系统总线连接以便于在所述网络接口和所述主机计算系统之间的数据交换,以及
控制系统,所述控制系统管理在所述网络接口的所述网络侧和所述主机侧之间的数据交换,所述控制系统包括记录模块,所述记录模块复制来自单独的数据通道的数据并且将复制的数据传输到指定的记录端口。
在一个实施方式中,所述网络接口包括记录接口,所述记录接口便于所述记录模块的配置,所述记录接口具有多个控制寄存器,所述控制寄存器限定通过所述记录模块复制的数据通道。
在一个实施方式中,所述网络接口包括记录控制器,所述记录控制器将来自每个数据通道的数据分成接收流和发送流,所述记录接口具有多个控制寄存器,所述控制寄存器限定通过所述记录模块复制的所述数据流。
在一个实施方式中,所述网络接口包括记录单元,所述记录单元将来自多个数据端口的数据组合,所述记录单元具有将组合的数据传输到外部网络的专用的记录端口。
第十五方面,本发明提供一种数据记录方法,包括自主地复制计算系统网络接口内的网络数据并且将复制的数据传输到网络接口的指定的记录端口用于传输到外部记录系统。
第十六方面,所述数据记录方法包括:
使用具有多个数据端口的网络接口在主机计算系统和外部数据网络之间交换数据,所述网络接口与主机计算系统的内部系统总线连接,以及
从单独的数据端口复制数据并且将复制的数据传输到与所述网络接口集成的指定的记录端口。
在一个实施方式中,所述方法包括选择单独的数据端口用于记录,所述数据端口是使用在所述网络接口内分配的专用的控制寄存器被选择的。
在一个实施方式中,所述方法包括:
将在每个数据端口接收的数据分成接收流和发送流,并且
选择单独的数据流用于记录,所述流是使用在所述网络接口内分配的专用的控制寄存器被选择的。
在一个实施方式中,所述方法包括组合来自多个数据端口的数据并且将组合的数据从主机计算系统传输到外部网络。
第十七方面,本发明提供一种网络接口,该网络接口包括多个数据端口和控制系统,所述控制系统管理在所述数据端口和主机计算系统的内部系统总线之间的数据交换,所述控制系统包括转发模块,所述转发模块在分立的数据端口之间直接传输数据而不受主机计算系统的干预。
第十八方面,所述网络接口包括:
网络侧,所述网络侧与外部数据网络连接以便于数据交换,所述网络侧具有多个数据端口,
主机侧,所述主机侧与主机计算系统的内部系统总线连接以便于在所述网络接口和所述主机计算系统之间的数据交换,以及
控制系统,所述控制系统管理在所述网络接口的所述网络侧和所述主机侧之间的数据交换,所述控制系统包括转发模块,所述转发模块从网络接口的限定的数据端口直接接收数据,并且通过所述网络接口的另一个数据端口将接收的数据传输到外部数据网络,而不受所述主机计算系统的干预。
在一个实施方式中,所述网络接口包括转发接口,所述转发接口便于所述转发模块的配置,所述转发接口具有能够禁止两个端口之间的数据转发的控制寄存器。
在一个实施方式中,所述网络接口包括过滤引擎,所述过滤引擎从由所述转发模块接收的数据中读取目的地址,并且阻止转发具有与所述主机计算系统关联的地址匹配的目的地址的数据。
第十九方面,本发明提供一种数据转发方法,该数据转发方法包括在计算系统网络接口的指定的数据端口接收网络数据,以及通过所述网络接口的另一个端口将接收的数据传输到外部数据网络,而不受主机计算系统的干预。
第二十方面,所述数据转发方法包括:
使用具有多个数据端口的网络接口接收来自外部数据网络的数据,所述网络接口与主机计算系统的内部系统总线连接,以及
将通过所述网络接口的限定端口接收的数据转发到所述网络接口的另一个端口,而不受主机计算系统的干预。
在一个实施方式中,所述方法包括通过写入所述网络接口内的控制寄存器来禁止两个网络接口端口之间的转发。
在一个实施方式中,所述方法包括从由转发模块接收的数据中读取目的地址,并且阻止转发具有与所述主机计算系统关联的地址匹配的目的地址的数据。
附图说明
本发明的特征和优点将从下面参照附图仅通过示例方式对本发明的实施方式的描述中变得更加明了,在附图中:
图1是包括多个相互连接的计算系统的网络的示意图。
图2是描述若干个功能模块的网络接口的示意图。
图3是描述接收缓存区内的存储器分配的框图。
图4是描述协调与网络接口的交换的各个功能模块的主机计算系统的示意图。
图5是描述网络接口内的存储器分配的框图。
图6是用于将数据从计算系统传输到网络接口的传输方法的流程图。
图7是网络接口记录功能的框图表示。
图8是网络接口端口转发功能的框图表示。
具体实施方式
在本说明书中描述了低延时网络接口和补充的数据管理协议的实施方式。数据管理协议通过将控制数据和网络数据整合而减少了网络接口和相应的主机计算系统之间的专用的控制交换。
降低通信延时通常提高了用于网络密集交互的处理时间。在以下部分公开的发送协议和接收协议的实施方式限制在网络接口和主机计算系统之间的交换以降低处理延时。将总的延时降低几分之一秒能够在高性能计算应用(例如在线游戏和金融交易)中具有显著的影响。
网络数据在常规网络应用中一般使用离散数据“帧”在计算系统之间传输。数据帧由“发送方(sender)”系统限定并且可以包括在传输方法中使用的控制数据(例如目的地址)。在本说明书中描述的网络接口实施方式主要与基于“帧”的网络实现方式(其中数据在帧中传送)相互作用。然而,通常的协议还可以通过其他网络标准来实施。
延时是对数据传输通过系统所用时间的度量。网络接口的“接收延时”表示在接收来自外部网络的数据帧和该帧变得可获得以用于在对应的主机计算系统中执行的软件应用之间的时间。网络接口的“传输延时”表示在帧变得从主机计算系统中执行的软件应用中可获得和该帧传输到外部网络之间的时间。接收延时和传输延时都主要是由网络接口引起的。
在本说明书中,数据管理协议和接口特征的具体实施方式都属于分立的功能单元(通常为“模块”和“引擎”)。这些功能单元体现了它们包含的各个接口元件(硬件和软件)的运行和交互。这些功能单元不代表严格的运行划分或具体的硬件/软件实现。多个功能单元的运行可以通过单个硬件部件(例如微处理器或者现场可编程门阵列)、软件应用(例如驱动软件或嵌入式软件)、多个硬件部件或者硬件和软件的混合来执行。
接收来自外部网络的数据
常规的网络接口协议通过在主机计算系统中执行的驱动软件来协调。驱动通常将主机存储器分配给单独的数据帧并且在主机存储器中保持指针(被称为“接收描述符”)阵列作为记录。在接收到新的帧并且将该帧复制到由相应的指针限定的存储器地址时,网络接口访问“接收描述符”阵列。在复制完成时,接口产生系统中断来警报主机系统已经传送了新的帧。一旦已经处理了该帧,驱动软件在后续的使用中释放该指针。
在该部分中描述的网络接口和接收协议的实施方式通过消除与主机计算系统的若干交互而降低了由于网络接口导致的接收延时。公开的网络接口使用在主机计算系统存储器中分配的接收缓存区(或者少量的接收缓存区)与主机计算系统交换接收的网络数据。每个接收缓存区具有存储已经接收自外部网络的多个数据帧的容量。
网络接口自主规定在接收缓存区内数据的分配,而不受主机计算系统(包括网络接口驱动器)的干预。接口通常使用循环的先进先出(FIFO)排序协议在接收缓存区内接连地分配接收的数据帧。主机计算系统不为通过网络接口接收的单独帧分配写入地址或专用的缓存区。
网络接口利用开环写入协议递归地将数据帧写入接收缓存区,而不需要来自主机计算系统的反馈(例如表明帧已经被提取的读取确认)。这便于在主机计算系统中执行的多个软件应用对接收缓存区中的数据的非对等访问。网络接口在记录的写入迭代期间接连地向接收缓存区中写入新帧。在接连写入迭代期间缓存区中现有的数据被覆写。网络接口在接收的帧写入到缓存区时通常在接收的帧后面附加标准的控制数据(包括当前的写入迭代)。主机计算系统使用控制数据从接收缓存区中提取帧。
主机计算系统执行接收协议,该接收协议使得来自接收缓存区的数据帧能够被在主机计算系统中执行的软件应用访问。接收协议使用由网络接口生成的控制数据便于存储在接收缓存区中的数据帧的提取和重构。
在图1中描述了计算网络10。该网络10包括多个相互连接的计算系统。计算系统通过公共数据网络11(例如因特网或局域网)连接。
示出的数据网络11促进主机计算系统15和多个远程计算系统12之间的通信。主机计算系统15包含管理与数据网络11的数据交换的网络接口。
图2中描述了网络接口20的功能表示。该接口20包括网络侧21和系统侧22,网络侧21接收来自外部数据网络11的数据,系统侧22通过内部系统总线将接收的数据传输到在主机计算系统15中分配的存储器。
图2中描述的网络接口20的网络侧21包括多个数据端口19。每个数据端口19为网络接口控制系统25和外部数据网络之间的网络数据交换限定数据通道。数据端口19可以与物理连接器(例如图2中所描述的小形状因数(Small Form-Factor)模块)集成或者限定与外部网络的无线数据通道连接。
网络接口的系统侧22通常指定在网络接口和内部系统总线之间的功能接合(例如在用于集成应用的共享的微控制器内的功能划分)。通过接口的系统侧22限定的功能接合可以与物理接合(例如PCB上的总线连接器或有线接口)一致。图2中描述的网络接口20的系统侧22与主机计算系统主板24的PCI总线插槽23一致。接口控制系统25管理从网络接口20的网络侧21到系统侧22的数据传输。
接口20以“帧”接收来自网络11的数据。通常的以太网帧的大小在64字节到1518字节之间变化。比最大帧大小更大的数据包在传输到数据网络11之前被分成多个帧。网络接口将从网络接收的帧传输到主机计算系统中的共享存储器。主机计算系统用常规的接收协议管理该方法。
图2中描述的网络接口20将接收的帧传输到主机存储器中整合的缓存区,而不受主机计算系统的干预。这通过消除若干时间密集型系统交互(包括与主机计算系统的指针分配和系统读取确定消息交换)而降低了用于接收事务的开销。
接口控制系统25管理从接口20的网络侧21传输到主机计算系统15中的系统总线(例如PCI或PCI快速总线)的帧。系统总线将帧传输到接收缓存区,在该接收缓存区中数据能够被在主机计算系统处理器上执行的软件应用访问。
网络接口驱动器为网络接口20分配主机计算系统15中的存储器。对于从网络接口20传输的帧,将分配的存储器整合到缓存区(“接收缓存区”)。分配的存储器地址通常限定对于多个数据帧具有足够的存储容量的一系列接连存储器(接收缓存区通常比预计从网络得到的数据帧的大小大至少一个数量级)。主机计算系统15在存储器中分配被系统处理器有效访问以优化数据提取的接收缓存区。
主机计算系统15可以为若干个接收缓存区分配存储器,每个接收缓存区能够接收多个数据帧。然而,由主机计算系统15分配的接收缓存区的总数相对于系统预计处理的数据帧的数目而言保持为小的。通常为多端口网络接口内的单独端口分配独立的接收缓存区。单个的网络接口端口可以利用可编程过滤器将帧分配到一个以上的接收缓存区。各个接收缓存区在主机存储器中可以是不相邻的(尽管分配给每个缓存区的存储器通常是连续的)。
在系统初始化(例如系统启动或在初始化命令之后)期间通常通过专用的硬件驱动器分配网络接口接收缓存区。在图3中示出在示例性接收缓存区30中分配的数据的示意图。
网络接口20将分配给每个接收缓存区的存储器分成多个接连的缓存槽31。集成的缓存区管理模块27协调分配的存储器的划分。缓存区管理模块27在每个接收缓存区中建立多个接连的、单独可寻址的缓存槽31。由缓存区管理模块27生成的缓存槽31通常是同性质的,具有相同的存储容量以及均匀的存储器地址偏移。缓存槽31的存储容量通常在32字节到512字节之间。
缓存槽31使网络接口20能够有效地协调对整合的接收缓存区30的写入操作,而不受主机计算系统的干预。图示的网络接口20将分配的存储器用作循环缓存区,在指定的存储器地址(通常与第一缓存槽一致)重新初始化写入序列之前顺续地写到指定的缓存槽31中的每一个。接口控制系统25自主规定接收缓存区30中的数据帧的分配,而不受主机计算系统(包括由主机计算系统执行的接口驱动器)的干预。
图示的接口控制系统25包括写入控制器26,该写入控制器利用开环写入协议将接收的数据帧写到接收缓存区30。写入控制器26在接连地写入循环完成之后接着递归地覆写接收缓存区30中的缓存槽31。覆写接收缓存区30中的数据,而不需要主机计算系统的读取确认(反馈表明相应的数据已经被处理)。消除来自主机系统的该反馈使得网络接口20接连地将数据帧写入存储器而不中断,从而增加数据传输的效率。
网络接口20将控制数据33与写入到接收缓存区30的每个缓存槽31的网络数据32组合。主机计算系统利用控制数据33来管理从接收缓存区30的数据提取。图示的控制系统25包括帧管理模块28,该帧管理模块生成用于网络接口20的控制数据33。由帧管理模块28生成的控制数据33包括:
时间戳(34) :32比特
帧状态(35) :8比特
长度(36) :8比特
未使用(37) :8比特
写入迭代计数器(38) :8比特
帧管理模块28在缓冲区写入操作之前将控制数据33与网络数据32封装。这允许写入控制器26在与网络数据相同的总线事务中将控制数据33传输到接收缓存区30。组合的数据包从网络接口20传输到接收缓存区30的分立的“缓存槽”中。
图示的网络接口为接收缓存区30的每个缓存槽31生成8字节(64比特)的控制数据33。控制数据33中的一个字节(8比特)被分配用于扩展(“未使用”的数据字段37)。
在包括相应网络数据的整合的存储器事务中将控制数据33写入接收缓存区30内的各个缓存槽31。这降低了缓存槽31的有效容量(可用于网络数据的存储器)。例如,一个128字节的缓存槽能够存储120字节的网络数据32和8字节的控制数据33。对于较小的缓存槽分配,在缓存槽31中控制数据33与网络数据32的比例增加。
在与相应的网络数据32相同的缓存槽中分配控制数据33避免了通常在将控制数据33写入单独的寄存器时发生的辅助读取/写入操作。写入控制器26通常在与网络数据相同的总线事务中将控制数据33写入接收缓存槽。这减少了将帧传输到主机计算系统所需要的写入操作。图示的写入控制器26将控制数据33附加到网络数据32,使得控制数据33被写入到缓存区内相应的缓存槽的结尾处。这使得主机计算系统能够通过执行控制数据33检查来确认缓存区写入操作。
帧管理模块28为系统时间戳34分配控制数据33中的4个字节(32比特)。“时间戳”字段34记载在网络接口20的帧接收时间(通常用于网络分析和诊断)。控制系统25从内部计数器导出时间戳字段34。
图示的帧管理模块28在接收到来自外部网络的帧的第一字节时将内部计数器的值复制到时间戳字段34。在将帧划分到缓冲区内的多个缓存槽31时(即在数据帧大于接收缓冲区30的缓存槽的大小时),相同的时间戳34用于每个帧片段。
帧状态字段35包括用于接收的帧的一般状态信息。帧管理模块28记载在“帧状态”字段35中检测到的帧接收错误。通过图示的控制系统25生成的帧状态码包括:
0—成功接收
1—远程发送方中止传输中间帧
2—帧完整性检查失败
3—在帧接收期间存储器溢出
超出缓存区缓存槽31的存储容量的接收帧被分成帧片段并且被分配至多个缓存槽31。帧管理模块28协调缓存区中的大数据帧的划分和分配。片段通常分配至接收缓存区30内接连的缓存槽31。
帧管理模块28利用控制数据“长度”字段36记载缓存区内各帧的分配。长度字段36限定了缓存区内接连的缓存槽31之间的关系。非零长度字段36表明该帧在相应的缓存槽内结束(该缓存槽包含与缓存槽划分一致的帧边界的结尾)。长度字段36中的“零”条目表明相邻的缓存槽31包括相同数据帧的片段。主机计算系统使用长度字段36来重构片段化的数据帧。
用于包含在单个缓存槽31内的帧的长度字段36标识所述帧的“大小”(通常以字节计)。帧的初始片段或者中间片段用长度字段36中的“零”条目表示。这表明从相同的帧中导出的附加片段存储在随后的(接连的)缓存槽中。帧的“尾部”片段被指定为与片段大小相称的长度条目(即片段在缓存槽内占用的空间)。非零长度条目向主机计算系统发信号通知已经从缓存区提取出该帧的所有片段并且下一个缓存槽包括不同的帧。
缓存区管理模块27在网络接口20内的专用寄存器中维持用于接收缓存区30的“生成”计数器。生成计数器记载用于循环接收缓存区30的当前写入迭代。缓存区管理模块27在每次写入循环完成(即每次写入控制器26向循环缓存区内的结尾缓存槽写入数据)时单调地增加生成计数器。
帧管理模块28在写入操作期间将缓存区生成计数器的当前值复制到“写入迭代计数器”控制数据字段38。在主机计算系统中执行的软件使用写入迭代计数器38同步来自接收缓存区30的读取操作。
缓存区访问协议
主机计算系统监测接收缓存区30中来自网络接口的写入更新并且当新帧变得可用时提取新帧。该方法在延时敏感型应用中不依赖于网络接口写入操作。从接收缓存区中提取网络数据而不受网络接口的干预消除了许多时间密集型系统交互(用在常规的网络接口协议中以协调内部数据交换)。这允许网络接口用较少的开销将数据帧传输到主机计算系统。
主机计算系统包括缓存区访问系统,该缓存区访问系统协调从接收缓存区30的数据提取。图4中示出缓存区访问系统40的功能表示。图示的缓存区访问系统40包括多个功能模块。各模块可以通过在主机计算系统15上执行的专用的驱动软件或者独立的软件应用执行。
图4中示出的缓存区访问系统40包括参考模块41,该参考模块在发起数据提取过程时评估接收缓存区30的状态。参考模块41使用写入迭代计数器字段38来确定缓存区状态。在每个缓存槽31的控制数据33内分配的写入迭代计数器38在数据最后写入到相应的缓存槽时限定写入迭代。参考模块41访问循环接收缓存区30内的多个数据缓存槽31并且评估包含在控制数据33内的写入迭代计数器38。缓存区访问系统40使用来自接连的缓存槽31的写入迭代计数器38来识别当前的写入迭代和先前的写入迭代之间的边界。
同步模块42利用由参考模块41定位的写入迭代计数器38确定用于循环缓存区的当前写入地址。写入地址限定接收缓存区30内的下一个缓存槽31由网络接口20用数据覆写。通过同步模块42实施的用来识别缓存区写入地址的方法依赖于网络接口使用的写入迭代计数器字段38的格式。对于二进制和整数写入迭代计数器38格式的识别过程稍后在本说明书中说明。
同步模块42将写入地址传输至写入监测器43。写入监测器43反复地轮循写入地址以检查来自网络接口的写入更新。在通过写入地址限定的缓存区缓存槽31内的控制数据33变化时检测到写入更新。网络接口在每次写入更新期间覆写网络数据32和控制数据33。在用于所监测的缓存槽的写入迭代计数器字段38变化时,写入监测器43确定缓存槽31已经接收到写入更新。
在写入监测器43检测到写入更新时,提取模块44取回与写入地址相应的缓存槽31的数据。在从缓存槽31提取数据后,提取模块44实施若干数据有效性检查。所述有效性检查包括接收确认(从控制数据33的帧状态字段35导出)、数据完整性评估(从在写入更新期间附加在每个缓存槽31的结尾的控制数据33的完整性得出)以及提取评估。
提取模块44在数据提取后检查缓存区缓存槽31的写入迭代计数器字段38,以确认提取过程。如果在通过写入监测器43识别的原始写入更新的检测之后写入迭代计数器字段38已经发生了变化,则提取模块44生成读取错误。读取错误表明在数据被提取之前缓存槽31可能已经被网络接口覆写(从而使得所提取的数据不可靠)。接收软件应用通常通过发出对数据丢失帧的附加请求来管理读取错误。
片段化的数据帧在从接收缓存区30提取后通过帧重组模块45进行编辑。帧重组模块45在写入更新后从所提取的控制数据33中读取长度参考字段36,并且确定相应的网络数据的状态。数据状态将帧片段与完整数据帧区别开来并且确定相同数据帧的片段之间的关系。在长度参考字段36表明各缓存槽31包括来自单个帧的数据时,帧重组模块45将来自接连的缓存槽31的网络数据32组合。网络接口保存写入到接收缓存区30的帧片段的顺序,使得帧重组模块可以直接从缓存区中编辑相继的片段。
网络接口可以采用二进制或者整数写入迭代计数器来记载相继的写入迭代。二进制写入迭代计数器采用最小的存储器消耗区别相继的写入迭代。整数写入迭代计数器(例如通过帧管理模块28指定的8比特写入迭代计数器)能够维持绝对的写入迭代计数器。用于写入迭代计数器38的数据类型影响通过同步模块42实施的评估方法。
写入地址:二进制写入迭代计数器
二进制写入迭代计数器的值随接连的缓存区写入循环而更迭。这允许同步模块42区别接连的写入迭代,但是会影响由提取模块44执行的数据有效性检查。
同步模块42可以通过递归地比较来自缓存区内的接连的缓存槽31的二进制写入迭代计数器而确定用于缓存区的写入地址。缓存区写入地址通过识别在缓存区分配的相邻缓存槽31中的不同的写入迭代计数器来定位。
写入地址:整数写入迭代计数器
整数写入迭代计数器记录累计的写入迭代。这以更大的存储器使用量为代价提高了由提取模块44执行的数据有效性检查的准确度。图2中示出的网络接口20在数据写入操作期间维持复制到写入各缓存槽31的迭代计数器字段的生成计数器。
缓存区访问系统40通过建立辅助的读取迭代计数器来调节整数写入迭代计数器。将读取迭代计数器与接连的缓存区缓存槽31中的控制数据33相比来识别用于接收缓存区30的当前写入地址。
图4中示出的参考模块41为同步模块42建立读取迭代计数器。读取迭代计数器复制通过缓存区管理模块27维持的缓存区生成计数器。参考模块41从写入到接收缓存区30内的指定缓存槽31的控制数据33导出读取迭代计数器。这避免了直接从网络接口读取生成计数器。
图示的参考模块41用来自接收缓存区30的最后的缓存槽的写入迭代计数器初始化读取迭代计数器。读取迭代计数器通常从缓存区的结束缓存槽导出。每个结束缓存槽中的写入迭代计数器在每个写入周期的持续时间内保持不变,这是因为生成计数器仅在每个写入周期结束时增加(在对最后的缓存区缓存槽的写操作之后)。
参考模块41将读取迭代计数器传输到同步模块42。同步模块42将读取迭代计数器与指定给循环缓存区内的接连的缓存槽31的多个写入迭代计数器相比较。缓存区的写入地址与具有写入迭代计数器的第一缓存槽31相一致(该缓存槽31离缓存区的起始处最近),该写入迭代计数器与读取迭代计数器匹配(从缓存区的结束处导出)。
使用读取指针协调比较方法,该读取指针在接收缓存区30内的相继的缓存槽31间循环。缓存区访问系统40通常在接收缓存区30内的第一缓存槽初始化读取指针。同步模块42以限定的偏移(与限定的缓存区缓存槽的大小相当)增加读取指针直到通过读取指针识别的缓存槽中的写入迭代计数器与读取迭代计数器匹配。偏移增量与通过缓存区管理模块27分配的缓存区缓存槽31的大小相当。同步模块42在检测到写入更新后增加读取指针以与相继的缓存槽31对准。
用于延时不敏感型数据的接收警报协议
图2示出的网络接口20可以实施用于延时不敏感型网络数据的接收的警报协议。接收警报协议减少了主机计算系统的监测开销。
警报协议由与在主机计算系统上执行的软件应用进行交互的预留模块(附图中未示出)发起。软件应用识别网络交换,该网络交换是延时不敏感型的并且向预留模块传输网络数据指定。预留模块由于这些交换而暂时终止写入监测器43对网络数据的轮询功能,并且初始化网络接口警报协议。这减轻了主机计算系统处理器上的负荷。
预留模块还为各软件应用维持可配置的延时指定,所述软件应用能够实现延时关键软件的全局优化。软件接口(通常由网络接口驱动器提供)有利于对各软件应用进行延时指定的配置。
与写入监测器43的停用同时,预留模块将与网络接口控制系统25集成的报告引擎初始化。在数据被写入接收缓存区时,报告引擎产生系统中断。该中断通知预留模块:接收缓存区内的新数据是可用的。
与接收警报兼容的网络接口包括专用的阈值寄存器,预留模块使用该阈值寄存器来初始化警报协议。预留模块向阈值寄存器写入缓存槽地址来激活报告引擎。缓存槽地址为报告引擎识别在接收缓存区内的待监测的缓存槽(该缓存槽通常由当前缓存区写地址限定)。在通过缓存槽地址识别的缓存槽接收到写入更新时,报告引擎与写入控制器26通过接口连接并且产生通知中断。
写入到阈值寄存器中的缓存槽地址通常是识别接收缓存区内的缓存槽偏移的整数参考。报告引擎将阈值寄存器中的缓存槽地址与通过写入控制器26维持的写入地址相比较,并且在写入地址等于或超过缓存槽地址时产生系统中断。
将绝对的缓存槽参考(例如缓存槽地址)写入阈值寄存器补偿了写入控制器26和预留模块的并发的写入操作。当与写入更新到当前写入地址的同时(或者略微稍后)预留模块写入阈值寄存器时,并发的写入操作发生。报告引擎通过识别写入控制器序列号超出写入到阈值寄存器的缓存槽地址来检测并发的写入更新。这对于报告引擎的二进制激活是不可能的。
向外部网络的数据传输
大多数网络接口使用总线主控或者程序化的输入/输出(程序化的I/O)协议来协调与主机计算系统的内部数据传输。利用标准的内部系统总线实施两种协议。
早期的网络接口实施程序化的输入/输出协议(程序化的I/O)来与主机计算系统处理器通信。程序化的输入/输出协议通过内部系统总线(例如并行ATA总线)促进低带宽主机控制的通信。通过向主机计算系统内的I/O地址空间写入的方式将输出的网络数据以小的数据包(通常为16比特或32比特)“推送”到网络接口。主机计算系统处理器以高的频率执行I/O写入。这会消耗资源并且对主机计算系统产生了开销,包括过多的系统总线带宽消耗以及不成比例的处理器负荷。通过总线主控协议很大程度上解决了这些限制。
大多数的常规网络接口使用总线主控协议来协调输出的网络数据(从主机计算系统发送到外部网络的数据)。总线主控使网络接口能够以对于主机计算系统处理器而言最小的开销管理总线事务并且移动在主机计算系统内的输出网络数据。
在主机计算系统上执行的软件通过通知新的输出网络数据的网络接口发起传输方法。使用内部系统总线将通知从处理器传输到网络接口。然后网络接口从主机存储器自主地取回相应的数据。这包括向主机存储器发出读取请求并且接收输出网络数据(两种交换都使用系统总线)。
在本部分描述的传输协议的实施方式使得主机计算系统处理器能够将输出网络数据直接写入到网络接口存储器内的传输缓存区中。这通过将传输缓存区映射到主机计算系统的存储器分级体系而变得容易。到传输缓存区的写入被群发释放以避免与程序化的输入/输出协议相关联的一些低效。这通过在将数据释放到网络接口(传输缓存区)内的直接可寻址存储器之前将输出网络数据收集在写入组合缓存区(通常是在主机计算系统处理器内分配的)中而变得容易。
公开的传输协议消除了在主机处理器和用于总线主控的网络接口之间的若干数据管理交换以协调内部数据传输。消除的交换包括:
·从网络接口到主机存储器取回新数据的读取请求,以及
·从主机计算系统存储器到网络接口的新数据的传输。
由于必须在使用总线主控协议将数据传输到网络接口之前执行消除的交换,因而这改善了所公开的网络接口的延时性能。
图4中示出了数据传输系统50的功能表示。图示的数据传输系统50包括存储器管理模块51,该存储器管理模块监管在专用的网络接口存储器内的传输缓存区29。传输缓存区通常有在4千字节和2兆字节之间的存储容量(尽管可以使用更大的存储容量)。可以为图2中描述的网络接口20配备16千字节、32千字节或者64千字节的传输缓存区29。
存储器管理模块51将专用的网络接口存储器映射到主机计算系统15内的本地存储器分级体系61。这使得主机计算系统处理器直接可寻址所映射的存储器(对应于传输缓存区29)。存储器管理模块51还使得能够实现对映射的存储器的写入组合(这通过在PCI总线应用中设置“可预取”属性而实现)。图5中示出映射的存储器61内分配的数据的示意图。
传输系统50包括协调到网络接口20的数据写入的写入控制器52。写入控制器52使用内部系统总线将输出网络数据74写入映射的存储器55(传输缓存区29)。输出网络数据74被写入到传输缓存区29而不受网络接口20的干预。写入控制器在写入到网络接口之前将输出网络数据74收集在分配于主机计算系统处理器中的写入组合缓存区内。这允许将输出网络数据74群发地(代替小的比特包)写入传输缓存区29。
写入控制器52通常将输出网络数据74以数据帧的形式写入到传输缓存区29,所述数据帧被打包以传输到外部网络。这允许网络接口20从传输缓存区29提取输出网络数据74并且以最小的附加处理传输该数据。数据帧可以与控制数据73组合,控制数据有利于从传输缓存区29提取各帧。
图4中示出的传输系统50包括控制模块53,该控制模块将控制数据73与写入传输缓存区29中的数据帧组合。在通过写入控制器52将各帧传输到网络接口20之前,控制模块53将控制数据73预置于每个数据帧中。写入控制器52将控制数据73在与相应的数据帧相同的事务中写入传输缓存区29。控制数据73通常加在相应的数据帧之前并且与输出网络数据74一起存储在传输缓存区中。图4中示出的控制模块53生成的控制数据73包括:
帧标识符(76) :16比特
反馈偏移(77) :16比特
帧长度(78) :16比特
未使用(79) :16比特
控制模块53为每个数据帧生成8字节(64比特)的控制数据。控制数据中的2个字节(16比特)被分配用于扩展(“未使用”数据字段79)。
由控制模块53生成的控制数据73包括反馈描述符,所述反馈描述符使网络接口能够报告帧传输和限定传输缓存区29中相应的数据帧的大小的长度字段。预置于每个帧的控制数据73是标准化的。
控制模块53通过将帧参考写入网络接口20中的独立的控制寄存器62向外部网络发起数据帧的传输。帧参考限定专用的缓存区存储器中相应的数据帧的位置。控制模块53通常将帧参考指定为专用存储器缓存区29内的偏移。
与网络接口集成的传输引擎(附图中未示出)从缓存区29提取各个数据帧用于传输到外部网络。帧参考和帧长度78字段限定了专用的存储器缓存区内相应的数据帧的边界。传输引擎用这些字段从传输缓存区29提取帧。
传输引擎通过用由帧参考限定的缓存区存储器地址将帧指针初始化来发起提取过程。帧指针通常与加在相应的数据帧之前的控制数据73一致。传输引擎读取包括在用于帧的控制数据73中的帧长度78并且确定用于帧的结束地址。
网络接口20将从传输缓存区29提取的帧传输到外部网络。如果源软件应用要求的话,在传输后能够向主机计算系统发送确认消息。通知引擎(附图中未示出)利用包含在用于相应帧的控制数据73中的反馈描述符管理确认消息发送。通知引擎在与相应的数据帧相同的事务中从专用的网络接口存储器提取反馈描述符。由生成帧的软件应用限定反馈描述符。
通知引擎将从专用的网络接口存储器中提取的“帧标识符”76写入主机计算系统存储器内的分配的反馈寄存器中以报告帧传输。通过控制数据73中包含的“反馈偏移”字段77限定反馈寄存器。这通常表示软件应用监测的反馈阵列54(维持在主机计算系统存储器中)的偏移以进行写入确认。软件应用能够通过将限定的比特设置在“反馈偏移”字段77内来拒绝确认消息。传输协议(包括反馈方法)的例示性实施方式在图6中示出的流程图中进行说明。
写入控制器52和存储器管理模块51用来实现传输方法的具体协议依赖于在主机处理器和网络接口之间传送数据的系统总线。在这一部分简要地解释了使用PCI总线标准的实现方式。传输方法还可以采用其他系统总线标准实现。
存储器管理模块51将用于传输缓存区的专用的接口存储器映射到主机计算系统存储器分级体系61内的专用的基地址寄存器(BAR)(例如用于PCI总线实现的基地址寄存器二72)。这允许写入控制器52使用用于映射的存储器55的写入组合。存储器管理模块51还使得能够实现用于映射的存储器55的写入组合。用于发起帧传输的控制寄存器62通过存储器管理模块51分别映射到I/O空间(通常是基地址寄存器零60)。
转发网络接口内的网络数据
图2中示出的网络接口20能够实现按照常规由专门的网络交换机设备执行的许多数据转发功能。网络接口20通过在端口之间内部传输网络数据实现附加的转发功能。这避免了在常规应用中通过将网络数据转发到中间交换机而引入的延时。
网络接口20的网络侧21包括多个数据端口。如图2所示,数据端口可以与硬件连接器集成,所述硬件连接器和可兼容物理介质(例如小形状因数的可插拔模块)形成物理连接。每个数据端口限定用于在网络接口控制系统25和外部数据网络之间的网络数据交换的数据通道。网络接口20还可以包含无线数据端口(未示出),所述无线数据端口限定与外部网络的无线数据通道连接。
网络接口控制系统25可以通过将与各数据接口交换的网络数据复制到记录端口来促进数据记录。复制的网络数据被打包成整合的数据流用于传输到外部记录系统。网络接口控制系统促进记录方法而不受主机计算系统的干预。
网络接口控制系统25的记录使能的实施方式包括记录模块85,该记录模块协调网络接口20内的数据记录。记录模块85从各数据通道(由网络接口端口限定的)复制网络数据并且将复制的数据传输到指定的记录端口。记录单元将来自多个数据端口的复制数据组合以传输到外部记录系统。记录单元生成整合的记录数据流,该数据流经由记录端口被传输到外部数据网络。
记录模块85包括记录接口,该记录接口有利于动态的记录重新配置。记录接口具有多个控制寄存器,所述控制寄存器指定用于记录的数据通道(复制并且传输到远程记录服务器)。控制寄存器可以被系统管理员动态地设置以使能/禁用对各端口的记录。
记录模块可以促进数据通道内的分开的数据流(包括发送流和接收流)的独立的记录。独立的数据流记录通过记录控制器协调。记录控制器将来自单个数据通道的各数据流分开并且将指定的数据流独立地转发到记录单元。记录接口可以通过为数据通道中的各数据流分配专用的控制寄存器来促进数据流记录。
图7中示出描述了用于在若干数据通道内发送和接收数据流的独立的记录的框图80。每个数据端口被表示为分别传递接收数据流87的接收引擎81和发送数据流88的发送引擎82。每个数据流都被复制并被拷贝到记录模块85。
专用的记录单元(附图中未示出)将来自各数据流的数据帧组合成整合的记录流90用于从网络接口传输(通过记录端口发送引擎83)。由转发模块85使用动态可配置的控制寄存器选择包括在整合的记录流90中的各数据流。
图7中示出的记录端口管理除了通过记录模块85生成的记录流90之外的常规网络通信。多工器84将来自记录端口发送流89和记录流90的输出网络数据传送至记录端口发送引擎83。在一些实施方式中,多工器84可以与记录单元集成。
记录端口发送流89和接收流86被复制并且传输到记录模块85,以与来自其他数据端口的数据流一起包含在记录流90中。
网络接口控制系统25还可以促进数据在网络接口20的端口之间转发。通过将接收的数据从指定的端口(“转发端口”)传输到网络接口的另一个端口(“目的端口”)来促进数据转发。图示的网络接口20自主地将从转发端口接收的数据转发而不受主机计算系统的干预。这允许数据在网络接口20内的端口之间传输。
能够转发的网络接口控制系统包括转发模块,该转发模块直接从转发端口接收数据并且通过另一个数据端口(目的端口)将接收的数据传输到外部数据网络。转发模块可以自主地传输接收的网络数据,而不受主机计算系统的干预。这避免了与将数据传输到主机计算系统操作系统相关联的延时。
过滤模块可以过滤在转发端口接收的网络数据,并且有选择的转发未寻址到主机计算系统的数据。过滤引擎(通常与转发模块集成)读取在转发端口接收的数据的目的地址。目的地址通常限定在伴随网络的元数据(例如包头)中。过滤模块为数据保留与主机计算系统的地址匹配的目的地址。
转发接口有利于转发模块的配置(包括过滤引擎的启动)。转发接口具有在系统管理员设置时禁止数据在两个端口之间转发的控制寄存器。
网络接口的转发功能允许计算系统在不使用外部网络交换机或分光器的情况下共享公共网络连接。
图8中示出一个示例性的端口转发实现方式91。图示的实现方式91具有带有连接数据端口的对称端口转发配置,所述连接数据端口相互地交换接收的数据。两个数据端口均包括促进与外部网络通信的专用的接收引擎92和发送引擎93。
输入网络数据帧通过接收引擎92接收。各端口将在接收引擎92接收的所有帧传输到过滤引擎97。在示出的实施方式中每个接收引擎92具有专用的过滤引擎97。
过滤引擎97从每个接收的数据帧中读取目的地址。具有与主机计算系统的地址匹配的目的地址的数据帧被改向到网络接口控制系统用于指定到接收缓存区。具有与主机计算系统的地址不匹配的目的地址的数据帧被指定用于重传到外部网络。
过滤引擎可以将数据帧从转发端口分发到多个目的地(通常为目的端口和主机计算系统)。这使得过滤引擎能够在目的地址与主机计算系统的地址不匹配时将数据帧改向到网络接口控制系统25(有助于记录和应用)。过滤引擎采用的数据分发准则通常使用转发接口限定。
过滤引擎可以选择在转发端口接收的数据帧的子集用于分发到多个目的地。这通常用于管理未经请求的数据(例如广播帧以及多播帧)。在设置成混合模式时,过滤引擎还可以不加区分地分发在转发端口接收的数据帧。
过滤引擎97将过滤的数据流(具有与主机计算系统的地址不同的地址的帧)传输到连接的目的数据端口的发送引擎95。多工器96将过滤的数据流与来自主机计算系统的输出网络数据组合。
图8中示出的端口转发实现方式使“主”计算系统能够与“从”计算系统共享网络连接而不用辅助网络交换机。图示的实现方式为“主”计算系统(与外部网络直接连接的计算系统)限定了端口转发配置。
在本发明下面的权利要求和前面的描述中,除了上下文由于表达语言或必要含义而有不同要求以外,词语“包括(comprise)”或者其变型(例如“包括(comprises)”或者“包含(comprising)”)是在开放式意义上使用的,即表明所陈述的特征的存在但是不排除在本发明的各种实施方式中存在或者增加进一步的特征。
本发明的领域内的技术人员应当理解的是,可以作出多种修改而不脱离本发明的精神和范围。

Claims (15)

1.一种数据接收方法,包括:
通过网络接口接收来自外部网络的多个数据帧,并且
通过内部系统总线将每个数据帧从所述网络接口传输到在主机计算系统的存储器中分配的接收缓存区,
所述网络接口规定数据帧在所述接收缓存区内的分配而不受所述主机计算系统的干预,采用开环写入协议将每个接收的数据帧从所述网络接口传输到所述接收缓存区;
其中,接收的数据帧被相继写入所述接收缓存区内的连续的存储器范围,并且接收的数据帧递归地覆写所述接收缓存区,而不需要所述主机计算系统对先前写入的帧的读取确认。
2.根据权利要求1所述的方法,包括在具有用于多个数据帧的存储容量的连续存储器中分配所述接收缓存区。
3.根据权利要求2所述的方法,包括将分配的存储器分成多个具有相同存储容量的接连单独可寻址的缓存槽。
4.根据权利要求3所述的方法,包括将接收的数据帧接连地写到所述接收缓存区内的每个缓存槽。
5.根据权利要求3至4中的任一项所述的方法,包括将超出所述缓存槽的存储容量的已接收的数据帧分成片段并且将帧片段分配到所述接收缓存区内的多个接连的缓存槽。
6.根据权利要求5所述的方法,包括生成控制数据,所述控制数据通过限定接连的缓存槽中的帧数据的关系而便于片段化的数据帧的重构。
7.根据权利要求6所述的方法,包括将所述控制数据附加在每个帧片段的结尾处,使得所述控制数据在与所述帧片段相同的总线事务中写在对应的缓存槽的结尾处。
8.根据权利要求7所述的方法,其中所述控制数据还限定分配到对应的缓存槽的所述帧片段的长度。
9.一种网络接口,包括:
网络侧,所述网络侧接收来自外部数据网络的多个数据帧,
主机侧,所述主机侧通过主机内部系统总线将所述数据帧传输到在主机计算系统的存储器中分配的接收缓存区,以及
控制系统,所述控制系统规定数据帧在接收缓存区内的分配,而不受所述主机计算系统的干预;
写入控制器,所述写入控制器使用开环写入协议将每个接收的数据帧传输到所述接收缓存区,所述写入控制器进一步被配置成将所述数据帧相继写入所述接收缓存区内的连续的存储器范围,其中,所述开环写入协议包括递归地覆写所述接收缓存区,而不需要所述主机计算系统对先前写入的帧的读取确认。
10.根据权利要求9所述的网络接口,包括缓存区管理模块,所述缓存区管理模块在分配给所述接收缓存区的连续的存储器中分配具有相同存储容量的多个接连单独可寻址的缓存槽。
11.根据权利要求10所述的网络接口,包括写入控制器,所述写入控制器将接收的数据帧接连地传输到所述接收缓存区内的每个缓存槽。
12.根据权利要求11所述的网络接口,包括帧管理模块,所述帧管理模块将超出所述缓存槽的存储容量的已接收的数据帧分成片段并且将帧片段分配到所述接收缓存区内的多个接连的缓存槽。
13.根据权利要求12所述的网络接口,其中所述帧管理模块生成控制数据,所述控制数据通过限定在接连的缓存槽中的帧数据的关系便于片段化的数据帧的重构。
14.根据权利要求13所述的网络接口,其中所述写入控制器将所述控制数据附加在每个帧片段的结尾处,使得控制数据在与所述帧片段相同的总线事务中写在对应的缓存槽的结尾处。
15.根据权利要求13或权利要求14所述的网络接口,其中所述控制数据还限定分配给对应的缓存槽的所述帧片段的长度。
CN201480065315.2A 2013-10-18 2014-10-17 网络接口 Active CN105993148B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
AU2013245529A AU2013245529A1 (en) 2013-10-18 2013-10-18 Network Interface
AU2013245529 2013-10-18
PCT/AU2014/000994 WO2015054738A1 (en) 2013-10-18 2014-10-17 Network interface

Publications (2)

Publication Number Publication Date
CN105993148A CN105993148A (zh) 2016-10-05
CN105993148B true CN105993148B (zh) 2019-08-23

Family

ID=52827459

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480065315.2A Active CN105993148B (zh) 2013-10-18 2014-10-17 网络接口

Country Status (11)

Country Link
US (1) US10284672B2 (zh)
EP (1) EP3058684B1 (zh)
JP (1) JP6543246B2 (zh)
KR (1) KR20160075564A (zh)
CN (1) CN105993148B (zh)
AU (2) AU2013245529A1 (zh)
BR (1) BR112016008606A8 (zh)
CA (1) CA2925612A1 (zh)
RU (1) RU2686016C2 (zh)
SG (2) SG11201602350PA (zh)
WO (1) WO2015054738A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2013245529A1 (en) * 2013-10-18 2015-05-07 Cisco Technology, Inc. Network Interface
US20190238485A1 (en) * 2018-01-30 2019-08-01 Hewlett Packard Enterprise Development Lp Transmitting credits between accounting channels
US11336757B2 (en) * 2019-03-19 2022-05-17 Texas Instruments Incorporated Sample based data transmission over low-level communication channel
US11068181B2 (en) * 2019-10-17 2021-07-20 EMC IP Holding Company LLC Generating and storing monotonically-increasing generation identifiers
CN111930650B (zh) * 2020-09-23 2021-01-08 新华三半导体技术有限公司 一种网络流量转发方法及设备
CN114520711B (zh) * 2020-11-19 2024-05-03 迈络思科技有限公司 数据包的选择性重传

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0459757A3 (en) * 1990-05-29 1993-03-03 Advanced Micro Devices, Inc. Network adapter
EP1338965A2 (en) * 1999-05-04 2003-08-27 AT & T Laboratories Cambridge Limited Data transfer

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06197133A (ja) * 1992-12-24 1994-07-15 Toshiba Corp 通信システム
JPH06274425A (ja) * 1993-03-17 1994-09-30 Hitachi Ltd ネットワークアダプタ装置
KR100186929B1 (ko) * 1993-07-28 1999-05-15 마크 마이클 다중네트워크 어드레스를 구비한 네트워크 스테이션
US6985431B1 (en) * 1999-08-27 2006-01-10 International Business Machines Corporation Network switch and components and method of operation
US7289509B2 (en) * 2002-02-14 2007-10-30 International Business Machines Corporation Apparatus and method of splitting a data stream over multiple transport control protocol/internet protocol (TCP/IP) connections
US20070260777A1 (en) * 2003-11-25 2007-11-08 Timpe Barrie R Queues for information processing and methods thereof
US7698361B2 (en) * 2003-12-31 2010-04-13 Microsoft Corporation Lightweight input/output protocol
US20050220128A1 (en) * 2004-04-05 2005-10-06 Ammasso, Inc. System and method for work request queuing for intelligent adapter
US7613813B2 (en) * 2004-09-10 2009-11-03 Cavium Networks, Inc. Method and apparatus for reducing host overhead in a socket server implementation
US7835380B1 (en) 2004-10-19 2010-11-16 Broadcom Corporation Multi-port network interface device with shared processing resources
US7353301B2 (en) * 2004-10-29 2008-04-01 Intel Corporation Methodology and apparatus for implementing write combining
JP4837361B2 (ja) * 2005-10-28 2011-12-14 メタウォーター株式会社 伝送システム、そのデータ送信装置、データ受信装置
US9137179B2 (en) 2006-07-26 2015-09-15 Hewlett-Packard Development Company, L.P. Memory-mapped buffers for network interface controllers
JP2008097273A (ja) 2006-10-11 2008-04-24 Fujitsu Ltd ネットワークインタフェース装置、ネットワークインタフェース制御方法、情報処理装置、データ転送方法
US8700873B2 (en) * 2010-10-14 2014-04-15 International Business Machines Corporation Direct memory access memory management
ITRM20120094A1 (it) * 2012-03-14 2013-09-14 Istituto Naz Di Fisica Nuclea Re Scheda di interfaccia di rete per nodo di rete di calcolo parallelo su gpu, e relativo metodo di comunicazione internodale
AU2013245529A1 (en) * 2013-10-18 2015-05-07 Cisco Technology, Inc. Network Interface

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0459757A3 (en) * 1990-05-29 1993-03-03 Advanced Micro Devices, Inc. Network adapter
EP1338965A2 (en) * 1999-05-04 2003-08-27 AT & T Laboratories Cambridge Limited Data transfer

Also Published As

Publication number Publication date
SG11201602350PA (en) 2016-05-30
RU2686016C2 (ru) 2019-04-23
CN105993148A (zh) 2016-10-05
EP3058684A1 (en) 2016-08-24
US10284672B2 (en) 2019-05-07
KR20160075564A (ko) 2016-06-29
AU2013245529A1 (en) 2015-05-07
SG10201803201VA (en) 2018-06-28
WO2015054738A1 (en) 2015-04-23
EP3058684A4 (en) 2017-07-19
AU2014336967A1 (en) 2016-04-28
AU2014336967B2 (en) 2019-04-04
RU2016118760A3 (zh) 2018-07-25
RU2016118760A (ru) 2017-11-23
CA2925612A1 (en) 2015-04-23
JP2016535483A (ja) 2016-11-10
EP3058684B1 (en) 2020-12-02
US20160241666A1 (en) 2016-08-18
BR112016008606A8 (pt) 2020-03-17
JP6543246B2 (ja) 2019-07-10

Similar Documents

Publication Publication Date Title
CN105993148B (zh) 网络接口
US8489794B2 (en) Processor bus bridge for network processors or the like
CN103916252B (zh) 一种基于fpga的高带宽以太网ip核
CN101501660B (zh) 因特网连接交换机和因特网连接系统
US9479461B2 (en) Computer system and method for communicating data between computers
US8949500B2 (en) Non-blocking processor bus bridge for network processors or the like
CN107209644A (zh) 一种数据处理方法以及NVMe存储器
CN108667725A (zh) 一种基于多种接入及边缘计算的工业软网关以及实现方法
CN109218231A (zh) 一种RapidIO交换网络
CN110109872B (zh) 一种遥感卫星异构数据统一存储管理装置
CN102185833B (zh) 一种基于fpga的fc i/o并行处理方法
CN105357147B (zh) 一种高速高可靠的片上网络适配单元
CN102638487B (zh) 大型遥测地震仪高性能数据传输方法
CN103516802A (zh) 一种实现跨异构虚拟交换机无缝迁移的方法和装置
CN104506379A (zh) 网络数据捕获方法和系统
CN106484322A (zh) 一种挂载文件系统的方法、装置及设备
CN105162512A (zh) 多通道卫星遥感数据处理与存储系统及测试方法
US9612934B2 (en) Network processor with distributed trace buffers
CN110188059A (zh) 数据有效位统一配置的流控式fifo缓存结构及方法
CN110535827A (zh) 实现多连接管理的tcp协议全卸载ip核的方法及系统
US8589607B1 (en) Methods and structure for hardware management of serial advanced technology attachment (SATA) DMA non-zero offsets in a serial attached SCSI (SAS) expander
CN108011795B (zh) 一种实现通信设备中多板卡和多数据通道管理的方法及系统
CN102571609A (zh) 快速串行接口pci-e协议数据完成包的重组排序方法
CN110417860A (zh) 文件传输管理方法、装置、设备及存储介质
CN101044727B (zh) 使用直插式信用扩充器与主机总线适配器的方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20211224

Address after: California, USA

Patentee after: Cisco Technology, Inc.

Address before: New South Wales,Australia

Patentee before: ZOMOJO Pty Ltd.

TR01 Transfer of patent right