ipv6 package

eth2p-ethip6-ip6base-func module

TC01: DUT replies to ICMPv6 Echo Req to its ingress interface

Make TG send ICMPv6 Echo Req to DUT ingress interface. Make TGverify ICMPv6 Echo Reply is correct.


Ipv6 icmp echo  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes_ipv6_addr}

TC02: DUT replies to ICMPv6 Echo Req pkt with size 64B-to-1500B-incr-1B

Make TG send ICMPv6 Echo Reqs to DUT ingress interface,incrementating frame size from 64B to 1500B with increment step of 1Byte. Make TG verify ICMP Echo Replies are correct.


Ipv6 icmp echo sweep  ${nodes['TG']}  ${nodes['DUT1']}  0  1452  1  ${nodes_ipv6_addr}

TC03: DUT replies to ICMPv6 Echo Req pkt with size 1500B-to-9000B-incr-10B

Make TG send ICMPv6 Echo Reqs to DUT ingress interface,incrementating frame size from 1500B to 9000B with increment step of 10Bytes. Make TG verify ICMPv6 Echo Replies are correct.


Append Nodes  ${nodes['TG']}  ${nodes['DUT1']}
Compute Path
${dut_port}  ${dut_node}=  Last Interface
${mtu}=  Get Interface MTU  ${dut_node}  ${dut_port}
${end_size}=  Evaluate  ${mtu} - 14 - 4 - 40 - 8
Run Keyword If  ${mtu} > 1518  Ipv6 icmp echo sweep  ${nodes['TG']}  ${nodes['DUT1']}  1452  ${end_size}  10  ${nodes_ipv6_addr}

TC04: DUT routes to its egress interface

Make TG send ICMPv6 Echo Req towards DUT1 egress interfaceconnected to DUT2. Make TG verify ICMPv6 Echo Reply is correct.


Ipv6 tg to dut1 egress  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['DUT2']}  ${nodes_ipv6_addr}

TC05: DUT1 routes to DUT2 ingress interface

Make TG send ICMPv6 Echo Req towards DUT2 ingress interfaceconnected to DUT1. Make TG verify ICMPv6 Echo Reply is correct.


Ipv6 tg to dut2 via dut1  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['DUT2']}  ${nodes_ipv6_addr}

TC06: DUT1 routes to DUT2 egress interface

Make TG send ICMPv6 Echo Req towards DUT2 egress interfaceconnected to TG. Make TG verify ICMPv6 Echo Reply is correct.


Ipv6 tg to dut2 egress via dut1  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['DUT2']}  ${nodes_ipv6_addr}

TC07: DUT1 and DUT2 route between TG interfaces

Make TG send ICMPv6 Echo Req between its interfaces across DUT1and DUT2. Make TG verify ICMPv6 Echo Replies are correct.


Ipv6 tg to tg routed  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['DUT2']}  ${nodes_ipv6_addr}

TC08: DUT replies to IPv6 Neighbor Solicitation

On DUT configure interface IPv6 address in the main routingdomain. Make TG send Neighbor Solicitation message on the link to DUT and verify DUT Neighbor Advertisement reply is correct.


Ipv6 neighbor solicitation  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes_ipv6_addr}

eth2p-ethip6-ip6base-ip6ecmp-func module

TC01: IPv6 Equal-cost multipath routing

[Top] TG=DUT [Cfg] On DUT configure multipath routing wiht two equal-cost paths. [Ver] TG sends 100 IPv6 ICMP packets traffic on the first link toDUT. On second link to TG verify if traffic is divided into two paths.


Given Path for 2-node testing is set  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['TG']}
  And Interfaces in 2-node path are UP
  And Vpp Set If Ipv6 Addr  ${dut_node}  ${dut_to_tg_if2}  ${ip_1}  ${prefix_length}
  And Vpp Set If Ipv6 Addr  ${dut_node}  ${dut_to_tg_if1}  ${ip_2}  ${prefix_length}
  And Add Ip Neighbor  ${dut_node}  ${dut_to_tg_if1}  ${neighbor_1_ip}  ${neighbor_1_mac}
  And Add Ip Neighbor  ${dut_node}  ${dut_to_tg_if1}  ${neighbor_2_ip}  ${neighbor_2_mac}
 When Vpp Route Add  ${dut_node}  ${test_dst_ip}  ${prefix_length}  ${neighbor_1_ip}  ${dut_to_tg_if1}  resolve_attempts=${NONE}  multipath=${TRUE}
  And Vpp Route Add  ${dut_node}  ${test_dst_ip}  ${prefix_length}  ${neighbor_2_ip}  ${dut_to_tg_if1}  resolve_attempts=${NONE}  multipath=${TRUE}
 Then Send Packets And Check Multipath Routing  ${tg_node}  ${tg_to_dut_if2}  ${tg_to_dut_if1}  ${test_src_ip}  ${test_dst_ip}  ${tg_to_dut_if2_mac}  ${dut_to_tg_if2_mac}  ${dut_to_tg_if1_mac}  ${neighbor_1_mac}  ${neighbor_2_mac}

eth2p-ethip6-ip6base-ip6ra-func module

TC01: DUT transmits RA on IPv6 enabled interface

[Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPv6 interface on the link to TG. [Ver] Make TG wait for IPv6 Router Advertisement packet to be sentby DUT1 and verify the received RA packet is correct.


Given Path For 3-node Testing Is Set  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['DUT2']}  ${nodes['TG']}
  And Interfaces In 3-node Path Are Up
  And Vpp Set If Ipv6 Addr  ${dut1_node}  ${dut1_to_tg}  ${dut1_to_tg_ip}  ${prefix_length}
 When Vpp RA Send After Interval  ${dut1_node}  ${dut1_to_tg}
 Then Receive And Check Router Advertisement Packet  ${tg_node}  ${tg_to_dut1}  ${dut1_to_tg_mac}

TC02: DUT retransmits RA on IPv6 enabled interface after a set interval

[Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPv6 interface on the link to TG. [Ver] Make TG wait for two IPv6 Router Advertisement packetsto be sent by DUT1 and verify the received RA packets are correct.


Given Path For 3-node Testing Is Set  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['DUT2']}  ${nodes['TG']}
  And Interfaces In 3-node Path Are Up
  And Vpp Set If Ipv6 Addr  ${dut1_node}  ${dut1_to_tg}  ${dut1_to_tg_ip}  ${prefix_length}
 When Vpp RA Send After Interval  ${dut1_node}  ${dut1_to_tg}  interval=${interval}
: FOR  ${n}  IN RANGE  ${2}
 \    Then Receive And Check Router Advertisement Packet  ${tg_node}  ${tg_to_dut1}  ${dut1_to_tg_mac}  ${interval}

TC03: DUT responds to Router Solicitation request

[Top] TG-DUT1-DUT2-TG. [Cfg] On DUT1 configure IPv6 interface on the link to TG and suppresssending of Router Advertisement packets periodically. [Ver] Make TG send IPv6 Router Solicitation request to DUT1, listenfor response from DUT1 and verify the received RA packet is correct.


Given Path For 3-node Testing Is Set  ${nodes['TG']}  ${nodes['DUT1']}  ${nodes['DUT2']}  ${nodes['TG']}
  And Interfaces In 3-node Path Are Up
  And Vpp Set If Ipv6 Addr  ${dut1_node}  ${dut1_to_tg}  ${dut1_to_tg_ip}  ${prefix_length}
 When VPP RA Suppress Link Layer  ${dut1_node}  ${dut1_to_tg}
 Then Send Router Solicitation And Check Response  ${tg_node}  ${dut1_node}  ${tg_to_dut1}  ${dut1_to_tg}  ${tg_to_dut1_ip}