• Justin Iurman's avatar
    selftests: net: Test for the IOAM insertion with IPv6 · 968691c7
    Justin Iurman authored
    This test evaluates the IOAM insertion for IPv6 by checking the IOAM data
    integrity on the receiver.
    
    The topology is formed by 3 nodes: Alpha (sender), Beta (router in-between)
    and Gamma (receiver). An IOAM domain is configured from Alpha to Gamma only,
    which means not on the reverse path. When Gamma is the destination, Alpha
    adds an IOAM option (Pre-allocated Trace) inside a Hop-by-hop and fills the
    trace with its own IOAM data. Beta and Gamma also fill the trace. The IOAM
    data integrity is checked on Gamma, by comparing with the pre-defined IOAM
    configuration (see below).
    
        +-------------------+            +-------------------+
        |                   |            |                   |
        |    alpha netns    |            |    gamma netns    |
        |                   |            |                   |
        |  +-------------+  |            |  +-------------+  |
        |  |    veth0    |  |            |  |    veth0    |  |
        |  |  db01::2/64 |  |            |  |  db02::2/64 |  |
        |  +-------------+  |            |  +-------------+  |
        |         .         |            |         .         |
        +-------------------+            +-------------------+
                  .                                .
                  .                                .
                  .                                .
        +----------------------------------------------------+
        |         .                                .         |
        |  +-------------+                  +-------------+  |
        |  |    veth0    |                  |    veth1    |  |
        |  |  db01::1/64 | ................ |  db02::1/64 |  |
        |  +-------------+                  +-------------+  |
        |                                                    |
        |                      beta netns                    |
        |                                                    |
        +--------------------------+-------------------------+
    
    ~~~~~~~~~~~~~~~~~~~~~~
    | IOAM configuration |
    ~~~~~~~~~~~~~~~~~~~~~~
    
    Alpha
    +-----------------------------------------------------------+
    | Type                | Value                               |
    +-----------------------------------------------------------+
    | Node ID             | 1                                   |
    +-----------------------------------------------------------+
    | Node Wide ID        | 11111111                            |
    +-----------------------------------------------------------+
    | Ingress ID          | 0xffff (default value)              |
    +-----------------------------------------------------------+
    | Ingress Wide ID     | 0xffffffff (default value)          |
    +-----------------------------------------------------------+
    | Egress ID           | 101                                 |
    +-----------------------------------------------------------+
    | Egress Wide ID      | 101101                              |
    +-----------------------------------------------------------+
    | Namespace Data      | 0xdeadbee0                          |
    +-----------------------------------------------------------+
    | Namespace Wide Data | 0xcafec0caf00dc0de                  |
    +-----------------------------------------------------------+
    | Schema ID           | 777                                 |
    +-----------------------------------------------------------+
    | Schema Data         | something that will be 4n-aligned   |
    +-----------------------------------------------------------+
    
    Note: When Gamma is the destination, Alpha adds an IOAM Pre-allocated Trace
          option inside a Hop-by-hop, where 164 bytes are pre-allocated for the
          trace, with 123 as the IOAM-Namespace and with 0xfff00200 as the trace
          type (= all available options at this time). As a result, and based on
          IOAM configurations here, only both Alpha and Beta should be capable of
          inserting their IOAM data while Gamma won't have enough space and will
          set the overflow bit.
    
    Beta
    +-----------------------------------------------------------+
    | Type                | Value                               |
    +-----------------------------------------------------------+
    | Node ID             | 2                                   |
    +-----------------------------------------------------------+
    | Node Wide ID        | 22222222                            |
    +-----------------------------------------------------------+
    | Ingress ID          | 201                                 |
    +-----------------------------------------------------------+
    | Ingress Wide ID     | 201201                              |
    +-----------------------------------------------------------+
    | Egress ID           | 202                                 |
    +-----------------------------------------------------------+
    | Egress Wide ID      | 202202                              |
    +-----------------------------------------------------------+
    | Namespace Data      | 0xdeadbee1                          |
    +-----------------------------------------------------------+
    | Namespace Wide Data | 0xcafec0caf11dc0de                  |
    +-----------------------------------------------------------+
    | Schema ID           | 0xffffff (= None)                   |
    +-----------------------------------------------------------+
    | Schema Data         |                                     |
    +-----------------------------------------------------------+
    
    Gamma
    +-----------------------------------------------------------+
    | Type                | Value                               |
    +-----------------------------------------------------------+
    | Node ID             | 3                                   |
    +-----------------------------------------------------------+
    | Node Wide ID        | 33333333                            |
    +-----------------------------------------------------------+
    | Ingress ID          | 301                                 |
    +-----------------------------------------------------------+
    | Ingress Wide ID     | 301301                              |
    +-----------------------------------------------------------+
    | Egress ID           | 0xffff (default value)              |
    +-----------------------------------------------------------+
    | Egress Wide ID      | 0xffffffff (default value)          |
    +-----------------------------------------------------------+
    | Namespace Data      | 0xdeadbee2                          |
    +-----------------------------------------------------------+
    | Namespace Wide Data | 0xcafec0caf22dc0de                  |
    +-----------------------------------------------------------+
    | Schema ID           | 0xffffff (= None)                   |
    +-----------------------------------------------------------+
    | Schema Data         |                                     |
    +-----------------------------------------------------------+
    Signed-off-by: default avatarJustin Iurman <justin.iurman@uliege.be>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    968691c7
config 931 Bytes