Home / Solutions / FIX Engines / FIX Antenna C++
FIX Engine — FIX Antenna C++
FIX Antenna™ C++ is specifically designed to deliver high
performance. It can deliver over 60,000 messages per second on a
single CPU and has been benchmarked at 30,000 messages per second
across 200 sessions. This level of performance means it is an ideal
solution for exchanges, sell sides and program trading operations.
FIX Antenna C++ FIX engine is currently deployed in some of the
most demanding environments in the world.
FIX Antenna C++ FIX engine is not purely a performance engine.
It has a rich feature set to support the variety of requirements
that a FIX engine must fulfill. It supports FIX 4.0, 4.1, 4.2, 4.3,
4.4, 5.0, 5.0 SP1, 5.0 SP2 and FAST. Furthermore, it comes with a
rich UI for monitoring
session statuses and parameters in real time.
All libraries/servers are pre-configured for and certified with
multiple exchanges, including CME, ICE, INET and many
others.
Our products come with a 24x7 support provided worldwide and
availability of "on demand" software escrow.
Learn also about our FIX connectivity solution based on FIX application
server FIXEdge.
| Feature |
Description |
| High throughput / low latency |
The highest performing FIX engine in existence.
Delivers over 60,000 messages per second.
Benchmarked at 30,000 messages per second
across 200 sessions.
Adds up to 16 microseconds' latency on 100 Mbps
network with persistence and 6 microseconds'
latency on 100 Mbps network without persistence.
Allows configuring sending/receiving prioritization for
session.
In transient mode it can deliver over 115,000
messages per second. Please refer to the latest benchmarks of FIX
Antenna C++, Windows- and Linux-based.
|
| Supports standard FIX |
- 100% FIX standard compliance:
- FIX 4.0, 4.1, 4.2, 4.3, 4.4, 5.0, 5.0 SP1, 5.0 SP2
- FAST 1.1
- Supports all FIX message types (pre-trade, trade, post-trade,
market data, etc.)
- Supports user-defined tags
- Message validation (wellformness, required and conditionally
required fields, fields order, types, etc.)
- Customizable FIX protocol. Create your own FIX dialect e.g.
defined extra field for a message, change "required" attribute,
etc. in a friendly XML format
- Multiple session management
- Supports up to 200 concurrent sessions on a single instance on
recommended hardware. Number of concurrent sessions can be
increased if more CPUs are added
- Each session can be configured separately. FIX Dialect can be
configured for session
- Guaranteed delivery
- Relies on the store and forward technique
- Flat files are used for persistence to achieve maximum
performance
- Standard FIX routing based on DeliverTo and OnBehalfOf
fields
|
| Delivery modes |
- Later delivery mode allows unsent messages to be stored in
queue and delivered later when connection is re-established.
Recommended configuration for a session, where execution reports
are to be delivered e.g. session with traders
- Rejecting mode allows messages, which cannot be sent during
some reasonable time (customizable), to be rejected. Recommended
configuration for a session, where orders are to be delivered e.g.
session with exchanges
|
| Highly customizable FIX session level |
- Different modes of handling sequence number during logon and
reconnect
- Intraday logout tolerance
- Custom logon message
- Force sequence number reset on logon
|
| Security |
- Standard FIX authorization utilizing username and password
fields in FIX Logon message
- FIX encryption to work in non-private networks: DES and
PGP-DES-MD5 schemes
- SSL
- Auto-accept incoming sessions (to simplify development and
testing) and auto-decline non pre-configured sessions
|
| Reliability vs. performance |
- Supports transient sessions, which do not use any persistence.
This significantly increases performance giving up recovery.
Applicable when recovery is not required (e.g. for market data) or
when persistence is done by the application, which uses the FIX
Antenna engine
|
| Performance tuning |
- Ability to enable or disable Nagle's algorithm to minimize
latency or maximize throughput
- Ability to configure (or turn off) the number of messages to be
joined in a bunch before sending
- Ability to dedicate threads for session for sending and
receiving data, to minimize overhead on context switching
|
| Monitoring and administration |
- Built-in remote monitoring and administrative interface for
sessions monitoring and management
- Utilizing FIX session and the same FIX listen port for
administrative session
- Friendly XML-based DSL for administrative instructions: easy to
read, easy to extend
- Public API to override and/or extend existing administrative
instructions
- Rich monitoring and
administration GUI out of the box
|
| Message composition API |
- Provides the following functionality:
- Creating a message singleton by FIX protocol version and
message type
- Creating a message from a raw FIX string (parse)
- Serializing a FIX object message to raw FIX string
- Adding, removing, modifying FIX fields and repeating
groups
- Validating message
- FIX flat message model - generic model to work with the
abstract FIXMessage class via fields and groups getters and
setters, which gives the highest performance
- FIX object model - each FIX message type is a class with FIX
fields as members, using intellisense to make working with FIX
business object more pleasant
|
| Integration |
- User-friendly intuitive pure ANSI C++ public interface
- Is supplied as a dynamic library (.dll) for Windows or a shared
object dynamic library(.so) for Linux
|
| Packaging |
The package includes:
- Library
- Header files
- Programmer's Guide
- API Guide
- Quick start sample
- Echo Server sample
- Simple Client sample
- Benchmarks
- CME Globex client sample
- Other samples
- Monitoring and
Administration GUI is available for free by request
- Software escrow is avaiable on demand
|
FIX engine is built using real time design patterns proven over
10 years of practice.
The transport layer is implemented based on
Boost.Asio. The design of FIX Antenna C++ allows supporting
various modes to maximize high throughput, to achieve low latency,
or to operate in a custom mode with balanced throughput and
latency. The internal design allows also to control a number of
threads by fixing this number in case of multiple FIX sessions to
share time between them or by dedicating threads for individual FIX
sessions (2 threads per session).
Access to low level parameters is provided to tune TCP/IP
performance (Nagel's algorithm), choose the type of storage for the
state recovery, collect run time statistics, measure time taken by
a particular operation, as well as turn on and turn off a
particular feature, and many others.
FIX Antenna C++ is a library written in Ansi C++. It is a full
implementation of FIX protocol. It provides the following main APIs
for trading applications to:
- Create multiple FIX sessions (initiators and acceptors)
- Open and close FIX session
- Form FIX and FIXML message
- Parse FIX and FIXML message
- Validate FIX message
- Send and receive FIX messages
- Set sequence numbers
- Encrypt FIX messages
See the
full list of FIX Antenna C++ APIs.
FIX Antenna C++ is tested on a wide variety of compilers and
platforms. The binary package is available right away for the
platforms listed below:
| Operating System |
Compiler |
32-bit |
64-bit |
| Windows |
MS Visual C++ 7.1 (2003) |
+ |
+ |
| Windows |
MS Visual C++ 8.0 (2005) |
+ |
+ |
| Windows |
MS Visual C++ 9.0 (2008) |
+ |
+ |
| Windows |
MS Visual C++ 2010 |
+ |
+ |
| Linux |
GCC 3.4.x |
+ |
+ |
| Linux |
GCC 4.0.x, 4.1.x, 4.3.x, 4.5.x |
+ |
+ |
| Oracle Solaris 11 |
Solaris Studio 12.3 |
+ |
+ |
| SmartOS |
GCC 4.6.2 |
+ |
+ |
If you cannot find your platform in the table, please contact sales@b2bits.com for more
information.
The same codebase (except the low level platform dependent code)
is compiled and tested on all platforms!
FIX Antenna C++ depends on the following 3rd party
libraries:
Windows
| Library |
Version |
Comments |
| Xerces-C++ XML parser |
2.8 |
Built-in |
| Xerces-C++ XML parser |
3.0 |
Built-in |
| OpenSSL |
1.0.0 |
Built-in |
Linux
| Library |
Version |
Comments |
| Xerces-C++ XML parser |
2.8 |
Must be installed separately |
| Xerces-C++ XML parser |
3.0 |
Must be installed separately |
| OpenSSL |
1.0.0 |
Must be installed separately |
| Operating System |
Compiler |
x32-x64 |
Version |
Download Link |
| Windows |
ANSI C |
x32 |
2.9.1.0 |
Download |
| Windows |
C++ VS2008 |
x32 |
2.9.1.0 |
Download |
| Windows |
C++ VS2008 |
x64 |
2.9.1.0 |
Download |
| Windows |
C++ VS2010 |
x32 |
2.9.1.0 |
Download |
| Windows |
C++ VS2010 |
x64 |
2.9.1.0 |
Download |
| Linux |
C++ gcc4.1 |
x86 |
2.9.1.0 |
Download |
| Linux |
C++ gcc4.1 |
x86_64 |
2.9.1.0 |
Download |
We offer cost effective
licensing models. They are based on application process
concurrency limits, level of support (business hours only, 24x5/7),
etc. Also Site licenses, OEM licensing models, as well as discounts
based on number of purchased licenses are available. Development,
test and back-up licenses are licensed separately. Cost of such
licenses is 50% from listed price of production license.