FIXEdge

FIX server FIXEdge is an application server providing FIX connectivity to multiple clients.  Client applications communicate with FIXEdge through one of multiple transport protocols (e.g. Simple Sockets, TIBCO, CORBA, HTTPs) employing transport adaptors. It is designed to be as easy as possible to install, configure, administrate and monitor trading information flows. It is written in C++ and has a performance profile suitable for the needs of all clients up to and including large sell-side institutions and large volume traders. FIXEdge comes with a rich UI for monitoring session statuses and parameters in real time.

 FIX server FIXEdge is mostly used as a generic smart router, common FIX connectivity service to delegate all FIX connectivity related tasks in the enterprise architecture. 

FIXEdge Common Diagram

View larger image

The FIXEdge project was started with Sun Microsystems to be marketed as a package that included two Sun servers configured in a HA cluster with the FIX Antenna C++ Sun edition pre-installed and configured (refer to Sun B2BITS FIXEdge data sheet). Eventually, the project grew into an autonomous selling product with a wide range of features that were not included in the original package. The FIXEdge product has been endorsed by many companies.

All libraries/servers are pre-configured for and certified with multiple exchanges, including CME, ICE, INET and many others. Software escrow is available on demand.

Feature Description
High throughput / low latency

FIXEdge leverages FIX Antenna C++ Engine's performance.

The engine has been benchmarked at 30,000 messages per second across 200 sessions FIX Antenna C++ adds up to 22 microseconds' latency on 100 Mbps network with persistence and 14 microseconds' latency on 100 Mbps network without persistence.

FIX Antenna C++ allows configuring sending/receiving prioritization for session.

In transient mode FIX Antenna C++ can deliver over 115,000 messages per second.

Supports standard FIX

FIXEdge uses FIX Antenna C++ on a FIX layer and thus inherits all FIX Antenna's functionality.

  • 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.)
  • Message validation
  • Customizable FIX protocol with user-defined tags and message types. 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
Session management
  • Ability to configure list of FIX sessions and schedule start and termination time
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
Message routing and transformation
  • Built-in powerful rule engine to modify and route FIX messages
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
  • Rich monitoring and administration GUI out of the box
High availability
  • Ready to work in cluster
Packaging

FIXEdge is supplied as an installation package.

The package includes:

Platforms*

Operating System Compiler used
Windows MS Visual C++ 2008, 2010
Linux RHEL/CentOS 6 GCC 4.4
Linux RHEL/CentOS 5 GCC 4.1
Solaris 10 GCC 4.8

* Support for other platforms is available on demand.

Additional non-FIX transports are available via pluggable transport adaptors.

Object message middleware

COM/DCOM - FIX engine, FIX session and FIX message are COM objects.

CORBA - FIX engine, FIX session and FIX message are CORBA objects.

MQ - Session is a set of queues: for incoming messages, for outgoing messages and for errors. Raw FIX message is packed into MQ message as blob. In case of conversion to FIXML, a corresponding XML is packed into MQ message as blob.

TIB RV - Session is a TIBRV session, raw FIX message is packed into TIB message as blob.

JMS - Topic and queue modes are supported, raw FIX messages is packed into JMS message.

Raw message middleware

Domain Socket - Raw FIX messages via domain sockets.

UDP - Raw FIX messages via UDP.

Named Pipes - Raw FIX messages via named pipes.

HTTPS - Raw FIX messages are sent via HTTP.

Simple Sockets - Raw FIX message are sent via TCP sockets; several XML messages form light-weight session level protocol for identification and heart-beating.

Simple FIX Sockets - Raw FIX messages are sent via TCP sockets; FIX logon message is used for identification.

SMTP - Raw FIX messages are sent via SMTP (to email); FIX email message can be automatically converted to a standard email message.

Non-FIX protocols

CTCI, ITCH

  • XML-based DSL for routing and transformation
  • Set of rules joint by OR logical operator i.e. each rule is executed separately and applied to the original message
  • Rule conditions joint by AND logical operator
  • Message modification
    • Add, change, remove field
    • Convert between FIX versions
    • Convert between FIX and FIXML
  • Event handling: control session creation, rules failure, non-routed messages, etc.
  • Send message to multiple destinations
  • Support additional languages: inject Javascript and XSLT
  • Store data from messages to files or database
  • Special routing strategies: "Deliver To" and "Order flow" strategies minimize number of rules to be written
  • Implement you own logic, compile and use it as a "handler" in rules

For detailed information on the rules language, consult our FIXEdge Business Rules Guide.

  • File-based persistence
  • Automatically recover state after failure
  • Leverage OS clustering feature such as: virtual IP, shared storage, cluster resource management

For more information on how to set-up FIX Edge on cluster refer to the cluster installation manual ( Windows, Linux)

Windows/Linux Cluster

View larger image

FIXEdge configuration and administration is supported via the FIX Integration Control Center (FIXICC).

FIXICC is used for configuring, monitoring and administrating FIXEdge. Specifying "FIXEdge" as server type when adding new server in FIXICC allows to access additional FIXEdge related functionality.

FIXICC works with FIXEdge using the FIXICC Agent, which is a part of the installation package.

Major FIXEdge specific functions:

  • Start and Stop server
  • Change server configuration
  • Modify routing rules
  • Reload routing rules (instruction to bring in force latest changes if latter are made while server is running)
  • Export and import configuration
  • Export logs