19
The fastest Java FIX engine to date

CrossFIX 1.1 presentation

Embed Size (px)

Citation preview

Page 1: CrossFIX 1.1 presentation

The fastest Java FIX engine to date

Page 2: CrossFIX 1.1 presentation

Performance

✔ Zero object allocation/garbage collection in steady state and absence of protocol errors

✔ Lock free, zero copy, small CPU cache footprint

✔ Minimum queuing, TCP send/receive is done on a user thread (preferably affinitised to an isolated CPU core)

Page 3: CrossFIX 1.1 presentation

Latency

✔ Ultra-low latency at mean and tail percentiles

➢ 400ns latency for a typical FIX message from client code to NIC driver at 50th percentile and sub-500ns for 99.9 percentile

➢ 550ns latency from NIC driver to client code at 50th percentile and 700ns for 99.9 percentile

✔ Latency stamping in key areas for querying

Page 4: CrossFIX 1.1 presentation

Throughput

✔ Maximum sustainable send throughput 2,669,000 msgs/sec for a typical FIX message; receive throughput 2,213,000 msgs/sec

Page 5: CrossFIX 1.1 presentation

API

✔ Strongly-typed Message API, all fields are serialized or parsed in session code, thus avoiding hidden latency of second-pass parsing

✔ Message and session API/session configuration optimized for migration from QuickFIXJ with few API exceptions in latency-sensitive areas

Page 6: CrossFIX 1.1 presentation

Implementation

✔ Written in Java, Java NIO is rewritten as a native library to avoid locking and object allocation

✔ Optimised for Kernel-bypass network libraries, tested with latest SolarFlare/OpenOnload

Page 7: CrossFIX 1.1 presentation

Tests

✔ Tested on Linux and Windows

✔ Passed LMAX conformance testing

✔ Passed QuickFixJ acceptance test suite

Page 8: CrossFIX 1.1 presentation

Session Level Configuration

✔ File based or programmatic configuration, e.g. read from database

✔ Support for start/stop date/time scheduling

✔ Full support for FIX protocol versions from 4.0 to 5.0SP2

✔ Full support for Heartbeat, TestRequest, Resend,(Business)Reject, SequenceReset message types

Page 9: CrossFIX 1.1 presentation

Session Level Configuration (cont.)

✔ Full support for multiple Initiators/Acceptors inside the same application process

✔ Flexible reset options, on Logon/Logout/Disconnect

✔ Session username/password

✔ Support for user-defined fields

Page 10: CrossFIX 1.1 presentation

Connection options

✔ Support for heartbeats

✔ Logon/Logout timeout

✔ Support for socket options, including TcpNoDelay, low latency options on by default

Page 11: CrossFIX 1.1 presentation

Connection options (cont.)

Initiator✔ Automatic initiator reconnect

✔ Support for alternative target hosts/ports

Acceptor✔ Sender host/port validation

Page 12: CrossFIX 1.1 presentation

Message validation (on by default)

✔ Full CompId validation

✔ Full incoming sequence number validation

✔ Check required fields are present in message/header/trailer/repeating groups

✔ Check enum field values are in valid range

Page 13: CrossFIX 1.1 presentation

Message validation (cont.)

✔ Flexible invalid message rejection (warning/disconnect)

✔ Support for custom FIX specs

Page 14: CrossFIX 1.1 presentation

Persistence and message resend

Persistence ✔ In/Out sequence numbers

✔ Sent messages

Message resend ✔ Configuration option to suppress the resend

of certain message types

Page 15: CrossFIX 1.1 presentation

Fault Tolerance

Replication✔ Sequence numbers✔ Sent FIX messages

Replication options✔ Periodic ✔ Asynchronous✔ Synchronous

Initiator leader election protocol

Page 16: CrossFIX 1.1 presentation

Logging

Prod options✔ File (asynchronous, GC – less)

Dev options (generate GC and/or locking)✔ SLF4J✔ System.out

✔ Ability to disable logging of In/Out/Admin messages

Page 17: CrossFIX 1.1 presentation

Documentation

User guide✔ QuickStart guide✔ API guide✔ Configuration guide

✔ CrossFix samples project

Page 18: CrossFIX 1.1 presentation

Planned features

✔ FAST protocol

✔ Load balancing

Page 19: CrossFIX 1.1 presentation

Q&A