Skip to main content

Ember Network Configuration

Overview

This page describes networking aspect of Ember configuration.

Each customer case may require slightly different deployment model. Some clients operate on the cloud, while others run on premise or co-lo deployments. The following diagrams show typical Ember components and their connectivity. For simplicity, this diagram does not label internal ports. Depending on system load all components may co-locate on a single server or split up between multiple servers. See architecture documentation for more information.

Ember network diagram

Please note that arrows show direction of connection (from initiator to acceptor), not a data flow direction. The diagram shows default ports used by components (can be re-configured).

  • Red arrows show operator access to web apps. Normally these ports should not be opened to public Internet without additional precautions (e.g. via whitelisted source IPs). We recommend protecting these connections via VPN or SSH tunnel.
  • Green arrows show connectivity to market data venues. These are always outbound connections. These connections typically go over VPN or cross-connect. In rare cases (crypto exchanges) they may use TLS over public Internet.
  • Blue arrows show TimeBase clients. TimeBase is primarily used for market data distribution. Depending on performance requirements TimeBase can either use TCP (most common case) or unicast/multicast UDP for data distribution.
  • Orange arrows show Ember clients who talk to Ember via RPC or subscribe for Ember events.  Depending on requirements Ember can either use TCP (most common case) or unicast/multicast UDP, as well as IPC.

The following sections explore some configuration options in detail.

TimeBase API gateway

By default, TimeBase uses port 8011 (TCP). This default can be changed using TimeBase.port property in QuantServerHome/config/admin.properties file.

TimeBase Topics

Default address for MULTICAST topics: 239.0.1.37:40456

Default ports for SINGLE_PUBLISHER (multi-destination cast) topics: 40491, 40492, 40493, 40494. This is configured by the following Java System properties:

-DTimeBase.transport.aeron.topic.udp.single.publisher.default.port=40491  
-DTimeBase.transport.aeron.topic.udp.single.subscriber.default.port=40492
-DTimeBase.transport.aeron.topic.udp.single.metadata.publisher.default.port=40493
-DTimeBase.transport.aeron.topic.udp.single.metadata.subscriber.default.port=40494

Note: each TimeBase topic can use custom ports (see QuantServerHome/topics/<topic-key>.xml).

Ember Message Bus

TCP

TCP message bus can be configured using the following ember.conf stanza:

messageBus : ${template.messageBus.ebit} {
  settings {
    host = "0.0.0.0"
    port = 8989
  }
}

UDP

When running in multi-server mode Ember message bus uses Aeron UDP Streams. UDP ports can be configured in ember.conf:

messageBus {
  settings {
    subscription {
      channel = "aeron:udp?endpoint=10.0.0.243:40450"
      stream = 1
    }
    publication {
      channel = "aeron:udp?control=10.0.0.243:40452"
      stream = 2
    }
  }
}

Please refer to Ember Configuration Reference manual for more information.

Ember Monitor

By default, ES Monitor uses port 8988 (TCP/HTTP). ES Monitor is a Spring Boot application. This default port can be changed using Java System property

server.port=8988

System Operation and Administration

Many routine functions can be performed via web-based applications (e.g. Ember Monitor). However, advanced troubleshooting would require SSH access to servers or containers running Ember. Ember includes several CLI diagnostic tools that do not yet have web interface.  For this reason, you need to provision a secure way to SSH into ember instances. For example, using Bastion Host pattern.

TLS

We recommend using TLS encryption for all external connections. However, using TLS for internal data transit can severely impact system performance and is not recommended for high performance setups.

Other ports

This section describes port configuration that are used by Ember but not required to be available outside of Ember LAN/VPC.

Heathcheck

network.healthcheck {
  host = "HOST"
  port = PORT
}

FIX Agent

There is a little component that allows to run FIX Gateway standalone:

fix.agent {
  host = localhost
  port = 8985
  idleStrategy = ${template.idleStrategy.daemon}
}

Summary of Firewall Rules

Inbound connections

PortSource IPDestinationComment
SSHBastion HostAll instancesShould be accessed from bastion only
8899OperatorsEmber Monitor appCan be accessed from bastion or SSH tunnel instead.
8080OperatorsTimeBase Admin appCan be accessed from bastion or SSH tunnel instead.
XXXXFIX Market Data or FIX Order Entry ClientsEmber FIX GatewayEach FIX client will require a designated port that can be whitelisted with client source IP
XXXXFIX Drop Copy ClientsEmber FIX Drop Copy GatewayEach FIX client will require a designated port that can be whitelisted with client source IP

Outbound connections

We typically recommend allowing all outbound connections. In special cases, whitelist of DNS names can be provided on user request.

Examples of outbound connections performed by Ember and TimeBase components:

  • TimeBase license check (can be disabled for offline licenses)
  • Central Security Metadata queries
  • Market Data and Order Entry connectors
  • Data Warehousing of Ember journal into S3 or some database
  • Clock synchronization and OS updates