User Tools

Site Tools


Table Of Contents






tpbridge − Enduro/X Bridge Server.


tpbridge [OPTIONS]


This is special ATMI server which is used to connect local ATMI instances over the network. The result is network joined instances which makes EnduroX cluster.

Bridge process is used to exchange service lists between two nodes, calculate monotonic clock diff (so that later for messages time can be adjusted) between nodes.

To establish network connection, on one machine it must be in passive mode and on other machine it must be in active mode. Active tpbridge periodically tries to connect to the other machine. To one passive bridge only one connection can be made.

If connection is dropped, active node will re−try to connect.

All data messages are prefixed with 4 byte message length indicator. Meaning that the logical message can be split over the multiple packets or within one packed can be carried multiple logical messages − tpbridge will solve that.

When connection is established, clock diff and service lists are exchanged, then bridge is used to serve ATMI actions over the machines. I.e. tpcall(), tpforward(), conversations, etc. At connection established clocks are send in asynchronous fashion and time spent during the message in network is ignored, as connection is fresh and no data flows. But it might happen that over the time the monotonic clocks of connected hosts drift away, the difference measured at startup is not actual, and the messages receive or sent from one node might look like expired on other node. To solve this issue tpbridge periodically sends dynamic clock exchange between nodes, in synchronous fashion. The round trip time is measured (just like a ping time) and if it is within acceptable boundaries, the time from other host is accepted and time correction value is updated. The max rountrip time is set by −k flag (default 200ms), and interval is set by −K flag (600 sec). To monitor the clock status, TM_MIB class T_BRCON can be used for this purpose, e.g. "$ xadmin −c T_BRCON" call.

When connection is stopped. This is reported to ndrxd daemon which removes services from shared memory accordingly.

tpbridge supports two network message formats. First format is native format which sends over the network directly internal (C lang) structures. This format will work faster, but cannot be used between different type of computers. I.e. in this case it is not possible to mix for example x86_64 with x86. Or x86 with RISC/ARM 32bit. If mixing is necessary, then use Enduro/X Network Protocol option, activated by flag −f on both nodes. In this case standard common TLV data format is used for data exchange between nodes. This might be slower than native format.

tpbridge supports traffic encryption & signing by GNU PGP keys. In this case for Enduro/X user keys must be setup and exchanged with recipient. Bridge process needs to know sender (for signing) and recipient (for encryption) references.



Other Enduro/X instance’s Node ID. Numerical 1..32.


Send Refresh messages to other node. If not set, other node will not see our’s node’s services. OPTIONAL flag.


MODE can be P for passive/TCPIP server mode, any other (e.g. A) will be client mode.


In Active mode it is IP address to connect to. In passive mode it is binding/listen address.


In active mode PORT_NUMBER is port to connect to. In passive mode it is port on which to listen for connection.


Parameter indicates time−out value for packet receive in seconds. This is socket option. Receive is initiate when it either there is poll even on socket or incomplete logical message is received and then next recv() is called. If the message part is not received in time, then socket is closed and connection is restarted. This parameter also is used in case if target socket to which msg is being sent is full for this given time period. If msg is not fully sent and time out is reached, the connection is restarted, outgoing msg is being dropped.


Number of backlog entries. This is server’s (passive mode) connection queue, before server accepts connection. OPTIONAL parameter. Default value is 100. But could be set to something like 5.


Connection check interval in seconds. OPTIONAL parameter. Default value 5.


Interval in seconds between which zero length message is wrote to socket. This is useful to keep the connection option over the firewalls, etc. OPTIONAL parameter. Default value 0 (Do not send).


If set, then this is maximum time into which some packet from network must be received. If no receive activity on socket is done, the connection is reset. The 0 value disables this functionality. The default value is −z multiplied by 2. Note that checks are performed with −c interval. intervals. Usually this is used with −z, so that it is guaranteed that during that there will be any traffic.


Use Enduro/X Standard Network TLV Protocol instead of native data structures for sending data over the network. This also ensure some backwards compatibility between Enduro/X versions. But cases for backwards compatibility must be checked individually.


This is recipients reference code for GNU PGP message encryption.


Signer reference for GNU PGP scheme. Signer works if −g is enabled. −s is optional.


This is number of worker threads for sending and receiving messages for/to network. 50% of the threads are used for upload and other 50% are used for network download. Thus number is divided by 2 and two thread pools are created. If divided value is less than 1, then default is used. The default size is 4.


Number of attempts to send message to local queue, if on pervious attempt queue was full. The first attempt is done in real time, any further (if this flag allows) are performed with CONNECTION_CHECK_SEC interval. Default value is 3.


Maximum periodic clock sync message rountrip from local host to remote host nad back in milliseconds for accepting the remote hosts monontonic clock value for time adjustments. If roundtrip time for clock request is greater than this value, the response with remote hosts monotonic clock value is ignored. Default is 200.


Number of seconds to send the request from clock synchronization. Value 0 disables this functionality. Default value is 600. Checking is performed with the granularity of the CONNECTION_CHECK_SEC.







Report bugs to




© Mavimax, Ltd