Financial Network

A multi-core processor-based routing device with load balancing and failover capabilities addresses network delays by optimizing routing across multiple networks, enhancing data transmission efficiency and reducing delays to gigabit speeds.

JP7713508B2Active Publication Date: 2025-07-25CFPH LLC
View PDF 6 Cites 0 Cited by

Patent Information

Application Number
JP2023222088
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2014-06-30
Filing Date
2023-12-28
Publication Date
2025-07-25
Estimated Expiration
2035-06-29

AI Technical Summary

Technical Problem

Existing communication networks experience significant delays, particularly due to network/port conversion functions, when data is transmitted between servers within different networks, leading to inefficiencies and non-negligible delays exceeding 100 microseconds.

Method used

Implementing a routing device with multi-core processors that map local address and port pairs to destinations across multiple networks, enabling load balancing and failover capabilities, and utilizing a software-defined network architecture to facilitate efficient data transmission across multiple data centers.

Benefits of technology

The solution reduces transmission delays by optimizing routing and load balancing, allowing for gigabit-speed data transmission and enabling seamless communication between servers within different network environments.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007713508000002
    Figure 0007713508000002
  • Figure 0007713508000003
    Figure 0007713508000003
  • Figure 0007713508000004
    Figure 0007713508000004
Patent Text Reader

Abstract

To provide a communications network component including one or more network components to facilitate data communication between computing devices.SOLUTION: In a system 100 including multiple entities 110, 130a to 130n, for a local network address and port pair, a first processing device opens a first socket of on a first network to a first destination on a second remote network, and opens a second socket to a second destination on a second remote network, load balancing traffic sent to a local network address and port pair is performed between a first destination using a first socket and a second destination using a second socket, and traffic sent to the local network address and port pair is routed to a second destination using a second socket.SELECTED DRAWING: Figure 1A
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Cross - reference to Related Applications This application claims priority to U.S. Provisional Patent Application No. 62 / 019,366, filed Jun. 30, 2014, which is incorporated herein by reference.

[0002] Some embodiments relate to communication network components.

Background Art

[0003] A communication network may include one or more network components to facilitate data communication (e.g., between computing devices).

Brief Description of the Drawings

[0004]

Figure 1A

Figure 1B

Figure 2

Figure 3

Figure 4

Figure 5

Figure 6

Figure 7

Figure 8

Figure 9

Figure 10

Figure 11

Figure 12

Figure 13

Figure 14

Figure 15

Figure 16

Figure 17

Figure 18

[0005] The present invention is for solving the problems of the background art. MEANS FOR SOLVING THE PROBLEMS

[0006] It should be understood that the following are embodiments, not claims.

[0007] A. Mapping the local address and port pair of the first network to a destination on the second network and mapping the local address and port pair of the third network to a destination on the second network, a first routing device configured to perform the above, wherein the first core of the first processor is configured to perform routing to the first network, and the second core of the first processor is configured to perform routing to the second network, the first routing device is configured as such, a device including the first routing device, to facilitate mapping the local address and port pair of the first network to a destination, the routing device opens a first socket for the destination, opens a second socket for the second destination, and is configured to fail over routing to the second socket in response to a determination that the first socket has stopped working, the third core of the routing device executes a process configured to access a portion of the memory space shared with the first core, copies at least one of the packet header and the entire packet from that portion of the memory space, and is configured to facilitate transmitting at least one of the packet header and the entire packet to an analytics engine coupled to the first routing device.

[0008] A.1. The first routing device according to claim A is configured to load balance traffic such that traffic sent to the local address and port pair is split between a destination using the first socket and a second destination using the second socket. A.1.1. The device according to claim A.1, wherein the load balancing is performed in at least one of a round-robin manner and a least-connections manner. A.2. The device according to claim A, wherein the routing device includes a plurality of multi-core processors. A.3. The device according to claim A, wherein the routing device is configured to route data at gigabit speeds.

[0009] A second routing device configured to map a pair of an address and a port to a first network and map a pair of a second address and a port to a second network, wherein a first core of a second processor is configured to perform routing from a destination to the first network, and a second core of the second processor is configured to perform routing from the destination to the second network, the second routing device being configured as such, the apparatus according to claim A including the second routing device. A.4.1. The first routing device is configured to compress a data block routed to a destination according to a dictionary method, and the second routing device is configured to decompress the data block according to the dictionary method for transmission to the destination, the apparatus according to claim A.4. A.4.2. By performing mapping from the first network and the second network through the first routing device, services from the first network and the second network to a software-defined network are enabled, the apparatus according to claim A.4. A.4.3. The second routing device enables a destination to subscribe to services provided from the first network and the second network to a software-defined network, the apparatus according to claim A.4. A.4.4. The first routing device and the second routing device define a software-defined network spanning multiple data centers, the apparatus according to claim A.4. A.4.5. The destination includes a customer conducting a transaction, and the first network includes a network where an electronic switch exists, the apparatus according to claim A.4.

Embodiments for Carrying Out the Invention

[0010] Referring to FIG. 1A, an example system 100 is shown. System 100 may include a plurality of entities, which may include entity 110 and a plurality of entities 130a-n (one of which is shown in detail in FIG. 1A), and one or more of these may be interconnected via network 103. Entity 110 may be, for example, a service provider that provides services, and each entity 130 may be, for example, a customer / user of the services provided by service provider 110 (such as a company, bank, investment fund, trader, etc.). For the sake of convenience of explanation in this specification, entity 110 is referred to as a service provider, and entity 130 is referred to as a user / customer. However, these terms are non-limiting, and other entity examples are possible. Also, it is an example that entity 110 is a service provider that provides services to entity 130, and other relationships between entity 110 and entity 130 are possible.

[0011] As an example, service provider 110 can provide one or more electronic markets for the transaction / buying and selling / matching of items (such as financial products, real estate, betting objects / bets, tangible goods, services, etc.), and thus can provide one or more electronic matching / transaction engines. Similarly, customer 130 can attempt to conduct transactions of one or more items in the electronic market provided by service provider 130. According to this example, one or more of customers 130 may electronically transmit data / messages to, for example, service provider 110, and such data / messages may include, for example, buy orders and / or sell orders (such as bids, offers, hits, takes) for items at specified prices and / or quantities. Similarly, service provider 110 may electronically receive and execute such orders and transmit data / messages to customer 130, and such data / messages may include, for example, the prices and quantities of outstanding orders and executed orders. As will be understood by those skilled in the art, this is merely an example, and other and / or additional services may be provided by service provider 110, and additional and / or other messages / data may be transferred between service provider 110 and customer 130. For example, one or more of customers 130 may electronically transmit data / messages to, for example, service provider 110, and such data / messages may include, for example, orders to bet on a team or event, etc. at specified odds and / or bets. Similarly, service provider 110 may electronically receive, execute / match such orders and transmit data / messages to customer 130, and such data / messages may include, for example, the specified odds and / or bets of outstanding orders and / or executed orders.

[0012] Service provider 110 may include one or more network components 112 and one or more computing systems 114 (which may include one or more database systems or may be connected to one or more database systems), which provide services, for example, to customer 130. As will be understood by those skilled in the art, service provider 110 may include additional and / or other computing systems and / or network components. Computing system 114 may, for purposes of explanation herein, be referred to as a server. However, of course, the use of the term server is non-limiting and other types of computing systems may be used. One or more of servers 114 may include one or more processors and one or more memories. Also, one or more of servers 114 may include one or more network hardware / software / firmware-based interfaces / ports that enable the server to connect to network component 112 and thereby to network 103. Such interfaces may be configured to support one or more various types of physical network connections, such as copper, optical fiber, and / or wireless, and may be configured to support one or more various types of protocols, such as Ethernet®, and may be configured to operate at any speed, such as Gb rate. As will be understood by those skilled in the art, server 114 may have additional and / or other configurations. Service provider 110 may also include one or more software and / or firmware and / or hardware-based applications, which may be stored in one or more database systems and / or server 114 and may be configured to be executed on one or more of servers 114. Each server may execute the same application or different applications. As an example, the application may be configured to provide one or more electronic matching / trading engines for performing trading / matching of one or more items as described herein.

[0013] The network component 112 may include, for example, one or more routers and / or switches, which may include, for example, a core router and / or an edge router, and / or a core switch and / or an edge switch. Each of the network components 112 may include one or more network hardware / software / firmware-based interfaces / ports, which enable the network components to connect to each other, to connect to one or more of the servers 114, and / or to connect to the network 103. Such interfaces may be configured to support one or more various types of physical network connections, such as copper, optical fiber, and / or wireless, may be configured to support one or more various types of protocols, such as Ethernet, and may be configured to operate at any speed, such as Gb rate. As would be understood by those skilled in the art, the network component 112 may have additional and / or other configurations. One or more of the network components 112 may include one or more physical connections (wired / wireless) to other network components 112, servers 114, and / or the network 103. One or more of the network components 112, as well as one or more of the servers 114, may be further configured such that one or more of the servers 114 have a private network address, thereby being present in the private network of the service provider 110, and / or have a public address, thereby being present in the public network. In this way, the network component 112 may be configured such that the servers 114 can communicate with each other and / or the servers 114 can communicate with the network 103, thereby enabling communication with one or more other computing systems (e.g., connected to the network 103), such as the computing system 138 of the customer 130. As would also be understood by those skilled in the art, the network component 112 may include additional and / or other components as described herein and may provide additional and / or other types of functionality with respect to the functionality described herein.

[0014] (Illustrated as Customer 130a) An example of Customer 130 may include one or more network components 132, 134, and 136, and one or more computing systems 138 (which may include one or more database systems or may be connected to one or more database systems). As would be understood by one of ordinary skill in the art, Customer 130 may include additional and / or other computing systems and / or network components. As would be understood by one of ordinary skill in the art, other Customers 130 may include configurations similar to and / or other than the configuration of Customer 130a shown in FIG. 1A. Computing system 138 may, for convenience of explanation herein, be referred to as a server. However, of course, the use of the term server is non-limiting and other types of computing systems may be used. One or more of servers 138 may include one or more processors and one or more memories. Also, one or more of servers 138 may include one or more network hardware / software / firmware-based interfaces / ports that enable the server to connect to one or more of network components 132 - 136 and thereby connect to network 103. Such interfaces may be configured to support one or more various types of physical network connections such as copper, fiber optic, and / or wireless, may be configured to support one or more various types of protocols such as Ethernet, and may be configured to operate at any speed such as Gb rate. As would be understood by one of ordinary skill in the art, server 138 may have additional and / or other configurations. Customer 130 may also include one or more software and / or firmware and / or hardware-based applications that may be stored in one or more database systems and / or server 138 and may be configured to be executed on one or more of servers 138.As an example, the application may be configured to use services provided by server 114 of service provider 110. In particular, the trading of one or more items may be configured to be performed with one or more other customers 130, for example, by using an electronic matching / trading engine provided by server 114 of service provider 110. According to this example, one or more of the servers 138 of customer 130 may electronically transmit data / messages via network 103 to, for example, server 114 of service provider 110. Such data / messages may include, for example, buy orders and / or sell orders (e.g., bids, offers, hits, takes) for items at specified prices and / or quantities. Similarly, server 114 of service provider 110 may electronically receive and execute such orders and transmit data / messages to server 138 of customer 130. Such data / messages may include, for example, the prices and quantities of outstanding orders and filled orders. As will be understood by those skilled in the art, this is merely an example, and other and / or additional services may be provided by service provider 110, and additional and / or other messages / data may be transferred between service provider 110 and customer 130 as described herein.

[0015] The network components 132-136 of customer 130 may include, for example, one or more routers and / or switches, which may include, for example, core routers and / or edge routers, and / or core switches and / or edge switches. Each of the network components may include one or more network hardware / software / firmware-based interfaces / ports that enable the network components to connect to each other, to one or more of the servers 138, and / or to connect to the network 103. Such interfaces may be configured to support one or more different types of physical network connections, such as copper, fiber optic, and / or wireless, and may be configured to support one or more different types of protocols, such as Ethernet, and may be configured to operate at any speed, such as Gb rate. As will be understood by those skilled in the art, the network components 132-136 may have additional and / or other configurations. One or more of the network components 132-136 may include one or more physical connections (wired / wireless) to other network components 132-136, to one or more of the servers 138, and / or to the network 103. The network components 132-136 may further be configured such that one or more of the servers 138 have a private network address and thereby exist on the private network of each respective customer 130, and / or have a public address and thereby exist on the public network. In this way, the network components 132-136 may be configured such that the servers 114 can communicate with each other and / or the servers 114 can communicate with the network 103 and thereby communicate with one or more other computing systems (e.g., connected to the network 103), such as the servers 114. As will also be understood by those skilled in the art, the network components 132-136 may include additional and / or other components as described herein and may provide additional and / or other types of functionality with respect to the functionality described herein.

[0016] Network 103 may include one or more network components, which may include, for example, one or more routers and / or switches. Such network components may include one or more network hardware / software / firmware-based interfaces / ports, which may be configured to support one or more various types of physical network connections such as copper, optical fiber, and / or wireless, may be configured to support one or more various types of protocols such as Ethernet, and may be configured to operate at any speed such as Gb rate. One or more components of network 103 may include one or more physical connections (wired / wireless) with other components and with entity 110 and entity 130 respectively. In this way, network 103 may be configured such that computing system 114 of entity 110 and computing system 138 of entity 130 are at least communicable with each other. As will also be understood by those skilled in the art, network 103 may include additional and / or other network components as described herein and may be configured in additional and / or other types of manners than those described herein.

[0017] Referring to FIG. 1B in which like reference numerals mean like components as described herein, a system 200 is shown which may be an example configuration of the system 100 of FIG. 1A. According to this example, the network component 112 of the service provider 110 may include a switch, such as a core switch, including one or more connections with each of the servers 114. As an example, the network component 112 may be an Arista 7124 application switch, although other and / or additional network components may be used. One or more of the network component 112 and the servers 114 may further be configured such that one or more of the servers 114 have network addresses on the network 103, and these addresses may be considered “public” addresses (although these addresses may not actually be public). According to an exemplary aspect of the example system 200, the network 103 may be a private network (optionally owned or leased) of the service provider 110. According to this example, one or more of the network component 112 and the servers 114 are part of the network 103. In other words, the network interfaces of the network component 112 that interface with the servers 114 and also with the customer 130 may be in the same address space.

[0018] According to a further aspect of the configuration example of FIG. 1B, a network component 136 of an example of the customer 130 (illustrated as customer 130a) may include a switch such as a core switch, the network component 134 may be a switch such as an edge switch, and the network component 132 may be a router. The switch 136 may include one or more connections with each of the servers 138 and one or more connections with the switch 134. And the switch 134 may include one or more connections with the router 136. One or more of the network components 132-136 and the servers 138 may further be configured such that one or more of the servers 138 have private network addresses (i.e., addresses that are not on the network 103), thereby existing in a private network separated from the network 103. Other customers 130n may have a similar configuration.

[0019] According to a further aspect of the configuration example of FIG. 1B, each customer 130 may have one (or, in some cases, more) addresses on the network 103, and these addresses may be considered "public" addresses (although they may not actually be public). Thus, each router 132 may be configured as a network address translator and, in some cases, a port address translator (NAT / PAT), which performs a mapping, for example, between one or more private addresses of the server 138 on the network of the customer 130 and the public addresses assigned to each customer 130 on the network 103. Thus, when the server 138 is transmitting a message / data (which may be encapsulated, for example, in the form of a packet containing an address and / or port) to the server 114, the router 136 can convert the private address of the server 138 in the packet to the public address assigned to the customer 130 on the network 103. Also in this case, such a conversion may also include converting the port number used by the application on the server 138 to another port number. Similarly, when the server 114 is transmitting a message / data (which may be encapsulated, for example, in the form of a packet containing an address and / or port) to the server 138, the router 136 can convert the public address assigned to the customer 130 in the packet to the private address of the server 138. Also in this case, the router 136 can also perform port conversion as part of the address conversion.

[0020] According to a further aspect of the configuration example of FIG. 1B, the network 103 may include point-to-point connections 113a-n (although non-point-to-point connections are also possible in this case) between the switch 112 of the service provider 110 and each of the routers 132 (e.g., of the customer 130). For example, each connection between the switch 112 of the service provider 110 and the router 132 (e.g., of the customer 130) may be a fiber connection, such as a single-mode fiber connection operating at, for example, 1 Gb, 10 Gb, 100 Gb, etc. (although other types of connections and rates may also be used). According to a still further aspect of this configuration example, one or more of the servers 114 and network components 112 of the service provider 110, and the network components 132-136 and server 138 of each respective customer 130 may be located in the same location, for example, in the same room. For example, one or more of the servers 114 and network components 112 may be housed in one rack. Similarly, one or more of the network components 132-136 and server 138 of each first respective customer 130 may be housed in another respective rack or the like. As will also be understood by those skilled in the art, the system 200 may include additional and / or other components and may include additional and / or other configurations with respect to those described herein.

[0021] As an example of a problem that may occur with respect to the system examples 100 and 200 as shown in FIGS. 1A and 1B, there is a problem that a non-negligible delay may be inserted when data is transmitted between the server 114 and the server 138. As a specific example, the router 132 may insert a delay (e.g., exceeding 100 microseconds), which may be the result of, for example, a network / port conversion function. Similarly, different delays may occur in different routers 132 of different customers 130.

[0022] Referring to FIG. 2, in which like reference numerals mean like components as described herein, a system example 300 similar to the system example 200 of FIG. 1B is shown. According to this example, the system 300 includes a network component 202. The network component 202 may be part of the service provider 110 and thus may be owned and / or operated by the service provider 110. The network component 202 may be located in the same place as one or more network components of the service provider 110, including the server 114 of the service provider 110 and / or the network component 112, and may be housed in the same rack as these components. As will be understood by those skilled in the art, the network component 202 need not be owned and / or operated by the service provider 110 and need not be located in the same place as the network components and / or servers of the service provider 110.

[0023] The network component 202 may include one or more network hardware / software / firmware-based interfaces / ports 204a…204n, which enable the network component to connect to the server 114, optionally, for example, via the network component 112. The network component 202 may also include one or more network hardware / software / firmware-based interfaces / ports 206a…206n, which enable the network component to connect to the server 138 (for example, of each customer 130a-n). The network interfaces 204a-n and 206a-n of the network component 202 may be configured to support one or more various types of physical network connections, such as copper, optical fiber, and / or wireless, may be configured to support one or more various types of protocols, such as Ethernet, and may be configured to operate at any speed, such as Gb rate. Further, the different network interfaces 204a-n and 206a-n may have different configurations. As would be understood by those skilled in the art, the network component 202 may have additional and / or other configurations.

[0024] As further shown in FIG. 2, one or more of the network interfaces 204a-n of the network component 202 may be physically (wired / wirelessly, e.g., by connections 210a-n) connected to a network component 112, which may be a switch. According to another and / or additional example, each of one or more of the network interfaces 204a-n of the network component 202 may be directly physically connected, by one or more connections 210a-n, to a respective server 114 of the service provider 110. According to a further aspect of the system example 300, each customer 130a-n may be assigned one or more respective network interfaces 206a-n of the network component 202. Thus, each network interface 206a-n of the network component 202 may be physically (wired / wirelessly, e.g., by connections 212a-n) directly and / or via one or more network components of each customer (e.g., network component 136, which may be a switch, for example) to a respective server 138 of each respective customer 130a-n. For example, each connection 212a-n may be a fiber connection, such as a single-mode fiber connection operating at, for example, 1 Gb, 10 Gb, 100 Gb, etc. (although other types of connections and rates may also be used). As will be understood by those skilled in the art, additional and / or other configurations of the network component 202 and the system 300 are possible.

[0025] According to a further aspect of system example 300, one or more of network interfaces 204a-n of network component 202, connections 210a-n, network component 112, and server 114 may be present in network 214, which may be a private network of service provider 110 and may have a network address space. Thus, one or more of network component 112 and server 114 may be configured such that one or more of servers 114 have network addresses in network 214 within its network address space. According to a further aspect of this configuration example, for example, one or more of network interface 206a, connection 212a, network component 136 of each customer 130a, and server 138 of each customer 130a may be present in network 216a of customer 130a, which may be a private network of customer 130a and may have a network address space. Thus, one or more of network component 136 of customer 130a and server 138 may be configured such that one or more of servers 138 have network addresses in network 216a within their respective network address spaces. Similarly, for example, one or more of network interface 206n, connection 212n, network component 136 of customer 130n, and server 138 of customer 130n may be present in network 216n of customer 130n, which may be a private network of customer 130n and may have respective network address spaces. Thus, one or more of network component 136 of customer 130n and server 138 may be configured such that one or more of servers 138 of customer 130n have network addresses in network 216n within their respective network address spaces. Other customers 130 not shown in FIG. 2 may also have a similar configuration.

[0026] According to a further aspect of this system example, the network component 202 may be, for example, a bidirectional network address translator and, optionally, a port address translator (NAT / PAT). More specifically, according to this example, each customer 130a-n may have one (or, optionally, more) address(es) with the network 214 within the network address space of the network 214. Thus, for each customer 130a-n, the network component 202 may be configured as a NAT / PAT that performs a mapping between one or more addresses of the server 138 in each customer network 216a-n (i.e., within the network address space of each network) and the address(es) assigned to each customer 130a-n on the network 214 (e.g., within the network address space of the network 214). Thus, when the server 138 is transmitting a message / data (which may be encapsulated, for example, in the form of a packet including an address and / or a port) to the server 114, the network component 202 can convert the address of the server 138 on the network 216a-n in the packet to the address assigned to the customer 130a-n on the network 214. Also in this case, such conversion may also include converting the port number in the packet used by the application on the server 138 to another port number. Similarly, when the server 110 is transmitting a message / data (which may be encapsulated, for example, in the form of a packet including an address and / or a port) to the server 138, the network component 202 can convert the address assigned to the customer 130a-n on the network 214 in the packet to the address of the server 138 on the network 216a-n. Also in this case, the network component 202 can also perform port conversion as part of the address conversion.

[0027] Referring to FIG. 3 in which like reference numerals mean like components as described herein, an architectural example of network component 202 is shown. Network component 202 may include a plurality of computing processors, which may include one or more of processors 301a... 301n and one or more of processors 302a, 302b,..., 302n. Processors 301a-n may sometimes be referred to herein as scheduling processors, and processors 302a-n may sometimes be referred to herein as network processors. The terms "scheduling" and "network" are to be taken as non-limiting and are used herein for ease of explanation only. Each of processors 301a-n and 302a-n may be similarly configured (e.g., with respect to memory, processing speed, etc.) or may not be similarly configured. As will be understood by those skilled in the art, the number of processors included in network component 202 may be more or less than this. According to a further aspect of network component example 202, any one or more of scheduling processors 301a-n and network processors 302a-n may be interconnected with each other via a communication architecture such as a bus architecture, which may include, for example, a shared memory architecture. As will be understood by those skilled in the art, other and / or additional communication architectures are possible. The communication architecture may be configured such that any of scheduling processors 301a-n communicate with any of network processors 302a-n. As will be understood by those skilled in the art, other configurations are possible.

[0028] As described hereinbefore, the network component 202 may also include one or more network interfaces 204a-n and one or more network interfaces 206a-n. The one or more network interfaces 204a-n may be configured to interface directly or indirectly with, for example, the server 114, and the one or more network interfaces 206a-n may be configured to interface with, for example, respective customers 130a-n. The network interfaces 204a-n and 206a-n may have the same configuration and / or may have one or more different configurations. For example, the interfaces 204a-n and 206a-n may be any combination of long-range or short-range, single-mode or multi-mode fiber interfaces operating at rates such as 1 Gb, 10 Gb, 100 Gb, etc. One or more of the network interfaces 204a-n and 206a-n may be physically located on its own network interface card, and / or some of the network interfaces 204a-n and 206a-n may be physically located on one or more common network interface cards. As will be understood by those skilled in the art, other configurations are possible.

[0029] As described hereinbefore, each network interface 206a-n may be assigned to and may interface with respective customers 130a-n. As will be appreciated by those skilled in the art, a plurality of network interfaces may be assigned to a given customer (e.g., for load balancing purposes, backup, etc.). According to a further aspect of network component example 202, each network interface 206a-n may be assigned to respective network processors 302a-n such that all data transmitted via each network interface is processed only by the respective network processor. However, as will be appreciated by those skilled in the art, additional and / or other configurations are possible, for example, a configuration in which two or more network interfaces 206a-n are assigned to a given network processor 302a-n, and / or a configuration in which two or more network processors 302a-n are assigned to a given network interface 206a-n. According to a further aspect of network component example 202, a given network interface 206a-n may be interconnected with its respective network processor 302a-n via a communication architecture such as a bus architecture (e.g., a PCIe bus architecture). As will be appreciated by those skilled in the art, other and / or additional communication architectures are possible. This communication architecture may be configured such that any network interface 206a-n may communicate with any one or more of network processors 302a-n, and any network processor 302a-n may communicate with any one or more of network interfaces 206a-n. According to a further aspect of network component 202, each network processor 302a-n may be blocked from all interrupts other than, for example, interrupts from the associated network interface 206a-n. As will be appreciated by those skilled in the art, other configurations are possible.

[0030] As further shown in FIG. 3, the network component example 202 may include one or more network applications 303a-n. The applications 303a-n may be software-based applications, but other and / or additional configurations are possible, including firmware and / or hardware-based applications. The network component 202 may include one or more memory devices, in which the applications 303a-n may be stored and / or from which these applications may be executed. Such memory devices may be electronically connected to one or more of the processors 301a-n and 302a-n. According to one aspect of the network component 202, each network processor may execute the applications 303a-n. According to a further aspect of the network component 202, each application 303a-n may be executed only in its respective processor. Thus, application 303a may be executed only in processor 302a, application 303b may be executed only in processor 302b, and so on. This is sometimes referred to as processor affinity. However, as will be understood by those skilled in the art, additional and / or other configurations are possible, for example, a configuration in which multiple applications 303a-n are executed in a single processor 302a-n, and / or a configuration in which one or more of the applications 303a-n are executed in multiple processors. For example, depending on the embodiment, l-flow level core affinity or processor affinity may be assigned to a routing device.

[0031] Thus, according to one configuration example of the network component 202, a given network application 303a-n may be assigned to each network processor 302a-n and may be executed on each network processor 302a-n. Each network processor 302a-n may be assigned to each network interface 206a-n, and each network interface 206a-n may be assigned to each customer 130a-n. According to a further aspect of this configuration example, each network application 302a-n may be configured as NAT and possibly PAT, and may perform network / port conversion of messages / data passing between the network 214 and each network 216a-n of each customer 130a-n. Thus, the network component 202 may be configured (e.g., by a network administrator) to assign a given network interface 206a-n to a given network processor 302a-n. Further, the network applications 303a-n on each network processor may be configured to perform the NAT / PAT function based on the customer 130a-n to which the assigned interface is connected. Depending on the physical hardware configuration / layout of the network processors 302a-n and network interfaces 206a-n, and / or the amount of data generated by and / or sent to each customer 130a-n, a particular assignment of the network interfaces 206a-n to the network processors 302a-n may be more advantageous than other assignments with respect to the total data throughput of the network component 202 and may, for example, be assigned as such by an administrator. For example, it may be advantageous to assign a given network interface 206a-n to a nearby network processor 302a-n.As will be understood by those skilled in the art, the network applications 302a-n need not be configured as NAT / PAT, and one network application may be configured to perform functions different from those of another network application or the like.

[0032] According to a further aspect of the network component example 202, each network interface 204a-n may be assigned to a respective one of the scheduling processors 301a-n such that all data transmitted via the respective network interface is processed only by the respective scheduling processor. However, as will be understood by those skilled in the art, additional and / or other configurations are also possible. For example, all network interfaces 204a-n may be assigned to one of the scheduling processors 301a-n, and / or each of the scheduling processors may be configured to communicate with any one or more of the network interfaces 204a-n. According to a further aspect of the network component example 202, a given network interface 204a-n may be interconnected with the respective scheduling processors 301a-n via a communication architecture such as a bus architecture (e.g., a PCIe bus architecture). As will be understood by those skilled in the art, other and / or additional communication architectures are also possible. This communication architecture may be configured such that any network interface 204a-n can communicate with any one or more of the scheduling processors 301a-n, and any scheduling processor 301a-n can communicate with any one or more of the network interfaces 204a-n. According to a further aspect of the network component 202, one or more of the scheduling processors 301a-n may be blocked from all interrupts other than, for example, interrupts from one or more of the network interfaces 204a-n. As will be understood by those skilled in the art, other configurations are also possible.

[0033] As further shown in FIG. 3, the network component 202 may include one or more scheduling applications and / or one or more management applications, which are collectively shown as applications 304a-n in FIG. 3. The applications 304a-n may be software-based applications, but other configurations are possible, including firmware and / or hardware-based applications. As described above, the network component 202 may include one or more memory devices, and the applications 304a-n may be stored in and / or executed from these memory devices. According to an example of the network component 202, each scheduling processor 301a-n may execute one or more scheduling applications, one or more management applications, or a combination thereof. As another example, the scheduling application and / or the management application may be executed by a plurality of processors. As another example, one scheduling application may be executed by one of the scheduling processors 301a-n and be responsible for a certain subset of the network processors 302a-n (detailed herein), while another scheduling application may be executed by the scheduling processors 301a-n and be responsible for another subset of the network processors 302a-n. As another example, one scheduling application may be executed by one of the scheduling processors 301a-n and be responsible for all of the network processors 302a-n. As a further example, one scheduling application may be executed by a plurality of the scheduling processors 301a-n and be responsible for all of the network processors 302a-n. As will be understood by those skilled in the art, other variations are possible. For ease of explanation, the network component 202 is described herein as having one scheduling application and one management application.As will be understood by those skilled in the art, the network component 202 may include a different type of application from the applications described herein.

[0034] According to a further aspect of the network component example 202, the scheduling application 304 may be configured to pass messages / data between the network interfaces 206a-n and the network interfaces 204a-n as follows. a. In the case of messages / data received at the network interfaces 206a-n, after each network application 303a-n performs NAT / PAT conversion on each packet, for example, the scheduling application 304 may retrieve / acquire the converted packets and transfer / deliver the converted packets to one of the network interfaces 204a-n. b. In the case of messages / data received at the network interfaces 204a-n, the scheduling application 304 may acquire the messages / data, determine which of the respective network applications 303a-n will perform NAT / PAT conversion for each packet, and transfer / deliver the packets to that network application, where the packets are converted (NAT / PAT) and transferred / delivered to the respective network interfaces 206a-n.

[0035] Accordingly, according to one operation example of the network component 202, a given server 138 of a given customer 130a-n may send a message / data (which may be encapsulated in the form of a packet including, for example, an address and / or a port) to the server 114 of the service provider 110. The message / data / packet may be received at a given network interface 206a-n of the network component 202. Thereafter, a given network application 303a-n of the network processor 302a-n assigned to the network interface 206a-n may obtain / receive the message / data / packet (or a portion thereof) from the network interface 206 and / or transfer it and perform NAT / PAT conversion on each respective packet. Thereafter, the network application 303a-n may transfer the converted message / data / packet to the scheduling application 304 and / or make it available, and then the scheduling application 304 may obtain and / or receive the converted message / data / packet, and then transfer the converted message / data / packet to each respective network interface 204a-n and / or make it available, and then the message / data / packet may be transmitted from there to the server 114. Similarly, a given server 114 of the service provider 110 may send a message / data (which may be encapsulated in the form of a packet, for example) to the server 138 of the customer 130a-n. The message / data / packet may be received at a given network interface 204a-n of the network component 202.Thereafter, the scheduling application 304 obtains / receives the message / data / packet (or a portion thereof) from the network interfaces 204a-n, and / or forwards it, and determines which of the respective network applications 303a-n / network processors 302a-n will perform NAT / PAT conversion on the message / data / packet, and may forward and / or make available the message / data / packet to the network applications 303a-n. (As an example, and although other embodiments are possible, for the scheduling application to forward the message / data to the appropriate network processors 302a-n, the scheduling application may maintain a table (which may be configured by an administrator) that maps the network addresses associated with the customers 130 to the respective network processors 302a-n.) Then, the network applications 303a-n obtain and / or receive the message / data / packet, perform NAT / PAT conversion on each of the respective packets, and may forward and / or make available the converted message / data / packet to the respective network interfaces 206a-n assigned to the network processors 302a-n on which the network applications 303a-n are running. Thereafter, the network interface 206 may transmit the message / data / packet to the servers 138 of the customers 130a-n. As will be understood by those skilled in the art, this is merely an example, and other and / or additional operational examples of the network components 202 are possible. As will also be understood by those skilled in the art, the operations performed by the scheduling application 304 as described herein, and the operations performed by the network applications 303a-n as described herein, may be performed, in whole or in part, by others.

[0036] Regarding the communication between the scheduling application 304 and any given network application 303a-n, as an example, these two applications may communicate via one or more (e.g., two) shared memory circular queues. For example, the network application 303 may put the converted message from the network interface 206 into the first memory queue and update, for example, the index / pointer of the queue to reflect that the new message has entered the queue. Similarly, the scheduling application 304 may monitor the index / pointer of the queue, recognize that there is a new message in the queue, read out the message, and update the index / pointer, for example, to reflect that the message has been read out. Similarly, the scheduling application 304 may put the message from the network interface 204 into the second memory queue and update, for example, the index / pointer of that queue to reflect that the new message has entered the second queue. Similarly, the network application 303 may monitor the index / pointer of the second queue, recognize that there is a new message in the queue, read out the message, and update the index / pointer, for example, to reflect that the message has been read out. The same process may be used when other network applications 303 (which may each have their own set of queues) communicate with the scheduling application 304. As will be understood by those skilled in the art, this is merely an example and other communication methods / processes may be used.

[0037] As described above, the network component 202 may include, for example, a management application 304 that may be executed by the scheduling processors 301a-n. Such an application may be used by an administrator to monitor the state of the network component 202 and configure that network component. For example, the network component 202 may include, for example, one or more input / output devices, such as, for example, a display interface, a mouse, a keyboard, a touch screen, a network interface (for remote access), and the like. By using such interfaces and the management application 304, for example, an administrator may monitor the state of the network component 202 and configure that network component. For example, an administrator may perform an assignment and / or re-assignment of a given network interface 206a-n to a given network processor 302a-n. The administrator may further configure the network applications 303a-n of a given network processor 302 (e.g., with respect to the addresses and / or ports for which the network application 303 attempts to perform NAT / PAT conversion) according to the customers 130a-n for which the network application 303 attempts to perform NAT / PAT conversion. As would be understood by one of ordinary skill in the art, the network applications may be configured in other ways. For example, one advantage of the hardware / software configuration of the network component 202 is that an administrator may perform a reconfiguration of a given customer 130a-n (e.g., a reconfiguration regarding NAT / PAT configuration, a reconfiguration regarding which network processors 302a-n are assigned to that customer, and / or a reconfiguration regarding which network interfaces 206a-n are assigned to that network processor 302a-n and / or customer) without temporarily disconnecting other customers. The management application 304 may include, for example, an IPMI subsystem so that an administrator may monitor the state of the network component 202. Such a subsystem may be separate from the management application 304.As will be understood by those skilled in the art, these are merely examples of management functions and other / additional functions are possible.

[0038] According to a further aspect of the network component 202, the network component may include one or more memory devices, such as solid state drives, and may include one or more logging applications that capture all (or a portion) of the data moving through the network component and record a log of that data to the drive. According to a further aspect, the logging application may filter the data and save only a portion of the data and / or may perform an analysis of the data (e.g., latency calculations) and save such analysis results. According to an even further aspect, the logging application may perform filtering of the data (e.g., searching for market data prices, completed transactions, etc.) and / or analysis of the data and transfer the filtered data and / or analysis results to another network interface (e.g., a network interface different from network interfaces 204a-n and / or 206a-n). Other systems external to the network component 202 and users (such as customer 130) may receive such data and / or analysis results, e.g., receive data and / or analysis results regarding prices. As will be understood by those skilled in the art, these are merely examples of logging functions and other / additional logging functions are possible.

[0039] According to an embodiment of the network component 202, an Intel Sandy Bridge processor incorporating a plurality (e.g., eight) of cores may be used to implement one or more of the processors 301a-n and 302a-n. For example, in a given Sandy Bridge processor, one or more cores may be assigned as the scheduling processors 302a-n, and one or more cores may be assigned as the network processors 303a-n. Such cores may be configured and may operate as described herein with respect to the processors 301a-n and 302a-n. The network component 202 may include a plurality of Sandy Bridge processors. Here, for each Sandy Bridge processor, one or more cores may be assigned as the network processors 302a-n, and one or more cores may be assigned as the scheduling processors 301a-n (these may, for example, only operate with the network processor of that chip for the purpose of moving messages between the network interfaces 204a-n and 206a-n). In such a configuration, any of the network interfaces 206a-n may be assigned to any of the Sandy Bridge network processors (cores). Alternatively, only a particular set of the network interfaces 206a-n may be assigned to one Sandy Bridge processor, and another set of the network interfaces 206a-n may be assigned to another Sandy Bridge processor, etc. Similarly, any of the network interfaces 204a-n may be assigned to any of the scheduling processors (cores) of the Sandy Bridge processors. Alternatively, only a particular set of the network interfaces 204a-n may be assigned to one Sandy Bridge processor, and another set of the network interfaces 206a-n may be assigned to another Sandy Bridge processor, etc. As will be understood by those skilled in the art, these are merely examples, and other configurations and other chip sets may also be used.

[0040] According to a further embodiment of the network component 202, the network interfaces 204a-n and 206a-n may be implemented by one or more network interface cards made by Hotlava, for example, a network interface card including any one or more of Tambora 120G6, Tambora 64G6, Tambora 80G4, Tambora 64G4, and Bosavi 12G6. As will be understood by those skilled in the art, these are merely examples, and other network interface cards, including network interface cards from other suppliers, may also be used.

[0041] According to a further embodiment of the network component 202, for example, a Sandy Bridge processor and, for example, a network interface card made by Hotlava may be inserted into one motherboard, and such a system may operate a Linux (registered trademark) operating system. Again, as will be understood by those skilled in the art, these are merely examples, and other configurations are possible.

[0042] As will be understood by those skilled in the art, the network component 202 may be configured in the reverse direction (although it may be configured as described hereinbefore, for example, in FIGS. 2 and 3). For example, a given server 114 in the network 214 may have one (or in some cases, more) addresses in another network (for example, the network 216a), but it is also possible for several other networks to interface with the network interface 206. Thus, for a given server 114, the network component 202 may be configured as NAT / PAT (as described hereinbefore), for example, as NAT / PAT that performs mapping between one or more addresses of the server 114 in the custom network 214 and the addresses assigned to the servers in the network 216a.

[0043] Although the present disclosure has been described with respect to specific embodiments and generally associated methods, modifications and substitutions to these embodiments and methods will be apparent to those skilled in the art. Accordingly, the description of the exemplary embodiments above does not limit the present disclosure. Other changes, substitutions, and modifications are possible without departing from the spirit and scope of the present disclosure. A routing device that defines and / or enables a software-defined network may, in various embodiments, be present in a data center and / or a customer and / or a service provider as needed. For example, an SDN edge routing device may provide l-flow routing, and a customer or service provider switch or edge routing device may provide such functionality and the like.

[0044] Some embodiments may include a software-defined network. Such a network may use high-speed networking devices as disclosed herein (e.g., devices such as device 202). Such a network is capable of enabling cloud and / or distributed financial networks with a high degree of flexibility and speed. Some embodiments may include a software-defined network that includes a carrier-grade network conversion system.

[0045] For SDN endpoints, SDN may perform NAT (with headers) on packets and / or support port-level redirection (port address translation) as needed, and may operate as a proxy between one or more external networks and one or more internal SDN IP zones. This design can help reduce routing and enable downstream routing changes to be completely unnecessary even when the external network changes. In some embodiments, there may be one internal SDN IP zone covered by SDN per data center. An l-flow may be defined as a pair of IP and port that can be accessed from a source. SDN can provide services such as routing, analytics, load balancing, and failover to service providers identified by a specific l-flow.

[0046] SDN may appear to a customer network as a simple server connection with a static route. For example, a customer connection to SDN may be very similar to the customer connection described above for a connection through network device 202. When other endpoints (e.g., FIX endpoints, market data endpoints, and / or internal services) are enabled, a customer facing an SDN endpoint may present these services to various ports or IPs defined by the customer network (e.g., as an l-flow).

[0047] Failover and load balancing may be processed at the application layer and can be defined for each set of IP and port called a logical flow (l-flow). This can lift network failover to the application level and enable fine-grained control of application-level failover and load balancing.

[0048] SDN can operate as a unique connection layer used to supply energy to a global network. Different from conventional network systems, such SDN can interact with the system at both the network level and the application level. The connection between endpoints may be made by standard IPv4 TCP / IP settings similar to conventional servers. Once connected, SDN may be configured to provide numerous options for forwarding, analytics, load balancing, and failover for each pair of IP and port called an l-flow.

[0049] In some embodiments, SDN may use 1Gbe or 10Gbe single-mode fiber (SMF) connections for each endpoint. Of course, as described above, any type of connection may be used in various embodiments, and these examples are non-limiting. The SDN endpoint (on the SDN side) may be composed of one or multiple IP addresses in any address space compatible with the external network. In some embodiments, the SDN endpoint may have the requirement that each SDN endpoint must be assigned (at least) one static IPv4 address and each SDN endpoint must be given (at least) one default gateway. Although examples regarding IPv4 and TCP are given, of course, other examples may use any desired technology, such as IPv6 and UDP, etc.

[0050] Connectivity to and / or from SDN may end or start with an IP address assigned to an external connection by full network address translation of the l-flow's IP and port pair by SDN.

[0051] The SDN endpoint may be directly connected to an external primary and / or secondary switch or other components of the connected user / service provider. This configuration can help reduce latency in some form. Figure 5 shows an example of a LUCERA SDN endpoint connection to an external switch of an external LAN. In some embodiments, there is no additional routing layer between the application server and the SDN. In this configuration, an IP address from an external IP pool may be assigned to each endpoint, and the SDN endpoint may be configured in the same way as a conventional server network interface.

[0052] In some embodiments, the SDN endpoint may be connected to an external firewall or router. This configuration is quite similar to the configuration described above, except that the IP address is assigned from the transit network. Figure 6 shows an example of such a connection. This topology may be deployed for the creation of a DMZ or for consideration of VLAN integration. If additional source routes are required (when the external transit does not implement full NAT), they may also be added to the SDN endpoint.

[0053] When it is necessary to connect the SDN to multiple VLANs, in some embodiments, the direct connection topology described above may be adopted, and endpoints may be added to each VLAN. Figure 7 shows an example of an SDN endpoint configured to connect to three separate 802.1Q-tagged VLANs. In some embodiments, this endpoint can support, for example, up to 1024 VLAN endpoints per physical connection. The SDN endpoint allows this flexibility to adapt to the external network and may be regarded as either a single gateway or a collection of gateways within the network.

[0054] In some embodiments, the SDN can operate as a carrier-grade network address translation system. Each physical endpoint on the SDN may be mapped to a physical network interface, and each logical IP address may be assigned to that interface. FIG. 8 shows an SDN node, an external interface, and the corresponding internal fabric connection. In some embodiments, the components in FIG. 8 may correspond to network components such as the aforementioned component 202.

[0055] In some embodiments, the SDN endpoint may perform full (header rewriting) network address translation to connect to the core fabric. For each l-flow, one process (and / or core and / or processor) may be assigned to perform and manage the NAT and / or PAT services. Each external connection may be directly connected to one interface, and the NAT layer may make the traffic invisible on the external network.

[0056] Depending on the embodiment, by default, the interface may be reachable from PING (ICMP echo) and may not be reachable from other ports. When an application is made available from the SDN (as an l-flow), the ports of the external interface may be enabled. FIG. 9 shows an example scenario where a customer endpoint has access to two services from ExchangeCo, namely, a market data feed on port 9999 and a FIX session on port 9998. These two services each have a separate l-flow defined by an IP and port pair. The SDN performs a full NAT of the ExchangeCO network and presents those services to the local endpoints on ports 9999 and 9998. These ports may be changed as needed. For example, the SDN may present the ExchangeCO services on 9000 and 9001 as needed. Internally, the SDN may employ a fabric without non-blocking convergence, and internal communication may occur in a private fabric IP zone. Depending on the embodiment, cross-data center connections (including, for example, redundant transcontinental links) may operate as edge node points and support internal l-flows.

[0057] Depending on the embodiment, the SDN endpoint may enable access to any number of l-flows. For a given service (which may be identified as a set of IP, port, and / or protocol), the SDN defines l-flows for managing service access, failover, and / or quality. The SDN can manage these operational elements in a way that is not visible to the users accessing those l-flows. An l-flow may be defined as ingress or egress. An ingress l-flow may be a service that is external to the SDN and provided within the SDN. An egress l-flow may be a service that is internal to the SDN and provided to an external endpoint.

[0058] Figure 10 shows an example where the incoming i-flow is enabled. In this example, an A FIX engine in the network of ExchangeCo attempts to provide access to the market for SDN customers. ExchangeCO defines this l-flow such that the market data has IP: 192.168.1.1, port: 9999, the protocol is TCP, and the order session has IP: 192.168.1.2, port: 9998, and the protocol is TCP.

[0059] Figure 11 shows a customer with an outgoing l-flow for accessing the ExchangeCo service. When CustomerCo attempts to access the ExchangeCO service, negotiates with ExchangeCo regarding eligibility, and is approved for access by ExchangeCo, the SDN enables the l-flow for the service to that customer. The ExchangeCO service appears on the local CustomerCO LAN (or VLAN) (source IP), and CustomerCO does not need to know the details of the actual ExchangeCO endpoint. This abstraction may allow ExchangeCO to change the network design without forcing downstream routing updates, failovers, and load balancing, as long as there are no interruptions to the customer connection to ExchangeCo.

[0060] In some embodiments, the l-flow may change ports (port address translation). In some embodiments, the l-flow may traverse cross-data center fabrics. For example, in the example of Figure 12, CustomerCO attempts to access two FX matching sources as a liquidity asset receiver (outgoing l-flow) and uses access to two FX matching sources as a liquidity asset provider (incoming l-flow).

[0061] As a further example, FIG. 13 shows a liquidity aggregator that needs to connect to six liquidity asset providers of NY4 (which can identify a specific data center) and five liquidity asset providers of LD4 (which can identify geographically heterogeneous data centers) through the SDN. To simplify the connectivity on the aggregator side, assume that all destinations can be reached with one IP address (shown here as 10.2.1.1). Since the outbound port may be continuously defined for each destination, all ten endpoints appear at one IP, and each port is mapped to a logical endpoint.

[0062] The SDN can operate like a conventional network appliance in that it can detect failures at the link level and IP level. For example, define the following ingress l-flow as shown in FIG. 14. [Table 1] The l-flow is operable in active / passive scenarios and failovers for link (physical) failures or IP failures. To establish each of these l-flows, sockets may be opened. When a socket becomes unavailable, a failure condition may occur in any of the l-flows. When the primary socket becomes unavailable, a secondary l-flow may be used instead. Since the secondary socket is opened before a failure condition occurs, no delay occurs when establishing a new connection after the failure is detected.

[0063] Customers who use this l-flow as an exit can fail over transparently to the secondary path while appearing to the customer to have no networking changes at all. In this example scenario, if a failure occurs in the link to the primary, the primary session fails and the l-flow will start routing to the secondary link (if this is the FIX engine, a new session instance may be started). In particular, the failure detection logic is associated with the exit l-flow. When a failure occurs downstream (primary), the exit l-flow receives an IP layer error, disconnects the session, and re-establishes the connection (stateful service) using the secondary. In some embodiments, the failover method assumes a stateful endpoint and registers for a TCP reconnection on failure.

[0064] Failover and load balancing may be handled similarly by the SDN. Failover and / or load balancing may be applied in the ingress and / or egress l-flows. Load-balanced services can be implemented in various ways. Two non-limiting examples are round robin (weighted or unweighted) and least connected.

[0065] When round robin distribution is employed, each server may be used in turn according to its respective weight. This is arguably the simplest and most commonly implemented load balancing method. By applying round robin weights, it is possible to direct traffic to more computationally robust servers. In some embodiments, the number of endpoints in the pool may be limited, for example, to 1024, which means that the maximum number of "servers" possible for distributing the l-flow end-to-end is 1024. FIG. 15 shows an example of two-server load balancing by weighted round robin. Packets entering the illustrated egress l-flow are routed between two ingress l-flows to the primary or secondary FIX engines according to the round robin weighting algorithm implemented by the SDN endpoint.

[0066] In an example of minimum connection load distribution, the server with the fewest currently connected sessions is selected. This load distribution method may be optimal for services where the computational load is not uniform and the connection length is variable (e.g., database services or web services).

[0067] Depending on the embodiment, compression may be applied to the ingress and / or egress l-flow. Such compression may be in any desired form. An example of a usable compression is dictionary compression. As an example of such a usable dictionary compression, there is a compression algorithm related to the deflate algorithm, for example, the zlib library compression algorithm. As will be understood by those skilled in the art, other types of compression algorithms may also be used in various embodiments.

[0068] Compression can be useful in reducing latency and / or improving bandwidth by reducing and / or minimizing the packet size and / or eliminating the transmission of extra data, depending on the situation. This can be particularly applicable in the case of large message updates and / or text-based l-flows (e.g., FIX messaging l-flows).

[0069] In some embodiments, compression and / or decompression may be performed at the SDN level. The dictionary may be shared / established among multiple processes / processors / cores. An API or other means for establishing l-flow control may be used to instruct the process on the compression mode and method. For example, when an SDN connection between a new l-flow and an SDN endpoint is established, a compression dictionary conforming to the desired compression routine may be established. The dictionary may be shared with the SDN endpoint having access to that l-flow. Data entering one endpoint of that l-flow may be compressed according to the compression routine. Data exiting that l-flow may be decompressed according to the compression routine. The process at the endpoint may perform compression and / or decompression according to a stabilized routine (e.g., by executing instructions on a processor / core such as within component 202).

[0070] Figure 16 shows an example instance of end-to-end compression of an l-flow. In this example, for each chunk of data (e.g., 2048 bytes, or some other data amount), dictionary entries are created at both the sending and receiving endpoints of the l-flow. The creation of the dictionary is performed in a concurrent manner rather than a pre-preparation or pre-sharing manner. The method of establishing dictionary entries may be predefined across the endpoints such that both endpoints generate the same dictionary entries. In other embodiments, a pre-prepared dictionary or a pre-shared dictionary may be used instead of a concurrent dictionary.

[0071] When a particular data chunk is transferred for the first time, a dictionary entry corresponding to that chunk is created at the sending end. There may be a performance hit for creating the entry, because additional processing may be required compared to simply sending the data without creating the dictionary entry. In this example, at the receiving endpoint, the first chunk may be ABC. The created dictionary entry establishes ABC as the first entry. The second data chunk may be DEF. The created dictionary entry establishes DEF as the second entry. The data is sent as ABCDEF to the other endpoint, where dictionary entry matching is performed.

[0072] Upon the next transfer, that particular data chunk may be compressed to a smaller size. For example, a 2048-byte data chunk may be compressed to a 10-byte reference that identifies the dictionary entry. In this example, when a new data sequence containing two chunks DEF and HIJ is received, the receiving l-flow converts the DEF chunk to a reference to the second dictionary entry and creates a new dictionary entry corresponding to the HIJ chunk as the third entry. The data sent to the other l-flow endpoint is a reference pointer to the second dictionary entry and the HIJ chunk. When reception occurs at the other endpoint, this endpoint looks up the second dictionary entry, recreates the DEF chunk, and creates the complete DEFHIJ string. The other endpoint also creates a new dictionary entry corresponding to the HIJ chunk.

[0073] Of course, the sizes of the data examples are given as non-limiting examples, and dictionary references and / or chunks of any size may be used as needed.

[0074] Depending on the embodiment, encryption may be applied to the ingress and / or egress l-flows. Such encryption may be in any desired form. Encryption may be applied inline. For example, encryption may include SSL encryption. Encryption may include TLS encryption. The process / processor / core may apply the same key or different keys (e.g., private key and / or public key) for each l-flow. For example, data entering one endpoint of an l-flow may be encrypted (e.g., using a public key). Depending on the embodiment, data may exit the l-flow in encrypted form and may be decrypted by the recipient (e.g., using a private key). Depending on the embodiment, data may be decrypted by the endpoint (e.g., using a private key) as it exits the other endpoint of the l-flow. Different l-flows may be similarly encrypted and decrypted using different single keys and / or multiple keys. Some examples of supported encryption algorithms and / or keys include AES128-SHA, AES256-SHA, RC4-MD5, etc. In the case of an AES-based key, the endpoint may implement Intel's AES-NI instruction set for low latency and high throughput transmission. By delegating the burden of encryption to the SDN, it may become possible for analysis applications (e.g., packet capture, analytics, etc.) to operate on the traffic. Other embodiments may include encryption by the source and / or recipient instead of delegating the burden of encryption to the SDN. In such embodiments, the content of the data may be unknown to the SDN, and as a result, it may not be available to some analysis applications. Also, some analysis applications may be able to operate without interfering with the encrypted data and / or may use a post-delivery reporting system to enable operation.

[0075] In some embodiments, analytics applications may be applied to ingress and / or egress l-flows. In some embodiments, l-flow analytics may operate only on packet headers. Such analytics may enable analysis to be performed regardless of whether the burden of encryption and / or compression is delegated to the SDN. Also, in some embodiments, it may include payload analytics, such as a packet capture mechanism. The processing may operate in-line and thus may not interfere with data packets traversing the SDN. Such processing may be performed by placing the packet header in a buffer or queue of a processor, core, or process for analytics. The buffer may be a shared memory space having a process, processor, or core that performs routing and / or transmission processing. For example, after a header / data packet is processed through an SDN endpoint or other node of the SDN, the packet header may be placed in a portion of a ring buffer or other queuing memory for processing by an analytics process. The analytics processing may be performed separately from the SDN routing process itself. This structure may ensure that post-transmission analysis is performed without interfering with the flow of SDN packets.

[0076] Analytics information may be stored and historical queries may be possible. Such queries may be performed from devices connected to the SDN to a processor or database operated by a non-routing system, such as a computing system not involved in routing data through the SDN. For queries of various time durations, various levels of granularity may be maintained. For queries of various time durations, various metrics may be maintained. Examples of metrics that may be proposed as analytics for l-flows may include bandwidth, error, and / or latency information, such as bandwidth (bits), throughput (number of packets), TCP retransmissions (percentage of total number of packets), TCP retransmissions (number of packets), out-of-order TCP packets (percentage of total number of packets), out-of-order TCP packets (number of packets), TCP active flows, application round-trip time, TCP handshake latency, etc. Analytics information may be streamed via WebSocket and / or delivered in any desired manner.

[0077] In some embodiments, additional analytics regarding the performance of the SDN and / or l-flows may be available. To calculate analytics data regarding data transmitted through the SDN, the SDN may provide hundreds, thousands, tens of thousands, etc. of remote measurement points. For example, each hop or node along any path through the SDN may be operable as a remote measurement point. Custom metrics may be defined by the customer from any information that may be collected by such remote measurement points. Examples of additional metrics may include SNMP metrics, Statsd metrics, Kstats metrics, etc.

[0078] In some embodiments, rather than analyzing only the header, the entire data packet may be analyzed. The operations of header capture and / or analysis and packet capture and / or analysis may be similar.

[0079] Figures 17 and 18 show structural examples of configurations for packet and / or header capture and / or analysis that may be used depending on the embodiment. Such a configuration may enable the analysis of captured packets and / or packet headers. The capture mechanism is organized as a virtual tap within an l-flow. The virtual tap implements a network packet broker that streams packet information as needed.

[0080] Memory spaces such as ring buffers may be shared between two processes / processors / cores, as shown in FIG. 17. For example, one process / processor / core may operate routing related to l-flow. Another process / processor / core may operate SDN packet capture and / or other analytics or functions. Packets may be placed in the buffer and processed by both processes / processors / cores. In some embodiments, both cores may access any component of the buffer to process packets in the buffer. In some embodiments, the routing or l-flow process / processor / core may access a first set of the space, and the packet capture process / processor / core may access another set of the space. The first set of the space may have a higher priority than the second set of the space. For example, in one embodiment, before the last space in the ring buffer is overwritten by new data that becomes the first space in the ring buffer, the packet capture process / processor / core may access that last space. In such an embodiment, the routing or l-flow process / processor / core may be given a first priority to process the packet before the packet capture process / processor / core is permitted to act on the packet. In some embodiments, the packet capture process / processor / core may be limited to interrupting routing or l-flow access to the buffer, but the routing or l-flow process / processor / core may be permitted to interrupt the packet capture process / processor / core. In this way, routing is always considered most important and latency or data transfer is minimized.

[0081] Depending on the embodiment, the packet capture process / processor / core may copy data from the shared memory to a writer buffer (e.g., another ring buffer). Such a buffer may be of any size. As an example of the size, it may be a 4MB buffer. The buffer may queue data to be written to the disk or store data that is to be acted upon by analysis tools in other forms. Depending on the embodiment, the packet capture process / processor / core may send the captured packets to a collector agent or collector process, or in other forms, queue the packets for transmission by a low-priority transmission process.

[0082] Depending on the embodiment, post-capture processing of the captured packets may be performed away from the core routing components of the SDN. For example, it may be performed by a processor that has no functions related to data transmission and / or routing at all. For example, a collector agent may operate on such a non-routing processor. FIG. 18 shows the operation and post-processing of such a collector agent away from the routing of the SDN. By performing the copying of information from one place to another in a reliable manner, it is possible to maintain the integrity of the data. For example, the RAFT consensus algorithm may be used to ensure reliable replication.

[0083] To enable analytics to properly recreate or analyze information about the packets, the packets may be timestamped by a trusted time source. This timestamping may be part of the header. A GPS or CDMA clock source may be used for the timestamping. This timestamping may also be used for determining the order of precedence (e.g., price-time precedence in an SDN switching service provider).

[0084] In some embodiments, the captured packets may be broadcast to a message queue, and the message queue enables all applications subscribing to the queue to act on the captured packets. For example, a collector agent may push the received packets to the message queue. Each l-flow may be assigned a channel in the memory queue. Accordingly, packets captured from a specific l-flow (e.g., at an endpoint, a node in the SDN, etc.) may be broadcast on the assigned channel. An application may listen to the data on a specific channel and act on the data as needed.

[0085] An initial post-processing task may subscribe to the l-flow log file output published in the message queue. The initial post-processing task may publish back to the queue data, which is reformatted from the raw packet capture into a desired format. An example of the format is the PCAP format. Such formatted data may be consumed by a PCAP analysis application (e.g., Wireshark, TCPFlow) as needed. An example of the format is <date><l-flow uuid> <gmtsecond> <data>It may be present. The initial post - processing task may operate before other tasks. The operation of the initial post - processing task may assign data to a channel (for example, by using the l - flow uuid tag in the formatted republished data).

[0086] In response to the formatted data being published in the message queue, the post - processing engine may act on the data as needed. For example, the post - processing engine may be assigned (for example, through an API) to provide analytics for packets from a specific l - flow. When a packet tagged with the uuid of that l - flow, or a packet in that l - flow channel of the message queue in another format, appears, the post - processing engine may operate to analyze that packet.

[0087] In some embodiments, the post - processing engine may operate to store files. Such a storage device may be, for example, a long - term or short - term storage device as needed. The data may be gzip - compressed, indexed, and stored on any desired storage medium. The post - processing engine may operate to provide l - flow playback activity. Packets can provide accurate information even if they are received out of order in post - processing, by being rearranged based on the packet timestamps. Post - processing may be performed to carry out any desired analytics analysis on the captured packets and / or headers.

[0088] There are numerous examples of possible SDN functionality, such as functionality like l - flow compression, encryption, packet capture, analytics, etc., which may be provided in various combinations in some embodiments. Of course, such examples of functionality are non - limiting.

[0089] FIG. 4 shows another example of SDN that may be implemented depending on the embodiment. In this example, four SDN endpoints 401, 403, 405, and 407 (which may or may not correspond to customer 130 in the previous figure) are shown as being connected to the SDN through two SDN network devices 202A and 202B. Each network device provides services to separate data centers, SDN data centers 411 and 413. These data centers may be connected to each other through an SDN fabric, which is illustrated as internal networking components and devices 415. Each data center is illustrated as having internal SDN endpoints and / or other service providers shown as 417 and 419 (e.g., these may or may not correspond to components such as 114 in the previous figure). Of course, this example is given as a non-limiting example showing some possible functionality and / or configuration that may be implemented depending on the embodiment. Depending on the embodiment, other configurations, components, functionality, etc. may be had.

[0090] In a cloud-based and / or distributed high-speed trading network, various endpoints and / or participants may provide services to other endpoints and / or participants to facilitate trading through the SDN. For example, as a non-limiting set-up example, endpoints 405 and 407 may provide market data services to SDN participants, endpoint 401 may provide exchange data services to SDN participants, and endpoint 403 may be a trading entity that utilizes distributed services of the SDN.

[0091] A customer of endpoint 403 may well access the market data l - flows to endpoints 405 and 407 respectively, which is done by accessing the combination of IP addresses and ports assigned from the SDN for those services for endpoint 403. Market data information may be provided by the services of endpoints 405 and 407 replying to the customer of endpoint 403 through the SDN. Similarly, endpoint 403 may provide trading commands (e.g., bid, offer) by communicating with endpoint 401 through the SDN.

[0092] Internal services such as endpoint 417 may provide services in the same way as external endpoints. For example, the internal service may provide switching functionality. The internal service may be accessed in the same way as external services (e.g., by a port and IP pair). Depending on the embodiment, since access to the internal endpoint and access to the external endpoint may be the same, the endpoint may not recognize which is being accessed (even if, for example, the port and / or IP address, and / or API commands are different).

[0093] If there is a network change at any of these endpoints, it may be considered to be due to the SDN. Components connected to the SDN may appear to other components connected to the SDN as if they were in one network space. However, these components may actually be connected as heterogeneous and physically separate. The SDN may make it possible for endpoints to logically view each other as connected devices by abstracting these physical differences. This configuration may enable market data to be transmitted from these SDN - connected services to SDN - connected trading entities quickly and / or with low latency.

[0094] To promote the functionality of the SDN, a component of the SDN, such as component 419, may control the control for each component of the SDN. For example, the control device 419 may instruct the components of the SDN on how to route and / or process the packets recovered by the SDN. For example, the core 302 and / or the application 303 may be controlled to respond to the data as required by the SDN (e.g., perform routing according to the structure of the SDN, ignore appropriately, encrypt or compress if necessary, perform analysis and / or capture if necessary).

[0095] For example, in the case of customer 403, the SDN may control a network application operating in a customer 403 - dedicated core within the network device 202A to activate the paths to each of the endpoints 401, 405, and 407. The paths to other endpoints may be deactivated for that customer by the SDN control device. Those paths may be opened later, and / or the open paths may be closed later. For example, when a new switching system is connected to the SDN, a new path to that system may be established at the IP - port pair accessible from the customer. As another example, if the customer does not pay the subscription fee for market data, the market data endpoint may become inaccessible, and the path may not be opened for customer 403. The control component 419 may receive various inputs regarding such path changes and control an application such as 303A on core 302A to process the packets according to such network changes.

[0096] As another example, the customer may request data encryption, data compression, data analytics, packet capture, etc. for access to the service. Such requests may be made through the control device 419 and / or directly through an API accessible by a network application (e.g., 303A). This application may then process the packets according to that request and / or be controlled to do so.

[0097] The control and / or application of services such as encryption, compression, load balancing, etc. may be performed at various locations and / or by various entities. For example, a customer may instruct an SDN API (e.g., the core / application of SDN control component 419 and / or component 220) to compress the communication with a market data source in a specific l-flow. The SDN may control the components of the SDN (e.g., through communication between the APIs of the SDN (e.g., the core / application at each end of the l-flow)) to apply the required compression to the data as the data passes through the SDN. Such compression may, in some embodiments, be applied from endpoint to endpoint of the l-flow. Also, in some embodiments, such compression may be applied to the hops of the l-flow (e.g., within the SDN fabric). Naturally, the encryption functionality may operate similarly with an endpoint that identifies the encryption used for the l-flow and one or more components of the SDN that operate to apply the identified encryption.

[0098] As another example, load balancing in an l-flow may be controlled by an instruction from a service provider. For example, an outgoing l-flow that provides a switching service may identify (e.g., by using an SDN API to an SDN controller or other component of the SDN (e.g., the core or application that controls routing in a device such as component 220)) that the load balancing should be performed in a round-robin manner. One or more components of the SDN may be controlled to facilitate the identified load balancing. For example, a core connected to a switch may be controlled to route any other packets reaching that core to another destination according to a determined way of load balancing. Since the SDN performs the load balancing process, the user of the service, and even the service itself, may not need to be aware of the actual adjustment details of the network routing.

[0099] As another example, analytics and / or packet capture may be similarly applied and / or controlled at the l-flow level. An endpoint may be able to identify that the desired analysis and / or capture is applied to a particular l-flow. The SDN may determine how and / or where to apply the desired capture and / or analysis. For example, a core connecting a service to the SDN may operate to perform packet capture and / or apply analysis to the packets. As another example, a core of an endpoint using the service may operate to apply analytics packets and / or capture packets of the service user to the packets. The SDN may determine where and how to apply that capture and / or analysis (e.g., by instructing the core / application to perform an action on packets having certain characteristics when the packets pass through the SDN), and control the core to apply it in response to a request from the endpoint.

[0100] Again, of course, these examples, structures, and functionalities are given only as non-limiting examples.

[0101] The following sections provide guidance for interpreting this application. I. Terms

[0102] The term "product" means any machine, manufactured article, and / or composition, unless expressly defined otherwise.

[0103] The term "process" means any process, algorithm, method, etc., unless expressly defined otherwise.

[0104] Each process inherently includes one or more steps (however called, whether by method, algorithm, or otherwise), and thus any reference to a "step" of a process has an antecedent inherent in the mere recitation of the term "process" or a similar term. Thus, any reference in a claim to a "step" of a process has a sufficient antecedent.

[0105] The term "invention" and the like means, unless expressly provided otherwise, "one or more inventions disclosed in this application".

[0106] The terms "an embodiment", "embodiment (embodiment, embodiments)", "the embodiment (the embodiment, the embodiments)", "one or more embodiments", "some embodiments", "specific embodiments", "a certain embodiment", "another embodiment", etc. mean, unless expressly provided otherwise, "one or more embodiments (but not all) of the invention".

[0107] The term "modification" of an invention means, unless expressly provided otherwise, an embodiment of the present invention.

[0108] The term "representation" is used in a very broad sense. It should be understood that the "representation" of an object includes all things that can be used to identify the object.

[0109] The representation of an item may include an electronic message for identifying the item (e.g., identifying the widget by a serial number assigned to the widget, or identifying the widget by one or more features of the widget). The representation of an item may include information that can be used for calculating or referring to the item (e.g., information for identifying a machine of which the widget is a part and that can be used to identify the widget). The representation of an item may identify other items related to the item (e.g., features of the item, names of the item, names of items related to the item). The representation of an item may not identify other items related to the item (e.g., in a computer system configured to interpret the English article "a" for identifying a widget, the article "a" can be used by the computer system to identify the widget). The representation of an item may be a sign, phenomenon, and / or symbol of the item. The representation of an item may include, for example, codes, references, exemplifications, links, signals, and / or identifiers. The representation of an item may include information indicating, describing, and / or relating to the item.

[0110] What is obtained by converting the representation of an item may be the representation of the item (e.g., an encrypted representation of an item may be the representation of the item). The representation of an item may include the item itself, a copy of the item, and / or a part of the item. The representation of an item may be meaningless to an item not configured to understand the representation (e.g., a human may not understand the article "a" that represents a widget, but even in that case, since the computer system can identify the widget from the article "a", it can be the representation of the widget). It should be understood that the fact that a representation of an item can be used to identify the item does not mean that the item or other things have been identified. The representation of an item may include any numerical representation unless otherwise specified. The representation of an item may include representations of other items (e.g., an electronic message indicating many items) (The representation can be used as a very broad term as a claim term. For example, "receiving a representation of a financial product").

[0111] The term "show" means (1) to make explicit, identify, represent, or display, such as a term, symbol, or other thing; (2) to make explicit or identify by means of several terms, features, symbols, or other things; (3) to depict, draw, or show something similar, like a picture; or (4) to function as a sign or symbol.

[0112] When referring to "another embodiment" in the description of an embodiment, unless otherwise explicitly specified, it does not indicate that the recited embodiment is mutually exclusive with another embodiment (for example, an embodiment described before the recited embodiment). Similarly, the mere fact that two (or more) embodiments are referred to does not imply that these embodiments are mutually exclusive.

[0113] One embodiment of an invention may include, encompass, or incorporate one or more other embodiments of the invention. For example, a first embodiment comprising elements a, b, c may include a second embodiment comprising elements a, b, c, d or a third embodiment comprising elements a, b, c, e. Similarly, each of these first, second, and third embodiments may include a fourth embodiment comprising elements a, b, c, d, e.

[0114] The terms "comprising", "including", and variations thereof mean "including, but not necessarily limited to" unless otherwise explicitly specified. Thus, for example, the sentence "This machine includes a red widget and a blue widget" means that the machine may include a red widget and a blue widget, but may also include one or more other items.

[0115] The terms "consisting of" and variations thereof mean "including and limited to" unless otherwise explicitly specified. Thus, for example, the sentence "This machine consists of a red widget and a blue widget" means that the machine includes a red widget and a blue widget and nothing else.

[0116] The term "comprising" and variations thereof mean "including the components, elements, or members" unless expressly specified otherwise. Thus, for example, the sentence "A red widget and a blue widget comprise a machine" means that the machine includes a red widget and a blue widget.

[0117] The term "exclusively comprising" and variations thereof mean "exclusively consisting of the components, being the only element, or being the only member" unless expressly specified otherwise. Thus, for example, the sentence "A red widget and a blue widget exclusively comprise a machine" means that the machine consists of a red widget and a blue widget (i.e., contains nothing else).

[0118] The terms "a" and "the" indicate "one or more" unless expressly specified otherwise. Thus, for example, the phrase "a widget" means one or more widgets unless expressly specified otherwise. Similarly, the phrase "the widget" following the phrase "a widget" means "one or more of the said widgets". For this reason, the phrase "the" can indicate a specific phrase with a preceding term. For example, when the phrase "the feature" follows the phrase "a specific single feature", the phrase "the feature" should be understood to indicate the "specific single feature" described above (the article "a" in "a specific single features" means "one" specific single feature and not one or more specific single features).

[0119] The term "a plurality" means "two or more" unless expressly specified otherwise.

[0120] The term "as used herein" means "in this application including all that can be incorporated by reference" unless expressly specified otherwise.

[0121] When modifying a plurality of things (such as a list of enumerated things), the phrase "at least one of" means any combination of one or more of those things, unless otherwise explicitly specified. For example, the phrase "at least one of widget, car, and wheel" means (i) widget, (ii) car, (iii) wheel, (iv) widget and car, (v) widget and wheel, (vi) car and wheel, or (vii) any of widget, car, and wheel. When modifying a plurality of things, the phrase "at least one of" does not mean "one of each of" the plurality of things. For example, the phrase "at least one widget, car, and wheel" does not mean "one widget, one car, and one wheel".

[0122] When used as a cardinal number to indicate a quantity of something (e.g., one widget, two widgets), numerical terms such as "one", "two", etc. mean the quantity indicated by that numerical term and not more than the quantity indicated by that numerical term. For example, the phrase "one widget" does not mean "at least one widget", and thus the phrase "one widget" does not include, for example, two widgets within its scope.

[0123] The phrase "based on" does not mean "based only on" unless otherwise explicitly specified. That is, the phrase "based on" includes both "based only on" and "based at least on". The phrase "based at least on" is equivalent to the phrase "based at least in part on". For example, the fact that "element A" is calculated based on element B and element C includes embodiments where element A is calculated as the product of B times C (i.e., A = B×C), embodiments where element A is calculated by the sum of B and C (i.e., A = B + C), embodiments where element A is calculated by D times the product of B times C, embodiments where element A is calculated by the sum of the square root of B and C and D, etc.

[0124] The term "corresponding" and like terms are not exclusive unless expressly provided otherwise. For example, the term "corresponding" does not mean "corresponding only" unless expressly provided otherwise. For example, the phrase "this data corresponds to a credit card number" includes both "this data corresponds only to a credit card number" and "this data corresponds to a credit card number and also corresponds to something else".

[0125] In this specification, the term "thereby" is used exclusively for placement before a clause or other set of words that represents only the intended result, purpose, or outcome of some matter expressly described before the term "thereby". Thus, when the term "thereby" is used in a claim, the clause or other words modified by the term "thereby" do not provide any further limitation of that claim, nor do they otherwise limit the meaning or scope of that claim.

[0126] The terms "e.g.", "such as" and like terms mean "for example", and thus do not limit the terms or phrases they describe. For example, in the sentence "a computer sends data (e.g., instructions, data structures) via the Internet", the term "e.g." explains that "instructions" are an example of "data" that a computer can send via the Internet, and also explains that "data structures" are an example of "data" that a computer can send via the Internet. However, neither "instructions" nor "data structures" are anything more than examples of "data", and other things besides "instructions" and "data structures" can also be "data".

[0127] The term "each" and like terms mean "viewed individually". Thus, when two or more things have "each" characteristic, each such thing has its own characteristic, and those characteristics can be different from each other but can also be the same. For example, the phrase "each of two machines has its own function" means that the first of the two machines has a certain function, and the second of the two machines also has a certain function. The function of the first machine may or may not be the same as the function of the second machine.

[0128] The term "i.e." and like terms mean "that is", and thus limit the terms or phrases it explains. For example, in the sentence "A computer sends data (i.e., instructions) via the Internet", the term "i.e." explains that the "data" that the computer sends via the Internet is "instructions".

[0129] A numerical range shall include integers and non-integers within that range unless explicitly specified otherwise. For example, the range from "1 to 10" shall be interpreted to clearly include integers (e.g., 1, 2, 3, 4,... 9, 10) and non-integers (e.g., 1.0031415926, 1.1, 1.2,... 1.9) between 1 and 10.

[0130] When two or more terms or phrases are synonymous (e.g., by an explicit statement that those terms or phrases are synonymous), an example of such a term or phrase does not mean that an example of another such term or phrase must have a different meaning. For example, when a description makes the meaning of "comprise" synonymous with "comprise but not limited to", simply using the phrase "comprise but not limited to" does not mean that the term "comprise" means something other than "comprise but not limited to".

[0131] II. Determination The term "determine" and its grammatical variations (e.g., determine the price, determine the value, determine an object that meets certain criteria) are used in a very broad sense. The term "determine" encompasses a wide variety of actions, and thus "determine" can include calculations, operations, processing, derivations, investigations, searches (e.g., searches of tables, databases, or other data structures), representations in electronic formats or digital displays, confirmations, etc. Also, "determine" can include receiving (e.g., receiving information), accessing (e.g., accessing data in memory), etc. Further, "determine" can include resolving, selecting, choosing, establishing, etc.

[0132] The term "determine" does not imply certainty or absolute accuracy, and thus "determine" can include estimations, inferences, predictions, speculations, averaging, etc.

[0133] The term "determine" does not mean that a mathematical process must be performed, does not mean that numerical methods must be used, and does not mean that an algorithm is used.

[0134] The term "determine" does not mean that a particular widget must be used. For example, a computer is not necessarily required to make a determination.

[0135] The term "determine" may include "calculate". The term "calculate" is to be understood as including performing one or more calculations. Calculations can include computer processing, arithmetic processing, and / or inferences. Calculations can be performed by a computer device. For example, calculating something can include applying an algorithm to data by a computer processor or generating something as an output of the processor.

[0136] The term "determine" may include "refer to". It should be understood that the term "refer to" may include, for example, making one or more references to something. References may include querying, accessing, selecting, choosing, reading, and / or searching. The act of referring may be performed by a computer device. For example, referring to something may include reading by a processor a memory in which the something is recorded.

[0137] The term "determine" may include "receive". For example, receiving something may include incorporating something. In some embodiments, receiving may include an act performed to incorporate something, for example, operating a network interface to incorporate something. In some embodiments, receiving may be executable without performing an act performed to incorporate something, for example, an act of direct memory writing or an act performed to incorporate into a wiring circuit. Receiving something may include receiving something from a computable remote resource.

[0138] III. Sentence form If the limitation of the first claim includes one and a plurality of features in a range (for example, a limitation such as "at least one widget" includes not only one widget but also a plurality of widgets in the range), and in a second claim dependent on the first claim, when the second claim uses the definite article "the" to refer to that limitation (for example, "the widget"), this mere use does not mean that the first claim includes only one feature in the range, nor does it mean that the second claim includes only one feature in the range (for example, "the widget" can include both one widget and a plurality of widgets in the range).

[0139] When an ordinal number (such as "first", "second", "third", etc.) is used as an adjective before a term, the ordinal number is used (unless otherwise expressly provided) merely to indicate a particular feature, such as to distinguish the particular feature from another feature described by the same or a similar term, and the ordinal number has no other meaning or limiting effect and is merely a convenient name. For example, "the first widget" can be so named merely to distinguish it from, for example, "the second widget". Thus, merely using the ordinal numbers "first" and "second" before the term "widget" does not indicate any other relationship between the two widgets, nor does it indicate any other property of one or both of the widgets. For example, merely using the ordinal numbers "first" and "second" before the term "widget" does not mean (1) with respect to order or position, that either widget comes before or after the other widget, (2) with respect to time, that either widget occurs or operates before or after the other widget, or (3) with respect to importance or quality, that either widget ranks above or below the other widget. Merely using an ordinal number does not define a numerical limitation with respect to the feature identified by the ordinal number. For example, merely using the ordinal numbers "first" and "second" before the term "widget" does not mean that there are exactly two widgets.

[0140] When this specification describes a single device, article, or other product, in other embodiments, two or more devices or articles (whether or not they operate together) can alternatively be used in place of the single device or article described. Thus, the functions described as being held by a device can, in other embodiments, be alternatively held by two or more devices or articles (whether or not they operate together).

[0141] Similarly, when this specification describes two or more devices, things, or other products (whether they operate together or not), in other embodiments, instead of the two or more devices or things described, a single device or thing can alternatively be used. For example, multiple computer-based devices can be replaced by a single computer-based device. In other embodiments, such multiple computer-based devices can be made to jointly execute one step of one process, as is done in a grid computing system. In other embodiments, such multiple computer-based devices can be made to execute one step of one process in multiple ways, as is done in a cloud computing system, to provide additional functionality. (Conversely, a single computer-based device can be replaced by multiple computer-based devices that cooperate with others. For example, a single computer device can be replaced by servers and workstations that cooperate with others via the Internet). Thus, the various functions described as being held by two or more devices or things can alternatively be held by a single device or thing.

[0142] The functions and / or features of the single device described can, in other embodiments, be alternatively implemented by one or more other devices that, although described, are not explicitly described as having such functions / features. Thus, other embodiments need not include the device itself as described, but can instead include one or more other devices having such functions or features in those other embodiments.

[0143] IV. The disclosed examples and terms are non-limiting The title (which is not the most important of this application and should not be used when interpreting the meaning of any claim, nor should it be used to limit the scope of any claim, which is described at the beginning of the first page) and the abstract (which is described at the end of this application) should never be construed as limiting the scope of the disclosed invention. The abstract is included in this application simply because it is required under 37 C.F.R. §1.72(b).

[0144] The title and section headings of this application shown herein are for convenience only and should in no way be construed as limiting the disclosure.

[0145] Numerous embodiments are described in this application and are shown for illustrative purposes only. The described embodiments are not limiting in any sense and are not intended to be limiting. As will be readily apparent from this disclosure, the invention disclosed herein is widely applicable to numerous embodiments. Those skilled in the art will understand that the disclosed invention can be practiced with various modifications and alterations, such as structural modifications, logical modifications, software modifications, electrical modifications, etc. Specific features of the disclosed invention may be described with respect to one or more specific embodiments and / or drawings, but it should be understood that such features are not limited to use in one or more of the specific embodiments or drawings in which they are described, unless expressly provided otherwise.

[0146] Although embodiments may be disclosed as including some features, other embodiments of the invention may include fewer features than all such features. Thus, for example, a claim may be directed to less than all of the features of a set of the disclosed embodiments, and such claim should not be construed as claiming features that exceed the features expressly recited in that claim.

[0147] No embodiment of a method step or product element described in this application constitutes, or is essential to, or is the same subject matter as, the invention claimed in this specification, unless expressly stated herein to be so, or (with respect to the invention defined by a claim and its claim) expressly recited in the claim.

[0148] Any preamble in a claim that refers to matters other than the statutory classification should be construed as describing the purpose, benefits, and possible uses of the claimed invention, and such preamble should not be construed as limiting the claimed invention.

[0149] This disclosure is not a literal description of all embodiments of the present invention. Nor does this disclosure enumerate features of the present invention that must be in all embodiments.

[0150] Not all disclosed embodiments are necessarily protected by the claims (even including all pending claims, amended claims, issued claims, and cancelled claims). Further, an embodiment may be protected by some claims (but not necessarily so). Thus, if a claim (regardless of whether it is pending, amended, issued, or cancelled) is directed to a particular embodiment, that is not evidence that the scope of other claims does not also protect that embodiment.

[0151] Devices described as communicating with each other need not continuously communicate with each other, unless expressly provided otherwise. On the contrary, such devices need only transmit to each other as needed or when desired, and in fact can refrain from data exchange for most of the time. For example, a machine communicating with other machines via the Internet need not transmit data to other machines for long periods (e.g., for weeks at a time). Further, devices that communicate with each other can communicate directly or indirectly via one or more mediators. A plurality of devices communicate with each other if they are capable of at least one-way communication. For example, if a first device is capable of transmitting information to a second device, the first device communicates with the second device. Similarly, if a second device is capable of receiving information from the first device, the second device communicates with the first device.

[0152] The description of embodiments having several components or features does not mean that all or any of such components or features are necessary. On the contrary, various optional components are described to illustrate diverse possible embodiments of the present invention. Unless explicitly specified otherwise, no component or feature is essential or necessary.

[0153] A process step, algorithm, etc. may be described or recited in a claim in a particular order, but such a process can be configured to function in a different order. That is, any order or sequence of steps that can be explicitly described or recited in a claim does not necessarily indicate a requirement to perform the steps in that order. The steps of the processes described herein can be executed in any possible order. Further, although some steps may be described or implied as occurring non - simultaneously (e.g., because one step is described after another), they can be executed simultaneously. Additionally, the illustration of a process by a drawing does not mean that the illustrated process excludes other modifications and corrections to that process, nor does it mean that the illustrated process or any of its steps are necessary for the present invention, nor does it mean that the illustrated process is preferred.

[0154] A process may be described as including a plurality of steps, but that does not mean that all or any of those steps are preferred, essential, or necessary. Other various embodiments within the scope of the described invention include other processes that omit some or all of the described steps. Unless explicitly specified otherwise, no step is essential or necessary.

[0155] The process may be described alone or without reference to other products or methods. However, in one embodiment, the process can interact with other products or methods. For example, such interaction may include linking one business model to another. Such interaction can be provided to enhance the flexibility or desirability of the process.

[0156] A product may be described as including a plurality of components, aspects, qualities, characteristics, and / or features, but this does not indicate that any or all of these are preferred, essential, or required. Other various embodiments within the scope of the described invention include other products that omit some or all of the described plurality.

[0157] Unless explicitly stated otherwise, a list of enumerated (which may or may not be numbered) items does not mean that any or all of those items are mutually exclusive. Similarly, unless explicitly stated otherwise, a list of enumerated (which may or may not be numbered) items does not mean that any or all of those items cover any arbitrary category. For example, the list "computer, laptop, and PDA" does not mean that any or all of the three items in the list are mutually exclusive, nor does it mean that any or all of the three items in the list cover any arbitrary category.

[0158] A list of enumerated (which may or may not be numbered) items does not mean that any or all of those items are equivalent to each other or are easily replaceable with each other.

[0159] All embodiments are illustrative and do not mean that the invention or any embodiment has been created or executed as the case may be.

[0160] V. Computing It will be readily apparent to those skilled in the art that the various processes described herein can be implemented by, for example, a general-purpose computer, a special-purpose computer, and a computing device appropriately programmed. Typically, a processor (e.g., one or more microprocessors, one or more microcontrollers, one or more digital signal processors) receives instructions (e.g., from a device such as a memory), executes those instructions, and thereby performs one or more processes defined by those instructions. The instructions can be embodied, for example, as one or more computer programs and one or more scripts.

[0161] The term "computer" is a means for determining the use of a processor in accordance with a software algorithm.

[0162] "Processor" means one or more microprocessors, central processing units (CPUs), computing devices, microcontrollers, digital signal processors, graphics processing units (GPUs) or such devices, or any combination thereof, regardless of its architecture (e.g., chip-level multiprocessing or multi-core, RISC, CISC, microprocessor with non-interlocked pipeline stages, pipeline configuration, simultaneous multithreading, microprocessor with integrated graphics processing unit, GPGPU).

[0163] "Computer device" means one or more microprocessors, central processing units (CPUs), computer devices, microcontrollers, digital signal processors, graphics cards, mobile game devices, or such devices, or any combination thereof, regardless of its architecture (e.g., chip-level multiprocessing or multi-core, RISC, CISC, microprocessor with non-interlocked pipeline stages, pipeline configuration, simultaneous multithreading).

[0164] Therefore, a description of a process is likewise a description of an apparatus for performing that process. An apparatus for performing a process may include, for example, a processor, and an input device and an output device suitable for performing the process. For example, a description of a processor and a process includes a program stored in a memory that contains instructions to direct the processor to perform a method when executed by the processor.

[0165] An apparatus for performing a process may include a plurality of computer devices that cooperate to perform the process. Some of such computer devices may cooperate to perform each step of the process, operate individually in steps of the process, and provide services that underlie other computer devices that may facilitate the execution of the process. Such computer devices may operate under instructions of centralized authority. In other embodiments, such computer devices may operate without instructions of centralized authority. Some examples of devices that may operate in some or all of such ways include grid computing systems, cloud computer systems, peer-to-peer computer systems, computer systems capable of providing software as a service, etc. For example, the apparatus may include a computer system that receives user input information from a local user computer, such as a computer system that executes many processing loads on a remote server but outputs display information and executes VMware software.

[0166] Furthermore, a program (as well as other types of data) for implementing such a method can be stored and transmitted in many ways using a variety of media (e.g., computer-readable media). In some embodiments, instead of or in combination with some or all of the software instructions capable of implementing the processes of the various embodiments, hardwired circuitry or custom hardware can be used. Thus, not only software, but also various combinations of hardware and software can be used.

[0167] The term "computer-readable medium" refers to any non-transitory medium, multiple media, or combination of various media that participates in providing data (such as instructions, data structures) that can be read by a computer, a processor, or a similar device. Such media can take many forms including, but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical disks or magnetic disks, and other permanent memories. Volatile media typically includes dynamic random access memory (DRAM) that constitutes main memory. Transmission media includes coaxial cables, copper wire, and optical fibers, including the wires that make up a system bus coupled to a processor. Transmission media can include or convey electromagnetic radiation such as acoustic waves, light waves, and those generated during radio frequency (RF) and infrared (IR) data communications. Common forms of computer-readable media include, for example, floppy disks, flexible disks, hard disks, magnetic tape, any other magnetic media, CD-ROM, DVD, any other optical media, punch cards, paper tape, any other physical media with patterns of holes, RAM, PROM, EPROM, flash EEPROM, any other memory chip or cartridge, the carrier waves described below, or any other media readable by a computer.

[0168] The term "tangible computer-readable medium" refers to a "computer-readable medium" that includes hardware elements such as optical or magnetic disks.

[0169] When transporting data (e.g., a series of instructions) to a processor, various forms of computer-readable media can be used. For example, the data can be (i) sent from RAM to the processor, (ii) transported via a wireless transmission medium, (iii) formatted and / or transmitted according to numerous forms, standards, or protocols such as Ethernet (registered trademark) (or IEEE802.3), wireless local area network communication defined by the IEEE802.11 standard regardless of whether it is approved by the WiFi Alliance, SAP, ATP, Bluetooth (registered trademark), TCP / IP, TDMA, CDMA, 3G, etc., and / or (iv) encrypted in any of various ways well-known in the art to protect privacy or prevent fraud.

[0170] The term "database" refers to a collection of electronic records of data recorded in a readable format.

[0171] The term "data structure" refers to the database of a hardware machine such as a computer.

[0172] The term "network" refers to a series of points or nodes interconnected by communication paths. For example, a network can include a plurality of computers or communication devices interconnected by one or more wired and / or wireless communication paths. A network can be interconnected with other networks and can include sub-networks.

[0173] The term "predetermined" indicates something that was determined previously, i.e., at a time prior to the current time or the current action. For example, the expression "display a predetermined value" means to display a value determined prior to the display action.

[0174] The term "condition" indicates (1) a prerequisite for a dependent agreement to be satisfied, or (2) something that is essential for something else to occur or happen.

[0175] The term "transformation" means (1) the exchange or movement of goods, services, or funds, or (2) a communication act or action involving two parties or things that repeatedly affect each other.

[0176] Thus, a description of a process is likewise a description of a computer-readable medium that stores a program for executing that process. The computer-readable medium can store those program elements (in any suitable format) suitable for executing this method. For example, a description of a process is a description of a computer-readable memory that stores a program including instructions that direct the processor to execute the method when executed by the processor.

[0177] Similar to the description of various steps in a process not indicating that all of the described steps are necessary, an embodiment of an apparatus includes a computer or computing device operable to execute (but not necessarily all of) a portion of the described process.

[0178] Similarly, an embodiment of a computer-readable medium that stores a program or data structure, similar to the description of various steps in a process not indicating that all of the described steps are necessary, includes a computer-readable medium that stores a program that can cause a processor to execute (but not necessarily all of) a portion of the described process at runtime.

[0179] When describing a database, one of ordinary skill in the art will understand that (i) alternative database structures for the described database can be readily used, and (ii) other memory structures other than the database can be readily used. Any illustration or description of any of the sample databases shown herein is an exemplary configuration regarding the representation of stored information. For example, any number of other configurations can be used in addition to the tables shown in the drawings or those proposed elsewhere. Similarly, any entry in any of the databases illustrated is merely illustrative of the information, and one of ordinary skill in the art will understand that the number and content of the entries may differ from those described herein. Further, regardless of any description of the database as a table, other forms (including relational databases, object-based models, and / or distributed databases) can be used to store and manipulate the types of data described herein. Similarly, object methods or database operations can be used to perform various processes as described herein. Further, the database can be stored in a known manner, either locally or separate from the apparatus accessing the data within such database.

[0180] Various embodiments can be configured to function within a network environment that includes one or more devices and a computer that communicates (e.g., via a communication network) with the devices. The computer can communicate directly with the devices or indirectly via any wired or wireless medium (e.g., the Internet, a LAN, a WAN, or Ethernet, Token Ring, telephone lines, cable lines, wireless channels, optical communication lines, commercial online service providers, bulletin board systems, satellite communication lines, any combination of the foregoing). Each of the devices can include other computing devices, such as a computer itself or one based on an Intel®, Pentium®, or Centrino®, Atom®, or Core® processor adapted to communicate with a computer. Any number and type of devices can communicate with the computer.

[0181] In one embodiment, a server computer or centralized authority may not be necessary or desirable. For example, in one embodiment, the present invention can be implemented on one or more devices without centralized authority. In such embodiments, any functions described herein as being performed by a server computer, and any data described as being stored on a server computer, can instead be performed by, or stored on, one or more such devices.

[0182] When describing a process, in one embodiment, the process can function without any intervention by a user. In another embodiment, the process includes some human intervention (e.g., a step is performed by a human or with the aid of a human).

[0183] Here, the term "encryption" refers to the process of obscuring or hiding information so that it cannot be immediately understood without special knowledge. The encryption process can include converting raw information, referred to as plaintext, into encrypted information. Encrypted information can be referred to as ciphertext, and the algorithm for converting plaintext to ciphertext can be referred to as encryption. Encryption can be used to perform the operation of converting ciphertext back to plaintext. Examples of encryption include substitution ciphers, transposition ciphers, and encryption performed using a rotor machine.

[0184] In various cryptographic methods, encryption may require an information auxiliary part called a key. The key can be composed of, for example, a bit sequence. The key can be used for encryption to encrypt plaintext. The key can be used for encryption to decrypt ciphertext. In a category of encryption called symmetric key algorithms (i.e., secret key cryptography), the same key is used for encryption and decryption. Therefore, the strength of the encrypted information depends on keeping the key secret. Examples of symmetric key cryptography include DES and AES. In a category of encryption called asymmetric key algorithms (i.e., public key cryptography), different keys are used for encryption and decryption. In an asymmetric key algorithm, any member of the public can use a first key (i.e., the public key) to encrypt plaintext into ciphertext. However, only the holder of the second key (i.e., the private key) can decrypt the ciphertext into plaintext. An example of asymmetric key cryptography is RSA.

[0185] VI. Continued Application This disclosure provides some embodiments and / or enabling descriptions of the invention to those skilled in the art. Some of these embodiments and / or parts of the invention may not be claimed in this application, but can be claimed in one or more continued applications claiming the benefit of the priority of this application.

[0186] The applicant plans to file further applications to pursue patents for content that has been disclosed and made available for use but is not claimed in this application.

[0187] VII. Disclaimer Numerous references to specific embodiments do not mean a disclaimer or negation of additional, different embodiments. Similarly, a reference to a description of an embodiment that includes all of a particular feature does not mean a disclaimer or negation of an embodiment that does not include that particular feature. Any express disclaimer or negation in this application shall be preceded by the phrase "not including" or "not capable of performing".

[0188] VIII. Examination Process When interpreting this application (including the claims), those skilled in the art will refer to the prosecution history of this application, regardless of whether there are other patent applications considered relevant to this application and regardless of whether there are other patent applications sharing a claim of priority with this application, rather than any other patents or patent applications.

[0189] [Appendix 1] A first routing device configured to map a pair of a local address and a port of a first network to a destination on a second network and to map a pair of a local address and a port of a third network to the destination on the second network, wherein a first core of a first processor is configured to perform routing to the first network and a second core of the first processor is configured to perform routing to the second network, and the first routing device is configured as such. The first routing device A device comprising To facilitate mapping the pair of the local address and the port of the first network to the destination, the routing device opens a first socket for the destination and a second socket for a second destination, and is configured to fail over routing to the second socket in response to a determination that the first socket has stopped working. A third core of the routing device executes a process configured to access a portion of a memory space shared with the first core, copy at least one of a packet header and an entire packet from the portion of the memory space, and facilitate transmitting the at least one of the packet header and the entire packet to an analytics engine coupled to the first routing device. Device. [Appendix 2] The first routing device is configured to load balance the traffic sent to the pair of local address and port so that the traffic is split between the destination using the first socket and the second destination using the second socket, the device according to appended note 1. [Appended Note 3] The load balancing is performed by at least one of a round-robin method and a least-connection method, the device according to appended note 2. [Appended Note 4] The routing device includes a plurality of multi-core processors, the device according to appended note 1. [Appended Note 5] The routing device is configured to route data at gigabit speed, the device according to appended note 1. [Appended Note 6] A second routing device configured to map a pair of address and port to the first network and map a pair of second address and port to the second network, wherein a first core of a second processor is configured to perform routing from the destination to the first network, and a second core of the second processor is configured to perform routing from the destination to the second network, the second routing device is configured as such, the second routing device comprising the device according to appended note 1. [Appended Note 7] The first routing device is configured to compress the data block routed to the destination according to a dictionary method, and the second routing device is configured to decompress the data block according to the dictionary method for transmission to the destination, the device according to appended note 6. [Appended Note 8] The apparatus according to Supplementary Note 6, wherein services from the first network and the second network to the software-defined network are enabled by performing mapping from the first network and the second network through the first routing device. [Supplementary Note 9] The apparatus according to Supplementary Note 6, wherein the second routing device enables the destination to subscribe to services provided from the first network and the second network to the software-defined network. [Supplementary Note 10] The apparatus according to Supplementary Note 6, wherein the first routing device and the second routing device define a software-defined network spanning multiple data centers. [Supplementary Note 11] The apparatus according to Supplementary Note 6, wherein the destination includes a customer who conducts transactions, and the first network includes a network where an electronic switch exists.< / data> < / gmtsecond> < / date>

Claims

1. A first processing device, opening a first socket for a first destination of a second remote network that provides a service and opening a second socket for a second destination of the second remote network, load-balancing traffic transmitted to a pair of a local network address and a port on a first network mapped to the service between the first destination using the first socket and the second destination using the second socket, responding to a determination that the first destination has failed, routing traffic transmitted to the pair of the local network address and the port to the second destination using the second socket, the first processing device configured to perform control, A second processing device, accessing a part of a memory space shared with the first processing device, the part of the memory space including at least one of one packet header or one whole packet, and the at least one of the one packet header or the one whole packet being obtained by the second processing device accessing a part of the memory space, transmitting the at least one of the one packet header or the one whole packet obtained by the second processing device to an analytics engine while the first processing device routes the whole packet, the second processing device configured to perform control, An apparatus comprising:

2. The apparatus according to claim 1, further comprising a third processing device configured to perform control to map a pair of a second local network address and a port of a third network to the service on the second remote network.

3. The apparatus according to claim 1, wherein the load balancing is performed in at least one of a round-robin method or a least-connections method.

4. A routing device configured to perform control for mapping a pair of an address and a port to the first network and mapping a pair of a second address and a port to the second remote network, wherein a third processing device is configured to execute routing from the second destination to the first network, and a fourth processing device is configured to execute routing from the second destination to the second remote network, and the routing device is further configured to include the routing device according to claim 1.

5. The first processing device is configured to perform control to compress a data block routed to the service according to a dictionary method. The routing device according to claim 4 is configured to perform control to decompress the data block according to the dictionary method for transmission to the service.

6. The first processing device and the routing device according to claim 5 define a software-defined network including a plurality of remote data centers.

7. The first processing device according to claim 1 is configured to perform control to activate a given plurality of services from the first network and the second remote network via a software-defined network.

8. The first processing device The first processing device according to claim 1 is configured to perform control to enable a given plurality of devices on the first network to subscribe to a plurality of services provided by a software-defined network.

9. The service includes a customer who conducts transactions, and the first network includes a network where an electronic switch exists, according to claim 1.

10. By a first processing device Open a first socket for a first destination of a second remote network that provides a service, open a second socket for a second destination of the second remote network, Load balance traffic transmitted to a pair of a local network address and a port on the first network mapped to the service between the first destination using the first socket and the second destination using the second socket. In response to determining that the first destination has failed, route traffic sent to the pair of the local network address and port to the second destination using the second socket. Perform control, by a second processing device, access a portion of the memory space shared with the first processing device, the portion of the memory space including at least one of one packet header or one whole packet, and the at least one of the one packet header or the one whole packet being obtained by the second processing device accessing a part of the memory space. While the first processing device routes the whole packet, send the at least one of the one packet header or the one whole packet obtained by the second processing device to an analytics engine. Perform control. A method including this.

Citation Information

Patent Citations

  • Systems and methods for server load balancing and server affinity

    JP2006519441A

  • Load management device, information processing system and load management method

    JP2011076468A

  • Communication control device, communication control system, virtual server management device, switch device and communication control method

    JP2013183440A

  • Systems and methods for IIP address sharing across cores in a multi-core system

    US20120036244A1

  • Network address translating router for mobile networking

    US20130346620A1