套接字选项 (proto)

config.core.v3.SocketOption

[config.core.v3.SocketOption proto]

通用套接字选项消息。这将用于设置可能不存在于上游内核或预编译 Envoy 二进制文件中的套接字选项。

例如

{
  "description": "support tcp keep alive",
  "state": 0,
  "level": 1,
  "name": 9,
  "int_value": 1,
}

1 代表 SOL_SOCKET,9 代表 Linux 上的 SO_KEEPALIVE。使用上述配置,TCP 保持活动 可以在使用 Linux 的套接字中启用,这可以在 监听器管理员 的 socket_options 等中使用。

需要注意的是,名称或级别在不同平台上可能具有不同的值。

{
  "description": ...,
  "level": ...,
  "name": ...,
  "int_value": ...,
  "buf_value": ...,
  "state": ...,
  "type": {...}
}
description

(string) 为此套接字选项提供可选名称,用于调试等。不需要唯一性,也不假设任何特殊含义。

level

(int64) 与传递给 setsockopt 的级别值相对应,例如 IPPROTO_TCP

name

(int64) 传递给 setsockopt 的数字名称

int_value

(int64) 因为许多 sockopts 接受 int 值。

必须准确地设置 int_valuebuf_value 之一。

buf_value

(bytes) 否则它是一个字节缓冲区。

必须准确地设置 int_valuebuf_value 之一。

state

(config.core.v3.SocketOption.SocketState) 将应用选项的状态。在 BindConfig 中使用时,STATE_PREBIND 目前是唯一有效的值。

type

(config.core.v3.SocketOption.SocketType) 将套接字选项应用于指定的 套接字类型。如果未指定,套接字选项将应用于所有套接字类型。

config.core.v3.SocketOption.SocketType

[config.core.v3.SocketOption.SocketType proto]

将套接字选项应用到的 套接字类型。应该只设置一个字段。如果设置了多个字段,则优先级顺序将决定所选字段。如果未设置任何字段,则套接字选项将应用于所有套接字类型。

例如:如果设置了 stream,它将优先于 datagram

{
  "stream": {...},
  "datagram": {...}
}
stream

(config.core.v3.SocketOption.SocketType.Stream) 将套接字选项应用于流套接字类型。

datagram

(config.core.v3.SocketOption.SocketType.Datagram) 将套接字选项应用于数据报套接字类型。

config.core.v3.SocketOption.SocketType.Stream

[config.core.v3.SocketOption.SocketType.Stream proto]

流套接字类型。

config.core.v3.SocketOption.SocketType.Datagram

[config.core.v3.SocketOption.SocketType.Datagram proto]

数据报套接字类型。

枚举 config.core.v3.SocketOption.SocketState

[config.core.v3.SocketOption.SocketState proto]

STATE_PREBIND

(默认值) ⁣套接字选项在套接字创建后但在将套接字绑定到端口之前应用

STATE_BOUND

⁣套接字选项在将套接字绑定到端口后但在调用 listen() 之前应用

STATE_LISTENING

⁣套接字选项在调用 listen() 之后应用

config.core.v3.SocketOptionsOverride

[config.core.v3.SocketOptionsOverride proto]

{
  "socket_options": []
}
socket_options

(重复 config.core.v3.SocketOption)