Bridge clock adjustment improvements
Currently tpridge exchanges monotonic clock values when connection is established between nodes. This value is used for detection of expired in progress messages, and if they are expired, message is dropped automatically when call reaches server process. If the clocks on servers over the time drift away (thus the difference after some 15 days, is not more X seconds, stored in bridge, but Y seconds), and if this difference is higher than NDRX_TOUT setting, then it is possible that messages received from other server node are never processed and dropped immediately. Thus to cope with this situation:
- Periodic exchange of monotonic server clock value shall be implemented.
- Only if the exchange time is less than certain time, the new calculated difference should be used.
- Also when messages are dropped for this reason, they should go to ULOG and in process log logged with error level 2 (i.e. ndrx topic/facility shall be at-least set to ndrx=2 to see this message. In ULOG it is written unconditionally).
- Updated tpbridge network clock sync message with additional fields. Thus all interconnected nodes must be updated at the same time, otherwise connection won't work due protocol differences. Also note that protocol version is not done in software, thus some incorrect work by tpbridge might be expected, if nodes is not updated.
- Now tpbridge exchanges time-sync messages every 10 minutes, if message roundrip time is less than 200ms. This can be configured by [-k CLOCKSYNC_ROUNDTRIP] and [-K CLOCKSYNC_PERIOD] parameters
- Man page here: https://www.endurox.org/dokuwiki/doku.php?id=endurox:v7.0.x:manuals:tpbridge.8
- Now processes will log to process log & ULOG: "Recieved expired call - drop, cd: %d timestamp: ..."
- Also NTP is recommended on both servers, as it is stabilizing the monotonic clocks too.