Skip to main content
The EdgePort is the SIP entry point of Routr. It holds SIP connections and transactions, converts each SIP message to a protobuf MessageRequest, sends it to the Message Dispatcher (or straight to a Processor), and sends the resulting SIP message to the next hop. It is the only stateful Routr service, and it is written in Java.

Docker image

fonoster/routr-edgeport The image reads its configuration from /etc/routr/edgeport.yaml (CONFIG_PATH). On start, it converts the certificates in /etc/routr/certs to the PKCS12 keystore signaling.p12. If server.crt or server.key is missing, it generates self-signed certificates first.

Ports

Configuration file

The EdgePort reads a YAML or JSON file and validates it against a JSON schema at startup. The securityContext fields map to the JAIN SIP javax.net.ssl.* and gov.nist.javax.sip.TLS_CLIENT_* properties.

Environment variables

gRPC contract

The EdgePort is a gRPC client. For every SIP request and response, it calls ProcessMessage on the address in spec.processor.addr. MessageRequest carries the Call-ID (ref), the EdgePort reference (edge_port_ref), the SIP method, the sender, the listening points, external_addrs, localnets, the SIP message, and metadata. See processor.proto and sipmessage.proto.

Minimal example

This configuration accepts SIP over UDP and TCP and sends messages to the Dispatcher.
This command runs the EdgePort with that file.

Notes

  • Behind NAT (Docker, Kubernetes, cloud VMs), set spec.externalAddrs or EXTERNAL_ADDRS. Processors use these addresses to build the advertised address.
  • Publish every port in spec.transport from the container.
  • A tls or wss transport without spec.securityContext stops the EdgePort at startup.
  • Because HOSTNAME overrides ref, the EdgePort reference in Docker and Kubernetes is the container or pod hostname.
  • With several EdgePorts, configure the Connect processor to trust its peer EdgePorts. See Connect processor.