All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next 0/5] Support for the IOAM Pre-allocated Trace with IPv6
@ 2021-03-10 16:44 Justin Iurman
  2021-03-10 16:44 ` [PATCH net-next 1/5] uapi: IPv6 IOAM headers definition Justin Iurman
                   ` (4 more replies)
  0 siblings, 5 replies; 13+ messages in thread
From: Justin Iurman @ 2021-03-10 16:44 UTC (permalink / raw)
  To: netdev; +Cc: davem, kuba, tom, justin.iurman

v2:
 - Fix warning with static for __ioam6_fill_trace_data
 - Fix sparse warning with __force when casting __be64 to __be32
 - Fix unchecked dereference when removing IOAM namespaces or schemas
 - exthdrs.c: Don't drop by default (now: ignore) to match the act bits "00"
 - Add control plane support for the inline insertion (lwtunnel)
 - Provide uapi structures
 - Use __net_timestamp if skb->tstamp is empty
 - Add note about the temporary IANA allocation
 - Remove support for "removable" TLVs
 - Remove support for virtual/anonymous tunnel decapsulation

In-situ Operations, Administration, and Maintenance (IOAM) records
operational and telemetry information in a packet while it traverses
a path between two points in an IOAM domain. It is defined in
draft-ietf-ippm-ioam-data [1]. IOAM data fields can be encapsulated
into a variety of protocols. The IPv6 encapsulation is defined in
draft-ietf-ippm-ioam-ipv6-options [2], via extension headers. IOAM
can be used to complement OAM mechanisms based on e.g. ICMP or other
types of probe packets.

This patchset implements support for the Pre-allocated Trace, carried
by a Hop-by-Hop. Therefore, a new IPv6 Hop-by-Hop TLV option is
introduced, see IANA [3]. The three other IOAM options are not included
in this patchset (Incremental Trace, Proof-of-Transit and Edge-to-Edge).
The main idea behind the IOAM Pre-allocated Trace is that a node
pre-allocates some room in packets for IOAM data. Then, each IOAM node
on the path will insert its data. There exist several interesting use-
cases, e.g. Fast failure detection/isolation or Smart service selection.
Another killer use-case is what we have called Cross-Layer Telemetry,
see the demo video on its repository [4], that aims to make the entire
stack (L2/L3 -> L7) visible for distributed tracing tools (e.g. Jaeger),
instead of the current L5 -> L7 limited view. So, basically, this is a
nice feature for the Linux Kernel.

This patchset also provides support for the control plane part, but only for the
inline insertion (host-to-host use case), through lightweight tunnels. Indeed,
for in-transit traffic, the solution is to have an IPv6-in-IPv6 encapsulation,
which brings some difficulties and still requires a little bit of work and
discussion (ie anonymous tunnel decapsulation and multi egress resolution).

- Patch 1: IPv6 IOAM headers definition
- Patch 2: Data plane support for Pre-allocated Trace
- Patch 3: IOAM Generic Netlink API
- Patch 4: Support for IOAM injection with lwtunnels
- Patch 5: Documentation for new IOAM sysctls

  [1] https://tools.ietf.org/html/draft-ietf-ippm-ioam-data
  [2] https://tools.ietf.org/html/draft-ietf-ippm-ioam-ipv6-options
  [3] https://www.iana.org/assignments/ipv6-parameters/ipv6-parameters.xhtml#ipv6-parameters-2
  [4] https://github.com/iurmanj/cross-layer-telemetry


Justin Iurman (5):
  uapi: IPv6 IOAM headers definition
  ipv6: ioam: Data plane support for Pre-allocated Trace
  ipv6: ioam: IOAM Generic Netlink API
  ipv6: ioam: Support for IOAM injection with lwtunnels
  ipv6: ioam: Documentation for new IOAM sysctls

 Documentation/networking/ioam6-sysctl.rst |  20 +
 Documentation/networking/ip-sysctl.rst    |   5 +
 include/linux/ioam6.h                     |  13 +
 include/linux/ioam6_genl.h                |  13 +
 include/linux/ioam6_iptunnel.h            |  13 +
 include/linux/ipv6.h                      |   2 +
 include/net/ioam6.h                       |  65 ++
 include/net/netns/ipv6.h                  |   2 +
 include/uapi/linux/in6.h                  |   1 +
 include/uapi/linux/ioam6.h                | 124 +++
 include/uapi/linux/ioam6_genl.h           |  49 ++
 include/uapi/linux/ioam6_iptunnel.h       |  19 +
 include/uapi/linux/ipv6.h                 |   2 +
 include/uapi/linux/lwtunnel.h             |   1 +
 net/core/lwtunnel.c                       |   2 +
 net/ipv6/Kconfig                          |  11 +
 net/ipv6/Makefile                         |   3 +-
 net/ipv6/addrconf.c                       |  20 +
 net/ipv6/af_inet6.c                       |   7 +
 net/ipv6/exthdrs.c                        |  51 ++
 net/ipv6/ioam6.c                          | 870 ++++++++++++++++++++++
 net/ipv6/ioam6_iptunnel.c                 | 261 +++++++
 net/ipv6/sysctl_net_ipv6.c                |   7 +
 23 files changed, 1560 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/networking/ioam6-sysctl.rst
 create mode 100644 include/linux/ioam6.h
 create mode 100644 include/linux/ioam6_genl.h
 create mode 100644 include/linux/ioam6_iptunnel.h
 create mode 100644 include/net/ioam6.h
 create mode 100644 include/uapi/linux/ioam6.h
 create mode 100644 include/uapi/linux/ioam6_genl.h
 create mode 100644 include/uapi/linux/ioam6_iptunnel.h
 create mode 100644 net/ipv6/ioam6.c
 create mode 100644 net/ipv6/ioam6_iptunnel.c

-- 
2.17.1


^ permalink raw reply	[flat|nested] 13+ messages in thread
* Re: [PATCH net-next 4/5] ipv6: ioam: Support for IOAM injection with lwtunnels
@ 2021-03-10 18:43 kernel test robot
  0 siblings, 0 replies; 13+ messages in thread
From: kernel test robot @ 2021-03-10 18:43 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 2857 bytes --]

CC: kbuild-all(a)lists.01.org
In-Reply-To: <20210310164439.24933-5-justin.iurman@uliege.be>
References: <20210310164439.24933-5-justin.iurman@uliege.be>
TO: Justin Iurman <justin.iurman@uliege.be>
TO: netdev(a)vger.kernel.org
CC: davem(a)davemloft.net
CC: kuba(a)kernel.org
CC: tom(a)herbertland.com
CC: justin.iurman(a)uliege.be

Hi Justin,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on net-next/master]

url:    https://github.com/0day-ci/linux/commits/Justin-Iurman/Support-for-the-IOAM-Pre-allocated-Trace-with-IPv6/20210311-005727
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git d310ec03a34e92a77302edb804f7d68ee4f01ba0
:::::: branch date: 2 hours ago
:::::: commit date: 2 hours ago
config: sparc64-randconfig-s032-20210310 (attached as .config)
compiler: sparc64-linux-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.3-262-g5e674421-dirty
        # https://github.com/0day-ci/linux/commit/f20771586508a195a44298f251d68446c10830ce
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Justin-Iurman/Support-for-the-IOAM-Pre-allocated-Trace-with-IPv6/20210311-005727
        git checkout f20771586508a195a44298f251d68446c10830ce
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=sparc64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


"sparse warnings: (new ones prefixed by >>)"
>> net/ipv6/ioam6.c:856:1: sparse: sparse: unused label 'out_unregister_genl'

vim +/out_unregister_genl +856 net/ipv6/ioam6.c

f20771586508a1 Justin Iurman 2021-03-10  851  
e1a4cb7c14f537 Justin Iurman 2021-03-10  852  	pr_info("In-situ OAM (IOAM) with IPv6\n");
ffece959dfe59a Justin Iurman 2021-03-10  853  
ffece959dfe59a Justin Iurman 2021-03-10  854  out:
ffece959dfe59a Justin Iurman 2021-03-10  855  	return err;
f20771586508a1 Justin Iurman 2021-03-10 @856  out_unregister_genl:
f20771586508a1 Justin Iurman 2021-03-10  857  	genl_unregister_family(&ioam6_genl_family);
ffece959dfe59a Justin Iurman 2021-03-10  858  out_unregister_pernet_subsys:
ffece959dfe59a Justin Iurman 2021-03-10  859  	unregister_pernet_subsys(&ioam6_net_ops);
ffece959dfe59a Justin Iurman 2021-03-10  860  	goto out;
e1a4cb7c14f537 Justin Iurman 2021-03-10  861  }
e1a4cb7c14f537 Justin Iurman 2021-03-10  862  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 42503 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2021-03-22 12:59 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-10 16:44 [PATCH net-next 0/5] Support for the IOAM Pre-allocated Trace with IPv6 Justin Iurman
2021-03-10 16:44 ` [PATCH net-next 1/5] uapi: IPv6 IOAM headers definition Justin Iurman
2021-03-10 16:44 ` [PATCH net-next 2/5] ipv6: ioam: Data plane support for Pre-allocated Trace Justin Iurman
2021-03-10 16:44 ` [PATCH net-next 3/5] ipv6: ioam: IOAM Generic Netlink API Justin Iurman
2021-03-10 16:44 ` [PATCH net-next 4/5] ipv6: ioam: Support for IOAM injection with lwtunnels Justin Iurman
2021-03-10 20:15   ` kernel test robot
2021-03-10 20:15     ` kernel test robot
2021-03-11  0:56   ` kernel test robot
2021-03-11  0:56     ` kernel test robot
2021-03-22 12:56     ` Justin Iurman
2021-03-22 12:56       ` Justin Iurman
2021-03-10 16:44 ` [PATCH net-next 5/5] ipv6: ioam: Documentation for new IOAM sysctls Justin Iurman
2021-03-10 18:43 [PATCH net-next 4/5] ipv6: ioam: Support for IOAM injection with lwtunnels kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.