-
Notifications
You must be signed in to change notification settings - Fork 3
QuickStart
General description of this tool can be found here.
Download project sources. The following notes assume that you placed them into LATENCY_METER directory.
###1. Install Libpcap library Download and install libpcap.
-
Linux users: download and install libpcap. We tested with version 1.4.0. You need to extract .tar and build it. Installation instructions can be found on internet.
-
Windows users should install winpcap. We tested with version 4.1.3.
###2. Install jNetPcap Java wrapper
-
Download jNetPcap library release for your OS. We tested with version 1.4.r1425.
-
Copy native libraries from this library into LATENCY_METER/bin. Windows users need to copy
jnetpcap.dll
andjnetpcap-pcap100.dll
. Linux users should copylibjnetpcap.so
. -
Copy
jnetpcap.jar
into LATENCY_METER/lib.
###Ant users Build using Apache Ant:
cd LATENCY_METER
ant build
If your computer has multiple network adapters or VPN software, you need to obtain a list of network interfaces. Run bin\live-traffic.cmd
without arguments:
cd LATENCY_METER/bin
live-traffic
You will see an output like:
COMMAND LINE ARGUMENTS:
-in:<protocol-handler> - Specifies inbound protocol handler. For example: -in:timebase
-out:<protocol-handler> - Specifies outbound protocol handler. For example: -out:fix:299
-csv:filename - Specifies file name of output file will latencies stats. [Optional]
-interface:N - Specifies index of interface to listen on. Default is 0.
-filter:<capture filter> - Specifies LIBPCAP capture filter, for example: "(tcp src port 2509) or (tcp dst port 2508)"
Network devices found:
#0: \Device\NPF_{0093D9BE-190D-4B59-BF8F-D9CE04004DBE} [Marvell Yukon Ethernet Controller.]
#1: \Device\NPF_{BC81C4FC-242F-4F1C-9DAD-EA9523CC992D} [Intel(R) PRO/100 VE Network Connection]
You will need select network card you want to capture packets on. Let's assume we want to capture network packets on Yukon network card from the above list. It has index #0. In this case we need to run with argument -interface:0
.
The following example shows how to capture FIX conversation with Integral FX Inside FIX Server. Server offers two FIX connection: Market Data Session is running on port 2508. Trading Session is running on port 2509. We are going to parse inbound FIX market data and extract tag QuoteEntryID(299) from bids and asks. For outbound traffic we are going parse outbound FIX messages and extract tag QuoteID(117) from trade orders. Utility is going to correlate inbound and outbound messages based on the quote IDs.
live-traffic.cmd -interface:0 -in:fix:299 -out:fix:117 -dir:2509:2508 "-filter:(tcp src port 2509) or (tcp dst port 2508)"
TODO: Generate capture filter automatically?
This tool can also process previously captured network traffic. For example you can setup your own capture using Wireshark or TCPDump and later process it via this tool.
Command line syntax is similar
cd bin
filed-traffic -pcap:./data/timebase.pcap -in:fix:299 -out:fix:117 -dir:2509:2508
##Known limitations
- This tool cannot handle large FIX messages. That is we currently do not re-assemble large FIX messages that were split between multiple TCP packets. We assume that your network's layer maximum packet size (MTU) is large enough to fit FIX messages that you are capturing. This should be true for most FIX traffic, with exception of SecurityDefinition(d) and MarketData-Snapshot/FullRefresh(W) messages containing many repeating groups.
- This tool cannot process SSL-encrypted traffic. If your broker/market data provider requires SSL connection you can use STUNNEL gateway to unwrap SSL encryption.