go.ligato.io/vpp-agent/v3@v3.5.0/tests/robot/suites/traffic/ip_route/test_inter_vrf_routes.robot (about)

     1  *** Settings ***
     2  
     3  Library     OperatingSystem
     4  Library     String
     5  #Library     RequestsLibrary
     6  
     7  Resource     ../../../variables/${VARIABLES}_variables.robot
     8  Resource    ../../../libraries/all_libs.robot
     9  Resource    ../../../libraries/pretty_keywords.robot
    10  
    11  Force Tags        traffic     IPv4
    12  Suite Setup       Run Keywords    Discard old results     Test Setup
    13  Suite Teardown    Test Teardown
    14  
    15  *** Variables ***
    16  ${VARIABLES}=          common
    17  ${ENV}=                common
    18  ${WAIT_TIMEOUT}=       20s
    19  ${SYNC_SLEEP}=         2s
    20  ${FINAL_SLEEP}=        1s
    21  ${IP_1}=               10.1.1.1
    22  ${IP_2}=               10.1.1.2
    23  ${IP_3}=               10.1.2.1
    24  ${IP_4}=               10.1.2.2
    25  ${NET1}=               10.1.1.0
    26  ${NET2}=               10.1.2.0
    27  
    28  *** Test Cases ***
    29  # Non default VRF table 2 used in Agent VPP Node agent_vpp_2
    30  Start Two Agents And Then Configure With Default And Non Default VRF
    31      Add Agent VPP Node    agent_vpp_1
    32      Add Agent VPP Node    agent_vpp_2
    33  
    34      Create Master memif0 on agent_vpp_1 with IP ${IP_1}, MAC 02:f1:be:90:00:00, key 1 and m0.sock socket
    35      Create Slave memif0 on agent_vpp_2 with IP ${IP_2}, MAC 02:f1:be:90:00:02, key 1 and m0.sock socket
    36  
    37      Then Create VRF Table    node=agent_vpp_1    id=2    protocol=ipv4
    38      Then Create VRF Table    node=agent_vpp_2    id=2    protocol=ipv4
    39  
    40      Create Master memif1 on agent_vpp_1 with VRF 2, IP ${IP_3}, MAC 02:f1:be:90:02:00, key 1 and m1.sock socket
    41      Create Slave memif1 on agent_vpp_2 with VRF 2, IP ${IP_4}, MAC 02:f1:be:90:02:02, key 1 and m1.sock socket
    42  
    43      Wait Until Keyword Succeeds   ${WAIT_TIMEOUT}   ${SYNC_SLEEP}    List of interfaces On agent_vpp_1 Should Contain Interface memif1/1
    44      Wait Until Keyword Succeeds   ${WAIT_TIMEOUT}   ${SYNC_SLEEP}    List of interfaces On agent_vpp_2 Should Contain Interface memif1/1
    45      Wait Until Keyword Succeeds   ${WAIT_TIMEOUT}   ${SYNC_SLEEP}    List of interfaces On agent_vpp_1 Should Contain Interface memif2/1
    46      Wait Until Keyword Succeeds   ${WAIT_TIMEOUT}   ${SYNC_SLEEP}    List of interfaces On agent_vpp_2 Should Contain Interface memif2/1
    47      Wait Until Keyword Succeeds   ${WAIT_TIMEOUT}   ${SYNC_SLEEP}    IP Fib Table 0 On agent_vpp_1 Should Contain Route With IP ${IP_1}/32
    48      Wait Until Keyword Succeeds   ${WAIT_TIMEOUT}   ${SYNC_SLEEP}    IP Fib Table 2 On agent_vpp_1 Should Contain Route With IP ${IP_3}/32
    49      Wait Until Keyword Succeeds   ${WAIT_TIMEOUT}   ${SYNC_SLEEP}    IP Fib Table 0 On agent_vpp_2 Should Contain Route With IP ${IP_2}/32
    50      Wait Until Keyword Succeeds   ${WAIT_TIMEOUT}   ${SYNC_SLEEP}    IP Fib Table 2 On agent_vpp_2 Should Contain Route With IP ${IP_4}/32
    51  
    52  
    53  Check Normal Ping Inside VRF
    54      # try ping
    55      Ping From agent_vpp_1 To ${IP_2}
    56      Ping From agent_vpp_2 To ${IP_1}
    57  
    58  Ping From Source Agent 1
    59      Ping On agent_vpp_1 With IP ${IP_2}, Source memif1/1
    60      Ping On agent_vpp_1 With IP ${IP_4}, Source memif2/1
    61  
    62  Ping From Source Agent 2
    63  #    ${int}=    Get Interface Internal Name    agent_vpp_2    memif0
    64  #    Ping On agent_vpp_2 With IP 10.1.1.1, Source ${int}
    65      Ping On agent_vpp_2 With IP ${IP_1}, Source memif1/1
    66      Ping On agent_vpp_2 With IP ${IP_3}, Source memif2/1
    67  
    68  Ping Should Fail
    69      #no route from vrf 0 to vrf 2, then shoul fail
    70      Command: Ping On agent_vpp_1 With IP ${IP_4}, Source memif1/1 should fail
    71      Command: Ping On agent_vpp_1 With IP ${IP_3}, Source memif1/1 should fail
    72      Command: Ping On agent_vpp_2 With IP ${IP_4}, Source memif1/1 should fail
    73      Command: Ping On agent_vpp_2 With IP ${IP_3}, Source memif1/1 should fail
    74  
    75  Create Route For Inter Vrf Routing
    76      Create Route On agent_vpp_1 With IP ${NET2}/24 With Next Hop ${IP_2} And Vrf Id 0
    77      Create Route On agent_vpp_1 With IP ${NET1}/24 With Next Hop ${IP_4} And Vrf Id 2
    78      Create Route On agent_vpp_2 With IP ${NET2}/24 With Next Hop VRF 2 From Vrf Id 0 And Type 1
    79      Create Route On agent_vpp_2 With IP ${NET1}/24 With Next Hop VRF 0 From Vrf Id 2 And Type 1
    80  
    81  Config Done
    82      No Operation
    83  
    84  Check Inter VRF Routing
    85      Show IP Fib On agent_vpp_1
    86      IP Fib Table 0 On agent_vpp_1 Should Contain Route With IP ${NET2}/24
    87      IP Fib Table 0 On agent_vpp_1 Should Contain Vrf ipv4 via ${IP_2} memif1/1
    88      Show IP Fib On agent_vpp_2
    89      IP Fib Table 2 On agent_vpp_2 Should Contain Route With IP ${NET1}/24
    90      IP Fib Table 2 On agent_vpp_2 Should Contain Vrf unicast lookup in ipv4-VRF:
    91      IP Fib Table 0 On agent_vpp_2 Should Contain Route With IP ${NET2}/24
    92      IP Fib Table 0 On agent_vpp_2 Should Contain Vrf unicast lookup in ipv4-VRF:
    93  
    94  Check Route With Ping
    95      Ping On agent_vpp_1 With IP ${IP_4}, Source memif1/1
    96      Ping On agent_vpp_1 With IP ${IP_4}, Source memif2/1
    97      Ping On agent_vpp_1 With IP ${IP_3}, Source memif1/1
    98  
    99  Final Sleep For Manual Checking
   100      Sleep   ${FINAL_SLEEP}
   101  
   102  *** Keywords ***
   103  List of interfaces On ${node} Should Contain Interface ${int}
   104      ${out}=   vpp_term: Show Interfaces    ${node}
   105      Should Match Regexp        ${out}  ${int}
   106  
   107  IP Fib Table ${table_id} On ${node} Should Contain Vrf ${inter_vrf_string}
   108      ${out}=    vpp_term: Show IP Fib Table    ${node}    ${table_id}
   109      Should Contain  ${out}  ${inter_vrf_string}