go.ligato.io/vpp-agent/v3@v3.5.0/tests/robot/suites/trafficIPv6/acl_traffic/acl_trafficIPv6.robot (about)

     1  *** Settings ***
     2  Library      OperatingSystem
     3  #Library      RequestsLibrary
     4  #Library      SSHLibrary      timeout=60s
     5  #Library      String
     6  
     7  Resource     ../../../variables/${VARIABLES}_variables.robot
     8  
     9  Resource     ../../../libraries/all_libs.robot
    10  Resource    ../../../libraries/pretty_keywords.robot
    11  
    12  Force Tags        traffic     IPv6    ExpectedFailure
    13  Suite Setup       Testsuite Setup
    14  Suite Teardown    Suite Cleanup
    15  Test Setup        TestSetup
    16  Test Teardown     TestTeardown
    17  
    18  *** Variables ***
    19  ${VARIABLES}=          common
    20  ${ENV}=                common
    21  ${WAIT_TIMEOUT}=     20s
    22  ${SYNC_SLEEP}=       3s
    23  ${RESYNC_SLEEP}=     20s
    24  
    25  ${AGENT1_VETH_MAC}=    02:00:00:00:00:01
    26  ${AGENT2_VETH_MAC}=    02:00:00:00:00:02
    27  ${REPLY_DATA_FOLDER}            ${CURDIR}/replyACL
    28  ${VARIABLES}=       common
    29  ${ENV}=             common
    30  ${ACL1_NAME}=       acl1_tcp
    31  ${ACL2_NAME}=       acl2_tcp
    32  ${ACL3_NAME}=       acl3_UDP
    33  ${ACL4_NAME}=       acl4_UDP
    34  ${ACL5_NAME}=       acl5_ICMP
    35  ${ACL6_NAME}=       acl6_ICMP
    36  ${E_INTF1}=         IF_AFPIF_VSWITCH_node_2_node2_veth
    37  ${I_INTF1}=         IF_AFPIF_VSWITCH_node_1_node1_veth
    38  ${E_INTF2}=         IF_AFPIF_VSWITCH_node_1_node1_veth
    39  ${I_INTF2}=         IF_AFPIF_VSWITCH_node_2_node2_veth
    40  ${RULE_NM1_1}=         acl1_rule1
    41  ${RULE_NM2_1}=         acl2_rule1
    42  ${RULE_NM3_1}=         acl3_rule1
    43  ${RULE_NM4_1}=         acl3_rule1
    44  
    45  ${ACTION_DENY}=     1
    46  ${ACTION_PERMIT}=   2
    47  ${DEST_NTW}=        fd35::1:0:0:0:0/64
    48  ${SRC_NTW}=         fd35::1:0:0:0:0/64
    49  ${NO_PORT}=
    50  ${TCP_PORT}=     3000
    51  ${UDP_PORT}=     3001
    52  
    53  ${IP_1}=         fd31::1:a:0:0:1
    54  ${IP_2}=         fd32::1:a:0:0:1
    55  ${IP_3}=         fd35::1:a:0:0:10
    56  ${IP_4}=         fd35::1:a:0:0:11
    57  ${IP_3_PREFIX}=   fd35::1:a:0:0:10/64
    58  ${IP_4_PREFIX}=   fd35::1:a:0:0:11/64
    59  ${AFPACKET_INTERNAL_NAME1}=     host-node_1_noeth_1
    60  ${AFPACKET_INTERNAL_NAME1}=     host-node_2_noeth_2
    61  
    62  *** Test Cases ***
    63  Configure Environment
    64      [Tags]    setup
    65      Configure Environment 2      acl_basicIPv6.conf
    66      Sleep    ${SYNC_SLEEP}
    67      Show Interfaces And Other Objects
    68  
    69  Check AfPackets On Vswitch
    70      vat_term: Check Afpacket Interface State    agent_vpp_1    IF_AFPIF_VSWITCH_node_1_node1_veth    enabled=1
    71      vat_term: Check Afpacket Interface State    agent_vpp_1    IF_AFPIF_VSWITCH_node_2_node2_veth    enabled=1
    72  
    73  Create Loopbak Intfs
    74      Create loopback interface loop0 on agent_vpp_1 with ip ${IP_1}/64 and mac 8a:f1:be:90:00:00
    75      Create loopback interface loop1 on agent_vpp_1 with ip ${IP_2}/64 and mac 8a:f1:be:90:20:00
    76  
    77  Check Veth Interface On Agent1
    78      Wait Until Keyword Succeeds   ${WAIT_TIMEOUT}   ${SYNC_SLEEP}    linux: Interface With IP Is Created    node_1    mac=${AGENT1_VETH_MAC}      ipv4=${IP_3_PREFIX}
    79      # status check not implemented in linux plugin
    80      #linux: Check Veth Interface State     agent_vpp_1    agent1_veth     mac=${AGENT1_VETH_MAC}    ipv6=${IP_3}/64    mtu=1500    state=up
    81  
    82  Check Veth Interface On Agent2
    83      Wait Until Keyword Succeeds   ${WAIT_TIMEOUT}   ${SYNC_SLEEP}    linux: Interface With IP Is Created    node_2    mac=${AGENT2_VETH_MAC}      ipv4=${IP_4_PREFIX}
    84      # status check not implemented in linux plugin
    85      #linux: Check Veth Interface State     agent_vpp_1    agent2_veth     mac=${AGENT2_VETH_MAC}    ipv6=${IP_4}/64    mtu=1500    state=up
    86  
    87  Check Bridge Domain Is Created
    88      Wait Until Keyword Succeeds   ${WAIT_TIMEOUT}   ${SYNC_SLEEP}    vat_term: BD Is Created    agent_vpp_1    IF_AFPIF_VSWITCH_node_1_node1_veth    IF_AFPIF_VSWITCH_node_2_node2_veth
    89  
    90  Check loop0 Is Created
    91      Wait Until Keyword Succeeds   ${WAIT_TIMEOUT}   ${SYNC_SLEEP}    vpp_term: Interface Is Created    node=agent_vpp_1    mac=8a:f1:be:90:00:00
    92      Wait Until Keyword Succeeds   ${WAIT_TIMEOUT}   ${SYNC_SLEEP}    vat_term: Check Loopback Interface State    agent_vpp_1    loop0    enabled=1     mac=8a:f1:be:90:00:00    mtu=1500  ipv6=${IP_1}/64
    93  
    94  Check loop1 Is Created
    95      Wait Until Keyword Succeeds   ${WAIT_TIMEOUT}   ${SYNC_SLEEP}    vpp_term: Interface Is Created    node=agent_vpp_1    mac=8a:f1:be:90:20:00
    96      Wait Until Keyword Succeeds   ${WAIT_TIMEOUT}   ${SYNC_SLEEP}    vat_term: Check Loopback Interface State    agent_vpp_1    loop0    enabled=1     mac=8a:f1:be:90:20:00    mtu=1500  ipv6=${IP_2}/64
    97  
    98  Create BD fo Loopbacks
    99      Create Bridge Domain bd2 With Autolearn On agent_vpp_1 with interfaces loop0, loop1
   100  
   101  #Add Routes
   102  #    Create Route On agent_vpp_1 With IP 20.0.0.0/64 With Next Hop ${IP_3} And Vrf Id 0
   103  #    Create Route On agent_vpp_1 With IP 10.0.0.0/64 With Next Hop 20.0.0.11 And Vrf Id 0
   104  
   105  Add Tracing on Vpp for AFpackets
   106      vpp_term: Add Trace Afpacket    agent_vpp_1
   107  
   108  
   109  Show All Objects
   110      Show Interfaces And Other Objects
   111  
   112  Start TCP And UDP Listeners
   113      Start UDP and TCP Ping Servers
   114  
   115  Check Ping Agent1 -> Agent2
   116      linux: Check Ping6    node_1    ${IP_4}
   117  
   118  Check Ping Agent2 -> Agent1
   119      linux: Check Ping6    node_2    ${IP_3}
   120  
   121  Ping Loop0 -> Loop1
   122      vpp_term: Check Ping6 Within Interface    agent_vpp_1     ${IP_2}    loop0    15
   123  
   124  Ping Loop1 -> Loop0
   125      vpp_term: Check Ping6 Within Interface    agent_vpp_1     ${IP_1}    loop1    15
   126  
   127  
   128  #Check UDP Ping Agent1 -> Agent2
   129  #    linux: UDPPing  node_1     ${IP_4}   ${UDP_PORT}
   130  #
   131  #Check TCP Ping Agent1 -> Agent2
   132  #    linux: TCPPing  node_1     ${IP_4}   ${TCP_PORT}
   133  #
   134  #Check UDP Ping Agent2 -> Agent1
   135  #    linux: UDPPing  node_2     ${IP_3}   ${UDP_PORT}
   136  #
   137  #Check TCP Ping Agent2 -> Agent1
   138  #    linux: TCPPing  node_2     ${IP_3}   ${TCP_PORT}
   139  
   140  Show Tracing
   141      vpp_term: Show Trace    agent_vpp_1
   142  
   143      #Sleep   500s
   144  
   145  #Add ACL1_TCP Disable TCP Port
   146  #    Put ACL TCP   agent_vpp_1   ${ACL1_NAME}    ${E_INTF1}    ${I_INTF1}   ${RULE_NM1_1}    ${ACTION_DENY}     ${DEST_NTW}     ${SRC_NTW}   ${TCP_PORT}   ${TCP_PORT}    ${TCP_PORT}   ${TCP_PORT}
   147  #    Sleep    ${SYNC_SLEEP}
   148  #
   149  #Check ACL1_TCP is created
   150  #    Check ACL Reply    agent_vpp_1    ${ACL1_NAME}    ${REPLY_DATA_FOLDER}/reply_acl1_tcp.txt    ${REPLY_DATA_FOLDER}/reply_acl1_tcp_term.txt
   151  #
   152  #ADD ACL1_UDP Disable UDP Port
   153  #    Put ACL UDP    agent_vpp_1    ${ACL3_NAME}    ${E_INTF1}   ${I_INTF1}    ${E_INTF2}    ${I_INTF2}    ${RULE_NM3_1}    ${ACTION_DENY}    ${DEST_NTW}     ${SRC_NTW}   ${UDP_PORT}   ${UDP_PORT}    ${UDP_PORT}   ${UDP_PORT}
   154  #    Sleep    ${SYNC_SLEEP}
   155  #
   156  #Check ACL1_UDP Is Created
   157  #    Check ACL Reply    agent_vpp_1    ${ACL3_NAME}    ${REPLY_DATA_FOLDER}/reply_acl3_UDP.txt    ${REPLY_DATA_FOLDER}/reply_acl3_UDP_term.txt
   158  #
   159  #Show ACLs on VPP
   160  #    vpp_term: Show ACL      agent_vpp_1
   161  #
   162  #Check UDP Not Ping Agent2 -> Agent1 After Disabling
   163  #    linux: UDPPingNot  node_2     ${IP_3}   ${UDP_PORT}
   164  #
   165  #Check UDP Not Ping Agent1 -> Agent2 After Disabling
   166  #    linux: UDPPingNot  node_1     ${IP_4}   ${UDP_PORT}
   167  #
   168  #Check TCP Not Ping Agent1 -> Agent2
   169  #    linux: TCPPingNot  node_1     ${IP_4}   ${TCP_PORT}
   170  #
   171  #Check TCP Not Ping Agent2 -> Agent1
   172  #    linux: TCPPingNot  node_2     ${IP_3}   ${TCP_PORT}
   173  #
   174  #Remove Agent Nodes
   175  #    Remove All Nodes
   176  #    Sleep    ${RESYNC_SLEEP}
   177  #
   178  #Start Agent Nodes Again
   179  #    Add Agent VPP Node    agent_vpp_1    vswitch=${TRUE}
   180  #    Add Agent Node    node_1
   181  #    Add Agent Node    node_2
   182  #    Sleep    ${SYNC_SLEEP}
   183  #
   184  #Check AfPackets On Vswitch After Resync
   185  #    vat_term: Check Afpacket Interface State    agent_vpp_1    IF_AFPIF_VSWITCH_node_1_node1_veth    enabled=1
   186  #    vat_term: Check Afpacket Interface State    agent_vpp_1    IF_AFPIF_VSWITCH_node_2_node2_veth    enabled=1
   187  #
   188  #Check Veth Interface On Agent1 After Resync
   189  #    linux: Interface With IP Is Created    node_1    mac=${AGENT1_VETH_MAC}      ipv6=${IP_3}/64
   190  #    # status check not implemented in linux plugin
   191  #    #linux: Check Veth Interface State     agent_vpp_1    agent1_veth     mac=${AGENT1_VETH_MAC}    ipv6=${IP_3}/64    mtu=1500    state=up
   192  #
   193  #Check Veth Interface On Agent2 After Resync
   194  #   linux: Interface With IP Is Created    node_2    mac=${AGENT2_VETH_MAC}      ipv6=${IP_4}/64
   195  #    # status check not implemented in linux plugin
   196  #    #linux: Check Veth Interface State     agent_vpp_1    agent2_veth     mac=${AGENT2_VETH_MAC}    ipv6=${IP_4}/64    mtu=1500    state=up
   197  #
   198  #Check Bridge Domain Is Created After Resync
   199  #    vat_term: BD Is Created    agent_vpp_1    IF_AFPIF_VSWITCH_node_1_node1_veth    IF_AFPIF_VSWITCH_node_2_node2_veth
   200  #
   201  #Show All Objects After Resync
   202  #    Show Interfaces And Other Objects
   203  #
   204  #Show ACLs on VPP After Resync
   205  #    vpp_term: Show ACL      agent_vpp_1
   206  #
   207  #Start TCP And UDP Listeners After Resync
   208  #    Start UDP and TCP Ping Servers
   209  #
   210  #Check Ping Agent1 -> Agent2 After Resync
   211  #    linux: Check Ping    node_1    ${IP_4}
   212  #
   213  #Check Ping Agent2 -> Agent1 After Resync
   214  #    linux: Check Ping    node_2    ${IP_3}
   215  #
   216  #Check UDP Not Ping Agent1 -> Agent2 After Resync
   217  #    linux: UDPPingNot  node_1     ${IP_4}   ${UDP_PORT}
   218  #
   219  #Check UDP Not Ping Agent2 -> Agent1 After Resync
   220  #    linux: UDPPingNot  node_2     ${IP_3}   ${UDP_PORT}
   221  #
   222  #Check TCP Not Ping Agent1 -> Agent2 After Resync
   223  #    linux: TCPPingNot  node_1     ${IP_4}   ${TCP_PORT}
   224  #
   225  #Check TCP Not Ping Agent2 -> Agent1 After Resync
   226  #    linux: TCPPingNot  node_2     ${IP_3}   ${TCP_PORT}
   227  
   228  Done
   229      [Tags]    debug
   230      No Operation
   231  
   232  
   233  Remove Agent Nodes Again
   234      Remove All Nodes
   235  
   236  *** Keywords ***
   237  Show Interfaces And Other Objects
   238      vpp_term: Show Interfaces    agent_vpp_1
   239      Write To Machine    agent_vpp_1_term    show int addr
   240      Write To Machine    agent_vpp_1_term    show h
   241      Write To Machine    agent_vpp_1_term    show br
   242      Write To Machine    agent_vpp_1_term    show br 1 detail
   243      Write To Machine    agent_vpp_1_term    show err
   244      vpp_term: Show L2fib    agent_vpp_1
   245      vpp_term: Show IP Fib Table    agent_vpp_1   0
   246      vpp_term: Show IP Fib     agent_vpp_1
   247      vat_term: Interfaces Dump    agent_vpp_1
   248      Execute In Container    agent_vpp_1    ip a
   249      Execute In Container    node_1    ip a
   250      Execute In Container    node_2    ip a
   251      linux: Check Processes on Node      node_1
   252      linux: Check Processes on Node      node_2
   253      Make Datastore Snapshots    before_resync
   254  
   255  Start UDP and TCP Ping Servers
   256      linux: Run TCP Ping Server On Node      node_1     ${TCP_PORT}
   257      linux: Run UDP Ping Server On Node      node_1     ${UDP_PORT}
   258      linux: Run TCP Ping Server On Node      node_2     ${TCP_PORT}
   259      linux: Run UDP Ping Server On Node      node_2     ${UDP_PORT}
   260      linux: Check Processes on Node      node_1
   261      linux: Check Processes on Node      node_2
   262      Sleep    ${SYNC_SLEEP}
   263  
   264  
   265  TestSetup
   266      Make Datastore Snapshots    ${TEST_NAME}_test_setup
   267  
   268  TestTeardown
   269      Make Datastore Snapshots    ${TEST_NAME}_test_teardown
   270  
   271  Suite Cleanup
   272      Stop SFC Controller Container
   273      Testsuite Teardown