Files
git.stella-ops.org/docs/router/transports/tcp.md

4.4 KiB

TCP Transport

The TCP transport provides high-performance binary communication for internal microservices within the same datacenter or trusted network.

Overview

Property Value
Plugin Assembly StellaOps.Router.Transport.Tcp.dll
Transport Name tcp
Default Port 5100
Security Network isolation (no encryption)
Use Case Internal services, low-latency communication

Configuration

router.yaml

Router:
  Transport:
    Type: tcp
    Tcp:
      Host: "0.0.0.0"
      Port: 5100
      MaxConnections: 1000
      ReceiveBufferSize: 65536
      SendBufferSize: 65536
      KeepAlive: true
      NoDelay: true

microservice.yaml

routers:
  - host: gateway.internal
    port: 5100
    transportType: Tcp
    priority: 1

Environment Variables

ROUTER__TRANSPORT__TYPE=tcp
ROUTER__TRANSPORT__TCP__HOST=0.0.0.0
ROUTER__TRANSPORT__TCP__PORT=5100
ROUTER__TRANSPORT__TCP__MAXCONNECTIONS=1000

Options Reference

Option Type Default Description
Host string 0.0.0.0 Bind address for server
Port int 5100 TCP port number
MaxConnections int 1000 Maximum concurrent connections
ReceiveBufferSize int 65536 Socket receive buffer size in bytes
SendBufferSize int 65536 Socket send buffer size in bytes
KeepAlive bool true Enable TCP keep-alive probes
NoDelay bool true Disable Nagle's algorithm (lower latency)
ConnectTimeout TimeSpan 00:00:30 Connection timeout
ReadTimeout TimeSpan 00:02:00 Socket read timeout
WriteTimeout TimeSpan 00:02:00 Socket write timeout

Performance Characteristics

Metric Typical Value
Latency (p50) < 1ms
Latency (p99) < 5ms
Throughput 100,000+ rps
Memory per connection ~2KB

Benchmarks on 10Gbps network with small payloads (<1KB)

Security Considerations

TCP transport does not provide encryption. Use only in:

  • Private networks with proper network segmentation
  • Same-datacenter deployments with firewalled traffic
  • Container orchestration networks (Kubernetes pod network)

For encrypted communication, use TLS transport.

Framing Protocol

The TCP transport uses the standard Router binary framing protocol:

┌────────────────────────────────────────────────────────────────┐
│                        Frame Header (24 bytes)                  │
├────────────┬────────────┬────────────┬────────────┬────────────┤
│ Magic (4)  │ Version(2) │ Type (2)   │ Flags (4)  │ Length (8) │
├────────────┴────────────┴────────────┴────────────┴────────────┤
│ Correlation ID (4)                                              │
├─────────────────────────────────────────────────────────────────┤
│                        Frame Payload (variable)                 │
└─────────────────────────────────────────────────────────────────┘

Troubleshooting

Connection Refused

Error: Connection refused to gateway.internal:5100
  1. Verify Gateway is running and listening on port 5100
  2. Check firewall rules allow traffic on port 5100
  3. Verify DNS resolution of hostname

Connection Timeout

Error: Connection to gateway.internal:5100 timed out
  1. Increase ConnectTimeout value
  2. Check network connectivity between services
  3. Verify no network segmentation blocking traffic

Performance Issues

  1. Enable NoDelay: true for latency-sensitive workloads
  2. Tune buffer sizes based on payload sizes
  3. Monitor connection pool exhaustion

See Also