High performance network interface
    1.
    发明授权
    High performance network interface 有权
    高性能网络接口

    公开(公告)号:US06453360B1

    公开(公告)日:2002-09-17

    申请号:US09259765

    申请日:1999-03-01

    IPC分类号: G06F1300

    摘要: A high performance network interface is provided for receiving a packet from a network and transferring it to a host computer system. A header portion of a received packet is parsed by a parser module to determine the packet's compatibility with, or conformance to, one or more pre-selected protocols. If compatible, a number of processing functions may be performed to increase the efficiency with which the packet is handled. In one function, a re-assembly engine re-assembles, in a re-assembly buffer, data portions of multiple packets in a single communication flow or connection. Header portions of such packets are stored in a header buffer. An incompatible packet may be stored in another buffer. In another function, a packet batching module determines when multiple packets in one flow are transferred to the host computer system, so that their header portions are processed collectively rather than being interspersed with headers of other flows' packets. In yet another function, the processing of packets through their protocol stacks is distributed among multiple processors by a load distributor, based on their communication flows. A flow database is maintained by a flow database manager to reflect the creation, termination and activity of flows. A packet queue stores packets to await transfer to the host computer system, and a control queue stores information concerning the waiting packets. If the packet queue becomes saturated with packets, a random packet may be discarded. An interrupt modulator may modulate the rate at which interrupts associated with packet arrival events are issued to the host computer system.

    摘要翻译: 提供了一种高性能网络接口,用于从网络接收分组并将其传送到主机系统。 接收到的分组的报头部分由解析器模块解析以确定分组与一个或多个预选协议的兼容性或符合一个或多个预选协议。 如果兼容,则可以执行多个处理功能以提高处理分组的效率。 在一个功能中,重新组装引擎在重新组装缓冲器中重新组装单个通信流或连接中的多个分组的数据部分。 这些分组的报头部分被存储在报头缓冲器中。 不兼容的数据包可能存储在另一个缓冲区中。 在另一个功能中,分组批处理模块确定一个流中的多个分组何时被传送到主计算机系统,使得它们的头部部分被集体处理,而不是散布在其他流的分组的头部。 在另一个功能中,通过它们的协议栈对分组的处理由负载分配器基于它们的通信流分布在多个处理器之间。 流数据库由流数据库管理器维护,以反映流的创建,终止和活动。 分组队列存储分组以等待传送到主计算机系统,并且控制队列存储关于等待分组的信息。 如果分组队列变得饱和,则随机分组可能被丢弃。 中断调制器可以调制与主机计算机系统发出与分组到达事件相关联的中断的速率。

    Method and apparatus for data re-assembly with a high performance network interface
    2.
    发明授权
    Method and apparatus for data re-assembly with a high performance network interface 有权
    具有高性能网络接口的数据重新组装方法和装置

    公开(公告)号:US06480489B1

    公开(公告)日:2002-11-12

    申请号:US09260333

    申请日:1999-03-01

    IPC分类号: H04L1228

    摘要: A system and method are provided for transferring a packet received from a network to a host computer according to an operation code associated with the packet. A packet received at a network interface is parsed to retrieve information from a header portion of the packet. A flow key is generated for a received packet that was formatted with one of a set of predetermined protocols. A packet's flow key identifies a communication flow that comprises the packet. Based on some of the retrieved information, a code is associated with the packet to inform a transfer engine how the packet should be transferred to host memory. Based on a packet's code, the transfer engine stores the packet in one or more host memory buffers. If the packet was formatted with one of the set of predetermined protocols, its data is re-assembled in a re-assembly buffer with data from other packets in the same communication flow. Re-assembled data may be provided to a destination application or user through page flipping. If the packet is being re-assembled, a header portion of the packet is stored in a separate header buffer. If the packet is not being re-assembled, it is stored in its entirety in the header buffer if it is smaller than a predetermined threshold. If a non-re-assembled packet is larger than the threshold for the header buffer, it is stored in another type of buffer for larger non-re-assembled packets. After a packet is stored in a buffer, the transfer engine informs the host computer of the packet by configuring a descriptor with information on the packet and releasing the descriptor to the host computer.

    摘要翻译: 提供了一种系统和方法,用于根据与分组相关联的操作码将从网络接收到的分组传送到主计算机。 在网络接口处接收的分组被解析以从分组的报头部分检索信息。 针对以一组预定协议格式化的接收分组生成流密钥。 分组的流密钥标识包括分组的通信流。 基于一些检索到的信息,代码与分组相关联以通知传输引擎如何将分组传送到主机存储器。 基于分组的代码,传输引擎将分组存储在一个或多个主机存储器缓冲器中。 如果分组被格式化为预定协议集合中的一个,则其数据在具有来自相同通信流中的其他分组的数据的重新组装缓冲器中被重新组装。 可以通过翻页翻页将重新组装的数据提供给目的地应用程序或用户。 如果分组被重新组装,则分组的报头部分被存储在单独的报头缓冲器中。 如果分组未被重新组装,则如果分组小于预定阈值,则将其整体存储在报头缓冲器中。 如果非重新组合的分组大于报头缓冲区的阈值,则将其存储在另一种类型的缓冲器中用于较大的非重新组装的分组。 在将数据包存储在缓冲器中之后,传输引擎通过配置具有关于分组的信息的描述符并将该描述符释放到主机来通知主机计算机。

    Method and apparatus for early random discard of packets
    3.
    发明授权
    Method and apparatus for early random discard of packets 有权
    早期随机丢弃数据包的方法和装置

    公开(公告)号:US06606301B1

    公开(公告)日:2003-08-12

    申请号:US09258952

    申请日:1999-03-01

    IPC分类号: H04L1226

    摘要: A high performance network interface receives network traffic in the form of packets. Prior to being transferred to a host computer, a packet is stored in a packet queue. A system and method are provided for randomly discarding a packet if the rate of packet transfers cannot keep pace with the rate of packet arrivals at the queue. When a packet must be dropped a selected packet may be discarded as it arrives at the queue, or a packet already in the queue may be dropped. A packet queue is apportioned into multiple regions, any of which may overlap or share a common boundary. A probability indicator is associated with a region to specify the probability of a packet being discarded when the level of traffic stored in the queue is within the region. A counter may be employed in conjunction with a probability indicator to identify individual packets. Probability indicators may differ from region to region so that the probability of discarding a packet fluctuates as the level of traffic stored in the queue changes. In addition to selecting packets to be dropped on a random basis, information gleaned from a packet may be applied to prevent certain types of packets from being dropped. The information derived from a packet may be obtained during a procedure in which one or more of the packet's headers are parsed. By parsing a packet, it may be determined whether the packet conforms to a pre-selected protocol.

    摘要翻译: 高性能网络接口以数据包的形式接收网络流量。 在被转移到主计算机之前,分组被存储在分组队列中。 提供一种用于随机丢弃分组的系统和方法,如果分组传输的速率不能跟上队列中的分组到达速率。 当分组必须丢弃时,所选择的分组可能在到达队列时被丢弃,或者已经在队列中的分组可能被丢弃。 分组队列被分配到多个区域中,其中任一个可以重叠或共享公共边界。 概率指示符与区域相关联,以指定在队列中存储的流量在区域内时丢弃分组的概率。 可以结合使用概率指示符来计算计数器以识别各个分组。 概率指标可能因区域而异,因此丢弃数据包的概率随着队列中存储的流量变化而波动。 除了随机选择要丢弃的数据包之外,还可以应用从数据包中收集的信息来防止某些类型的数据包被丢弃。 在分组中的一个或多个报头被解析的过程中可以获得从分组导出的信息。 通过分析分组,可以确定分组是否符合预先选择的协议。

    Method and apparatus for dynamic packet batching with a high performance network interface
    4.
    发明授权
    Method and apparatus for dynamic packet batching with a high performance network interface 有权
    具有高性能网络接口的动态分组批处理方法和装置

    公开(公告)号:US06483804B1

    公开(公告)日:2002-11-19

    申请号:US09260324

    申请日:1999-03-01

    IPC分类号: H04J116

    摘要: A system and method are provided for identifying related packets in a communication flow for the purpose of collectively processing them through a protocol stack comprising one or more protocols under which the packets were transmitted. A packet received at a network interface is parsed to retrieve information from one or more protocol headers. A flow key is generated to identify a communication flow that includes the packet, and is stored in a database of flow keys. When the packet is placed in a queue to be transferred to a host computer, the flow key and/or its flow number (e.g., its index into the database) is stored in a separate queue. Near to the time at which the packet is transferred to the host computer, a dynamic packet batching module searches for a packet that is related to the packet being transferred (i.e., is in the same flow) but which will be transferred later in time. If a related packet is located, the host computer is alerted and, as a result, delays processing the transferred packet until the related packet is also received. By collectively processing the related packets, processor time is more efficiently utilized.

    摘要翻译: 提供了一种用于识别通信流中的相关分组的系统和方法,用于通过协议栈共同处理它们,该协议栈包括传输分组的一个或多个协议。 在网络接口处接收到的分组被解析为从一个或多个协议头部检索信息。 生成流密钥以识别包括分组的通信流,并存储在流密钥的数据库中。 当分组被放置在要传送到主计算机的队列中时,流密钥和/或其流号(例如,其到数据库的索引)被存储在单独的队列中。 在分组被传送到主计算机的时间附近,动态分组批处理模块搜索与正在传送的分组相关的分组(即,处于相同的流程),但将在时间上稍后传送。 如果相关的分组被定位,则主机被警告,结果是延迟处理传送的分组,直到相关分组也被接收到。 通过集体处理相关的数据包,更有效地利用处理器时间。

    Method and apparatus for managing a network flow in a high performance network interface
    5.
    发明授权
    Method and apparatus for managing a network flow in a high performance network interface 有权
    用于在高性能网络接口中管理网络流的方法和装置

    公开(公告)号:US06650640B1

    公开(公告)日:2003-11-18

    申请号:US09259932

    申请日:1999-03-01

    IPC分类号: G06F1300

    摘要: A system and method are provided for managing information concerning a network flow comprising packets sent from a source entity to a destination entity served by a network interface. A network flow is established for each datagram sent from the source entity to the destination entity. A flow key, identifying the source and destination entities, is stored in a data structure along with information concerning validity of the flow, sequence of data in the flow datagram and how recently the flow was active. Once a flow is established, it is updated each time a packet containing data from the flow's datagram is received. When such a packet is received, an operation code is generated for identifying whether the packet is suitable for a particular network interface function. An operation code may, for example, indicate that a packet contains data to be re-assembled with other data from the same flow. Another operation code may indicate that a packet is not suitable for data re-assembly. Another operation code may specify that the packet is simply a control packet, has no data, or that the packet was received out of order.

    摘要翻译: 提供了一种系统和方法,用于管理关于包括从源实体发送到由网络接口​​服务的目的地实体的分组的网络流的信息。 为从源实体发送到目标实体的每个数据报建立网络流。 识别源和目的地实体的流密钥与流程的有效性,流数据报中的数据序列以及流最近活动的信息一起存储在数据结构中。 一旦流建立,每次收到来自流数据报的数据包都被更新。 当接收到这样的分组时,生成用于识别分组是否适合于特定网络接口功能的操作码。 例如,操作代码可以指示分组包含要与来自相同流的其他数据重新组合的数据。 另一个操作代码可能表示一个数据包不适合数据重新组装。 另一个操作代码可以指定该分组仅仅是一个控制分组,没有数据,或者该分组被无序接收。

    Method and apparatus for distributing network traffic processing on a multiprocessor computer
    6.
    发明授权
    Method and apparatus for distributing network traffic processing on a multiprocessor computer 有权
    在多处理器计算机上分配网络流量处理的方法和装置

    公开(公告)号:US06389468B1

    公开(公告)日:2002-05-14

    申请号:US09259445

    申请日:1999-03-01

    IPC分类号: G06F15173

    CPC分类号: H04L67/1002

    摘要: A system and method are provided for distributing or sharing the processing of network traffic (e.g., through a protocol stack on a host computer system) received at a multiprocessor computer system. A packet formatted according to one or more communication protocols is received from a network entity at a network interface circuit of a multiprocessor computer. A header portion of the packet is parsed to retrieve information stored in one or more protocol headers, such as source and destination identifiers or a virtual communication connection identifier. In one embodiment, a source identifier and a destination identifier are combined to form a flow key that is subjected to a hash function. The modulus of the result of the hash function over the number of processors in the multiprocessor computer is then calculated. In another embodiment a modulus operation is performed on the packet's virtual communication connection identifier. The result of the modulus operation identifies a processor to which the packet is submitted for processing.

    摘要翻译: 提供了一种用于分发或共享在多处理器计算机系统处接收的网络业务(例如,通过主计算机系统上的协议栈)的处理的系统和方法。 根据一个或多个通信协议格式化的分组从多处理器计算机的网络接口电路处的网络实体接收。 解析分组的报头部分以检索存储在一个或多个协议报头中的信息,例如源和目的地标识符或虚拟通信连接标识符。 在一个实施例中,源标识符和目的地标识符被组合以形成经受散列函数的流密钥。 然后计算散列函数的结果与多处理器计算机中的处理器数量的模数。 在另一个实施例中,对分组的虚拟通信连接标识符执行模数运算。 模数运算的结果标识了要提交数据包进行处理的处理器。

    Method for sharing interfaces among multiple domain environments with enhanced hooks for exclusiveness
    7.
    发明授权
    Method for sharing interfaces among multiple domain environments with enhanced hooks for exclusiveness 有权
    在多个域环境之间共享接口的方法,具有增强的钩子以进行排他性

    公开(公告)号:US08762595B1

    公开(公告)日:2014-06-24

    申请号:US11098726

    申请日:2005-04-05

    IPC分类号: G06F13/14

    CPC分类号: G06F13/385

    摘要: A method for sharing a network interface among multiple hosts and includes providing a network interface, associating a first set of the plurality of memory access channels with a first host, and associating a second set of the plurality of memory access channels with a second host is disclosed. The network interface including a plurality of memory access channels.

    摘要翻译: 一种用于在多个主机之间共享网络接口的方法,包括提供网络接口,将第一组多个存储器访问信道与第一主机相关联,以及将第二组多个存储器访问通道与第二主机相关联的方法是 披露 网络接口包括多个存储器访问信道。

    Method for resolving mutex contention in a network system
    8.
    发明授权
    Method for resolving mutex contention in a network system 有权
    解决网络系统中互斥竞争的方法

    公开(公告)号:US08023528B2

    公开(公告)日:2011-09-20

    申请号:US12691435

    申请日:2010-01-21

    IPC分类号: H04L12/66

    CPC分类号: G06F15/17375

    摘要: A method of resolving mutex contention within a network interface unit which includes providing a plurality of memory access channels, and moving a thread via at least one of the plurality of memory access channels, the plurality of memory access channels allowing moving of the thread while avoiding mutex contention when moving the thread via the at least one of the plurality of memory access channels is disclosed.

    摘要翻译: 一种解决网络接口单元内的互斥竞争的方法,其包括提供多个存储器访问通道,以及经由所述多个存储器访问通道中的至少一个移动线程,所述多个存储器访问通道允许线程移动同时避免 公开了当通过多个存储器访问信道中的至少一个移动线程时的互斥争用。

    Hiding system latencies in a throughput networking systems
    9.
    发明授权
    Hiding system latencies in a throughput networking systems 有权
    在吞吐量网络系统中隐藏系统延迟

    公开(公告)号:US08006016B2

    公开(公告)日:2011-08-23

    申请号:US13008092

    申请日:2011-01-18

    IPC分类号: G06F12/00

    摘要: A method for addressing system latency within a network system which includes providing a network interface and moving data within each of the plurality of memory access channels independently and in parallel to and from a memory system so that one or more of the plurality of memory access channels operate efficiently in the presence of arbitrary memory latencies across multiple requests is disclosed. The network interface includes a plurality of memory access channels.

    摘要翻译: 一种用于解决网络系统内的系统等待时间的方法,包括提供网络接口并且在存储器系统中独立地并且与存储器系统并行地移动多个存储器访问通道的每一个内的数据,使得多个存储器访问通道 公开了在多个请求之间存在任意存储器延迟的情况下有效地操作。 网络接口包括多个存储器访问通道。

    DIRECT MEMORY ACCESS BUFFER MANAGEMENT
    10.
    发明申请
    DIRECT MEMORY ACCESS BUFFER MANAGEMENT 有权
    直接存储器访问缓冲器管理

    公开(公告)号:US20110055346A1

    公开(公告)日:2011-03-03

    申请号:US12550005

    申请日:2009-08-28

    IPC分类号: G06F15/167 G06F3/00

    CPC分类号: G06F13/28

    摘要: Disclosed are systems and methods for reclaiming posted buffers during a direct memory access (DMA) operation executed by an input/output device (I/O device) in connection with data transfer across a network. During the data transfer, the I/O device may cancel a buffer provided by a device driver thereby relinquishing ownership of the buffer. A condition for the I/O device relinquishing ownership of a buffer may be provided by a distance vector that may be associated with the buffer. The distance vector may specify a maximum allowable distance between the buffer and a buffer that is currently fetched by the I/O device. Alternatively, a condition for the I/O device relinquishing ownership of a buffer may be provided by a timer. The timer may specify a maximum time that the I/O device may maintain ownership of a particular buffer. In other implementations, a mechanism is provided to force the I/O device to relinquish some or all of the buffers that it controls.

    摘要翻译: 公开了用于在通过网络进行数据传输的输入/输出设备(I / O设备)执行的直接存储器访问(DMA)操作期间回收缓冲器的系统和方法。 在数据传输期间,I / O设备可以取消由设备驱动器提供的缓冲器,从而放弃缓冲器的所有权。 放弃缓冲器所有权的I / O设备的条件可以由可能与缓冲器相关联的距离向量来提供。 距离向量可以指定缓冲区和I / O设备当前获取的缓冲区之间的最大允许距离。 或者,可以由定时器提供放弃缓冲器的所有权的I / O设备的条件。 定时器可以指定I / O设备可以维持特定缓冲器的所有权的最大时间。 在其他实现中,提供了一种机制来强制I / O设备放弃其控制的一些或全部缓冲区。