Commit de8e80a5 authored by Justin Iurman's avatar Justin Iurman Committed by David S. Miller
Browse files

ipv6: ioam: Documentation for new IOAM sysctls



Add documentation for new IOAM sysctls:
 - ioam6_id and ioam6_id_wide: two per-namespace sysctls
 - ioam6_enabled, ioam6_id and ioam6_id_wide: three per-interface sysctls

Example of IOAM configuration based on the following simple topology:

 _____              _____              _____
|     | eth0  eth0 |     | eth1  eth0 |     |
|  A  |.----------.|  B  |.----------.|  C  |
|_____|            |_____|            |_____|

1) Node and interface IDs can be configured for IOAM:

  # IOAM ID of A = 1, IOAM ID of A.eth0 = 11
  (A) sysctl -w net.ipv6.ioam6_id=1
  (A) sysctl -w net.ipv6.conf.eth0.ioam6_id=11

  # IOAM ID of B = 2, IOAM ID of B.eth0 = 21, IOAM ID of B.eth1 = 22
  (B) sysctl -w net.ipv6.ioam6_id=2
  (B) sysctl -w net.ipv6.conf.eth0.ioam6_id=21
  (B) sysctl -w net.ipv6.conf.eth1.ioam6_id=22

  # IOAM ID of C = 3, IOAM ID of C.eth0 = 31
  (C) sysctl -w net.ipv6.ioam6_id=3
  (C) sysctl -w net.ipv6.conf.eth0.ioam6_id=31

  Note that "_wide" IDs equivalents can be configured the same way.

2) Each node can be configured to form an IOAM domain. For instance,
   we allow IOAM from A to C only (not the reverse path), i.e. enable
   IOAM on ingress for B.eth0 and C.eth0:

  (B) sysctl -w net.ipv6.conf.eth0.ioam6_enabled=1
  (C) sysctl -w net.ipv6.conf.eth0.ioam6_enabled=1

3) An IOAM domain (e.g. ID=123) is defined and made known to each node:

  (A) ip ioam namespace add 123
  (B) ip ioam namespace add 123
  (C) ip ioam namespace add 123

4) Finally, an IOAM Pre-allocated Trace can be inserted in traffic sent
   by A when C (e.g. db02::2) is the destination:

  (A) ip -6 route add db02::2/128 encap ioam6 trace type 0x800000 ns 123
      size 12 dev eth0

Signed-off-by: default avatarJustin Iurman <justin.iurman@uliege.be>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 3edede08
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
.. SPDX-License-Identifier: GPL-2.0

=====================
IOAM6 Sysfs variables
=====================


/proc/sys/net/conf/<iface>/ioam6_* variables:
=============================================

ioam6_enabled - BOOL
        Accept (= enabled) or ignore (= disabled) IPv6 IOAM options on ingress
        for this interface.

        * 0 - disabled (default)
        * 1 - enabled

ioam6_id - SHORT INTEGER
        Define the IOAM id of this interface.

        Default is ~0.

ioam6_id_wide - INTEGER
        Define the wide IOAM id of this interface.

        Default is ~0.
+17 −0
Original line number Diff line number Diff line
@@ -1926,6 +1926,23 @@ fib_notify_on_flag_change - INTEGER
        - 1 - Emit notifications.
        - 2 - Emit notifications only for RTM_F_OFFLOAD_FAILED flag change.

ioam6_id - INTEGER
        Define the IOAM id of this node. Uses only 24 bits out of 32 in total.

        Min: 0
        Max: 0xFFFFFF

        Default: 0xFFFFFF

ioam6_id_wide - LONG INTEGER
        Define the wide IOAM id of this node. Uses only 56 bits out of 64 in
        total. Can be different from ioam6_id.

        Min: 0
        Max: 0xFFFFFFFFFFFFFF

        Default: 0xFFFFFFFFFFFFFF

IPv6 Fragmentation:

ip6frag_high_thresh - INTEGER