Merge "test_spec: LTD: MatchAction Performance testing"
[vswitchperf.git] / tools / pkt_gen / ixnet / ixnetrfc2544.tcl
index f6df071..e70ca87 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/env tclsh
 
 # Copyright (c) 2014, Ixia
-# Copyright (c) 2015, Intel Corporation
+# Copyright (c) 2015-2016, Intel Corporation
 # All rights reserved.
 #
 # Redistribution and use in source and binary forms, with or without
@@ -83,13 +83,16 @@ proc startRfc2544Test { testSpec trafficSpec } {
 
     set duration                [dict get $testSpec duration]
 
+    # RFC2544 to IXIA terminology mapping (it affects Ixia configuration inside this script):
+    # Test    => Trial
+    # Trial   => Iteration
     if {$binary} {
-        set numTrials           [dict get $testSpec trials]
+        set numTests            [dict get $testSpec tests]
         set frameRate           100
         set tolerance           [dict get $testSpec lossrate]
         set loadType            binary
     } else {
-        set numTrials           1
+        set numTests            1
         set frameRate           [dict get $testSpec framerate]
         set tolerance           0.0
         set loadType            custom
@@ -97,6 +100,13 @@ proc startRfc2544Test { testSpec trafficSpec } {
 
     set learningFrames          True
 
+    set L2CountValue            1
+    set L2Increment             False
+    set L3ValueType             singleValue
+    set L3CountValue            1
+    set L4ValueType             singleValue
+    set L4CountValue            1
+
     if {$learningFrames} {
         set learningFrequency   oncePerTest
         set fastPathEnable      True
@@ -106,20 +116,25 @@ proc startRfc2544Test { testSpec trafficSpec } {
     }
 
     set multipleStreams         [dict get $testSpec multipleStreams]
+    set streamType              [dict get $testSpec streamType]
+
     if {($multipleStreams < 0)} {
-        set multipleStreams    0
+        set multipleStreams     0
+    } elseif {($multipleStreams > 65535)} {
+        set multipleStreams     65535
     }
-    set numflows               64000
 
     if {$multipleStreams} {
-        if {($multipleStreams > 65535)} {
-            set numflows       65535
+        if {($streamType == "L2")} {
+            set L2CountValue    $multipleStreams
+            set L2Increment     True
+        } elseif {($streamType == "L3")} {
+            set L3ValueType     increment
+            set L3CountValue    $multipleStreams
         } else {
-            set numflows       $multipleStreams
+            set L4ValueType     increment
+            set L4CountValue    $multipleStreams
         }
-        set multipleStreams     increment
-    } else {
-        set multipleStreams     singleValue
     }
 
     set fastConvergence         True
@@ -130,13 +145,14 @@ proc startRfc2544Test { testSpec trafficSpec } {
     # extract nested dictionaries
     set trafficSpec_l2          [dict get $trafficSpec l2]
     set trafficSpec_l3          [dict get $trafficSpec l3]
+    set trafficSpec_l4          [dict get $trafficSpec l4]
     set trafficSpec_vlan        [dict get $trafficSpec vlan]
 
     set frameSize               [dict get $trafficSpec_l2 framesize]
     set srcMac                  [dict get $trafficSpec_l2 srcmac]
     set dstMac                  [dict get $trafficSpec_l2 dstmac]
-    set srcPort                 [dict get $trafficSpec_l2 srcport]
-    set dstPort                 [dict get $trafficSpec_l2 dstport]
+    set srcPort                 [dict get $trafficSpec_l4 srcport]
+    set dstPort                 [dict get $trafficSpec_l4 dstport]
 
     set proto                   [dict get $trafficSpec_l3 proto]
     set srcIp                   [dict get $trafficSpec_l3 srcip]
@@ -145,7 +161,7 @@ proc startRfc2544Test { testSpec trafficSpec } {
 
     if {$frameSize < 68 } {
         if {$rfc2544TestType == "back2back"} {
-            puts "WARNING: Packet size too small, packet size will be \
+            puts "INFO: Packet size too small, packet size will be \
                   increased to 68 for this test"
         }
     }
@@ -259,7 +275,7 @@ proc startRfc2544Test { testSpec trafficSpec } {
      -destMacRetryDelay 5 \
      -largeErrorThreshhold 2 \
      -refreshLearnedInfoBeforeApply False \
-     -enableMinFrameSize False \
+     -enableMinFrameSize True \
      -macChangeOnFly False \
      -waitTime 1 \
      -enableInstantaneousStatsSupport False \
@@ -692,9 +708,9 @@ proc startRfc2544Test { testSpec trafficSpec } {
     set sg_lan [ixNet add $ixNetSG_Stack(1)/protocols/static lan]
     ixNet setMultiAttrs $sg_lan \
      -atmEncapsulation ::ixNet::OBJ-null \
-     -count 1 \
+     -count $L2CountValue \
      -countPerVc 1 \
-     -enableIncrementMac False \
+     -enableIncrementMac $L2Increment \
      -enableIncrementVlan False \
      -enableSiteId False \
      -enableVlan False \
@@ -1072,9 +1088,9 @@ proc startRfc2544Test { testSpec trafficSpec } {
     set sg_lan [ixNet add $ixNetSG_Stack(1)/protocols/static lan]
     ixNet setMultiAttrs $sg_lan \
      -atmEncapsulation ::ixNet::OBJ-null \
-     -count 1 \
+     -count $L2CountValue \
      -countPerVc 1 \
-     -enableIncrementMac False \
+     -enableIncrementMac $L2Increment \
      -enableIncrementVlan False \
      -enableSiteId False \
      -enableVlan False \
@@ -1348,20 +1364,20 @@ proc startRfc2544Test { testSpec trafficSpec } {
     #
     set sg_field $ixNetSG_Stack(3)/field:"ethernet.header.destinationAddress-1"
     ixNet setMultiAttrs $sg_field \
-     -singleValue {00:00:00:00:00:00} \
+     -singleValue $dstMac \
      -seed {1} \
      -optionalEnabled True \
      -fullMesh False \
      -valueList {{00:00:00:00:00:00}} \
-     -stepValue {00:00:00:00:00:00} \
+     -stepValue {00:00:00:00:00:01} \
      -fixedBits {00:00:00:00:00:00} \
-     -fieldValue {00:00:00:00:00:00} \
+     -fieldValue $dstMac \
      -auto False \
      -randomMask {00:00:00:00:00:00} \
      -trackingEnabled False \
      -valueType singleValue \
      -activeFieldChoice False \
-     -startValue {00:00:00:00:00:00} \
+     -startValue $dstMac \
      -countValue {1}
     sg_commit
     set sg_field [lindex [ixNet remapIds $sg_field] 0]
@@ -2074,16 +2090,16 @@ proc startRfc2544Test { testSpec trafficSpec } {
      -optionalEnabled True \
      -fullMesh False \
      -valueList {{0.0.0.0}} \
-     -stepValue {0.0.0.0} \
+     -stepValue {0.0.0.1} \
      -fixedBits {0.0.0.0} \
      -fieldValue $dstIp \
      -auto False \
      -randomMask {0.0.0.0} \
      -trackingEnabled False \
-     -valueType singleValue \
+     -valueType $L3ValueType \
      -activeFieldChoice False \
-     -startValue {0.0.0.0} \
-     -countValue {1}
+     -startValue $dstIp \
+     -countValue $L3CountValue
     sg_commit
     set sg_field [lindex [ixNet remapIds $sg_field] 0]
 
@@ -2824,10 +2840,10 @@ proc startRfc2544Test { testSpec trafficSpec } {
      -auto False \
      -randomMask {63} \
      -trackingEnabled False \
-     -valueType $multipleStreams \
+     -valueType $L4ValueType \
      -activeFieldChoice False \
      -startValue {0} \
-     -countValue $numflows
+     -countValue $L4CountValue
     sg_commit
     set sg_field [lindex [ixNet remapIds $sg_field] 0]
 
@@ -2983,20 +2999,20 @@ proc startRfc2544Test { testSpec trafficSpec } {
     #
     set sg_field $ixNetSG_Stack(3)/field:"ethernet.header.destinationAddress-1"
     ixNet setMultiAttrs $sg_field \
-     -singleValue {00:01:00:05:08:00} \
+     -singleValue $dstMac \
      -seed {1} \
      -optionalEnabled True \
      -fullMesh False \
-     -valueList {{LearntInfo}} \
-     -stepValue {00:00:00:00:00:00} \
+     -valueList {{00:00:00:00:00:00}} \
+     -stepValue {00:00:00:00:00:01} \
      -fixedBits {00:00:00:00:00:00} \
-     -fieldValue {00:01:00:05:08:00} \
+     -fieldValue $dstMac \
      -auto False \
      -randomMask {00:00:00:00:00:00} \
      -trackingEnabled False \
      -valueType singleValue \
      -activeFieldChoice False \
-     -startValue {00:00:00:00:00:00} \
+     -startValue $dstMac \
      -countValue {1}
     sg_commit
     set sg_field [lindex [ixNet remapIds $sg_field] 0]
@@ -3010,7 +3026,7 @@ proc startRfc2544Test { testSpec trafficSpec } {
      -seed {1} \
      -optionalEnabled True \
      -fullMesh False \
-     -valueList {{LearntInfo}} \
+     -valueList {{00:00:00:00:00:00}} \
      -stepValue {00:00:00:00:00:00} \
      -fixedBits {00:00:00:00:00:00} \
      -fieldValue {00:00:00:00:00:01} \
@@ -3709,16 +3725,16 @@ proc startRfc2544Test { testSpec trafficSpec } {
      -optionalEnabled True \
      -fullMesh False \
      -valueList {{0.0.0.0}} \
-     -stepValue {0.0.0.0} \
+     -stepValue {0.0.0.1} \
      -fixedBits {0.0.0.0} \
      -fieldValue $dstIp \
      -auto False \
      -randomMask {0.0.0.0} \
      -trackingEnabled False \
-     -valueType singleValue \
+     -valueType $L3ValueType \
      -activeFieldChoice False \
-     -startValue {0.0.0.0} \
-     -countValue {1}
+     -startValue $dstIp \
+     -countValue $L3CountValue
     sg_commit
     set sg_field [lindex [ixNet remapIds $sg_field] 0]
 
@@ -4459,10 +4475,10 @@ proc startRfc2544Test { testSpec trafficSpec } {
      -auto False \
      -randomMask {63} \
      -trackingEnabled False \
-     -valueType $multipleStreams \
+     -valueType $L4ValueType \
      -activeFieldChoice False \
      -startValue {0} \
-     -countValue $numflows
+     -countValue $L4CountValue
     sg_commit
     set sg_field [lindex [ixNet remapIds $sg_field] 0]
 
@@ -7761,11 +7777,11 @@ proc startRfc2544Test { testSpec trafficSpec } {
          -inputParameters {{}}
         ixNet setMultiAttrs $sg_rfc2544throughput/testConfig \
          -protocolItem {} \
-         -enableMinFrameSize False \
+         -enableMinFrameSize True \
          -framesize $frameSize \
          -reportTputRateUnit mbps \
          -duration $duration \
-         -numtrials $numTrials \
+         -numtrials $numTests \
          -trafficType constantLoading \
          -burstSize 1 \
          -framesPerBurstGap 1 \
@@ -7938,7 +7954,7 @@ proc startRfc2544Test { testSpec trafficSpec } {
          -rfc2889ordering noOrdering \
          -floodedFramesEnabled False \
          -duration $duration \
-         -numtrials $numTrials \
+         -numtrials $numTests \
          -trafficType constantLoading \
          -burstSize 1 \
          -framesPerBurstGap 1 \
@@ -7976,7 +7992,7 @@ proc startRfc2544Test { testSpec trafficSpec } {
          -customLoadUnit percentMaxRate \
          -randomLoadUnit percentMaxRate \
          -incrementLoadUnit percentMaxRate \
-         -binaryResolution 100 \
+         -binaryResolution 1000 \
          -binaryBackoff 50 \
          -binaryTolerance $tolerance \
          -initialIncrementLoadRate 100 \
@@ -7987,7 +8003,7 @@ proc startRfc2544Test { testSpec trafficSpec } {
          -countRandomLoadRate 1 \
          -numFrames {100000} \
          -loadRate 100 \
-         -enableMinFrameSize False \
+         -enableMinFrameSize True \
          -gap 3 \
          -generateTrackingOptionAggregationFiles False \
          -sendFullyMeshed False \