Skip to content

Protocols

Illarion Kovalchuk edited this page Nov 23, 2016 · 20 revisions

TCP

Default protocol for gobetween is tcp. Anyway, you can specify it explicitly in config:

[servers.default]
protocol = "tcp"

See examples Simple static balancing for more details.

TLS

(since 0.4.0)

You can configure gobetween to listen TLS and perform TLS termination so traffic would be decrypted and passed through TCP to backends.

You just need to set you server protocol to tls and configure tls section:

[servers.default]
protocol = "tls"

  [servers.default.tls]             # (required) if protocol == "tls"
  cert_path = "/path/to/file.crt"   # (required) path to crt file
  key_path = "/path/to/file.key"    # (required) path to key file
  min_version = "tls1"              # (optional) "ssl3" | "tls1" | "tls1.1" | "tls1.2" - minimum allowed tls version
  max_version = "tls1.2"            # (optional) maximum allowed tls version
  ciphers = []                      # (optional) list of supported ciphers. Empty means all supported. For a list see https://golang.org/pkg/crypto/tls/#pkg-constants
  prefer_server_ciphers = false     # (optional) if true server selects server's most preferred cipher
  session_tickets = true            # (optional) if true enables session tickets

UDP

(since 0.4.0)

You can configure gobetween to listen and balance UDP traffic.

You just need to set you server protocol to udp and configure optional udp section:

[servers.default]
protocol = "udp"
  [servers.default.udp] # (optional)
  max_responses = 0     # (required) if > 0 accepts no more responses that max_responses from backend and closes session

UDP is sessionless protocol, working on level of individual packets, but in order to support multiple packets exchange, gobetween associates elected backend with client address. This association is dropped if client_idle_timeout or backend_idle_timeout is overdue, or if there were more than max_responses responses from backend.

Note: UDP supports only exec healthcheck type.