summaryrefslogtreecommitdiffstats
path: root/test/test_bfd.py
AgeCommit message (Collapse)AuthorFilesLines
2017-10-21test bfd - DPO_PROTO_IP6 is part of DpoProtoGabriel Ganne1-2/+2
Change-Id: I63d336a1ba366a60a2a8f1124e3f37f742cccb65 Signed-off-by: Gabriel Ganne <gabriel.ganne@enea.com>
2017-08-08L2 over MPLSNeale Ranns1-3/+3
[support for VPWS/VPLS] - switch to using dpo_proto_t rather than fib_protocol_t in fib_paths so that we can describe L2 paths - VLIB nodes to handle pop/push of MPLS labels to L2 Change-Id: Id050d06a11fd2c9c1c81ce5a0654e6c5ae6afa6e Signed-off-by: Neale Ranns <nranns@cisco.com>
2017-05-02BFD: don't crash if interface is deletedKlement Sekera1-0/+30
Instead, drop the BFD session associated with it.. Change-Id: Ie09877d5c94844be2e833900d9dde7f23edaf8cd Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-04-24make test: mark all BFD tests as extendedKlement Sekera1-0/+5
Change-Id: Iaed59cca1c9fd69eadb86c15be6417a956cb9d5a Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-04-20make test: improve bfd reliabilityKlement Sekera1-18/+30
Change-Id: Iaf446a2d7d8e595c3379fb9ed61a954351c17b90 Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-04-06BFD-FIB interactionsNeale Ranns1-1/+103
- single-hop BFD: attach a delegate to the appropriate adjacency - multi-hop BFD [not supported yet]: attach a delegate to the FIB entry. adjacency/fib_entry state tracks the BFD session state. when the state is down the object does not contribute forwarding hence and hence dependent objects will not use it. For example, if a route is ECMP via two adjacencies and one of them is BFD down, then only the other is used to forward (i.e. we don't drop half the traffic). Change-Id: I0ef53e20e73b067001a132cd0a3045408811a822 Signed-off-by: Neale Ranns <nranns@cisco.com>
2017-04-03make test: relax BFD time intervalsKlement Sekera1-7/+9
Increased time intervals mean longer test runs, but also reduce the chance of getting annoying (especially in gerrit) random failures. Now that tests are split into `basic' and `all', the increased runtime of BFD tests (of which majority doesn't run in basic case) doesn't matter too much.. Change-Id: I4a15bb4facad634f123bc9cc6f45eddbf4976fd1 Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-03-13Add MAC address check in ethernet-input node if interface in L3 modeJohn Lo1-1/+10
Interface can be in promiscuous mode if more than one of its sub- interface is in L2 mode. In promiscuous mode, L3 interface need to verify DMAC of packet to match that of the interface and drop if not. This check was done on sub-interface only and now also added to main interface path. Fix incorrect MAC addresses in the flow-per-pkt plugin test, which caused it to fail. Fix MAC address usage in BFD tests. Change-Id: I12a17ec05c7ab298ad10d400c90d082c97eca521 Signed-off-by: John Lo <loj@cisco.com> Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-03-08make test: split into basic and extended testsKlement Sekera1-2/+33
Implement plumbing to allow decorating tests as extended, e.g.: @unittest.skipUnless(running_extended_tests(), "part of extended tests") both methods and classes can be decorated this way. Change make test and make test-debug to run only non-extended tests. Introduce make test-all and make test-all-debug to run the full suite. Run full suite as part of make verify. Decorate most BFD tests as extended. Change-Id: I3bc64f59e9fe238f7f767d7e043dc165d03e9dfa Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-03-02BFD: command line interfaceKlement Sekera1-20/+559
Implement command line interface to the BFD binary APIs. Add corresponding unit tests. Change-Id: Ia0542d0bc4c8d78e6f7b777a08fd94ebfe4d524f Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-02-26BFD: echo functionKlement Sekera1-48/+429
Change-Id: Ib1e301d62b687d4e42434239e7cd412065c28da0 Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-02-17BFD: put session admin-up/admin-downKlement Sekera1-8/+36
Change-Id: I7d8889dce8495607106593ad83320c9af0f2fa07 Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-02-15BFD: loop back echo packetsKlement Sekera1-19/+103
Change-Id: I772b63ac25ebfccaff9ab9d8d0b1445e85f21df7 Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-02-14BFD: respect remote demand modeKlement Sekera1-328/+509
Change-Id: I5063d31f5305c848043afb32fcacff6e61aed79f Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-02-08make test: BFD tests speedupKlement Sekera1-2/+4
Change-Id: I0b3064a311f28ebf7cd9db0a59cb04c7c25c9d58 Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-02-08BFD: modify session parametersKlement Sekera1-13/+151
Change-Id: I666e5c0cc71a3693640960c93cdd1907f84fbe23 Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-02-02BFD: SHA1 authenticationKlement Sekera1-37/+696
Add authentication support to BFD feature. Out of three existing authentication types, implement SHA1 (sole RFC requirement). Simple password is insecure and MD5 is discouraged by the RFC, so ignore those. Add/change APIs to allow configuring BFD authentication keys and their usage with BFD sessions. Change-Id: Ifb0fb5b19c2e72196d84c1cde919bd4c074ea415 Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-01-25make test: elegantly handle expected API failuresKlement Sekera1-6/+3
Allow writing simple code to expect API failure when needed: with self.vapi.expect_negative_api_retval(): do_api_call() # expected to return negative retval in response Change-Id: Id58d91d9ce38d20ad6ff7a43a6897e79ffbd23bf Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-01-17BFD: IPv6 supportKlement Sekera1-79/+142
Change-Id: Iaa9538c7cca500c04cf2704e5bf87480543cfcdf Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-01-17make test: add checkstyle targetKlement Sekera1-2/+0
Change-Id: I59d3c3bc77474c96e1d6fa51811c1b13fb9a6c5b Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-01-11BFD: fix bfd_udp_add APIKlement Sekera1-8/+25
Fix reporting of bs_index in the return message. Enhance test suite to cover this case. Change-Id: I37d35b850818bc1a05abe67ca919c22aeac978b6 Signed-off-by: Klement Sekera <ksekera@cisco.com>
2017-01-03BFD: immediately honor reduced remote_min_rx intervalKlement Sekera1-24/+62
Change-Id: I7f09b45c926557d2ad0e2706b38fa56ff8194a3d Signed-off-by: Klement Sekera <ksekera@cisco.com>
2016-12-23make test: improve handling of packet capturesKlement Sekera1-4/+4
Perform accounting of expected packets based on created packet infos. Use this accounting info to automatically expect (and verify) the correct number of packets to be captured. Automatically retry the read of the capture file if scapy raises an exception while doing so to handle rare cases when capture file is read while only partially written during busy wait. Don't fail assert_nothing_captured if only junk packets arrived. Change-Id: I16ec2e9410ef510d313ec16b7e13c57d0b2a63f5 Signed-off-by: Klement Sekera <ksekera@cisco.com>
2016-12-19make test: work around timing issue in bfd testKlement Sekera1-1/+1
Change-Id: I3f70091950b9288670969e54eadd35ac733905e4 Signed-off-by: Klement Sekera <ksekera@cisco.com>
2016-12-16make test: improve robustness and performanceKlement Sekera1-1/+1
Introduce an API which asserts empty capture for interface. Throw exception in old API if the capture does not exist, thus making it clear if the test expects packets to arrive or not. Improve performance by not doing sleeps after starting the packet generator, rather lazily deleting captures when needed. Fix wrong usage of packet.show() in various tests. Change-Id: I456cb23316eef99b3f35f80344fe595c4db9a21c Signed-off-by: Klement Sekera <ksekera@cisco.com>
2016-12-09BFD: handle timing wheel prematurely firing eventsKlement Sekera1-3/+3
Improve handling of timeouts. Add a workaround for when timing wheel fires an event a tiny amount of time before it should actually be fired. Don't delete unneeded events at all from timing wheel, instead ignoring unexpected events. Enable the skipped BFD test, which passes now. Change-Id: I6ffd4fc0ba7a049ffe63bb0e5290641a7300dd6f Signed-off-by: Klement Sekera <ksekera@cisco.com>
2016-12-09BFD: fix timing in the main loopKlement Sekera1-34/+35
Properly wakeup the main process loop only when necessary to avoid missed events. Improve BFD unit test reliability and speed. Add timestamps to logs and replace Queue with more efficient deque. Change-Id: I01255a02057d3146917b43b669ccdc74f31ef0c8 Signed-off-by: Klement Sekera <ksekera@cisco.com>
2016-12-08BFD: improve ip header handling, fix assertKlement Sekera1-0/+1
Instead of storing a pointer, store an offset within vlib_buffer marking the start of the ip header (similar to storing start of ethernet header). Handle negative timeout in the bfd process main loop. Change-Id: I05a1ff3ac41da5bdc3b2ac6f9e03b3241994688b Signed-off-by: Klement Sekera <ksekera@cisco.com>
2016-12-07BFD: basic asynchronous session up/downKlement Sekera1-0/+273
This is a work-in-progress basic BFD session handling. Only asynchronous mode is supported at the moment. Setting the session flags doesn't work. Change-Id: Idba27f721b5c35be5a66a6d202a63d23ff7ecf6f Signed-off-by: Klement Sekera <ksekera@cisco.com>
ic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
# Directory structure re-organization

## Table of contents

1. [The new structure](#the-new-structure)
1. [Tests](#tests)
   1. [Performance](#performance)
   1. [Functional](#functional)
1. [Keywords](#keywords)
   1. [L2 Robot keywords](#l2-robot-keywords)
   1. [L1 Python keywords](#l1-python-keywords)

## The new structure

### Tests
```
$CSIT/
    tests/
        vpp/
            func/
                l2bd/
                l2xc/
                ip4/
                ip6/
                ip4_tunnels/
                ip6_tunnels/
                vm_vhost/
                crypto/
                interfaces/
                telemetry/
                honeycomb/
            perf/
                l2/
                ip4/
                ip6/
                ip4_tunnels/
                ip6_tunnels/
                vm_vhost/
                crypto/
        dpdk/
            func/
            perf/
        nsh_sfc/
            func/
            perf/
        tldk/
            func/
            perf/
```

### Keywords
```
$CSIT/
    resources/
        libraries/
            bash/
            python/
                packages/ (dirs): feature | area
                    modules/
            robot/
                shared/
                l2/
                ip/
                overlay/
                vm/
                crypto/
                dpdk/
                nsh_sfc/
                tldk/
                honeycomb/
                performance/
                telemetry/
                features/
                fds/
```

*Notes:*
1. **l1/** - L1 will not be created, L1 KWs will be temporarily kept in L2 (their
   current place) and asap refactored using Python
1. **l2/** - Not needed if we do not have l1/


### Other resources
```
$CSIT/
    resources/
        templates/
            vat/
            honeycomb/
        test_data/
            honeycomb/
            lisp/
            softwire/
        tools/
            disk_image_builder/
            doc_gen/
            report_gen/
            scripts/
            testbed_setup/
            topology/
            trex/
            vagrant/
            virl/
        topology_schemas/
        traffic_scripts/
        traffic_profiles/
            trex/
            ixia/
```

## Tests

### Performance

#### L2 Ethernet Switching
```
ls | grep -E "(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-(ndrpdrdisc|ndrchk|pdrchk)"
```
```
l2/
    10ge2p1vic1227-eth-l2bdbasemaclrn-ndrpdrdisc.robot
    10ge2p1x520-dot1ad-l2xcbase-ndrchk.robot
    10ge2p1x520-dot1ad-l2xcbase-ndrpdrdisc.robot
    10ge2p1x520-dot1q-l2xcbase-ndrchk.robot
    10ge2p1x520-dot1q-l2xcbase-ndrpdrdisc.robot
    10ge2p1x520-eth-l2bdbasemaclrn-ndrchk.robot
    10ge2p1x520-eth-l2bdbasemaclrn-ndrpdrdisc.robot
    10ge2p1x520-eth-l2bdbasemaclrn-pdrchk.robot
    10ge2p1x520-eth-l2xcbase-ndrchk.robot
    10ge2p1x520-eth-l2xcbase-ndrpdrdisc.robot
    10ge2p1x520-eth-l2xcbase-pdrchk.robot
    10ge2p1x710-eth-l2bdbasemaclrn-ndrpdrdisc.robot
    40ge2p1vic1385-eth-l2bdbasemaclrn-ndrpdrdisc.robot
    40ge2p1xl710-eth-l2bdbasemaclrn-ndrpdrdisc.robot
    40ge2p1xl710-eth-l2xcbase-ndrpdrdisc.robot
```

#### IPv4 Routed-Forwarding
```
ls | grep -P 'ethip4(udp|)-ip4(base|scale)[a-z0-9]*(?!-eth-[0-9]vhost).*-(ndrpdrdisc|ndrchk|pdrchk)'
```
```
ip4/
    10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrchk.robot
    10ge2p1x520-ethip4-ip4base-copwhtlistbase-ndrpdrdisc.robot
    10ge2p1x520-ethip4-ip4base-iacldstbase-ndrchk.robot
    10ge2p1x520-ethip4-ip4base-iacldstbase-ndrpdrdisc.robot
    10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrchk.robot
    10ge2p1x520-ethip4-ip4base-ipolicemarkbase-ndrpdrdisc.robot
    10ge2p1x520-ethip4-ip4base-ndrchk.robot
    10ge2p1x520-ethip4-ip4base-ndrpdrdisc.robot
    10ge2p1x520-ethip4-ip4base-pdrchk.robot
    10ge2p1x520-ethip4-ip4base-snat-ndrpdrdisc.robot
    10ge2p1x520-ethip4-ip4scale200k-ndrchk.robot
    10ge2p1x520-ethip4-ip4scale200k-ndrpdrdisc.robot
    10ge2p1x520-ethip4-ip4scale20k-ndrchk.robot
    10ge2p1x520-ethip4-ip4scale20k-ndrpdrdisc.robot
    10ge2p1x520-ethip4-ip4scale2m-ndrchk.robot
    10ge2p1x520-ethip4-ip4scale2m-ndrpdrdisc.robot
    10ge2p1x520-ethip4-ip4scale2m-pdrchk.robot
    10ge2p1x520-ethip4udp-ip4base-udpsrcscale15-snat-ndrpdrdisc.robot
    10ge2p1x520-ethip4udp-ip4scale1000-udpsrcscale15-snat-ndrpdrdisc.robot
    10ge2p1x520-ethip4udp-ip4scale100-udpsrcscale15-snat-ndrpdrdisc.robot
    10ge2p1x520-ethip4udp-ip4scale10-udpsrcscale15-snat-ndrpdrdisc.robot
    10ge2p1x520-ethip4udp-ip4scale2000-udpsrcscale15-snat-ndrpdrdisc.robot
    10ge2p1x520-ethip4udp-ip4scale4000-udpsrcscale15-snat-ndrpdrdisc.robot
    40ge2p1xl710-ethip4-ip4base-ndrpdrdisc.robot
```

#### IPv6 Routed-Forwarding
```
ls | grep -E "ethip6-ip6(base|scale)[-a-z0-9]*-(ndrpdrdisc|ndrchk|pdrchk)"
```
```
ip6/
    10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrchk.robot
    10ge2p1x520-ethip6-ip6base-copwhtlistbase-ndrpdrdisc.robot
    10ge2p1x520-ethip6-ip6base-iacldstbase-ndrchk.robot
    10ge2p1x520-ethip6-ip6base-iacldstbase-ndrpdrdisc.robot
    10ge2p1x520-ethip6-ip6base-ndrchk.robot
    10ge2p1x520-ethip6-ip6base-ndrpdrdisc.robot
    10ge2p1x520-ethip6-ip6base-pdrchk.robot
    10ge2p1x520-ethip6-ip6scale200k-ndrchk.robot
    10ge2p1x520-ethip6-ip6scale200k-ndrpdrdisc.robot
    10ge2p1x520-ethip6-ip6scale20k-ndrchk.robot
    10ge2p1x520-ethip6-ip6scale20k-ndrpdrdisc.robot
    10ge2p1x520-ethip6-ip6scale2m-ndrchk.robot
    10ge2p1x520-ethip6-ip6scale2m-ndrpdrdisc.robot
    10ge2p1x520-ethip6-ip6scale2m-pdrchk.robot
    40ge2p1xl710-ethip6-ip6base-ndrpdrdisc.robot
```

#### IPv4 Overlay Tunnels
```
ls | grep -E "ethip4[a-z0-9]+-[a-z0-9]*-(ndrpdrdisc|ndrchk|pdrchk)"
```
```
ip4_tunnels/
    10ge2p1x520-ethip4lispip4-ip4base-ndrchk.robot
    10ge2p1x520-ethip4lispip4-ip4base-ndrpdrdisc.robot
    10ge2p1x520-ethip4lispip4-ip4base-pdrchk.robot
    10ge2p1x520-ethip4lispip6-ip4base-ndrchk.robot
    10ge2p1x520-ethip4lispip6-ip4base-ndrpdrdisc.robot
    10ge2p1x520-ethip4lispip6-ip4base-pdrchk.robot
    10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-ndrpdrdisc.robot
    10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-pdrchk.robot
    10ge2p1x520-ethip4vxlan-l2xcbase-ndrchk.robot
    10ge2p1x520-ethip4vxlan-l2xcbase-ndrpdrdisc.robot
    10ge2p1x520-ethip4vxlan-l2xcbase-pdrchk.robot
```

#### IPv6 Overlay Tunnels
```
ls | grep -E "ethip6[a-z0-9]+-[a-z0-9]*-(ndrpdrdisc|ndrchk|pdrchk)"
```
```
ip6_tunnels/
    10ge2p1x520-ethip6lispip4-ip6base-ndrchk.robot
    10ge2p1x520-ethip6lispip4-ip6base-ndrpdrdisc.robot
    10ge2p1x520-ethip6lispip4-ip6base-pdrchk.robot
    10ge2p1x520-ethip6lispip6-ip6base-ndrchk.robot
    10ge2p1x520-ethip6lispip6-ip6base-ndrpdrdisc.robot
    10ge2p1x520-ethip6lispip6-ip6base-pdrchk.robot
```

#### VM vhost Connections
```
ls | grep -E ".*vhost.*-(ndrpdrdisc|ndrchk|pdrchk)"
```
```
vm_vhost/
    10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
    10ge2p1x520-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-pdrchk.robot
    10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot
    10ge2p1x520-dot1q-l2xcbase-eth-2vhost-1vm-pdrchk.robot
    10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-ndrpdrdisc.robot
    10ge2p1x520-ethip4-ip4base-eth-2vhost-1vm-pdrchk.robot
    10ge2p1x520-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot
    10ge2p1x520-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
    10ge2p1x520-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
    10ge2p1x520-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot
    10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-ndrpdrdisc.robot
    10ge2p1x520-eth-l2xcbase-eth-2vhost-1vm-pdrchk.robot
    10ge2p1x520-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot
    10ge2p1x710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
    40ge2p1xl710-ethip4-ip4base-eth-4vhost-2vm-ndrpdrdisc.robot
    40ge2p1xl710-eth-l2bdbasemaclrn-eth-2vhost-1vm-ndrpdrdisc.robot
    40ge2p1xl710-eth-l2bdbasemaclrn-eth-4vhost-2vm-ndrpdrdisc.robot
    40ge2p1xl710-eth-l2xcbase-eth-4vhost-2vm-ndrpdrdisc.robot
```

#### IPSec Crypto HW: IP4 Routed-Forwarding
```
ls | grep -E ".*ipsec.*-(ndrpdrdisc|ndrchk|pdrchk)"
```
```
crypto/
    40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-aes-gcm-ndrpdrdisc.robot
    40ge2p1xl710-ethip4ipsecbasetnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot
    40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot
    40ge2p1xl710-ethip4ipsecbasetnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot
    40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-aes-gcm-ndrpdrdisc.robot
    40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-int-cbc-sha1-ndrpdrdisc.robot
    40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-aes-gcm-ndrpdrdisc.robot
    40ge2p1xl710-ethip4ipsecscale1000tnl-ip4base-tnl-cbc-sha1-ndrpdrdisc.robot
    40ge2p1xl710-ethip4ipsectptlispgpe-ip4base-cbc-sha1-ndrpdrdisc.robot
```

### Functional

#### L2 Ethernet Switching
```
l2bd/
    eth2p-dot1ad--dot1q-l2bdbasemaclrn-vlantrans21-func.robot
    eth2p-dot1ad-l2bdbasemaclrn-vlantrans22-func.robot
    eth2p-dot1q--dot1ad-l2bdbasemaclrn-vlantrans12-func.robot
    eth2p-dot1q-l2bdbasemaclrn-vlantrans11-func.robot
    eth2p-eth-l2bdbasemaclrn-func.robot
    eth2p-eth-l2bdbasemacstc-func.robot
    eth4p-eth-l2bdbasemaclrn-l2shg-func.robot
```

```
l2xc/
    eth2p-dot1ad--dot1q-l2xcbase-vlantrans21-func.robot
    eth2p-dot1ad-l2xcbase-func.robot
    eth2p-dot1ad-l2xcbase-vlantrans22-func.robot
    eth2p-dot1q--dot1ad-l2xcbase-vlantrans12-func.robot
    eth2p-dot1q-l2xcbase-vlantrans11-func.robot
    eth2p-eth-l2xcbase-func.robot
    eth2p-eth-l2xcbase-iaclbase-func.robot
```

#### IPv4 Routed-Forwarding
```
ip4/
    eth2p-dot1q-ip4base-func.robot
    eth2p-ethip4-ip4base-copblklistbase-func.robot
    eth2p-ethip4-ip4base-copwhlistbase-func.robot
    eth2p-ethip4-ip4base-func.robot
    eth2p-ethip4-ip4base-iaclbase-func.robot
    eth2p-ethip4-ip4base-ip4arp-func.robot
    eth2p-ethip4-ip4base-ip4dhcpclient-func.robot
    eth2p-ethip4-ip4base-ip4dhcpproxy-func.robot
    eth2p-ethip4-ip4base-ip4ecmp-func.robot
    eth2p-ethip4-ip4base-ip4proxyarp-func.robot
    eth2p-ethip4-ip4base-ipolicemarkbase-func.robot
    eth2p-ethip4-ip4base-rpf-func.robot
    eth2p-ethip4-ip4basevrf-func.robot
```

#### IPv6 Routed-Forwarding
```
ip6/
    eth2p-ethip6-ip6base-copblklistbase-func.robot
    eth2p-ethip6-ip6base-copwhlistbase-func.robot
    eth2p-ethip6-ip6base-func.robot
    eth2p-ethip6-ip6base-iaclbase-func.robot
    eth2p-ethip6-ip6base-ip6dhcpproxy-func.robot
    eth2p-ethip6-ip6base-ip6ecmp-func.robot
    eth2p-ethip6-ip6base-ip6ra-func.robot
    eth2p-ethip6-ip6base-ipolicemarkbase-func.robot
    eth2p-ethip6-ip6basevrf-func.robot
```

#### IPv4 Overlay Tunnels
```
ip4_tunnels/
    gre/
        eth2p-ethip4gre-ip4base-func.robot
    lisp/
        api-crud-lisp-func.robot
        eth2p-ethip4lispgpe-ip4base-func.robot
        eth2p-ethip4lispgpe-ip4basevrf-func.robot
        eth2p-ethip4lispgpe-ip6base-func.robot
        eth2p-ethip4lispgpe-ip6basevrf-func.robot
        eth2p-ethip4lisp-ip4base-func.robot
        eth2p-ethip4lisp-l2bdbasemaclrn-func.robot
    softwire/
        eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremapt-func.robot
        eth2p-ethip4--ethip6ip4-ip4base--ip6base-swirelw46-func.robot
        eth2p-ethip4--ethip6ip4-ip4base--ip6base-swiremape-func.robot
    vxlan/
        eth2p-dot1qip4vxlan-l2bdbasemaclrn-func.robot
        eth4p-ethip4vxlan-l2bdbasemaclrn-l2shg-func.robot
        eth2p-ethip4vxlan-l2bdbasemaclrn-func.robot
        eth2p-ethip4vxlan-l2xcbase-func.robot
```

#### IPv6 Overlay Tunnels
```
ip6_tunnels/
    lisp/
        eth2p-ethip6lispgpe-ip6base-func.robot
        eth2p-ethip6lispgpe-ip6basevrf-func.robot
        eth2p-ethip6lispgpe-ip4base-func.robot
        eth2p-ethip6lisp-l2bdbasemaclrn-func.robot
    vxlan/
        eth2p-ethip6vxlan-l2bdbasemaclrn-func.robot
        eth4p-ethip6vxlan-l2bdbasemaclrn-l2shg-func.robot
```

#### VM vhost Connections
```
vm_vhost/
    l2bd/
        eth2p-dot1q-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
        eth2p-dot1q-l2bdbasemaclrn-eth-4vhost-2vm-fds-provider-nets-func.robot
        eth2p-ethip4-l2bdbase-vhost-client-reconnect-2vm-func.robot
        eth2p-ethip4vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
        eth2p-ethip4vxlan-l2bdbasemaclrn--eth-4vhost-2vm-fds-tenant-nets-func.robot
        eth2p-ethip6vxlan-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
        eth2p-eth-l2bdbasemaclrn-eth-2vhost-1vm-func.robot
        eth2p-eth-l2bdbasemacstc-eth-2vhost-1vm-func.robot
    l2xc/
        eth2p-eth-l2xcbase-eth-2vhost-1vm-func.robot
    ip4/
        eth2p-ethip4-ip4base-eth-2vhost-1vm.robot
        eth2p-ethip4ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot
        eth2p-ethip4ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot
        eth2p-ethip4lispgpe-ip4base-eth-2vhost-1vm-func.robot
        eth2p-ethip4lispgpe-ip4basevrf-eth-2vhost-1vm-func.robot
        eth2p-ethip4lispgpe-ip6base-eth-2vhost-1vm-func.robot
    ip6/
        eth2p-ethip6ipsectptlispgpe-ip4base-eth-2vhost-1vm-func.robot
        eth2p-ethip6ipsectptlispgpe-ip6base-eth-2vhost-1vm-func.robot
        eth2p-ethip6lispgpe-ip6base-eth-2vhost-1vm-func.robot
        eth2p-ethip6lispgpe-ip6basevrf-eth-2vhost-1vm-func.robot
```

#### Crypto HW: IP4 Routed-Forwarding
```
crypto/
    eth2p-ethip4ipsectnl-ip4base-func.robot
    eth2p-ethip4ipsectpt-ip4base-func.robot
    eth2p-ethip4ipsectptlispgpe-ip4base-func.robot
    eth2p-ethip4ipsectptlispgpe-ip6base-func.robot
    eth2p-ethip4ipsectptlispgpe-ip6basevrf-func.robot
    eth2p-ethip6ipsectnl-ip6base-func.robot
    eth2p-ethip6ipsectpt-ip6base-func.robot
    eth2p-ethip6ipsectptlispgpe-ip4base-func.robot
    eth2p-ethip6ipsectptlispgpe-ip6base-func.robot
```

#### Honecomb
```
honeycomb/
    __init__.robot
    mgmt-cfg-l2fib-apihc-apivat-func.robot
    mgmt-cfg-slaac-apihc-func.robot
    mgmt-cfg-l2bd-apihc-apivat-func.robot
    mgmt-cfg-lisp-apihc-apivat-func.robot
    mgmt-cfg-intip4-intip6-apihc-apivat-func.robot
    mgmt-cfg-nsh-apihc-apivat-func.robot
    mgmt-cfg-proxyarp-apihc-func.robot
    mgmt-cfg-int-subint-apihc-apivat-func.robot
    mgmt-cfg-snat44-apihc-apivat-func.robot
    mgmt-cfg-vxlangpe-apihc-apivat-func.robot
    mgmt-cfg-pluginacl-apihc-apivat-func.robot
    mgmt-cfg-dhcp-apihc-apivat-func.robot
    mgmt-cfg-inttap-apihc-apivat-func.robot
    mgmt-cfg-routing-apihc-apivat-func.robot
    mgmt-cfg-spanrx-apihc-apivat-func.robot
    mgmt-cfg-vxlan-apihc-apivat-func.robot
    mgmt-cfg-policer-apihc-func.robot
    mgmt-cfg-intvhost-apihc-apivat-func.robot
    mgmt-notif-apihcnc-func.robot
    mgmt-cfg-proxynd6-apihc-func.robot
    mgmt-cfg-pbb-apihc-apivat-func.robot
    mgmt-statepersist-apihc-func.robot
    mgmt-cfg-int-apihcnc-func.robot
    mgmt-cfg-acl-apihc-apivat-func.robot
```

#### Telemetry
```
telemetry/
    eth2p-ethip4-ip4base-ip4ipfixbase-func.robot
    eth2p-ethip4-ip4base-ip4ipfixscale-func.robot
    eth2p-ethip4-ip4base-spanrx-func.robot
    eth2p-ethip6-ip6base-ip6ipfixbase-func.robot
    eth2p-ethip6-ip6base-ip6ipfixscale-func.robot
    eth2p-ethip6-ip6base-spanrx-func.robot
```

#### Interface
```
interfaces/
    api-crud-tap-func.robot
    eth2p-ethip4-ip4base-eth-1tap-func.robot
    eth2p-eth-l2bdbasemaclrn-eth-2tap-func.robot
    eth2p-eth-l2bdbasemaclrn-l2shg-eth-2tap-func.robot
```


## Keywords

### L2 Robot keywords
```
shared/
    counters.robot
    default.robot
    interfaces.robot
    traffic.robot
    testing_path.robot
    lxc.robot
l2/
    bridge_domain.robot
    l2_traffic.robot
    l2_xconnect.robot
    tagging.robot
ip/
    ipv4.robot
    ipv6.robot
    snat.robot
    map.robot
overlay/
    gre.robot
    lisp_static_adjacency.robot
    lispgpe.robot
    l2lisp.robot
    lisp_api.robot
    vxlan.robot
vm/
    double_qemu_setup.robot
    qemu.robot
crypto/
    ipsec.robot
dpdk/
    default.robot
nsh_sfc/
    default.robot
tldk/
    TLDKUtils.robot
honeycomb/
    policer.robot
    nat.robot
    port_mirroring.robot
    vhost_user.robot
    netconf.robot
    nsh.robot
    vxlan.robot
    dhcp.robot
    slaac.robot
    notifications.robot
    routing.robot
    access_control_lists.robot
    tap.robot
    interfaces.robot
    honeycomb.robot
    persistence.robot
    sub_interface.robot
    provider_backbone_bridge.robot
    vxlan_gpe.robot
    proxyarp.robot
    bridge_domain.robot
    lisp.robot
    l2_fib.robot
performance/
    performance_configuration.robot
    performance_utils.robot
    performance_setup.robot
telemetry/
    span.robot
    ipfix.robot
features/
    policer.robot
    dhcp_client.robot
    dhcp_proxy.robot
fds/
    default.robot
```

### L1 Python keywords

No changes at this stage.