History

ipv6: ioam: Support for IOAM injection with lwtunnels

Add support for the IOAM inline insertion (only for the host-to-host use case) which is per-route configured with lightweight tunnels. The target is iproute2 and the patch is ready. It will be posted as soon as this patchset is merged. Here is an overview: $ ip -6 ro ad fc00::1/128 encap ioam6 trace type 0x800000 ns 1 size 12 dev eth0 This example configures an IOAM Pre-allocated Trace option attached to the fc00::1/128 prefix. The IOAM namespace (ns) is 1, the size of the pre-allocated trace data block is 12 octets (size) and only the first IOAM data (bit 0: hop_limit + node id) is included in the trace (type) represented as a bitfield. The reason why the in-transit (IPv6-in-IPv6 encapsulation) use case is not implemented is explained on the patchset cover.

Justin Iurman committed 5 years ago

Commit 3edede01 parent 8c6f6fa10 files · +358 −12Browse files

Showing the changes to include/uapi (3 of 10 files). Show all

Unified · Split

3 files
  1. include/uapi/linux/ioam6.h +1 −0
  2. include/uapi/linux/ioam6_iptunnel.h +20 −0
  3. include/uapi/linux/lwtunnel.h +1 −0
include/uapi/linux/ioam6.h+1−0
@@ -126,6 +126,7 @@ struct ioam6_trace_hdr { · 125 unmodified lines
126#error "Please fix <asm/byteorder.h>"126#error "Please fix <asm/byteorder.h>"
127#endif127#endif
128 128
129#define IOAM6_TRACE_DATA_SIZE_MAX 244
129 __u8 data[0];130 __u8 data[0];
130} __attribute__((packed));131} __attribute__((packed));
131 132
include/uapi/linux/ioam6_iptunnel.h+20−0
@@ -0,0 +1,20 @@
1/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
2/*
3 * IPv6 IOAM Lightweight Tunnel API
4 *
5 * Author:
6 * Justin Iurman <justin.iurman@uliege.be>
7 */
8
9#ifndef _UAPI_LINUX_IOAM6_IPTUNNEL_H
10#define _UAPI_LINUX_IOAM6_IPTUNNEL_H
11
12enum {
13 IOAM6_IPTUNNEL_UNSPEC,
14 IOAM6_IPTUNNEL_TRACE, /* struct ioam6_trace_hdr */
15 __IOAM6_IPTUNNEL_MAX,
16};
17
18#define IOAM6_IPTUNNEL_MAX (__IOAM6_IPTUNNEL_MAX - 1)
19
20#endif /* _UAPI_LINUX_IOAM6_IPTUNNEL_H */
include/uapi/linux/lwtunnel.h+1−0
@@ -14,6 +14,7 @@ enum lwtunnel_encap_types { · 13 unmodified lines
14 LWTUNNEL_ENCAP_BPF,14 LWTUNNEL_ENCAP_BPF,
15 LWTUNNEL_ENCAP_SEG6_LOCAL,15 LWTUNNEL_ENCAP_SEG6_LOCAL,
16 LWTUNNEL_ENCAP_RPL,16 LWTUNNEL_ENCAP_RPL,
17 LWTUNNEL_ENCAP_IOAM6,
17 __LWTUNNEL_ENCAP_MAX,18 __LWTUNNEL_ENCAP_MAX,
18};19};
19 20