Add Map-Register LISP SB performance test 59/35959/3
authorLorand Jakab <lojakab@cisco.com>
Tue, 8 Mar 2016 23:10:58 +0000 (15:10 -0800)
committerGerrit Code Review <gerrit@opendaylight.org>
Mon, 14 Mar 2016 12:05:16 +0000 (12:05 +0000)
Change-Id: I1c0a4a599733d3e3b5c24756fcfcf116e8db5dcd
Signed-off-by: Lorand Jakab <lojakab@cisco.com>
csit/suites/lispflowmapping/performance/010_Southbound_MapRequest.robot
tools/odl-lispflowmapping-performance-tests/create_lisp_control_plane_pcap.py [moved from tools/odl-lispflowmapping-performance-tests/create_map_request_pcap.py with 66% similarity]

index e6864f372a1fa173b54e398b0c59e1515566075b..0dbff1d42c6d6f29d92061966a7b1589959e3e03 100644 (file)
@@ -1,5 +1,5 @@
 *** Settings ***
-Documentation     Test suite to determine the southbound Map-Request serving rate
+Documentation     LISP southbound performance tests
 Suite Setup       Prepare Environment
 Suite Teardown    Destroy Environment
 Library           Collections
@@ -14,11 +14,12 @@ Variables         ../../../variables/Variables.py
 ${MAPPINGS}       10000
 ${LISP_SCAPY}     https://raw.githubusercontent.com/intouch/py-lispnetworking/master/lisp.py
 ${TOOLS_DIR}      ${CURDIR}/../../../../tools/odl-lispflowmapping-performance-tests/
-${PCAP_CREATOR}    ${TOOLS_DIR}/create_map_request_pcap.py
+${PCAP_CREATOR}    ${TOOLS_DIR}/create_lisp_control_plane_pcap.py
 ${MAPPING_BLASTER}    ${TOOLS_DIR}/mapping_blaster.py
 ${REPLAY_PPS}     100000
 ${REPLAY_CNT}     1000
-${REPLAY_FILE}    encapsulated-map-requests-sequential.pcap
+${REPLAY_FILE_MREQ}    encapsulated-map-requests-sequential.pcap
+${REPLAY_FILE_MREG}    map-registers-sequential.pcap
 ${RPCS_RESULTS_FILE}    rpcs.csv
 ${PPS_RESULTS_FILE}    pps.csv
 
@@ -31,27 +32,40 @@ Add Simple IPv4 Mappings
     Log    ${add_seconds}
     Set Suite Variable    ${add_seconds}
 
-Generate Test Traffic
+Generate Map-Request Test Traffic
     Reset Stats
     ${result}=    Run Process With Logging And Status Check    /usr/local/bin/udpreplay    --pps    ${REPLAY_PPS}    --repeat    ${REPLAY_CNT}
-    ...    --host    ${ODL_SYSTEM_IP}    --port    4342    ${REPLAY_FILE}
+    ...    --host    ${ODL_SYSTEM_IP}    --port    4342    ${REPLAY_FILE_MREQ}
     ${partial}=    Fetch From Left    ${result.stdout}    s =
     Log    ${partial}
-    ${get_seconds}=    Fetch From Right    ${partial}    ${SPACE}
-    ${get_seconds}=    Convert To Number    ${get_seconds}
-    Log    ${get_seconds}
-    Set Suite Variable    ${get_seconds}
+    ${get_seconds_mreq}=    Fetch From Right    ${partial}    ${SPACE}
+    ${get_seconds_mreq}=    Convert To Number    ${get_seconds_mreq}
+    Log    ${get_seconds_mreq}
+    Set Suite Variable    ${get_seconds_mreq}
+
+Generate Map-Register Test Traffic
+    ${result}=    Run Process With Logging And Status Check    /usr/local/bin/udpreplay    --pps    ${REPLAY_PPS}    --repeat    ${REPLAY_CNT}
+    ...    --host    ${ODL_SYSTEM_IP}    --port    4342    ${REPLAY_FILE_MREG}
+    ${partial}=    Fetch From Left    ${result.stdout}    s =
+    Log    ${partial}
+    ${get_seconds_mreg}=    Fetch From Right    ${partial}    ${SPACE}
+    ${get_seconds_mreg}=    Convert To Number    ${get_seconds_mreg}
+    Log    ${get_seconds_mreg}
+    Set Suite Variable    ${get_seconds_mreg}
 
 Compute And Export Results
     ${rpcs}=    Evaluate    ${MAPPINGS}/${add_seconds}
     Log    ${rpcs}
     Create File    ${RPCS_RESULTS_FILE}    store/s\n
     Append To File    ${RPCS_RESULTS_FILE}    ${rpcs}\n
-    ${txmrep}=    Get Transmitted Map-Requests Stats
-    ${pps}=    Evaluate    ${txmrep}/${get_seconds}
-    Log    ${pps}
-    Create File    ${PPS_RESULTS_FILE}    replies/s\n
-    Append To File    ${PPS_RESULTS_FILE}    ${pps}\n
+    ${tx_mrep}=    Get Transmitted Map-Requests Stats
+    ${pps_mrep}=    Evaluate    ${tx_mrep}/${get_seconds_mreq}
+    Log    ${pps_mrep}
+    Create File    ${PPS_RESULTS_FILE}    replies/s,notifies/s\n
+    ${tx_mnot}=    Get Transmitted Map-Notifies Stats
+    ${pps_mnot}=    Evaluate    ${tx_mnot}/${get_seconds_mreg}
+    Log    ${pps_mnot}
+    Append To File    ${PPS_RESULTS_FILE}    ${pps_mrep},${pps_mnot}\n
 
 *** Keywords ***
 Reset Stats
@@ -66,10 +80,22 @@ Get Transmitted Map-Requests Stats
     ${stats}=    Get From Dictionary    ${output}    control-message-stats
     ${ctrlmsg}=    Get From Dictionary    ${stats}    control-message
     ${replies}=    Get From List    ${ctrlmsg}    2
-    ${txmrep}=    Get From Dictionary    ${replies}    tx-count
-    ${txmrep}=    Convert To Integer    ${txmrep}
-    Log    ${txmrep}
-    [Return]    ${txmrep}
+    ${tx_mrep}=    Get From Dictionary    ${replies}    tx-count
+    ${tx_mrep}=    Convert To Integer    ${tx_mrep}
+    Log    ${tx_mrep}
+    [Return]    ${tx_mrep}
+
+Get Transmitted Map-Notifies Stats
+    ${resp}=    RequestsLibrary.Post Request    session    ${LFM_SB_RPC_API}:get-stats
+    Log    ${resp.content}
+    ${output}=    Get From Dictionary    ${resp.json()}    output
+    ${stats}=    Get From Dictionary    ${output}    control-message-stats
+    ${ctrlmsg}=    Get From Dictionary    ${stats}    control-message
+    ${notifies}=    Get From List    ${ctrlmsg}    4
+    ${tx_mnot}=    Get From Dictionary    ${notifies}    tx-count
+    ${tx_mnot}=    Convert To Integer    ${tx_mnot}
+    Log    ${tx_mnot}
+    [Return]    ${tx_mnot}
 
 Prepare Environment
     Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
@@ -79,4 +105,5 @@ Prepare Environment
 Destroy Environment
     Delete All Sessions
     Remove File    ${TOOLS_DIR}/lisp.py*
-    Remove File    ${REPLAY_FILE}
+    Remove File    ${REPLAY_FILE_MREQ}
+    Remove File    ${REPLAY_FILE_MREG}
similarity index 66%
rename from tools/odl-lispflowmapping-performance-tests/create_map_request_pcap.py
rename to tools/odl-lispflowmapping-performance-tests/create_lisp_control_plane_pcap.py
index 76d459092c4ff9e44c5794a0b68a18d8ae1e037a..5dd11181557e09571549e34230b2f90f158d24cd 100755 (executable)
@@ -1,10 +1,10 @@
 #!/usr/bin/env python
 """
-Script to generate a pcap file with n Map-Request packets with EID records
-increasing sequentially and (optionally) another pcap file with n Map-Request
-packets that have random EIDs
+Script to generate files with n Map-Request packets and n Map-Register packets
+with EID records increasing sequentially and (optionally) files with n
+Map-Request packets and n Map-Register packets that have random EIDs
 
-Use `./create_map_request_pcap.py --help` to see options
+Use `./create_lisp_control_plane_pcap.py --help` to see options
 """
 
 import argparse
@@ -16,7 +16,7 @@ __author__ = "Lori Jakab"
 __copyright__ = "Copyright (c) 2015, Cisco Systems, Inc."
 __license__ = "New-style BSD"
 __email__ = "lojakab@cisco.com"
-__version__ = "0.0.2"
+__version__ = "0.0.3"
 
 
 def generate_eids_random(base, n):
@@ -76,6 +76,40 @@ def generate_map_request(eid):
                                    request_records=record)
     return packet
 
+
+def generate_map_register(eid, rloc):
+    """Create a LISP Map-Register packet as a Scapy object
+    Args:
+        :param eid: A string used as the EID record
+        :param rloc: A string used as the RLOC
+    Returns:
+        :return : returns a Scapy Map-Request packet object
+    """
+    sport1 = random.randint(60000, 65000)
+    sport2 = random.randint(60000, 65000)
+    rnonce = random.randint(0, 2**63)
+
+    rlocs = [lisp.LISP_Locator_Record(priority=1, weight=1,
+                                      multicast_priority=255,
+                                      multicast_weight=0,
+                                      reserved=0, locator_flags=5,
+                                      locator_afi=1, address=rloc)]
+
+    record = [lisp.LISP_MapRecord(record_ttl=1440, locator_count=1,
+                                  eid_prefix_length=32, action=0,
+                                  authoritative=1, reserved=0,
+                                  map_version_number=0, record_afi=1,
+                                  record_address=eid, locators=rlocs)]
+
+    packet = lisp.Ether(dst=dst_mac, src=src_mac)
+    packet /= lisp.IP(dst=dst_rloc, src=src_rloc)
+    packet /= lisp.UDP(sport=sport1, dport=4342)
+    packet /= lisp.LISP_MapRegister(ptype=3, nonce=rnonce,
+                                    register_flags=1,
+                                    register_count=1,
+                                    register_records=record)
+    return packet
+
 parser = argparse.ArgumentParser(description='Create a Map-Request trace file')
 
 parser.add_argument('--dst-mac', default='00:00:00:00:00:00',
@@ -112,18 +146,24 @@ src_eid = in_args.src_eid
 increment = in_args.increment
 
 seq_eids = generate_eids_sequential(in_args.base_eid, in_args.requests)
-seq_pkts = []
+seq_pkts_mreq = []
+seq_pkts_mreg = []
 
 for eid in seq_eids:
-    seq_pkts.append(generate_map_request(eid))
+    seq_pkts_mreq.append(generate_map_request(eid))
+    seq_pkts_mreg.append(generate_map_register(eid, eid))
 
-lisp.wrpcap("encapsulated-map-requests-sequential.pcap", seq_pkts)
+lisp.wrpcap("encapsulated-map-requests-sequential.pcap", seq_pkts_mreq)
+lisp.wrpcap("map-registers-sequential.pcap", seq_pkts_mreg)
 
 if in_args.random is True:
     rand_eids = generate_eids_random(in_args.base_eid, in_args.requests)
-    rand_pkts = []
+    rand_pkts_mreq = []
+    rand_pkts_mreg = []
 
     for eid in rand_eids:
-        rand_pkts.append(generate_map_request(eid))
+        rand_pkts_mreq.append(generate_map_request(eid))
+        rand_pkts_mreg.append(generate_map_register(eid, eid))
 
-    lisp.wrpcap("encapsulated-map-requests-random.pcap", rand_pkts)
+    lisp.wrpcap("encapsulated-map-requests-random.pcap", rand_pkts_mreq)
+    lisp.wrpcap("map-registers-random.pcap", rand_pkts_mreg)