Making Transmission Control Protocol (TCP) sessions robust in a socket replication environment
Patent Information
- Application Number
- CN202210896385.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2022-06-10
- Filing Date
- 2022-07-28
- Publication Date
- 2026-09-08
- Estimated Expiration
- 2042-07-28
Smart Images

Figure CN117255142B_ABST
Abstract
Description
Background Technology
[0001] Uninterrupted Active Routing (NSR) is built on top of the Governed Routing Engine Switching (GRES) framework to provide high availability to routing protocols. Summary of the Invention
[0002] Some implementations described herein relate to a method. The method may include: a network device executing a main application that communicates with another network device via a session, and a backup application replication layer of the network device receiving replicated data objects. The method may include: the backup application replication layer providing the replicated data objects to a backup application, and the backup application replication layer calculating a time increment between when the replicated data objects are received and when the replicated data objects arrive at the backup application. The method may include: the backup application replication layer determining whether the time increment exceeds a first threshold or a second threshold, and the backup application replication layer generating a session flag based on the time increment exceeding the first or second threshold. The method may include: the backup application replication layer providing the session flag to the main application replication layer and the backup application, and the main application replication layer providing session details to the main application and the backup application.
[0003] Some implementations described herein relate to a network device. The network device may include one or more memories and one or more processors. One or more processors may be configured to: execute a main application communicating with another network device via a session, and receive replicated data objects by a backup application replication layer. One or more processors may be configured to: provide replicated data objects to a backup application by the backup application replication layer, and calculate the time increment between when the replicated data objects are received and when they arrive at the backup application. One or more processors may be configured to: determine whether the time increment exceeds a first threshold or a second threshold by the backup application replication layer, and generate a session flag based on the time increment exceeding the first or second threshold. One or more processors may be configured to: provide the session flag to the main application replication layer and the backup application by the backup application replication layer, and provide session details to the main application and the backup application by the main application replication layer. One or more processors may be configured to: stop session replication by the main application replication layer based on the session details.
[0004] Some implementations described herein relate to a non-transient computer-readable medium storing an instruction set for a network device. When executed by one or more processors of the network device, the instruction set enables the network device to: execute a main application communicating with another network device via a session, and receive replicated data objects by a backup application replication layer. When executed by one or more processors of the network device, the instruction set enables the network device to: provide replicated data objects to a backup application by the backup application replication layer, and calculate the time increment between when the replicated data objects are received and when they arrive at the backup application. When executed by one or more processors of the network device, the instruction set enables the network device to: determine whether the time increment exceeds a first threshold or a second threshold by the backup application replication layer, and generate a session flag based on the time increment exceeding the first or second threshold. When executed by one or more processors of the network device, the instruction set enables the network device to: provide the session flag to the main application replication layer and the backup application by the backup application replication layer, and provide session details to the main application and the backup application by the main application replication layer. Attached Figure Description
[0005] Figures 1A to 1I This is a diagram illustrating an example of how to make a Transmission Control Protocol session robust in a socket replication environment.
[0006] Figure 2 It is a diagram of an example environment in which the systems and / or methods described in this article can be implemented.
[0007] Figure 3 and Figure 4 yes Figure 2 A diagram of example components of one or more devices.
[0008] Figure 5 This is a flowchart of an example process for making a Transmission Control Protocol session robust in a socket copying environment. Detailed Implementation
[0009] The following example implementation is described in detail with reference to the accompanying drawings. The same reference numerals in different drawings can identify the same or similar elements.
[0010] GRES provides the availability of interfaces and kernel state information about the network device's standby routing engine. Unlike GRES, NSR enables routing application daemons to run in standby mode and maintains routing protocol information. NSR can provide a socket replication layer that runs in the kernel and guarantees the replication of any ingress and / or egress protocol packets to the network device's standby routing engine. High-scale network devices can include thousands of NSR sessions, each capable of high-speed input and output. However, any NSR session can flop (e.g., become unstable) for various reasons, such as slow or stuck backup (standby) applications (e.g., causing the standby routing engine to fail to acknowledge replicated data to the primary routing engine within the hold time), overwhelming data replication rates exceeding the capacity of the socket replication layer (e.g., the backup application cannot process replicated data at the expected rate because the primary application cannot keep up with the pace of incoming and / or outgoing data replication). NSR can replicate ingress and / or egress data for all sessions to the backup application. Some sessions that perform a lot of input and output may affect other sessions (e.g., low-resilience sessions).
[0011] Current technologies for monitoring network devices fail to detect potential NSR session fluctuations and fail to provide feedback on these fluctuations to the main application for corrective action. Therefore, current technologies for monitoring network devices consume computational resources (e.g., processing resources, memory resources, communication resources, etc.), networking resources, and are associated with: failure to detect potential NSR session fluctuations; failure to provide feedback associated with potential NSR session fluctuations; failure to avoid NSR session fluctuations due to lack of feedback; loss of NSR sessions due to NSR session fluctuations; and loss of services due to NSR session fluctuations.
[0012] Some implementations described herein relate to a network device that enables Transmission Control Protocol (TCP) sessions to remain robust in a network device's socket replication environment. For example, the network device may execute a primary application that communicates with another network device via a session, and may receive replicated data objects from a backup application replication layer of the network device. The backup application replication layer may provide the replicated data objects to the backup application and may calculate the time increment between when the replicated data objects are received and when they arrive at the backup application. The backup application replication layer may determine whether the time increment exceeds a first threshold or a second threshold, and may generate a session flag based on whether the time increment exceeds the first or second threshold. The backup application replication layer may provide the session flag to both the primary application replication layer and the backup application, and the primary application replication layer may provide session details to both the primary application and the backup application.
[0013] In this way, network devices ensure the robustness of Transmission Control Protocol (NCP) sessions within the network device's socket replication environment. For example, the network device can automatically detect potential NSR fluctuations and congestion points caused by slow and / or stuck backup applications within the network device's socket replication layer. The network device can utilize session persistence time to prevent potential NSR fluctuations and can provide feedback to the primary application, enabling it to perform one or more actions on problematic sessions (e.g., those with potential NSR fluctuations). This feedback can prevent potential NSR fluctuations and the associated service loss. Therefore, the network device saves computational and networking resources that would otherwise be consumed by: failure to detect NSR session fluctuations, failure to provide feedback associated with NSR session fluctuations, failure to correct NSR session fluctuations due to lack of feedback, loss of NSR sessions due to NSR session fluctuations, and loss of service due to NSR session fluctuations.
[0014] Figures 1A to 1I This is a diagram of example 100 related to maintaining the robustness of Transmission Control Protocol sessions in a socket replication environment. (See diagram 100 for example ... Figures 1A to 1I As shown, Example 100 includes a network with multiple network devices. Further details about the network and network devices are provided elsewhere in this document.
[0015] like Figure 1A As shown by reference numeral 105, a network device can execute an NSR (Network Router Service) and a main application for communicating with peer network devices. For example, a network device can be an NSR-enabled network device that includes a main application. The network device can execute the main application to share it with another network device (e.g., a peer network device). The execution of the NSR allows the network device's routing application daemon to run in standby mode and allows routing protocol information to be maintained. The NSR can provide a socket replication layer that resides in the network device's kernel and guarantees the replication of any ingress and / or egress protocol packets to the network device's standby routing engine.
[0016] like Figure 1B As shown, a network device may include a main application, a main application replication layer, a backup application, and a backup application kernel. The network device can execute both the main application and the backup application, which use the replication layer to replicate data objects. The replication layer can be implemented within the corresponding kernel of the application execution. TCP connection sessions can be established between the main application and peer network devices via the main application replication layer. If the main application fails, the backup application ensures that the TCP connection session is maintained. Figure 1B As further illustrated by the solid arrow, the primary application can communicate with the primary application replication layer, and the primary application replication layer can communicate with peer network devices via a communication channel (e.g., via a TCP connection session). Figure 1BAs shown by the dashed arrows, the primary application replication layer can communicate with the backup application replication layer via one or more communication channels, and the backup application can also communicate with the backup application replication layer via communication channels. The communication channels indicated by the dashed arrows can be potential bottlenecks and a cause of NSR fluctuations in network devices.
[0017] like Figure 1C As shown by reference numeral 110, when replication of the primary application is enabled on a network device, the primary application can provide a hold-up time to the socket routing layer of the primary application replication layer. For example, the primary application replication layer may include a socket routing layer that enables the network device to establish TCP connection sessions with peer network devices via sockets. The network device can enable replication of the primary application (e.g., during the establishment of a TCP connection session) and can provide a hold-up time to the socket routing layer of the primary application replication layer based on enabling replication of the primary application. The network device can utilize the hold-up time (e.g., session hold-up time) to prevent potential NSR fluctuations from occurring alongside the TCP connection session.
[0018] For example Figure 1C As shown by reference numeral 115, the backup application replication layer of a network device can receive replicated data objects. For example, the primary application replication layer can replicate data objects associated with the primary application and exchange them with peer network devices via a TCP connection session. The primary application replication layer can provide replicated data objects to the backup application replication layer so that the backup application can maintain the TCP connection session if the primary application fails. The backup application replication layer can receive replicated data objects from the primary application replication layer.
[0019] For example Figure 1C As shown by reference numeral 120, the backup application replication layer of a network device can provide replicated data objects to the backup application. For example, since the backup application maintains a TCP connection session in the event of a primary application failure, the backup application replication layer can provide the backup application with replicated data objects (e.g., received from the primary application replication layer). If the primary application fails, the replicated data objects enable the backup application to maintain the TCP connection session.
[0020] For example Figure 1CAs shown by reference numeral 125, the backup application replication layer of a network device can calculate the time increment between when the replicated data object is received and when the replicated data object arrives at the backup application. For example, the backup application replication layer can identify a first time when the replicated data object is received by the backup application replication layer, and a second time when the replicated data object arrives at the backup application. The backup application replication layer can calculate the time increment as the difference between the first time and the second time. In some implementations, the replicated data object can store information identifying the first time when the replicated data object is received by the backup application replication layer and the second time when the replicated data object arrives at the backup application.
[0021] like Figure 1D As shown by reference numeral 130, alternatively, the backup application replication layer of the network device can calculate the time increment between when another replicated data object is received from the primary application replication layer and when the earlier replicated data object arrives at the backup application replication layer. For example, if the replicated data object is stuck or very slow, the backup application replication layer can identify another first time when the other replicated data object (e.g., after the replicated data object) arrives at the backup application replication layer, and another second time when the other replicated data object arrives at the backup application. The backup application replication layer can calculate the time increment as the difference between the first time and the second time. In some implementations, the other replicated data object can store information identifying the first time when the other replicated data object is received by the backup application replication layer and the second time when the other replicated data object arrives at the backup application.
[0022] For example Figure 1D As shown by reference numeral 135 in the attached figure, the backup application replication layer of the network device can determine whether the time increment exceeds a primary threshold or a secondary threshold. For example, the backup application replication layer can receive and / or define primary and secondary thresholds. In some implementations, the primary threshold may be based on the backup application replication layer receiving two keep-alive cycles at once, and the secondary threshold may be based on the backup application replication layer receiving one keep-alive cycle twice consecutively. The backup application replication layer can determine whether the time increment exceeds the defined primary threshold or the defined secondary threshold.
[0023] For example Figure 1DAs shown by reference numeral 140, the backup application replication layer of the network device can generate a session flag when the time increment exceeds a major or minor threshold. For example, a time increment exceeding a major or minor threshold can indicate a potential congestion point caused by the backup application. Potential congestion points can cause NSR fluctuations in TCP connection sessions. Therefore, the backup application replication layer can generate a session flag when the time increment exceeds a major or minor threshold. The session flag can include information indicating potential congestion points caused by the backup application for a given NSR TCP session.
[0024] like Figure 1E As shown by reference numeral 145, the backup application replication layer of the network device can provide a session flag to the primary application replication layer. For example, to inform the primary application replication layer of potential bottlenecks caused by the backup application, the backup application replication layer can provide a session flag (e.g., using information indicating potential bottlenecks caused by the backup application). The primary application replication layer can receive the session flag and can reduce (e.g., via the backup application replication layer) the number of replicated data objects provided to the backup application based on the session flag. Alternatively or additionally, the primary application can proactively cancel replication of multiple TCP connection sessions based on the session flag and reduce the load on the network device. In some implementations, the network device can establish thresholds to determine when the primary application can resume normal operation (e.g., normal replication), and different thresholds can be established for different TCP connection sessions.
[0025] For example Figure 1E As shown by reference numeral 150, the backup application replication layer of the network device can provide a session flag to the backup application. For example, to inform the backup application of potential bottlenecks caused by the backup application, the backup application replication layer can provide a session flag (e.g., using information indicating potential bottlenecks caused by the backup application within a potentially affected NSR TCP session). The backup application can receive the session flag and can preferentially read replicated data objects from the TCP connection session based on the session flag. In some implementations, the network device can establish thresholds to determine when the backup application can resume normal operation (e.g., not preferentially reading replicated data objects from the TCP connection session), and different thresholds can be established for different TCP connection sessions.
[0026] like Figure 1FAs shown by reference numeral 155, the primary application replication layer of a network device can provide another replicated data object to the backup application replication layer. For example, the primary application replication layer can replicate data objects associated with the primary application and exchange them with peer network devices via a TCP connection session. The primary application replication layer can provide replicated data objects (e.g., another replicated data object) to the backup application replication layer so that the backup application can maintain the TCP connection session if the primary application fails. The backup application replication layer can receive replicated data objects (e.g., another replicated data object) from the primary application replication layer.
[0027] For example Figure 1F As shown by reference numeral 160, the primary application replication layer of the network device can receive an acknowledgment of receipt of another replicated data object. For example, when the backup application replication layer receives another replicated data object from the primary application replication layer, the backup application replication layer can generate an acknowledgment of receipt of the other replicated data object. The backup application replication layer can provide the acknowledgment of receipt of the other replicated data object to the primary application replication layer, and the primary application replication layer can receive the acknowledgment.
[0028] For example Figure 1F As shown by reference numeral 165, the primary application replication layer of the network device can calculate another time increment between when another replicated data object is provided and when an acknowledgment is received. For example, the primary application replication layer can identify a first time when another replicated data object is provided to the backup application replication layer, and a second time when the primary application replication layer receives an acknowledgment of receipt of the other replicated data object. The primary application replication layer can calculate the other time increment as the difference between the first time and the second time.
[0029] like Figure 1G As shown by reference numeral 170, alternatively, the primary application replication layer of the network device can calculate another time increment between providing another replicated data object and providing the oldest unacknowledged replicated data object. For example, if no acknowledgment of receipt for the oldest replicated data object is received after a threshold time, the primary application replication layer can identify another first time when the oldest unacknowledged replicated data object is provided to the backup application replication layer (e.g., after another replicated data object), and another second time when the primary application replication layer receives another acknowledgment of receipt for another replicated data object. The primary application replication layer can calculate this other time increment as the difference between the other first time and the other second time.
[0030] For example Figure 1GAs shown by reference numeral 175, the primary application replication layer of the network device can determine whether the additional time increment exceeds a primary or secondary threshold. For example, the primary application replication layer can receive and / or define primary and secondary thresholds. In some implementations, the primary threshold may be based on two keep-alive cycles received by the primary application replication layer at once, and the secondary threshold may be based on one keep-alive cycle received by the primary application replication layer twice consecutively. The primary application replication layer can determine whether the additional time increment exceeds the defined primary or secondary threshold.
[0031] For example Figure 1G As shown by reference numeral 180, when the additional time increment exceeds a major or minor threshold, the primary application replication layer of the network device can generate another session flag. For example, the additional time increment exceeding the major or minor threshold can indicate a potential congestion point between the primary and backup application replication layers. Potential congestion points can cause NSR fluctuations in TCP connection sessions. Therefore, when the time increment exceeds the major or minor threshold, the primary application replication layer can generate another session flag. This additional session flag can include information indicating a potential congestion point between the primary and backup application replication layers.
[0032] like Figure 1H As shown by reference numeral 185, the primary application replication layer of the network device can provide the primary application with an additional session flag. For example, to inform the primary application of potential bottlenecks between the primary and backup application replication layers, the primary application replication layer can provide the primary application with another session flag (e.g., using information indicating potential bottlenecks between the primary and backup application replication layers). The primary application can receive this additional session flag and can cancel replication TCP connection sessions based on it to avoid NSR fluctuations. Alternatively or additionally, the primary application can proactively cancel replication of multiple TCP connection sessions based on the additional session flag and reduce the load on the network device. In some implementations, the network device can establish thresholds to determine when the primary application can resume normal operation (e.g., normal replication), and different thresholds can be established for different TCP connection sessions.
[0033] like Figure 1I As shown by reference numeral 190, the primary application replication layer of a network device can provide additional session details to both the primary and backup applications. For example, the primary application replication layer can provide the primary application with thresholds to determine when the primary application can resume normal operation (e.g., normal replication). In some implementations, the primary application replication layer can provide the backup application with thresholds to determine when the backup application can resume normal operation (e.g., not prioritizing reading replicated data objects from the TCP connection session).
[0034] For example Figure 1IAs shown by reference numeral 195, the primary application replication layer or primary application of the network device can stop the replication session. For example, to minimize or eliminate potential bottlenecks between the primary application replication layer and the backup application replication layer, the primary application replication layer can stop replicating TCP connection sessions (e.g., stop generating replicated data objects). Therefore, the backup application replication layer can stop receiving replicated data objects, which can minimize or eliminate potential bottlenecks between the primary application replication layer and the backup application replication layer (e.g., and prevent NSR fluctuations).
[0035] For example Figure 1I As shown, the backup application of a network device can preferentially read replicated data objects for a specific session based on additional session details. For example, as mentioned above, the backup application can receive a session flag and preferentially read replicated data objects from the TCP connection session based on the session flag. In some implementations, the network device can establish thresholds to determine when the backup application can resume normal operation (e.g., not preferentially reading replicated data objects from the TCP connection session), and different thresholds can be established for different TCP connection sessions.
[0036] In this way, network devices make Transmission Control Protocol (NCRP) sessions robust in the network device's socket replication environment. For example, network devices can automatically detect potential NSR fluctuations and congestion points in the network device's socket replication layer, as well as congestion points caused by slow and / or stuck backup applications. Network devices can use session persistence time to prevent potential NSR fluctuations and can provide feedback to the primary application, which instructs the primary application to perform one or more actions on the problematic session (e.g., one with potential NSR fluctuations). This feedback can prevent potential NSR fluctuations and the loss of service associated with them. Therefore, network devices save computing resources, networking resources, etc., which would otherwise be consumed by: failure to detect NSR session fluctuations, failure to provide feedback associated with NSR session fluctuations, failure to avoid NSR session fluctuations due to lack of feedback, loss of replicated TCP sessions due to NSR session fluctuations, and loss of service due to NSR session fluctuations.
[0037] As mentioned above, providing Figures 1A to 1I As an example. Other examples can be related to... Figures 1A to 1I The descriptions differ. Provided Figures 1A to 1I The number and arrangement of equipment shown are for illustrative purposes only. In practice, with... Figures 1A to 1I Compared to the equipment shown, there can be more equipment, fewer equipment, different equipment, or equipment arranged differently. Furthermore, Figures 1A to 1I The two or more devices shown can be implemented within a single device, or Figure 1A -to Figure 1IThe single device shown can be implemented as multiple distributed devices. Additionally or alternatively, Figure 1A -to Figure 1I The set of devices shown (e.g., one or more devices) can perform actions described by... Figures 1A to 1I One or more functions performed by another set of devices shown.
[0038] Figure 2 This is a diagram of example environment 200, in which the systems and / or methods described herein can be implemented. For example... Figure 2 As shown, environment 200 may include network device group 210 (shown as network device 210-1 to network device 210-N) and network 220. The devices in environment 200 may be interconnected via wired connection, wireless connection, or a combination of wired and wireless connection.
[0039] Network device 210 includes one or more devices capable of receiving, processing, storing, routing, and / or providing services (e.g., packets or other information or metadata) in the manner described herein. For example, network device 210 may include routers such as label switching routers (LSRs), label edge routers (LERs), ingress routers, egress routers, provider routers (e.g., provider edge routers or provider core routers), virtual routers, route reflectors, area border routers, or other types of routers. Additionally or alternatively, network device 210 may include gateways, switches, firewalls, hubs, bridges, reverse proxies, servers (e.g., proxy servers, cloud servers, or data center servers), load balancers, and / or similar devices. In some implementations, network device 210 may be a physical device implemented within a enclosure (e.g., a chassis). In some implementations, network device 210 may be a virtual device implemented by one or more computer devices in a cloud computing environment or data center. In some implementations, network device group 210 may be a data center node group for routing service flows through network 220.
[0040] Network 220 includes one or more wired and / or wireless networks. For example, network 220 may include packet-switched networks, cellular networks (e.g., fifth-generation (5G) networks, fourth-generation (4G) networks, such as Long Term Evolution (LTE) networks, third-generation (3G) networks, Code Division Multiple Access (CDMA) networks, Public Land Mobile Networks (PLMN), Local Area Networks (LAN), Wide Area Networks (WAN), Metropolitan Area Networks (MAN), telephone networks (e.g., Public Switched Telephone Network (PSTN)), private networks, self-organizing networks, intranets, the Internet, fiber-optic-based networks, cloud computing networks, etc., and / or combinations of these or other types of networks.
[0041] supply Figure 2The number and arrangement of devices and networks shown are for illustrative purposes only. In practice, with... Figure 2 Compared to the devices and / or networks shown, there may be more devices and / or networks, fewer devices and / or networks, different devices and / or networks, or devices and / or networks arranged differently. Furthermore, Figure 2 The two or more devices shown can be implemented within a single device, or Figure 2 The single device shown can be implemented as multiple distributed devices. Additionally or alternatively, a set of devices (e.g., one or more devices) in environment 200 can perform one or more functions described as being performed by another set of devices in environment 200.
[0042] Figure 3 yes Figure 2 A schematic diagram of example components of one or more devices. Example components may be included in device 300, which may correspond to network device 210. In some implementations, network device 210 may include one or more devices 300 and / or one or more components of device 300. For example... Figure 3 As shown, device 300 may include bus 310, processor 320, memory 330, input component 340, output component 350 and communication interface 360.
[0043] Bus 310 includes one or more components that enable wired and / or wireless communication between components of device 300. Bus 310 can... Figure 3 Two or more components are coupled together, such as via operational coupling, communication coupling, electronic coupling, and / or electrical coupling. Processor 320 includes a central processing unit, graphics processing unit, microprocessor, controller, microcontroller, digital signal processor, field-programmable gate array, application-specific integrated circuit, and / or another type of processing component. Processor 320 is implemented in hardware, firmware, or a combination of hardware and software. In some implementations, processor 320 includes one or more processors that can be programmed to perform one or more operations or processes described elsewhere herein.
[0044] Memory 330 includes volatile and / or non-volatile memory. For example, memory 330 may include random access memory (RAM), read-only memory (ROM), hard disk drive, and / or another type of memory (e.g., flash memory, magnetic storage, and / or optical storage). Memory 330 may include internal memory (e.g., RAM, ROM, or hard disk drive) and / or removable memory (e.g., removable via a universal serial bus). Memory 330 may be a non-transient computer-readable medium. Memory 330 stores information, instructions, and / or software (e.g., one or more software applications) related to the operation of device 300. In some implementations, memory 330 includes one or more memories coupled to one or more processors (e.g., processor 320), such as via bus 310.
[0045] Input component 340 enables device 300 to receive input, such as user input and / or sensed input. For example, input component 340 may include a touchscreen, keyboard, keypad, mouse, button, microphone, switch, sensor, GPS sensor, accelerometer, gyroscope, and / or actuator. Output component 350 enables device 300 to provide output, such as via a display, speaker, and / or light-emitting diode. Communication interface 360 enables device 300 to communicate with other devices via wired and / or wireless connections. For example, communication interface 360 may include a receiver, transmitter, transceiver, modem, network interface card, and / or antenna.
[0046] Device 300 can perform one or more operations or procedures described herein. For example, a non-transient computer-readable medium (e.g., memory 330) can store a set of instructions (e.g., one or more instructions or code) for execution by processor 320. Processor 320 can execute the set of instructions to perform one or more operations or procedures described herein. In some implementations, execution of the set of instructions by one or more processors 320 causes one or more processors 320 and / or device 300 to perform one or more operations or procedures described herein. In some implementations, hardwired circuitry can be used in place of or in conjunction with instructions to perform one or more operations or procedures described herein. Additionally or alternatively, processor 320 can be configured to perform one or more operations or procedures described herein. Therefore, the implementations described herein are not limited to any particular combination of hardware circuitry and software.
[0047] supply Figure 3 The number and arrangement of components shown are for example. (With) Figure 3Compared to the components shown, device 300 may include more components, fewer components, different components, or components arranged differently. Additionally or alternatively, a set of components (e.g., one or more components) in device 300 may perform one or more functions described as being performed by another set of components in device 300.
[0048] Figure 4 yes Figure 2 A schematic diagram of example components of one or more devices. Example components may be included in device 400. Device 400 may correspond to network device 210. In some implementations, network device 210 may include one or more devices 400 and / or one or more components of device 400. For example... Figure 4 As shown, device 400 may include one or more input components 410-1 to 410-B (B≥1) (hereinafter collectively referred to as input components 410, individually referred to as input components 410), switching component 420, one or more output components 430-1 to 430-C (C≥1) (hereinafter collectively referred to as output components 430, individually referred to as output components 430), and controller 440.
[0049] Input component 410 may be one or more connection points of a physical link and may be one or more entry points for incoming traffic such as packets. Input component 410 may process incoming traffic, such as by performing data link layer encapsulation or decapsulation. In some implementations, input component 410 may transmit and / or receive packets. In some implementations, input component 410 may include an input line card that includes one or more packet processing components (e.g., in the form of integrated circuits), such as one or more interface cards (IFCs), packet forwarding components, line card controller components, input ports, processors, memory, and / or input queues. In some implementations, device 400 may include one or more input components 410.
[0050] Switching component 420 interconnects input component 410 with output component 430. In some implementations, switching component 420 may be implemented via one or more crossbar switches, via a bus, and / or utilizing shared memory. Shared memory may act as a temporary buffer to store packets from input component 410 before finally scheduling packets from input component 410 for delivery to output component 430. In some implementations, switching component 420 may enable input component 410, output component 430, and / or controller 440 to communicate with each other.
[0051] Output component 430 can store packets and schedule packets for transmission on the output physical link. Output component 430 can support data link layer encapsulation or decapsulation, and / or various higher-level protocols. In some implementations, output component 430 can transmit and / or receive packets. In some implementations, output component 430 may include an output line card, which includes one or more packet processing components (e.g., in the form of integrated circuits), such as one or more IFCs, packet forwarding components, line card controller components, output ports, processors, memory, and / or output queues. In some implementations, device 400 may include one or more output components 430. In some implementations, input component 410 and output component 430 may be implemented from the same set of components (e.g., the input / output component may be a combination of input component 410 and output component 430).
[0052] Controller 440 includes processors and / or other types of processors, such as CPUs, GPUs, APUs, microprocessors, microcontrollers, DSPs, FPGAs, and ASICs. The processor is implemented in hardware, firmware, or a combination of hardware and software. In some implementations, controller 440 may include one or more processors that can be programmed to perform functions.
[0053] In some implementations, controller 440 may include RAM, ROM, and / or another type of dynamic or static storage device (e.g., flash memory, magnetic storage, optical storage, etc.) for storing information and / or instructions for use by controller 440.
[0054] In some implementations, controller 440 can communicate with other devices, networks, and / or systems connected to device 400 to exchange information about the network topology. Controller 440 can create routing tables based on the network topology information, create forwarding tables based on the routing tables, and forward the forwarding tables to input component 410 and / or output component 430. Input component 410 and / or output component 430 can use the forwarding tables to perform route looks for incoming and / or outgoing packets.
[0055] Controller 440 may execute one or more processes described herein. Controller 440 may execute these processes in response to executing software instructions stored in a non-transitory computer-readable medium. Computer-readable medium is defined herein as a non-transitory memory device. A memory device includes memory space within a single physical storage device or memory space distributed across multiple physical storage devices.
[0056] Software instructions may be read from another computer-readable medium or from another device via a communication interface into the memory and / or storage components associated with controller 440. When executed, the software instructions stored in the memory and / or storage components associated with controller 440 may cause controller 440 to perform one or more processes described herein. Additionally or alternatively, hard-wired circuitry may be used in place of or in conjunction with software instructions to perform one or more processes described herein. Therefore, the implementations described herein are not limited to any particular combination of hardware circuitry and software.
[0057] supply Figure 4 The number and arrangement of components shown are for illustrative purposes. In practice, with... Figure 4 Compared to the components shown, device 400 may include more components, fewer components, different components, or components arranged differently. Additionally or alternatively, a set of components (e.g., one or more components) in device 400 may perform one or more functions described as being performed by another set of components in device 400.
[0058] Figure 5 This is a flowchart of an example process 500 used to ensure the robustness of a Transmission Control Protocol (TCP) session in a socket replication environment. In some implementations, Figure 5 One or more process frames in the process can be executed by a network device (e.g., network device 210). In some implementations, Figure 5 One or more process frames can be executed by another device or group of devices that are separate from or include the network device. Additionally or alternatively, Figure 5 One or more process frames can be executed by one or more components of device 300, such as processor 320, memory 330, input component 340, output component 350, and / or communication interface 360. Additionally or alternatively, Figure 5 One or more process frames in the device 400 may be executed by one or more components of the device 400, such as input component 410, switching component 420, output component 430 and / or controller 440.
[0059] like Figure 5 As shown, process 500 may include executing a main application that communicates with another network device via a session (block 510). For example, as described above, a network device may execute a main application that communicates with another network device via a session.
[0060] For example Figure 5As shown, process 500 may include receiving a replicated data object through the backup application replication layer of the network device (box 520). For example, as described above, the network device may receive the replicated data object through the backup application replication layer of the network device. In some implementations, the replicated data object stores information identifying a first time when the replicated data object is received by the backup application replication layer and a second time when the replicated data object arrives at the backup application.
[0061] For example Figure 5 As shown, process 500 may include providing a replicated data object to a backup application through a backup application replication layer (box 530). For example, as described above, a network device may provide a replicated data object to a backup application through the backup application replication layer.
[0062] For example Figure 5 As shown, process 500 may include calculating the time increment between when the copied data object is received and when the copied data object arrives at the backup application via the backup application replication layer (box 540). For example, as described above, the network device may calculate the time increment between when the copied data object is received and when the copied data object arrives at the backup application via the backup application replication layer.
[0063] For example Figure 5 As shown, process 500 may include determining whether the time increment exceeds a first threshold or a second threshold via a backup application replication layer (box 550). For example, as described above, the network device may determine whether the time increment exceeds the first threshold or the second threshold via the backup application replication layer. In some implementations, the first threshold is based on receiving two keep-alive cycles at once, and the second threshold is based on receiving one keep-alive cycle twice consecutively.
[0064] For example Figure 5 As shown, process 500 may include generating a session flag (box 560) by the backup application replication layer based on a time increment exceeding a first threshold or a second threshold. For example, as described above, the network device may generate a session flag by the backup application replication layer based on a time increment exceeding a first threshold or a second threshold.
[0065] For example Figure 5 As shown, process 500 may include providing a session identifier to the primary application replication layer and the backup application through the backup application replication layer (box 570). For example, as described above, the network device may provide a session identifier to the primary application replication layer and the backup application through the backup application replication layer.
[0066] For example Figure 5As shown, process 500 may include providing session details to the primary and backup applications through the primary application replication layer (box 580). For example, as described above, the network device may provide session details to the primary and backup applications through the primary application replication layer.
[0067] In some implementations, process 500 includes calculating the time increment between when another replicated data object is received from the primary application replication layer and when the other replicated data object arrives at the backup application. In some implementations, process 500 includes maintaining Transmission Control Protocol (TCP) sessions with other network devices via the primary application replication layer.
[0068] In some implementations, procedure 500 includes providing a hold time to the socket routing layer of the master application replication layer via the master application when replication of the master application is enabled. In some implementations, procedure 500 includes stopping session replication via the master application replication layer based on session details. In some implementations, procedure 500 includes prioritizing reading the session-replicated data objects via the backup application based on session details.
[0069] In some implementations, process 500 includes stopping the replication of multiple sessions based on session details. In some implementations, process 500 includes determining whether a third threshold is met, and, based on the time increment meeting the third threshold, causing the session to be replicated in a manner corresponding to session replication before the data object to be replicated is received by the backup application replication layer.
[0070] In some implementations, process 500 includes providing another replicated data object to the backup application replication layer, receiving an acknowledgment of receipt of the other replicated data object, calculating another time increment between when the other replicated data object is provided and when the acknowledgment is received, determining whether the other time increment exceeds a first threshold or a second threshold, generating another session flag based on the other time increment exceeding the first threshold or the second threshold, and providing the other session flag to the main application.
[0071] In some implementations, procedure 500 includes providing additional details of the session to both the primary and backup applications. In some implementations, procedure 500 includes stopping session replication based on these additional session details.
[0072] although Figure 5 An example box for process 500 is shown, but in some implementations, it differs from... Figure 5 Compared to the boxes depicted in the diagram, process 500 may include more boxes, fewer boxes, different boxes, or boxes arranged differently. Additionally or alternatively, two or more boxes in process 500 may be executed in parallel.
[0073] The foregoing disclosure provides illustrations and descriptions, but is not intended to be exhaustive or to limit implementations to the precise forms disclosed. Modifications may be made based on the foregoing disclosure or may be derived from practical implementation.
[0074] As used herein, the term "component" is intended to be interpreted broadly as hardware, firmware, or a combination of hardware and software. It should be understood that the systems and / or methods described herein can be implemented in various forms of hardware, firmware, and / or combinations of hardware and software. The actual dedicated control hardware or software code used to implement these systems and / or methods does not limit these implementations. Therefore, this document describes the operation and behavior of the systems and / or methods without referring to any specific software code—it should be understood that software and hardware can be used to implement the systems and / or methods based on the description herein.
[0075] Although specific combinations of features are recited in the claims and / or disclosed in the specification, these combinations are not intended to limit the disclosure of various implementations. In fact, many of these features can be combined in ways not specifically recited in the claims and / or disclosed in the specification. While each dependent claim listed below may directly depend on one claim, the disclosure of various implementations includes combinations of each dependent claim with each other claim in the claim set.
[0076] No element, action, or instruction used herein should be construed as critical or necessary unless explicitly stated otherwise. Furthermore, as used herein, the articles “a” and “one” are intended to include one or more items and may be used interchangeably with “one or more.” Furthermore, as used herein, the article “the” is intended to include one or more items associated with the article “the” and may be used interchangeably with “one or more.” Furthermore, as used herein, the term “set” is intended to include one or more items (e.g., related items, unrelated items, a combination of related and unrelated items, etc.) and may be used interchangeably with “one or more.” Where only one item is intended to be used, the phrase “only one” or similar language is used. Furthermore, as used herein, the terms “have,” “have,” “contain,” etc., are intended to be open-ended terms. Furthermore, unless explicitly stated otherwise, the phrase “based on” is intended to mean “at least partially based on.” Furthermore, as used herein, unless explicitly stated otherwise (e.g., if used in combination with “one of” or “only one”), the term “or” is intended to be inclusive when used in a series of forms and may be used interchangeably with “and / or.”
[0077] Various exemplary embodiments have been described in the foregoing description with reference to the accompanying drawings. However, it will be apparent that various modifications and changes can be made therein, and additional embodiments can be implemented without departing from the broader scope of the invention as set forth in the appended claims. Therefore, the description and drawings are to be considered illustrative rather than restrictive.
Claims
1. A method for use in a session, comprising: The main application, executed by a network device, communicates with another network device via a session. The replicated data object is received by the backup application replication layer of the network device; The backup application replication layer of the network device provides the replicated data object to the backup application; The backup application replication layer of the network device calculates the time increment between when the replicated data object is received and when the replicated data object arrives at the backup application. The backup application replication layer of the network device determines whether the time increment exceeds a first threshold or a second threshold; The backup application replication layer of the network device generates a session flag based on the time increment exceeding the first threshold or the second threshold. The backup application replication layer of the network device provides the session identifier to the main application replication layer and the backup application; as well as The main application replication layer of the network device provides the session details to the main application and the backup application.
2. The method according to claim 1, further comprising: The backup application replication layer calculates the time increment between when another replicated data object is received from the main application replication layer and when the other replicated data object arrives at the backup application.
3. The method according to claim 1, further comprising: The main application replication layer maintains the Transmission Control Protocol (TCP) session with the other network device.
4. The method of claim 1, wherein the copied data object storage identifies information at a first time when the copied data object is received by the backup application replication layer and at a second time when the copied data object arrives at the backup application.
5. The method according to claim 1, further comprising: When replication of the main application is enabled, the main application provides a hold time to the main application replication layer.
6. The method according to claim 1, further comprising: The replication of the session may be stopped by the main application replication layer or by the main application based on the details of the session.
7. The method according to claim 1, further comprising: The backup application prioritizes reading the copied data objects for the session based on the details of the session.
8. A network device, comprising: One or more memory units; as well as One or more processors, used to: Execute the main application that communicates with another network device via a session; The backup application's replication layer receives the replicated data objects; The backup application replication layer provides the replicated data object to the backup application; The backup application replication layer calculates the time increment between when the replicated data object is received and when the replicated data object arrives at the backup application; The backup application replication layer determines whether the time increment exceeds a first threshold or a second threshold. The backup application replication layer generates a session flag based on the time increment exceeding the first threshold or the second threshold; The backup application replication layer provides the session flag to the main application replication layer and the backup application; The main application replication layer provides the session details to the main application and the backup application; as well as The replication of the session may be stopped by the main application replication layer or by the main application based on the details of the session.
9. The network device of claim 8, wherein the first threshold is based on receiving two keep-alive cycles at once, and the second threshold is based on receiving one keep-alive cycle twice consecutively.
10. The network device of claim 8, wherein the one or more processors are further configured to: The replication of multiple sessions is stopped based on the details of the session.
11. The network device of claim 8, wherein the one or more processors are further configured to: Determine whether the time increment meets the third threshold; and Based on the time increment satisfying the third threshold, the session is copied in a manner corresponding to session copying before the data object to be copied is received by the backup application copying layer.
12. The network device of claim 8, wherein the one or more processors are further configured to: Provide another replicated data object to the backup application replication layer; Receive confirmation of receipt of the other copied data object; Calculate another time increment between when the other copied data object is provided and when the acknowledgment is received; Determine whether the other time increment exceeds the first threshold or the second threshold; Another session flag is generated based on the fact that the other time increment exceeds the first threshold or the second threshold. as well as Provide the other session flag to the main application.
13. The network device of claim 12, wherein the one or more processors are further configured to: Provide additional details of the session to the main application and the backup application.
14. The network device of claim 13, wherein the one or more processors are further configured to: The replication of the session is stopped based on the additional details of the session.
15. A non-transient computer-readable medium storing an instruction set, the instruction set comprising: One or more instructions, which, when executed by one or more processors of the network device, cause the network device to: Execute the main application that communicates with another network device via a session; The backup application's replication layer receives the replicated data objects; The backup application replication layer provides the replicated data object to the backup application; The backup application replication layer calculates the time increment between when the replicated data object is received and when the replicated data object arrives at the backup application; The backup application replication layer determines whether the time increment exceeds a first threshold or a second threshold. The first threshold is based on receiving two keep-alive cycles at once, and the second threshold is based on receiving one keep-alive cycle twice consecutively; The backup application replication layer generates a session flag based on the time increment exceeding the first threshold or the second threshold; The backup application replication layer provides the session flag to the main application replication layer and the backup application; as well as The session details are provided to the main application and the backup application by the main application replication layer.
16. The non-transient computer-readable medium of claim 15, wherein one or more instructions further cause the network device to: The backup application replication layer calculates the time increment between when another replicated data object is received from the main application replication layer and when the other replicated data object arrives at the backup application.
17. The non-transient computer-readable medium of claim 15, wherein one or more instructions further cause the network device to: Maintain a Transmission Control Protocol (TCP) session with the other network device.
18. The non-transient computer-readable medium of claim 15, wherein one or more instructions further cause the network device to: When replication of the main application is enabled, a hold time is provided to the main application replication layer.
19. The non-transient computer-readable medium of claim 15, wherein one or more instructions further cause the network device to: Based on the details of the session, prioritize reading the copied data object for that session.
20. The non-transient computer-readable medium of claim 15, wherein one or more instructions further cause the network device to: The replication of multiple sessions is stopped based on the details of the session.
Citation Information
Patent Citations
Non-stop routing with internal session mirroring and adaptive application-level rate limiting
US9491107B1