xref: /linux/Documentation/netlink/specs/tcp_metrics.yaml (revision 527a0f2bdcfe77fce22f006b97e42e4da3137c86)
1# SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause)
2
3name: tcp_metrics
4
5protocol: genetlink-legacy
6
7doc: |
8  Management interface for TCP metrics.
9
10c-family-name: tcp-metrics-genl-name
11c-version-name: tcp-metrics-genl-version
12max-by-define: true
13kernel-policy: global
14
15definitions:
16  -
17    name: tcp-fastopen-cookie-max
18    type: const
19    value: 16
20
21attribute-sets:
22  -
23    name: tcp-metrics
24    name-prefix: tcp-metrics-attr-
25    attributes:
26      -
27        name: addr-ipv4
28        type: u32
29        byte-order: big-endian
30        display-hint: ipv4
31      -
32        name: addr-ipv6
33        type: binary
34        checks:
35          min-len: 16
36        byte-order: big-endian
37        display-hint: ipv6
38      -
39        name: age
40        type: u64
41      -
42        name: tw-tsval
43        type: u32
44        doc: unused
45      -
46        name: tw-ts-stamp
47        type: s32
48        doc: unused
49      -
50        name: vals
51        type: nest
52        nested-attributes: metrics
53      -
54        name: fopen-mss
55        type: u16
56      -
57        name: fopen-syn-drops
58        type: u16
59      -
60        name: fopen-syn-drop-ts
61        type: u64
62      -
63        name: fopen-cookie
64        type: binary
65        checks:
66          min-len: tcp-fastopen-cookie-max
67      -
68        name: saddr-ipv4
69        type: u32
70        byte-order: big-endian
71        display-hint: ipv4
72      -
73        name: saddr-ipv6
74        type: binary
75        checks:
76          min-len: 16
77        byte-order: big-endian
78        display-hint: ipv6
79      -
80        name: pad
81        type: pad
82
83  -
84    name: metrics
85    # Intentionally don't define the name-prefix, see below.
86    doc: |
87      Attributes with metrics. Note that the values here do not match
88      the TCP_METRIC_* defines in the kernel, because kernel defines
89      are off-by one (e.g. rtt is defined as enum 0, while netlink carries
90      attribute type 1).
91    attributes:
92      -
93        name: rtt
94        type: u32
95        doc: |
96          Round Trip Time (RTT), in msecs with 3 bits fractional
97          (left-shift by 3 to get the msec value).
98      -
99        name: rttvar
100        type: u32
101        doc: |
102          Round Trip Time VARiance (RTT), in msecs with 2 bits fractional
103          (left-shift by 2 to get the msec value).
104      -
105        name: ssthresh
106        type: u32
107        doc: Slow Start THRESHold.
108      -
109        name: cwnd
110        type: u32
111        doc: Congestion Window.
112      -
113        name: reodering
114        type: u32
115        doc: Reodering metric.
116      -
117        name: rtt-us
118        type: u32
119        doc: |
120          Round Trip Time (RTT), in usecs, with 3 bits fractional
121          (left-shift by 3 to get the msec value).
122      -
123        name: rttvar-us
124        type: u32
125        doc: |
126          Round Trip Time (RTT), in usecs, with 2 bits fractional
127          (left-shift by 3 to get the msec value).
128
129operations:
130  list:
131    -
132      name: get
133      doc: Retrieve metrics.
134      attribute-set: tcp-metrics
135
136      dont-validate: [ strict, dump ]
137
138      do:
139        request: &sel_attrs
140          attributes:
141            - addr-ipv4
142            - addr-ipv6
143            - saddr-ipv4
144            - saddr-ipv6
145        reply: &all_attrs
146          attributes:
147            - addr-ipv4
148            - addr-ipv6
149            - saddr-ipv4
150            - saddr-ipv6
151            - age
152            - vals
153            - fopen-mss
154            - fopen-syn-drops
155            - fopen-syn-drop-ts
156            - fopen-cookie
157      dump:
158        reply: *all_attrs
159
160    -
161      name: del
162      doc: Delete metrics.
163      attribute-set: tcp-metrics
164
165      dont-validate: [ strict, dump ]
166      flags: [ admin-perm ]
167
168      do:
169        request: *sel_attrs
170