Packet processing using non-sequential encapsulation and decapsulation chains

    公开(公告)号:US06601106B1

    公开(公告)日:2003-07-29

    申请号:US09418781

    申请日:1999-10-15

    IPC分类号: G06F15173

    CPC分类号: H04L29/06 H04L49/90 H04L69/18

    摘要: A method for processing packets in a router includes specifying operations on packets as chains of processing elements. Each chain is uniquely associated with one interface/protocol pair, and each processing element performs at least one function on a packet. An incoming packet is received, and processed, first by a demultiplexor element which determines the protocol of the next higher level used by the packet. Then, the packet is processed by the elements of a decapsulation chain associated with the interface on which the packet was received, and by the elements of an encapsulation chain associated with the interface on which the packet is to be transmitted. The demultiplexor element or operation passes the packet on to a decapsulation chain associated with the protocol and with the incoming interface, depending on protocol information contained in the incoming packet. Decapsulation and encapsulation chains can be built dynamically, by inserting new and removing old elements as necessary as new protocols are developed and new features added. A chain walker walks through the chains, passing the processed packet to each element in a chain, until either the end of the chain is reached and processing is complete, or until the packet is dropped because no function can process it, or because a packet is processed by an outside process or by hardware, which may optionally stop the chain walk. A chain walk may be temporarily halted, or may be terminated. If temporarily halted, the chain walk can be resumed at any element in the chain, depending on the packet's requirements. A chain walk can also begin at any element in a chain. Alternate branches within the chain can be provided, where each branch can comprise zero or more elements. A classifier determines which branch to take, based on at least one characteristic of the packet being processed, and executes the elements of the selected branch.

    Apparatus and method for improving performance of critical code execution
    2.
    发明授权
    Apparatus and method for improving performance of critical code execution 有权
    提高关键代码执行性能的装置和方法

    公开(公告)号:US06698015B1

    公开(公告)日:2004-02-24

    申请号:US09594179

    申请日:2000-06-13

    IPC分类号: G06F945

    CPC分类号: G06F9/44521 G06F9/44557

    摘要: Critical code routines are identified, separated from other routines, and compiled into a set of one or more critical dynamic link libraries (“DLLs”). These are then recognized by a DLL loader and loaded at a reserved address space in the DLL memory space. Once all of the critical DLLs have been loaded, cache locking may be enabled for the reserved address space. Robust fault containment is facilitated through the use of code modules implemented as shared libraries that can be loaded and unloaded in a running system by individual processes. These code modules can be replaced individually as defects are found and fixed without requiring replacement of the entire system image or application image. What would normally be a monolithic application is modularized, and the sharing of common code among multiple applications is facilitated.

    摘要翻译: 关键代码例程被识别,与其他例程分离,并编译成一组一个或多个关键动态链接库(“DLL”)。 然后,它们被DLL加载程序识别并加载到DLL内存空间中的保留地址空间。 一旦所有关键的DLL都被加载,缓存锁定可以被启用为保留的地址空间。 通过使用实现为共享库的代码模块,可以通过单个进程在运行的系统中加载和卸载强大的故障控制。 这些代码模块可以单独更换,因为找不到缺陷,而不需要更换整个系统映像或应用程序映像。 通常,单片应用程序是模块化的,并且便于在多个应用程序之间共享通用代码。

    System and method for crash handling on redundant systems
    3.
    发明授权
    System and method for crash handling on redundant systems 有权
    冗余系统上的崩溃处理系统和方法

    公开(公告)号:US06457138B1

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

    申请号:US09294452

    申请日:1999-04-19

    IPC分类号: G06F1100

    CPC分类号: G06F11/2035 G06F11/2023

    摘要: The present invention relates to providing processor redundancy in a system such as a router. According to an embodiment of the present invention, when a primary processor is about to crash in a system having two or more processors, the imminent crash is identified prior to the occurrence of the actual crash. The primary processor sends a message to the secondary processor to indicate that it is crashing. The primary also sets a timer to determine a period of time to wait prior to crashing. When the secondary processor receives the message from the primary processor, the secondary processor becomes the new primary processor. The new primary processor then sends an acknowledgement to the old primary processor. The old primary processor crashes and reboots as the new secondary processor.

    摘要翻译: 本发明涉及在诸如路由器的系统中提供处理器冗余。 根据本发明的实施例,当主处理器即将在具有两个或更多个处理器的系统中崩溃时,在实际崩溃发生之前识别即将发生的崩溃。 主处理器向二级处理器发送消息以指示它正在崩溃。 主要还设置一个计时器来确定在崩溃之前等待的时间段。 当辅助处理器从主处理器接收到消息时,辅助处理器成为新的主处理器。 然后,新的主处理器向旧的主处理器发送确认。 旧的主处理器崩溃并重新启动,作为新的二级处理器。

    Router software upgrade employing redundant processors
    4.
    发明授权
    Router software upgrade employing redundant processors 有权
    路由器软件升级采用冗余处理器

    公开(公告)号:US07610405B1

    公开(公告)日:2009-10-27

    申请号:US10825850

    申请日:2004-04-16

    IPC分类号: G06F15/173

    摘要: Systems and methods for replacing software controlling active routers while minimizing impact on network operation are provided by virtue of one embodiment of the present invention. The software replacement process takes advantage of packet processor redundancy. An active packet switching device to be reprogrammed is de-activated and a redundant packet switching device takes over. The no longer active packet switching device is reprogrammed before being reactivated.

    摘要翻译: 凭借本发明的一个实施例提供了用于替代控制有源路由器的软件的系统和方法,同时最小化对网络操作的影响。 软件更换过程利用了数据包处理器冗余。 重新编程的有源分组交换设备被去激活,并且冗余分组交换设备接管。 不再有效的分组交换设备在重新激活之前被重新编程。

    Distributed packet processing using encapsulation and decapsulation chains
    5.
    发明授权
    Distributed packet processing using encapsulation and decapsulation chains 有权
    使用封装和解封装链的分布式数据包处理

    公开(公告)号:US06697872B1

    公开(公告)日:2004-02-24

    申请号:US09418723

    申请日:1999-10-15

    IPC分类号: G06F1516

    摘要: A method for processing packets includes specifying a primary chain of function elements on a primary processor and specifying a secondary chain of function elements on a secondary processor. Each element is operable to perform an operation on a packet. The method further includes selecting one of the primary processor, secondary processor, and combination of the primary and secondary processors to perform a packet-processing function of each element. The packets are processed by walking through the elements on at least one of the primary and secondary chains. A router having a primary and secondary processor is also disclosed. The primary and secondary processors each include a chain generator for generating primary and secondary chains of function elements. Each of the function elements of the primary chain corresponds to one of the function elements of the secondary chain to form a pair of function elements. At least one function element of each pair is configured to perform a packet-processing function.

    摘要翻译: 一种用于处理分组的方法包括在主处理器上指定功能元件的主链,并且在辅助处理器上指定功能元件的辅助链。 每个元素可操作以对分组执行操作。 该方法还包括选择主处理器,辅助处理器之一,以及主处理器和次处理器的组合以执行每个元件的分组处理功能。 通过穿过主链和次链中的至少一个上的元素来处理分组。 还公开了具有主处理器和次处理器的路由器。 主处理器和次处理器各自包括用于产生功能元件的主链和次链的链发生器。 主链的每个功能元件对应于次级链的功能元件之一,以形成一对功能元件。 每对的至少一个功能元件被配置为执行分组处理功能。

    Router software upgrade employing redundant processors
    6.
    发明授权
    Router software upgrade employing redundant processors 有权
    路由器软件升级采用冗余处理器

    公开(公告)号:US06738826B1

    公开(公告)日:2004-05-18

    申请号:US09512990

    申请日:2000-02-24

    IPC分类号: G06F15173

    摘要: Systems and methods for replacing software controlling active routers while minimizing impact on network operation are provided by virtue of one embodiment of the present invention. The software replacement process takes advantage of packet processor redundancy. An active packet switching device to be reprogrammed is de-activated and a redundant packet switching device takes over. The no longer active packet switching device is reprogrammed before being reactivated.

    摘要翻译: 凭借本发明的一个实施例提供了用于替代控制有源路由器的软件的系统和方法,同时最小化对网络操作的影响。 软件更换过程利用数据包处理器冗余。 重新编程的有源分组交换设备被去激活,并且冗余分组交换设备接管。 不再有效的分组交换设备在重新激活之前被重新编程。

    Performance improvement of critical code execution
    7.
    发明授权
    Performance improvement of critical code execution 有权
    关键代码执行的性能提升

    公开(公告)号:US06708330B1

    公开(公告)日:2004-03-16

    申请号:US09593735

    申请日:2000-06-13

    IPC分类号: G06F945

    摘要: Portions of code containing critical code routines are identified and labeled, then compiled into Dynamic Link Libraries (“DLLs”) and linked such that the critical code routines are optimally loaded into a reserved address space in the DLL memory space. If supported, cache locking may be enabled for the reserved address space. The portions of source code containing portions of critical code for which execution performance is to be improved are labeled, and the source code is scanned prior to compilation to locate the labeled portions of critical code. A linker is configured to store all the labeled portions of critical code into an Executable and Linking Format (“ELF”) section header, which is relocated at run-time into a memory space reserved for the portions of critical code. Alternatively, the critical code is compiled and linked into an executable file containing the critical code, and the executable file is optimized by scanning the instruction stream and in-lining the critical code. A prolog and an epilog that accommodates this in-lined critical code is generated, and a single optimized DLL containing the critical code is generated, which is then loaded into a reserved memory space. Robust fault containment is facilitated through the use of code modules implemented as shared libraries that can be loaded and unloaded in a running system by individual processes. These code modules can be replaced individually as defects are found and fixed without requiring replacement of the entire system image or application image. What would normally be a monolithic application is modularized, and the sharing of common code among multiple applications is facilitated.

    摘要翻译: 包含关键代码例程的代码部分被识别和标记,然后被编译成动态链接库(“DLL”)并链接,使得关键代码例程被最佳地加载到DLL内存空间中的保留地址空间中。 如果支持,可以为保留的地址空间启用高速缓存锁定。 标明包含要改进执行性能的关键代码部分的源代码部分,并在编译之前扫描源代码以定位关键代码的标记部分。 链接器被配置为将关键代码的所有标记部分存储到可执行和链接格式(“ELF”)部分标题中,该标题在运行时被重新定位到为关键代码部分保留的存储器空间中。 或者,关键代码被编译并链接到包含关键代码的可执行文件中,并且可执行文件通过扫描指令流并内联关键代码进行优化。 生成适应此内置关键代码的序言和epilog,并生成包含关键代码的单个优化DLL,然后将其加载到预留的内存空间中。 通过使用实现为共享库的代码模块,可以通过单个进程在运行的系统中加载和卸载强大的故障控制。 这些代码模块可以单独更换,因为找不到缺陷,而不需要更换整个系统映像或应用程序映像。 通常,单片应用程序是模块化的,并且便于在多个应用程序之间共享通用代码。

    Congestion management system and method
    8.
    发明授权
    Congestion management system and method 有权
    拥塞管理系统和方法

    公开(公告)号:US06678244B1

    公开(公告)日:2004-01-13

    申请号:US09478969

    申请日:2000-01-06

    IPC分类号: G01R3108

    摘要: A method of monitoring congestion within a data path having a queuing node located therein and a plurality of downstream nodes positioned downstream of the queuing node. The method includes monitoring congestion at the plurality of downstream nodes and setting a congestion notification flag by one of the downstream nodes when the node is congested. The transmission of data packets from the queuing node is stopped and packets received at the queuing node are queued when the flag is set. The method further includes transmitting packets from the queuing node when the congestion notification flag is cleared. A system for monitoring congestion on a data path is also disclosed.

    摘要翻译: 一种监视位于其内的排队节点的数据路径中的拥塞的方法以及位于排队节点下游的多个下游节点。 该方法包括监视多个下游节点的拥塞,并且当节点拥塞时,通过下游节点之一设置拥塞通知标志。 停止从排队节点发送数据包,并且在设置该标志时,在排队节点接收到的数据包排队。 所述方法还包括:当所述拥塞通知标志被清除时,从所述排队节点发送分组。 还公开了一种用于监视数据路径上的拥塞的系统。

    System and method for establishing processor redundancy
    9.
    发明授权
    System and method for establishing processor redundancy 有权
    用于建立处理器冗余的系统和方法

    公开(公告)号:US06460146B1

    公开(公告)日:2002-10-01

    申请号:US09205577

    申请日:1998-12-04

    IPC分类号: H02H305

    CPC分类号: G06F11/2035 G06F11/2023

    摘要: The present invention relates to providing processor redundancy in a system such as a router. According to an embodiment of the present invention, in a system having two or more processors, initialization sequence is started. During the initialization sequence, a redundancy subsystem is initialized. The redundancy subsystem identifies the projects or assignments that are to be off loaded from the primary processor to the secondary processor. According to an embodiment of the present invention, the initialization sequence is then suspended and a discovery process is performed. During the discovery process, it is determined whether the processor running the initialization sequence is a primary or a secondary processor. If it is a secondary processor, then the initialization sequence remains suspended and the secondary processor monitors the health of the primary processor until a failure of the primary processor occurs. If a primary processor failure occurs, then the initialization process is resumed for the secondary processor, hence establishing the secondary processor as the new primary processor.

    摘要翻译: 本发明涉及在诸如路由器的系统中提供处理器冗余。 根据本发明的实施例,在具有两个或多个处理器的系统中,开始初始化序列。 在初始化序列期间,初始化冗余子系统。 冗余子系统识别要从主处理器卸载到辅助处理器的项目或分配。 根据本发明的实施例,然后暂停初始化序列并执行发现处理。 在发现过程中,确定运行初始化序列的处理器是主处理器还是辅助处理器。 如果是辅助处理器,则初始化序列保持暂停,并且辅助处理器监视主处理器的运行状况,直到主处理器出现故障。 如果发生主处理器故障,则为辅助处理器恢复初始化过程,从而将辅助处理器建立为新的主处理器。

    System and method for discovering relative states of processors
    10.
    发明授权
    System and method for discovering relative states of processors 有权
    发现处理器相对状态的系统和方法

    公开(公告)号:US06286048B1

    公开(公告)日:2001-09-04

    申请号:US09205554

    申请日:1998-12-04

    申请人: Kenneth Moberg

    发明人: Kenneth Moberg

    IPC分类号: G06F1200

    CPC分类号: H04L45/00 H04L45/22 H04L45/28

    摘要: According to an embodiment of the present invention, two routers coupled through a network, such as a local access network (LAN), may be used to serve the function of redundancy to avoid the failure of a connection. The LAN may be used as a backplane to substitute for a bus between two processors. According to an embodiment of the present invention, the two routers may send their medium access control (MAC) addresses to each other and compare these MAC addresses. The router associated with the MAC address that meets a predetermined criteria may be deemed as a primary router and the other router can be deemed as a secondary router. An example of meeting the predetermined criteria is the router associated with the lower MAC address. Once processor states, such as stand alone, primary, and secondary, are established for the two routers, the primary router may serve the function of a standard router, while the secondary router monitors the health of the primary router and becomes a primary router should the original primary router have a failure.

    摘要翻译: 根据本发明的实施例,可以使用通过诸如本地接入网(LAN)之类的网络耦合的两个路由器用于冗余的功能,以避免连接的故障。 LAN可以用作背板来代替两个处理器之间的总线。 根据本发明的一个实施例,两个路由器可以将它们的媒体访问控制(MAC)地址彼此发送,并对这些MAC地址进行比较。 与满足预定标准的MAC地址相关联的路由器可以被认为是主路由器,并且另一路由器可以被认为是辅助路由器。 满足预定标准的示例是与较低MAC地址相关联的路由器。 一旦处理器状态(例如独立的,主要的和次要的)被建立用于两个路由器,则主路由器可以服务于标准路由器的功能,而辅助路由器监视主路由器的健康状况并且成为主路由器 原始主路由器出现故障。