Manual Chapter :
Implementing Layer 7 FIX Proxy
Applies To:
Show Versions
BIG-IP LTM
- 21.0.0, 17.5.1, 17.5.0, 17.1.3, 17.1.2, 17.1.1, 17.1.0, 17.0.0, 16.1.6, 16.1.5, 16.1.4, 16.1.3, 16.1.2, 16.1.1, 16.1.0, 16.0.1, 16.0.0, 15.1.10, 15.1.9, 15.1.8, 15.1.7, 15.1.6, 15.1.5, 15.1.4, 15.1.3, 15.1.2, 15.1.0, 15.0.1, 15.0.0, 14.1.5, 14.1.4, 14.1.3, 14.1.2, 14.1.0, 14.0.1, 14.0.0
Implementing Layer 7 FIX Proxy
Creating a custom Fast L4 profile for hardware-optimized FIX LL
You can create a custom Fast L4 profile to manage Layer 4 traffic for FIX
low latency (FIX LL).
- On the Main tab, click .The Fast L4 screen opens.
- ClickCreate.The New Fast L4 profile screen opens.
- In theNamefield, type a unique name for the profile.
- Select theCustomcheck box.
- From thePVA Accelerationlist, selectDedicated.
- Select thePVA Flow AgingandPVA Flow Evictcheck boxes.
- For thePVA Offload Dynamicsetting, retain the default value (Enabled).
- For thePVA Dynamic Client Packetssetting, retain the default value (1).
- For thePVA Dynamic Server Packetssetting, retain the default value (0).
- Select theLoose Closecheck box only for a one-arm virtual server configuration.
- Set theTCP Close Timeoutsetting, according to the type of traffic that the virtual server will process.
- Select theSoftware SYN Cookie Protectioncheck box.
- ClickFinished.
The custom Fast L4 profile appears in the list of Fast L4
profiles.
Creating a FIX profile for low latency electronic trading
You can create the FIX profile for low latency electronic trading with FIX load balancing.
- On the Main tab, clickLocal Traffic>Profiles>Services>FIX.The FIX profile list screen opens.
- ClickCreate. The new FIX Profile screen opens.
- In theNamefield, type a unique name for the profile.
- From theParent Profilelist, select a parent profile.
- Select theCustomcheck box.
- From theReport Log Publisherlist, select the publisher for error messages and status reports.
- ClickFinished.
The FIX profile is configured for low latency electronic trading with FIX load balancing.
However, when this profile is created for Late Binding, a virtual server can choose a server pool based on the contents of the FIX connection’s initial packet. The Late Binding feature allows combining load balancing with low latency.
This is a simplified FIX profile. The low latency path goes through ePVA hardware, which does not examine the contents of each FIX packet. The only packet the BIG-IP software examines is the logon packet, which the BIG-IP system uses to choose a server pool. Therefore, most of the features in the FIX-profile screen (such as tag substitution) are ignored for low latency trading.
Creating a sever pool
Use this task to create a pool of servers with pool members. The pool identifies the servers to which the virtual server must send client requests. As an option, you can identify the servers by their FQDNs instead of their IP addresses. In this way, the system automatically updates pool members whenever you make changes to their corresponding server IP addresses on your network.
- On the Main tab, clickLocal Traffic>Pools. The Pool List screen opens.
- ClickCreate. The New Pool screen opens.
- In theNamefield, type a unique name for the pool.
- For theHealth Monitorssetting, from the Available list, select a monitor and move the monitor to the Active list.A pool containing nodes represented by FQDNs cannot be monitored byinbandorsaspmonitors.
- From theLoad Balancing Methodlist, select how the system can distribute traffic to members of this pool. The default isRound Robin.
- For theNew Memberssetting, add each server that you want to include in the pool:
- SelectNew NodeorNew FQDN Node.
- (Optional) In theNode Namefield, type a name for the node.
- If you choseNew Node, then in theAddressfield, type the IP address of the server. If you choseNew FQDN Node, then in theFQDNfield, type the FQDN of the server.If you want to use FQDNs instead of IP addresses, you should still type at least one IP address. Typing one IP address ensures that the system can find a pool member if a DNS server is not available.
- For theService Portoption, pick a service from the list.
- If you are using FQDNs for the server names, then forAuto Populate, keep the default value of Enabled. When you leaveAuto Populateturned on, the system creates an ephemeral node for each IP address returned as an answer to a DNS query. Also, when a DNS answer shows that the IP address of an ephemeral node no longer exists, the system deletes the ephemeral node.
- ClickAdd.
- Do this step again for each node.
- ClickFinished.
Creating a virtual server for low-latency electronic trading
After you create a server pool, profile(s), and (optionally) iRule, you need to
create a virtual server that references those components.
- On the Main tab, click .The Virtual Server List screen opens.
- ClickCreate.The New Virtual Server screen opens.
- In theNamefield, type a unique name for the virtual server.
- From theTypelist, selectPerformance (Layer 4).
- In theDestination Address/Maskfield, type the IP address in CIDR format. This is the address to which the FIX clients send their FIX transmissions.The supported format is address/prefix, where the prefix length is in bits. For example, an IPv4 address/prefix is10.0.0.1or10.0.0.0/24, and an IPv6 address/prefix isffe1::0020/64or2001:ed8:77b5:2:10:10:100:42/64. When you use an IPv4 address without specifying a prefix, the BIG-IP system automatically uses a/32prefix.The IP address you type must be available and not in the loopback network.
- From theConfigurationlist, selectAdvanced.
- From theProtocollist, selectTCP.
- From theProtocol Profile (Client)list, select the custom Fast L4 profile you defined for low-latency FIX trading.
- Go to theFIX Profilelist and select the custom FIX profile you defined for low-latency trading.
- For theAddress Translationsetting, clear theEnabledcheck box to implement direct server return (DSR) functionality.
- For thePort Translationsetting, clear theEnabledcheck box.Clearing theEnabledcheck box disables network address translation (NAT) functionality. If you require NAT, you must select theEnabledcheck box.
- In the Resources area of the screen, from theDefault Poollist, select the pool name for FIX streams.This pool is for streams that do not match your iRule(s).
- For theiRulessetting, from theAvailablelist, select the name of the iRule that you created for the Late Binding feature and move it to theEnabledlist.The iRule enables load balancing based on the Layer-7 (FIX) fields at the head of each stream.
- ClickFinished.
The virtual server is configured to use the specified Fast L4 profile and pool. If a
client initiates a FIX connection with this virtual server, the connection uses the Fast
L4 (ePVA) hardware.
Creating an iRule for load-balancing Layer-7 (FIX) traffic
You can optionally create an iRule to parse and manipulate FIX streams. If required, you can log FIX streams when the FIX profile does not provide the required functionality.
- On the Main tab, clickLocal Traffic>iRules. The iRule List screen displays a list of existing iRules.
- Click theCreatebutton. The new iRule screen opens.
- In theNamefield, type a unique name for the iRule.
- In theDefinitionfield, type an iRule to match FIX fields and choose a server pool based on their settings. Use the FIX_HEADER iRule event to select the first five fields in an FIX packet:
- BeginString
- BodyLength
- MsgType
- SenderCompID
- TargetCompID
The total length of a FIX message is unbounded, so this ensures that you capture all of the relevant data to choose a back-end server pool without waiting to collect all of the FIX message.For example, this iRule sends messages from each of the three senders to a specific server pool. Messages from any other senders revert to the default pool in a virtual server that uses this iRule. The iRule also logs a message to indicate that a new FIX stream has opened:when FIX_HEADER { set MsgType [FIX::tag get 35] if { $MsgType eq "A" } { # an A message is a logon message # record the sender and the target set SenderCompID [FIX::tag get 49] set TargetCompID [FIX::tag get 56] # log the event locally - a new FIX stream is being created log "FIX header: Sender $SenderCompID, Target $TargetCompID" # log the event with High Speed Logging (HSL), too set hsl [HSL::open -proto UDP -pool syslog_server_pool] HSL::send $hsl "[IP::client_addr]: Sender $SenderCompID, Target $TargetCompID\n" # choose a server pool based on the name of the sender switch $SenderCompID { "Fred's Bank" { pool FIX1 } "Wilma's Bank" { pool FIX2 } "Barney's Bank" { pool FIX3 } } }}The iRule may be able to explicitly send the flow down to the ePVA (operating in hybrid mode), rather than doing it automatically. This explicit control is only possible if you set it in the Fast L4 profile. In the following example, the rule does not release the flow unless it encounters a FIX packet from a sender named "Mr. Slate's Bank". You must release the flow on both the client side (with the CLIENT_ACCEPTED event) and the server side (in the SERVER_CONNECTED event):when CLIENT_ACCEPTED { # prepare for releasing the flow down to the ePVA BIGTCP::release_flow } when FIX_HEADER { # (same as above example, with an additional sender) set MsgType [FIX::tag get 35] if { $MsgType eq "A" } { # an A message is a logon message # record the sender and the target set SenderCompID [FIX::tag get 49] set TargetCompID [FIX::tag get 56] # log the event - a new FIX stream is being created log "FIX header: Sender $SenderCompID, Target $TargetCompID" # choose a server pool based on the name of the sender switch $SenderCompID { "Fred's Bank" { pool FIX1 } "Wilma's Bank" { pool FIX2 } "Barney's Bank" { pool FIX3 } "Mr. Slate's Bank" { pool FIX4 } } } } when SERVER_CONNECTED { if {$SenderCompID eq "Mr. Slate's Bank"}{ # Mr. Slate's Bank sent this, so lower the latency log local0. "Detected $SenderCompID - releasing flow to ePVA" BIGTCP::release_flow } }The previous code sends all FIX streams through standard FIX-profile processing except the one(s) from "Mr. Slate's Bank", which goes through the ePVA. - ClickFinished.
The iRule is now available. You can use this iRule in a virtual server that also offers a FIX profile and the low latency of Fast L4.
Implementation result
This implementation configures a BIG-IP® system to manage electronic trading functionality, optimizing the system.