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, JMS, IBM MQ) 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 FIX messages router. Combined with Pre-Trade Risk Check Module, it provides also capability for pre-trade risk check, restricting activities of one or multiple traders.

FIXEdge Conceptual View

 

It supports the following typical workflows:

  • FIX Message aggregation. Capture messages from a venue and saving them to DB/Message Queue/Plain text file
  • FIX Server Order Entry Gateway / Router
  • Fan-out solution. One FIX message could be distributed to many session (1-to-Many). Market Data publishing scenario

All libraries/servers are pre-configured for and certified with multiple exchangesSoftware escrow is available on demand.

Features

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-5.0SP2 and FIXT 1.1 including Extension Packs
    • FAST 1.1
  • Supports all FIX message types (pre-trade, trade, post-trade, market data)
  • Support of high-precision timestamps in accordance with MiFID II requirements
  • 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 in a friendly XML format
  • 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 Qualifier support for identifying different sessions with the same SenderCompId and TargetCompId
Session management
  • 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
  • Smart session scheduling:
    • Sessions start and termination at pre-defined times and dates
    • CRON expressions for sessions schedule accurate to the second
    • Days off in sessions schedule
    • Support of different time zones
    • Ability to assign one schedule to multiple sessions or configure it per session
Smart resend request processing logic
  • Four  strategies for processing out-of-sequence messages: 
    • FIX protocol compliant processing (ResendAlways)
    • Don't save resend request duplicates (RequestOnce)
    • Ignore sequence gaps when message sequencing is not important (Ignoregap)
    • Delay message processing till sequence synchronization (Queue)
  • Ability to limit the volume of messages sent as a reply on resend request
Delivery modes
  • Later delivery mode allows unsent messages to be stored in queue and delivered later when connection is re-established
  • Rejecting mode allows messages, which cannot be sent during some reasonable time (customizable), to be rejected
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
  • Use of LDAP as an authentication service for incoming sessions
  • SSL/TLS
  • Support of SSL certificates with passwords
  • An initiator can use a certificate signed by counterparty's CA certificate for authentication
  • Auto-accept incoming sessions (to simplify development and testing) and auto-decline non pre-configured sessions
  • CME Secure Logon support. (See How to connect to CME Globex using Secure Logon for details)
  • Support for the following SSL certificates formats : pfx files, .pem encoded files, .der - binary encoded files in ASN1 standard.  (See How to configure built-in SSL support for FIX session in FIXEdge for details)
  • DNS Spoofing detection
  • Filtering against IP range to be used for connection
  • Ability to configure ciphers for SSL connections (See How to use SSL with FIX Antenna C++ and FIX Antenna .NET for details)

Reliability
  • Protection from abnormal user behavior
  • Overload protection:
    • Monitoring and management of incoming load (A number for messages and throughput)
    • Monitoring and management of outgoing queue in order to protect the application from slow consumers
  • Option to switch between primary and backup sessions automatically in case one of them becomes unavailable
  • FIXEdge compiled with protection from buffer overflow attacks (FORTIFY_SOURCE)
  • FIX Engine detects unfinished transactions in persistent storage in case of failure and prevents work with inconsistent data
  • Limitim a maxum number of the connections waiting for the logon
  • Limit a time for sending logon message before closing the socket
  • Denial of Service protection from buffer overflow attack.  Ability to limit a memory buffer for incoming messages. 
        More details   here
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
  • Ability to use 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
Message routing and transformation
  • Built-in powerful rule engine to store, modify and route FIX messages
Monitoring and administration
  • Built-in remote monitoring and administrative interface for sessions monitoring and management
  • Utilizing FIX protocol and the same FIX listen port for administrative session
  • Friendly XML-based DSL for administrative instructions: easy to read, easy to extend
  • Logging to plaintext files
  • logging with Log4cplus as system backend for writing logs to a log collector via TCP (See Log4Cplus Usage for details). e.g: option for logging to Splunk
  • Ability to log important lifecycle events (i.e. application starting, application complete) in CEF format, e.g for ArcSight
  • Admin REST API
  • 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:

  • Binaries (executable and libraries)
  • Scripts to register/unregister/start/stop FIXEdge as service/daemon
  • FIX Protocol with actual expansion packs dictionaries
  • Default configuration files
  • FIXICC, a monitoring and administration GUI
  • Software escrow is available on demand

FIXEdge package is available as docker container.

Hosting options FIXEdge could be hosted by EPAM in EPAM cloud environment or in our partners data centers: Lucera and OptionsIT

Platforms

Operating System
  • Windows
  • Linux RHEL/CentOS 6
  • Linux RHEL/CentOS 7
  • Docker

 Support for other platforms is available on demand.

Can't find your platform in the table?

Transports

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

Transport Adaptor Description
IBM MQ

IBM MQ Transport Adaptor is an add-in for FIXEdge that allows clients to communicate with FIXEdge over IBM MQSeries middleware.

more details

TIBCO RV

Tibco RV Transport Adaptor is intended for communication between FIXEdge and third-party applications using Tibco Rendezvous protocol.

more details

JMS

JMS Adaptor for FIXEdge is intended for communication with FIXEdge from third-party applications via JMS. JMS Adaptor is a library that exposes a set of methods for communicating with FIXEdge's Transport Layer. Can be connected to  TIBCO EMSApache ActiveMQ

more details

RabbitMQ

RabbitMQ Transport Adaptor is intended for communication between FIXEdge and third-party applications using RabbitMQ as a middleware.

more details

REST

REST Acceptor Transport Adaptor is a REST server which handles REST requests with incoming messages in JSON form, converts them to FIX format and sends to the target.

more details 

Java (Universal)

FIXEdge in-built C++ Transport Adaptor which can be used for interaction between FIXEdge and any other Transport Adaptor written in Java.

FIXEde provides an interface for integrating user's Java code for message processing.

more details

SMTP

SMTP Transport Adaptor is intended to send FIX messages from FIXServer to clients using SMTP protocol (to email); FIX email message can be automatically converted to a standard email message

more details

Simple Sockets

The Simple XML Socket Transport Adaptor is intended for communication between FIXEdge and third-party applications using XML messages.

more details

Simple FIX Sockets

The Simple FIX Socket Transport Adaptor provides the easy and quick way for the client applications to communicate with FIXEdge using FIX protocol.

more details

Transformation and Routing

  • 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
  • Send message to multiple destinations
  • Configurable Business logic with Javascript 
  • Configurable FIXML <-> FIX mapping with XSLT scripts
  • Integration with Database over ODBC. Ability to store and get data to/from 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 "plug-in" or "handler" in rules

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

High Availability

FIXEdge supports work in multiple nodes cluster with state replication, failover and recovery functionality. FIXEdge clusters based on RedHat 6/7 pacemaker with corosync are used in production in some of the most demanding environments in the world.

Major FIXEdge cluster features are:

  • File-based persistence
  • Automatic fast recovery state after failure
  • Leveraging OS clustering feature such as: virtual IP, shared storage, cluster resource management
  • Supports two shared storages scenarios:
    • Organizing shared storage utilizing third-party physical shared storage hardware or third-party shared storage software;
    • Organizing persistence synchronization across nodes utilizing Log Replicator which provides continuous persistent storages synchronization across one master and one or more backup nodes;
  • Logs Replication tool that can be used not only for persistence synchronization but for organizing real-time backing as well
  • Comprehensive step-by-step installation guide describing cluster setup with GlusterFS as third-party shared storage software
Windows/Linux Cluster

Security

FIXEdge follows the recommendations published by FIX Trading Community to address all the current issues and challenges on the front of the cybersecurity, to satisfy best practices and all the crucial requirements of the industry.

The following security features are supported in FIXEdge: 

  • Internal static code analysis against buffer overflows and other security breaches
  • Protection from abnormal user behavior (including DDoS attacks)
  • SSL/TLS with keys management for both initiator and acceptor roles
  • Client certificate authentication
  • Support for custom encryption algorithms
  • FIX messages validation
  • Filtering against IP range to be used for connection
  • Settings for TCP protection

See FIXEdge Security Assurance for details.

Administration

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)
  • Create and modify sessions schedules
  • Export and import configuration
  • Export logs

Refer to FIXICC User Guide for details.

  • An initiator can use a certificate signed by counterparty's CA certificate for authentication
  • FIX Engine detects unfinished transactions in persistent storage in case of failure and prevents work with inconsistent data.

It supports the following typical workflows: