Family ovs_flow
netlink 规范¶
摘要¶
通过通用 netlink 进行 OVS 流配置。
操作¶
get¶
获取/转储 OVS 流配置和状态
- 值:
3
- 属性集:
- 执行:
- 请求
- 属性:
[
key
,ufid
,ufid-flags
]
- 回复
- 属性:
[
key
,ufid
,mask
,stats
,actions
]
- 转储:
- 请求
- 属性:
[
key
,ufid
,ufid-flags
]
- 回复
- 属性:
[
key
,ufid
,mask
,stats
,actions
]
new¶
在数据路径中创建 OVS 流配置
- 值:
1
- 属性集:
- 执行:
- 请求
- 属性:
[
key
,ufid
,mask
,actions
]
多播组¶
ovs_flow
定义¶
ovs-header¶
- 类型:
结构体
- 文档:
OVS 通用 Netlink 消息的标头。
- 成员:
- dp-ifindex (
u32
): 数据路径的本地端口的 ifindex(0 表示不特定于数据路径的请求)。
- dp-ifindex (
ovs-flow-stats¶
- 类型:
结构体
- 成员:
- n-packets (
u64
): 匹配的数据包数量。
- n-bytes (
u64
): 匹配的字节数。
- n-packets (
ovs-key-ethernet¶
- 类型:
结构体
- 成员:
- eth-src (
binary
): - eth-dst (
binary
):
- eth-src (
ovs-key-mpls¶
- 类型:
结构体
- 成员:
- mpls-lse (
u32
):
- mpls-lse (
ovs-key-ipv4¶
- 类型:
结构体
- 成员:
- ipv4-src (
u32
): - ipv4-dst (
u32
): - ipv4-proto (
u8
): - ipv4-tos (
u8
): - ipv4-ttl (
u8
): - ipv4-frag (
u8
):
- ipv4-src (
ovs-key-ipv6¶
- 类型:
结构体
- 成员:
- ipv6-src (
binary
): - ipv6-dst (
binary
): - ipv6-label (
u32
): - ipv6-proto (
u8
): - ipv6-tclass (
u8
): - ipv6-hlimit (
u8
): - ipv6-frag (
u8
):
- ipv6-src (
ovs-key-ipv6-exthdrs¶
- 类型:
结构体
- 成员:
- hdrs (
u16
):
- hdrs (
ovs-frag-type¶
- 名称前缀:
ovs-frag-type-
- 枚举名称:
ovs-frag-type
- 类型:
枚举
- 条目:
- none:
数据包不是分片。
- first:
数据包是偏移量为 0 的分片。
- later:
数据包是偏移量不为零的分片。
- any:
ovs-key-tcp¶
- 类型:
结构体
- 成员:
- tcp-src (
u16
): - tcp-dst (
u16
):
- tcp-src (
ovs-key-udp¶
- 类型:
结构体
- 成员:
- udp-src (
u16
): - udp-dst (
u16
):
- udp-src (
ovs-key-sctp¶
- 类型:
结构体
- 成员:
- sctp-src (
u16
): - sctp-dst (
u16
):
- sctp-src (
ovs-key-icmp¶
- 类型:
结构体
- 成员:
- icmp-type (
u8
): - icmp-code (
u8
):
- icmp-type (
ovs-key-arp¶
- 类型:
结构体
- 成员:
- arp-sip (
u32
): - arp-tip (
u32
): - arp-op (
u16
): - arp-sha (
binary
): - arp-tha (
binary
):
- arp-sip (
ovs-key-nd¶
- 类型:
结构体
- 成员:
- nd_target (
binary
): - nd-sll (
binary
): - nd-tll (
binary
):
- nd_target (
ovs-key-ct-tuple-ipv4¶
- 类型:
结构体
- 成员:
- ipv4-src (
u32
): - ipv4-dst (
u32
): - src-port (
u16
): - dst-port (
u16
): - ipv4-proto (
u8
):
- ipv4-src (
ovs-action-push-vlan¶
- 类型:
结构体
- 成员:
- vlan_tpid (
u16
): 要推送的标签协议标识符 (TPID)。
- vlan_tci (
u16
): 要推送的标签控制标识符 (TCI)。
- vlan_tpid (
ovs-ufid-flags¶
- 名称前缀:
ovs-ufid-f-
- 枚举名称:
无
- 类型:
标志
- 条目:
omit-key
omit-mask
omit-actions
ovs-action-hash¶
- 类型:
结构体
- 成员:
- hash-alg (
u32
): 在重新循环之前用于计算哈希的算法。
- hash-basis (
u32
): 用于计算哈希的基数。
- hash-alg (
ovs-hash-alg¶
- 枚举名称:
ovs-hash-alg
- 类型:
枚举
- 文档:
用于计算数据路径哈希的数据路径哈希算法。算法类型仅指定流中的哪些字段将用作哈希的一部分。每个数据路径都可以自由使用自己的哈希算法。哈希值对于用户空间守护进程是不透明的。
- 条目:
ovs-hash-alg-l4
ovs-action-push-mpls¶
- 类型:
结构体
- 成员:
- mpls-lse (
u32
): 要推送的 MPLS 标签堆栈条目
- mpls-ethertype (
u32
): 要在封装的以太网帧中设置的以太类型。以太类型唯一应该给出的值是 ETH_P_MPLS_UC 和 ETH_P_MPLS_MC,表示 MPLS 单播或多播。其他值将被拒绝。
- mpls-lse (
ovs-action-add-mpls¶
- 类型:
结构体
- 成员:
- mpls-lse (
u32
): 要推送的 MPLS 标签堆栈条目
- mpls-ethertype (
u32
): 要在封装的以太网帧中设置的以太类型。以太类型唯一应该给出的值是 ETH_P_MPLS_UC 和 ETH_P_MPLS_MC,表示 MPLS 单播或多播。其他值将被拒绝。
- tun-flags (
u16
): MPLS 隧道属性。
- mpls-lse (
ct-state-flags¶
- 枚举名称:
无
- 类型:
标志
- 名称前缀:
ovs-cs-f-
- 条目:
- new:
新连接的开始。
- established:
现有连接的一部分
- related:
与现有连接相关。
- reply-dir:
流向为回复方向。
- invalid:
无法追踪连接。
- tracked:
已发生连接跟踪。
- src-nat:
数据包的源地址/端口被 NAT 修改。
- dst-nat:
数据包的目标地址/端口被 NAT 修改。
属性集¶
flow-attrs¶
key (nest
)¶
- nested-attributes:
- 文档:
指定流键的嵌套属性。始终存在于通知中。所有请求(转储除外)都必需。
actions (nest
)¶
- nested-attributes:
- 文档:
指定匹配流键的数据包要执行的操作的嵌套属性。始终存在于通知中。OVS_FLOW_CMD_NEW 请求必需,OVS_FLOW_CMD_SET 请求可选。不带 OVS_FLOW_ATTR_ACTIONS 的 OVS_FLOW_CMD_SET 不会修改操作。要清除操作,必须提供不带任何嵌套属性的 OVS_FLOW_ATTR_ACTIONS。
stats (binary
)¶
- struct:
- 文档:
此流的统计信息。如果统计信息非零,则会出现在通知中。在请求中会被忽略。
tcp-flags (u8
)¶
- 文档:
一个 8 位的值,给出此流中数据包上看到的所有 TCP 标志的 ORed 值。仅在 TCP 流的通知中存在,并且仅当它非零时才存在。在请求中会被忽略。
used (u64
)¶
- 文档:
一个 64 位整数,给出在此流中最后处理数据包的时间,以系统单调时钟的毫秒为单位。仅当已为此流处理数据包时,才会出现在通知中。在请求中会被忽略。
clear (flag
)¶
- 文档:
如果存在于 OVS_FLOW_CMD_SET 请求中,则会清除此流的最后使用时间、累积的 TCP 标志和统计信息。否则在请求中会被忽略。永远不会出现在通知中。
mask (nest
)¶
- nested-attributes:
- 文档:
指定通配符流匹配的掩码位的嵌套属性。掩码位值“1”指定与相应流键位精确匹配,而掩码位值“0”指定通配符匹配。省略属性将被视为通配符所有相应的字段。所有请求都是可选的。如果不存在,则所有流键位都是精确匹配位。
probe (binary
)¶
- 文档:
流操作是功能探测,应禁止错误日志记录。
ufid (binary
)¶
- 文档:
一个介于 1-16 个八位字节之间的值,指定流的唯一标识符。使流按此值而不是 OVS_FLOW_ATTR_KEY 属性的值进行索引。所有请求都是可选的。如果流是使用此属性创建的,则会出现在通知中。
- display-hint:
uuid
ufid-flags (u32
)¶
- enum:
- 文档:
一个 32 位的值,包含 ORed 标志,为流的安装和检索提供备用语义。所有请求都是可选的。
pad (binary
)¶
key-attrs¶
encap (nest
)¶
- nested-attributes:
priority (u32
)¶
in-port (u32
)¶
ethernet (binary
)¶
- struct:
- 文档:
struct ovs_key_ethernet
vlan (u16
)¶
- byte-order:
big-endian
ethertype (u16
)¶
- byte-order:
big-endian
ipv4 (binary
)¶
- struct:
ipv6 (binary
)¶
- struct:
- 文档:
struct ovs_key_ipv6
tcp (binary
)¶
- struct:
udp (binary
)¶
- struct:
icmp (binary
)¶
- struct:
icmpv6 (binary
)¶
- struct:
arp (binary
)¶
- struct:
- 文档:
struct ovs_key_arp
nd (binary
)¶
- struct:
- 文档:
struct ovs_key_nd
skb-mark (u32
)¶
tunnel (nest
)¶
- nested-attributes:
sctp (binary
)¶
- struct:
tcp-flags (u16
)¶
- byte-order:
big-endian
dp-hash (u32
)¶
- 文档:
值 0 表示散列不是由数据路径计算的。
recirc-id (u32
)¶
mpls (binary
)¶
- struct:
ct-state (u32
)¶
- enum:
- enum-as-flags:
True
ct-zone (u16
)¶
- 文档:
连接跟踪区域
ct-mark (u32
)¶
- 文档:
连接跟踪标记
ct-labels (binary
)¶
- display-hint:
hex
- 文档:
16 个八位字节的连接跟踪标签
ct-orig-tuple-ipv4 (binary
)¶
- struct:
ct-orig-tuple-ipv6 (binary
)¶
- 文档:
struct ovs_key_ct_tuple_ipv6
nsh (nest
)¶
- nested-attributes:
packet-type (u32
)¶
- byte-order:
big-endian
- 文档:
不应发送到内核
nd-extensions (binary
)¶
- 文档:
不应发送到内核
tunnel-info (binary
)¶
- 文档:
struct ip_tunnel_info
ipv6-exthdrs (binary
)¶
- struct:
- 文档:
struct ovs_key_ipv6_exthdr
action-attrs¶
output (u32
)¶
- 文档:
数据路径中的 OVS 端口号
userspace (nest
)¶
- nested-attributes:
set (nest
)¶
- nested-attributes:
- 文档:
替换现有标头的内容。单个嵌套属性指定要修改的标头及其值。
push-vlan (binary
)¶
- struct:
- 文档:
将新的最外层 802.1Q 或 802.1ad 标头推送到数据包上。
pop-vlan (flag
)¶
- 文档:
从数据包中弹出最外层的 802.1Q 或 802.1ad 标头。
sample (nest
)¶
- nested-attributes:
- 文档:
概率性地执行操作,如嵌套属性中指定的那样。
recirc (u32
)¶
- 文档:
重循环 ID
hash (binary
)¶
- struct:
push-mpls (binary
)¶
- struct:
- 文档:
将新的 MPLS 标签栈条目压入数据包的 MPLS 标签栈顶部。将封装帧的以太网类型设置为 ETH_P_MPLS_UC 或 ETH_P_MPLS_MC,以指示新的数据包内容。
pop-mpls (u16
)¶
- byte-order:
big-endian
- 文档:
以太网类型
set-masked (nest
)¶
- nested-attributes:
- 文档:
替换现有标头的内容。嵌套属性指定要修改的标头、其值和掩码。对于掩码中设置的每个位,对应的位值将从值复制到数据包标头字段,其余位保持不变。未屏蔽的值位必须以零传递。OVS_KEY_ATTR_TUNNEL 属性不支持屏蔽。
ct (nest
)¶
- nested-attributes:
- 文档:
跟踪连接。在流键中填充与 conntrack 相关的条目。
trunc (u32
)¶
- 文档:
结构体 ovs_action_trunc 是一个 u32 最大长度
push-eth (binary
)¶
- 文档:
结构体 ovs_action_push_eth
pop-eth (flag
)¶
ct-clear (flag
)¶
push-nsh (nest
)¶
- nested-attributes:
- 文档:
将 NSH 标头推送到数据包。
pop-nsh (flag
)¶
- 文档:
从数据包中弹出最外层的 NSH 标头。
meter (u32
)¶
- 文档:
通过计量器运行数据包,这可能会丢弃数据包,或修改数据包(例如,更改 DSCP 字段)
clone (nest
)¶
- nested-attributes:
- 文档:
创建数据包的副本并执行一系列操作,而不影响原始数据包和密钥。
check-pkt-len (nest
)¶
- nested-attributes:
- 文档:
检查数据包长度,如果大于指定的数据包长度,则执行一组操作,否则执行另一组操作。
add-mpls (binary
)¶
- struct:
- 文档:
根据此 OVS_ACTION_ATTR_ADD_MPLS 参数的 tun_flags 字段中 l3 隧道标志的值,在数据包的开头或 l3 标头的开头推送新的 MPLS 标签栈条目。
dec-ttl (nest
)¶
- nested-attributes:
psample (nest
)¶
- nested-attributes:
- 文档:
将数据包样本发送到 psample 以进行外部观察。
隧道密钥属性¶
id (u64
)¶
- byte-order:
big-endian
- 值:
0
ipv4-src (u32
)¶
- byte-order:
big-endian
ipv4-dst (u32
)¶
- byte-order:
big-endian
tos (u8
)¶
ttl (u8
)¶
dont-fragment (flag
)¶
csum (flag
)¶
oam (flag
)¶
geneve-opts (binary
)¶
- 子类型:
u32
tp-src (u16
)¶
- byte-order:
big-endian
tp-dst (u16
)¶
- byte-order:
big-endian
vxlan-opts (nest
)¶
- nested-attributes:
ipv6-src (binary
)¶
- 文档:
结构体 in6_addr 源 IPv6 地址
ipv6-dst (binary
)¶
- 文档:
结构体 in6_addr 目标 IPv6 地址
pad (binary
)¶
erspan-opts (binary
)¶
- 文档:
结构体 erspan_metadata
ipv4-info-bridge (flag
)¶
检查数据包长度属性¶
pkt-len (u16
)¶
actions-if-greater (nest
)¶
- nested-attributes:
actions-if-less-equal (nest
)¶
- nested-attributes:
样本属性¶
probability (u32
)¶
actions (nest
)¶
- nested-attributes:
用户空间属性¶
pid (u32
)¶
userdata (binary
)¶
egress-tun-port (u32
)¶
actions (flag
)¶
ovs-nsh-key 属性¶
base (binary
)¶
md1 (binary
)¶
md2 (binary
)¶
ct 属性¶
commit (flag
)¶
zone (u16
)¶
mark (binary
)¶
labels (binary
)¶
helper (string
)¶
nat (nest
)¶
- nested-attributes:
force-commit (flag
)¶
eventmask (u32
)¶
timeout (string
)¶
nat 属性¶
src (flag
)¶
dst (flag
)¶
ip-min (binary
)¶
ip-max (binary
)¶
proto-min (u16
)¶
proto-max (u16
)¶
persistent (flag
)¶
proto-hash (flag
)¶
proto-random (flag
)¶
dec-ttl 属性¶
action (nest
)¶
- nested-attributes: