Financial information exchange (FIX) protocol based load balancing
First Claim
1. A method comprising:
- maintaining, by a high frequency trading (HFT) platform;
weighting factor information for a plurality customers of the HFT platform by tracking historical resource usage patterns for the plurality of customers including for each customer of the plurality of customers, observing Financial Information eXchange (FIX) sessions associated with the customer and updating a weighting factor for the customer as a function of one or more of network bandwidth used by the customer, a number of FIX sessions initiated by the customer, a volume of transactions requested by the customer per FIX session and an average number of transactions carried out by the customer during a predetermined timeframe;
load information for a plurality of servers of the HFT platform, by tracking FIX sessions assigned to the plurality of servers and increasing a load factor for a particular server of the plurality of servers by (i) responsive to assignment of a particular FIX session associated with a particular customer to a particular server, increasing the load factor by the weighting factor for the particular customer and (ii) responsive to completion of the particular FIX session, decreasing the load factor by the weighting factor; and
assignment information indicative of a particular server of the plurality of servers to which one or more FIX sessions of a particular client have been assigned by a load balancer fronting the plurality of servers; and
receiving, by a host central processing unit (CPU) of the load balancer, a FIX packet of a FIX session relating to a transaction;
identifying, by the host CPU of the load balancer, a customer of the plurality of customers associated with the FIX session by evaluating a value of a SenderCompID field of the FIX packet;
when the FIX packet represents a first packet of a transport protocol flow associated with the FIX session and the assignment information indicates the customer is not assigned to any of the plurality of servers, performing, by the host CPU of the load balancer, load balancing processing, including;
determining a weighting factor of the customer with reference to the weighting factor information;
assigning the customer to a server of the plurality of servers by identifying a server of the plurality of servers that can accommodate the weighting factor based on the load information; and
accelerating the transport protocol flow by offloading the transport protocol flow to a specialized transport protocol accelerator in a form of a network processor (NP), representing a dedicated subsystem of the load balancer colocated with the host CPU that is implemented in a form of an Application Specific Integrated Circuit (ASIC), by causing the NP to establish two independent transport protocol connections for the transport protocol flow, including a first transport protocol connection with a client device associated with the customer and a second transport protocol connection with the assigned server;
when the FIX packet represents a second or subsequent packet of the transport protocol flow or the assignment information indicates the customer is assigned to the assigned server;
avoiding the load balancing processing, by forwarding, by the host CPU of the load balancer, the FIX packet to the NP for processing; and
wherein the NP reduces buffering requirements of the assigned server and shields the assigned server from transmission delays between the NP and the client device, by locally acknowledging data received by the NP from the assigned server on behalf of the client device and buffering the data received until the data received has been acknowledged by the client device.
1 Assignment
0 Petitions
Accused Products
Abstract
Methods and systems for efficiently allocating a Financial Information eXchange (FIX) protocol based trading session/transaction a server by means of a load balancer are provided. According to one embodiment, a FIX packet of a FIX session is received at a load balancer fronting multiple servers of a high frequency trading (HFT) platform. A customer of the HFT platform is identified based on a SenderCompID field of the FIX packet. A customer weighting factor is determined based on a previously ascertained usage pattern of resources of the HFT platform by the customer. The customer is assigned to a server based on the weighting factor and a load of the selected server. A transport protocol flow associated with the FIX session is offloaded to a Network Processor (NP) Application Specific Integrated Circuit (ASIC). Therefore, subsequent FIX packets of the FIX session are processed by the NP ASIC.
-
Citations
5 Claims
-
1. A method comprising:
-
maintaining, by a high frequency trading (HFT) platform; weighting factor information for a plurality customers of the HFT platform by tracking historical resource usage patterns for the plurality of customers including for each customer of the plurality of customers, observing Financial Information eXchange (FIX) sessions associated with the customer and updating a weighting factor for the customer as a function of one or more of network bandwidth used by the customer, a number of FIX sessions initiated by the customer, a volume of transactions requested by the customer per FIX session and an average number of transactions carried out by the customer during a predetermined timeframe; load information for a plurality of servers of the HFT platform, by tracking FIX sessions assigned to the plurality of servers and increasing a load factor for a particular server of the plurality of servers by (i) responsive to assignment of a particular FIX session associated with a particular customer to a particular server, increasing the load factor by the weighting factor for the particular customer and (ii) responsive to completion of the particular FIX session, decreasing the load factor by the weighting factor; and assignment information indicative of a particular server of the plurality of servers to which one or more FIX sessions of a particular client have been assigned by a load balancer fronting the plurality of servers; and receiving, by a host central processing unit (CPU) of the load balancer, a FIX packet of a FIX session relating to a transaction; identifying, by the host CPU of the load balancer, a customer of the plurality of customers associated with the FIX session by evaluating a value of a SenderCompID field of the FIX packet; when the FIX packet represents a first packet of a transport protocol flow associated with the FIX session and the assignment information indicates the customer is not assigned to any of the plurality of servers, performing, by the host CPU of the load balancer, load balancing processing, including; determining a weighting factor of the customer with reference to the weighting factor information; assigning the customer to a server of the plurality of servers by identifying a server of the plurality of servers that can accommodate the weighting factor based on the load information; and accelerating the transport protocol flow by offloading the transport protocol flow to a specialized transport protocol accelerator in a form of a network processor (NP), representing a dedicated subsystem of the load balancer colocated with the host CPU that is implemented in a form of an Application Specific Integrated Circuit (ASIC), by causing the NP to establish two independent transport protocol connections for the transport protocol flow, including a first transport protocol connection with a client device associated with the customer and a second transport protocol connection with the assigned server; when the FIX packet represents a second or subsequent packet of the transport protocol flow or the assignment information indicates the customer is assigned to the assigned server; avoiding the load balancing processing, by forwarding, by the host CPU of the load balancer, the FIX packet to the NP for processing; and wherein the NP reduces buffering requirements of the assigned server and shields the assigned server from transmission delays between the NP and the client device, by locally acknowledging data received by the NP from the assigned server on behalf of the client device and buffering the data received until the data received has been acknowledged by the client device. - View Dependent Claims (2, 3, 4, 5)
-
Specification