Support for Edge Networks

Recptor out-of-the-box has the ability to support complicated networking environments including edge networks.

Consider the following environment:

Network diagram with netceptor peers to edge network

Configurable-Items

Receptor encapsulates the concepts of below-the-mesh and above-the-mesh connections. Please refer to TLS support for a better understanding of these networking layers.

If a particular node in a network has higher than normal latency, we allow the users to define a finely-grained idle connection timeout value for any given Receptor node. This will help Receptor keep below-the-mesh tcp connections alive. Receptor will monitor backend connections for traffic and will timeout any connection that hasn’t seen traffic for a period of time. Once the connection is dropped, a new connection is formed automatically.

If a connection timeout occurs, the users can expect to see a message like this in their receptor logs.

DEBUG 2022/04/07 12:48:56 Sending initial connection message
ERROR 2022/04/07 12:48:56 Backend sending error read tcp 10.26.5    0.239:27199->10.102.21.131:35024: i/o **timeout**

To circumvent this scenario from happening, users can leverage the maxidleconnectiontimeout parameter in their configuration files.

maxidleconnectiontimeout A user-defined parameter in the configuration file that will set the below-the-mesh tcp connection timeout.

The configuration files for the diagram above are listed below.

foo.yml

---
- node:
    id: foo
    maxidleconnectiontimeout: 60s
- log-level:
    level: Debug
- tcp-listener:
    port: 2222

bar.yml

---
- node:
    id: bar
    maxidleconnectiontimeout: 60s
- log-level:
    level: Debug
- tcp-peer:
    address: localhost:2222

fish.yml

---
- node:
    id: fish
    maxidleconnectiontimeout: 60s
- log-level:
    level: Debug
- tcp-peer:
    address: localhost:2222

Note - All Receptor nodes in the mesh must define a maxidleconnectiontimeout value, if this value is consumed on ANY node. The effective maxidleconnectiontimeout value is the minumum value between all the nodes in the mesh.