05899aa5f02297219a5d0d0d03f747162a62f8e6
[vswitchperf.git] / tools / pkt_gen / ixnet / ixnetrfc2544v2.tcl
1 #!/usr/bin/env tclsh
2
3 # Copyright (c) 2014, Ixia
4 # Copyright (c) 2015-2016, Intel Corporation
5 # All rights reserved.
6 #
7 # Redistribution and use in source and binary forms, with or without
8 # modification, are permitted provided that the following conditions
9 # are met:
10 #
11 # 1. Redistributions of source code must retain the above copyright
12 # notice, this list of conditions and the following disclaimer.
13 #
14 # 2. Redistributions in binary form must reproduce the above copyright
15 # notice, this list of conditions and the following disclaimer in the
16 # documentation and/or other materials provided with the distribution.
17 #
18 # 3. Neither the name of the copyright holder nor the names of its
19 # contributors may be used to endorse or promote products derived
20 # from this software without specific prior written permission.
21 #
22 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26 # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33 # POSSIBILITY OF SUCH DAMAGE.
34
35 # This file is a modified version of a script generated by Ixia
36 # IxNetwork.
37
38 lappend auto_path [list $lib_path]
39
40 ###################################################################
41 ########################## Configuration ##########################
42 ###################################################################
43
44 # verify that the IXIA chassis spec is given
45
46 set reqVars [list "machine" "port" "user" "chassis" "card" "port1" "port2" "output_dir" "bidir"]
47 set rfc2544test ""
48
49 foreach var $reqVars {
50     set var_ns [namespace which -variable "$var"]
51     if { [string compare $var_ns ""] == 0 } {
52         errorMsg "The '$var' variable is undefined. Did you set it?"
53         return -1
54     }
55 }
56
57 # machine configuration
58
59 set ::IxNserver $machine
60 set ::IxNport   $port
61 set ::biDirect  $bidir
62
63 # change to windows path format and append directory
64 set output_dir [string map {"/" "\\"} $output_dir]
65 set output_dir "$output_dir\\rfctests"
66 puts "Output directory is $output_dir"
67
68 proc startRfc2544Test { testSpec trafficSpec } {
69     # Start RFC2544 quicktest.
70
71     # Configure global variables. See documentation on 'global' for more
72     # information on why this is necessary
73     #   https://www.tcl.tk/man/tcl8.5/tutorial/Tcl13.html
74     global rfc2544test
75     global sg_rfc2544throughput
76     global sg_rfc2544back2back
77
78     # flow spec
79
80     set rfc2544TestType         [dict get $testSpec rfc2544TestType]
81
82     set binary                  [dict get $testSpec binary]
83
84     set duration                [dict get $testSpec duration]
85
86     if {$binary} {
87         set numTrials           [dict get $testSpec trials]
88         set frameRate           100
89         set tolerance           [dict get $testSpec lossrate]
90         set loadType            binary
91     } else {
92         set numTrials           1
93         set frameRate           [dict get $testSpec framerate]
94         set tolerance           0.0
95         set loadType            custom
96     }
97
98     set learningFrames          True
99
100     if {$learningFrames} {
101         set learningFrequency   oncePerTest
102         set fastPathEnable      True
103     } else {
104         set learningFrequency   never
105         set fastPathEnable      False
106     }
107
108     set multipleStreams         [dict get $testSpec multipleStreams]
109     if {($multipleStreams < 0)} {
110         set multipleStreams    0
111     }
112     set numflows               64000
113
114     if {$multipleStreams} {
115         if {($multipleStreams > 65535)} {
116             set numflows       65535
117         } else {
118             set numflows       $multipleStreams
119         }
120         set multipleStreams     increment
121     } else {
122         set multipleStreams     singleValue
123     }
124
125     set fastConvergence         True
126     set convergenceDuration     [expr $duration/10]
127
128     # traffic spec
129
130     # extract nested dictionaries
131     set trafficSpec_l2          [dict get $trafficSpec l2]
132     set trafficSpec_l3          [dict get $trafficSpec l3]
133     set trafficSpec_l4          [dict get $trafficSpec l4]
134     set trafficSpec_vlan        [dict get $trafficSpec vlan]
135
136     set frameSize               [dict get $trafficSpec_l2 framesize]
137     set srcMac                  [dict get $trafficSpec_l2 srcmac]
138     set dstMac                  [dict get $trafficSpec_l2 dstmac]
139
140     set srcPort                 [dict get $trafficSpec_l4 srcport]
141     set dstPort                 [dict get $trafficSpec_l4 dstport]
142
143     set proto                   [dict get $trafficSpec_l3 proto]
144     set proto                   [string tolower $proto]
145     set srcIp                   [dict get $trafficSpec_l3 srcip]
146     set dstIp                   [dict get $trafficSpec_l3 dstip]
147
148     # VXLAN
149     set vxlan_enabled           [dict exists $trafficSpec_l4 vni]
150     if { $vxlan_enabled } {
151         puts "VXLAN is enabled. Setting VXLAN variables"
152         set vni                     [dict get $trafficSpec_l4 vni]
153         set inner_srcmac            [dict get $trafficSpec_l4 inner_srcmac]
154         set inner_dstmac            [dict get $trafficSpec_l4 inner_dstmac]
155         set inner_srcip             [dict get $trafficSpec_l4 inner_srcip]
156         set inner_dstip             [dict get $trafficSpec_l4 inner_dstip]
157         set inner_proto             [dict get $trafficSpec_l4 inner_proto]
158         set inner_proto             [string tolower $inner_proto]
159         set inner_srcport           [dict get $trafficSpec_l4 inner_srcport]
160         set inner_dstport           [dict get $trafficSpec_l4 inner_dstport]
161     }
162
163     if {$frameSize < 68 } {
164         if {$rfc2544TestType == "back2back"} {
165             puts "WARNING: Packet size too small, packet size will be \
166                   increased to 68 for this test"
167         }
168     }
169     # constants
170
171     set VERSION [package require IxTclNetwork]
172
173     ###################################################################
174     ############################ Operation ############################
175     ###################################################################
176
177     puts "Connecting to IxNetwork machine..."
178
179     ixNet connect $::IxNserver -port $::IxNport -version $VERSION
180
181     puts "Connected to IxNetwork machine"
182
183     puts "Configuring IxNetwork machine..."
184
185     set ::_sg_cc 0
186     proc sg_commit {} {ixNet commit}
187
188     ixNet rollback
189     ixNet setSessionParameter version 6.30.701.16
190     ixNet execute newConfig
191     set ixNetSG_Stack(0) [ixNet getRoot]
192
193     #
194     # setting global options
195     #
196     set sg_top [ixNet getRoot]
197     ixNet setMultiAttrs $sg_top/availableHardware \
198      -offChassisHwM {} \
199      -isOffChassis False
200     ixNet setMultiAttrs $sg_top/globals/preferences \
201      -connectPortsOnLoadConfig True \
202      -rebootPortsOnConnect False
203     ixNet setMultiAttrs $sg_top/globals/interfaces \
204      -arpOnLinkup True \
205      -nsOnLinkup True \
206      -sendSingleArpPerGateway True \
207      -sendSingleNsPerGateway True
208     ixNet setMultiAttrs $sg_top/impairment/defaultProfile/checksums \
209      -dropRxL2FcsErrors False \
210      -correctTxL2FcsErrors False \
211      -alwaysCorrectWhenModifying True \
212      -correctTxChecksumOverIp False \
213      -correctTxIpv4Checksum False
214     ixNet setMultiAttrs $sg_top/impairment/defaultProfile/rxRateLimit \
215      -enabled False \
216      -value 8 \
217      -units {kKilobitsPerSecond}
218     ixNet setMultiAttrs $sg_top/impairment/defaultProfile/drop \
219      -enabled False \
220      -clusterSize 1 \
221      -percentRate 0
222     ixNet setMultiAttrs $sg_top/impairment/defaultProfile/reorder \
223      -enabled False \
224      -clusterSize 1 \
225      -percentRate 0 \
226      -skipCount 1
227     ixNet setMultiAttrs $sg_top/impairment/defaultProfile/duplicate \
228      -enabled False \
229      -clusterSize 1 \
230      -percentRate 0 \
231      -duplicateCount 1
232     ixNet setMultiAttrs $sg_top/impairment/defaultProfile/bitError \
233      -enabled False \
234      -logRate 3 \
235      -skipEndOctets 0 \
236      -skipStartOctets 0
237     ixNet setMultiAttrs $sg_top/impairment/defaultProfile/delay \
238      -enabled False \
239      -value 300 \
240      -units {kMicroseconds}
241     ixNet setMultiAttrs $sg_top/impairment/defaultProfile/delayVariation \
242      -uniformSpread 0 \
243      -enabled False \
244      -units {kMicroseconds} \
245      -distribution {kUniform} \
246      -exponentialMeanArrival 0 \
247      -gaussianStandardDeviation 0
248     ixNet setMultiAttrs $sg_top/impairment/defaultProfile/customDelayVariation \
249      -enabled False \
250      -name {}
251     ixNet setMultiAttrs $sg_top/statistics \
252      -additionalFcoeStat2 fcoeInvalidFrames \
253      -csvLogPollIntervalMultiplier 1 \
254      -pollInterval 2 \
255      -guardrailEnabled True \
256      -enableCsvLogging False \
257      -dataStorePollingIntervalMultiplier 1 \
258      -maxNumberOfStatsPerCustomGraph 16 \
259      -additionalFcoeStat1 fcoeInvalidDelimiter \
260      -timestampPrecision 3 \
261      -enableDataCenterSharedStats False \
262      -timeSynchronization syncTimeToTestStart \
263      -enableAutoDataStore False
264     ixNet setMultiAttrs $sg_top/statistics/measurementMode \
265      -measurementMode mixedMode
266     ixNet setMultiAttrs $sg_top/eventScheduler \
267      -licenseServerLocation {127.0.0.1}
268     ixNet setMultiAttrs $sg_top/traffic \
269      -destMacRetryCount 1 \
270      -maxTrafficGenerationQueries 500 \
271      -enableStaggeredTransmit False \
272      -learningFrameSize $frameSize \
273      -useTxRxSync True \
274      -enableDestMacRetry True \
275      -enableMulticastScalingFactor False \
276      -destMacRetryDelay 5 \
277      -largeErrorThreshhold 2 \
278      -refreshLearnedInfoBeforeApply False \
279      -enableMinFrameSize False \
280      -macChangeOnFly False \
281      -waitTime 1 \
282      -enableInstantaneousStatsSupport False \
283      -learningFramesCount 10 \
284      -globalStreamControl continuous \
285      -displayMplsCurrentLabelValue False \
286      -mplsLabelLearningTimeout 30 \
287      -enableStaggeredStartDelay True \
288      -enableDataIntegrityCheck False \
289      -enableSequenceChecking False \
290      -globalStreamControlIterations 1 \
291      -enableStreamOrdering False \
292      -frameOrderingMode none \
293      -learningFramesRate 100
294     ixNet setMultiAttrs $sg_top/traffic/statistics/latency \
295      -enabled True \
296      -mode storeForward
297     ixNet setMultiAttrs $sg_top/traffic/statistics/interArrivalTimeRate \
298      -enabled False
299     ixNet setMultiAttrs $sg_top/traffic/statistics/delayVariation \
300      -enabled False \
301      -statisticsMode rxDelayVariationErrorsAndRate \
302      -latencyMode storeForward \
303      -largeSequenceNumberErrorThreshold 2
304     ixNet setMultiAttrs $sg_top/traffic/statistics/sequenceChecking \
305      -enabled False \
306      -sequenceMode rxThreshold
307     ixNet setMultiAttrs $sg_top/traffic/statistics/advancedSequenceChecking \
308      -enabled False \
309      -advancedSequenceThreshold 1
310     ixNet setMultiAttrs $sg_top/traffic/statistics/cpdpConvergence \
311      -enabled False \
312      -dataPlaneJitterWindow 10485760 \
313      -dataPlaneThreshold 95 \
314      -enableDataPlaneEventsRateMonitor False \
315      -enableControlPlaneEvents False
316     ixNet setMultiAttrs $sg_top/traffic/statistics/packetLossDuration \
317      -enabled False
318     ixNet setMultiAttrs $sg_top/traffic/statistics/dataIntegrity \
319      -enabled False
320     ixNet setMultiAttrs $sg_top/traffic/statistics/errorStats \
321      -enabled False
322     ixNet setMultiAttrs $sg_top/traffic/statistics/prbs \
323      -enabled False
324     ixNet setMultiAttrs $sg_top/traffic/statistics/iptv \
325      -enabled False
326     ixNet setMultiAttrs $sg_top/traffic/statistics/l1Rates \
327      -enabled False
328     ixNet setMultiAttrs $sg_top/quickTest/globals \
329      -productLabel {Your switch/router name here} \
330      -serialNumber {Your switch/router serial number here} \
331      -version {Your firmware version here} \
332      -comments {} \
333      -titlePageComments {} \
334      -maxLinesToDisplay 100 \
335      -enableCheckLinkState False \
336      -enableAbortIfLinkDown False \
337      -enableSwitchToStats True \
338      -enableCapture False \
339      -enableSwitchToResult True \
340      -enableGenerateReportAfterRun False \
341      -enableRebootCpu False \
342      -saveCaptureBeforeRun False \
343      -linkDownTimeout 5 \
344      -sleepTimeAfterReboot 10 \
345      -useDefaultRootPath False \
346      -outputRootPath $::output_dir
347     sg_commit
348     set sg_top [lindex [ixNet remapIds $sg_top] 0]
349     set ixNetSG_Stack(0) $sg_top
350
351     ###
352     ### /vport area
353     ###
354
355     #
356     # configuring the object that corresponds to /vport:1
357     #
358     set sg_vport [ixNet add $ixNetSG_Stack(0) vport]
359     ixNet setMultiAttrs $sg_vport \
360      -transmitIgnoreLinkStatus False \
361      -txGapControlMode averageMode \
362      -type tenGigLan \
363      -connectedTo ::ixNet::OBJ-null \
364      -txMode interleaved \
365      -isPullOnly False \
366      -rxMode captureAndMeasure \
367      -name {10GE LAN - 001}
368     ixNet setMultiAttrs $sg_vport/l1Config \
369      -currentType tenGigLan
370     ixNet setMultiAttrs $sg_vport/l1Config/tenGigLan \
371      -ppm 0 \
372      -flowControlDirectedAddress "01 80 C2 00 00 01" \
373      -enablePPM False \
374      -autoInstrumentation endOfFrame \
375      -transmitClocking internal \
376      -txIgnoreRxLinkFaults False \
377      -loopback False \
378      -enableLASIMonitoring False \
379      -enabledFlowControl True
380     ixNet setMultiAttrs $sg_vport/l1Config/tenGigLan/oam \
381      -tlvType {00} \
382      -linkEvents False \
383      -enabled False \
384      -vendorSpecificInformation {00 00 00 00} \
385      -macAddress "00:00:00:00:00:00" \
386      -loopback False \
387      -idleTimer 5 \
388      -tlvValue {00} \
389      -enableTlvOption False \
390      -maxOAMPDUSize 64 \
391      -organizationUniqueIdentifier {000000}
392     ixNet setMultiAttrs $sg_vport/l1Config/tenGigLan/fcoe \
393      -supportDataCenterMode False \
394      -priorityGroupSize priorityGroupSize-8 \
395      -pfcPauseDelay 1 \
396      -pfcPriorityGroups {0 1 2 3 4 5 6 7} \
397      -flowControlType ieee802.1Qbb \
398      -enablePFCPauseDelay False
399     ixNet setMultiAttrs $sg_vport/l1Config/fortyGigLan \
400      -ppm 0 \
401      -flowControlDirectedAddress "01 80 C2 00 00 01" \
402      -enablePPM False \
403      -autoInstrumentation endOfFrame \
404      -transmitClocking internal \
405      -txIgnoreRxLinkFaults False \
406      -loopback False \
407      -enableLASIMonitoring False \
408      -enabledFlowControl False
409     ixNet setMultiAttrs $sg_vport/l1Config/fortyGigLan/fcoe \
410      -supportDataCenterMode False \
411      -priorityGroupSize priorityGroupSize-8 \
412      -pfcPauseDelay 1 \
413      -pfcPriorityGroups {0 1 2 3 4 5 6 7} \
414      -flowControlType ieee802.1Qbb \
415      -enablePFCPauseDelay False
416     ixNet setMultiAttrs $sg_vport/l1Config/OAM \
417      -tlvType {00} \
418      -linkEvents False \
419      -enabled False \
420      -vendorSpecificInformation {00 00 00 00} \
421      -macAddress "00:00:00:00:00:00" \
422      -loopback False \
423      -idleTimer 5 \
424      -tlvValue {00} \
425      -enableTlvOption False \
426      -maxOAMPDUSize 64 \
427      -organizationUniqueIdentifier {000000}
428     ixNet setMultiAttrs $sg_vport/l1Config/rxFilters/filterPalette \
429      -sourceAddress1Mask {00:00:00:00:00:00} \
430      -destinationAddress1Mask {00:00:00:00:00:00} \
431      -sourceAddress2 {00:00:00:00:00:00} \
432      -pattern2OffsetType fromStartOfFrame \
433      -pattern2Offset 20 \
434      -pattern1Mask {00} \
435      -sourceAddress2Mask {00:00:00:00:00:00} \
436      -destinationAddress2 {00:00:00:00:00:00} \
437      -destinationAddress1 {00:00:00:00:00:00} \
438      -sourceAddress1 {00:00:00:00:00:00} \
439      -pattern1 {00} \
440      -destinationAddress2Mask {00:00:00:00:00:00} \
441      -pattern2Mask {00} \
442      -pattern1Offset 20 \
443      -pattern2 {00} \
444      -pattern1OffsetType fromStartOfFrame
445     ixNet setMultiAttrs $sg_vport/protocols/arp \
446      -enabled False
447     ixNet setMultiAttrs $sg_vport/protocols/bfd \
448      -enabled False \
449      -intervalValue 0 \
450      -packetsPerInterval 0
451     ixNet setMultiAttrs $sg_vport/protocols/bgp \
452      -autoFillUpDutIp False \
453      -disableReceivedUpdateValidation False \
454      -enableAdVplsPrefixLengthInBits False \
455      -enableExternalActiveConnect True \
456      -enableInternalActiveConnect True \
457      -enableVpnLabelExchangeOverLsp True \
458      -enabled False \
459      -externalRetries 0 \
460      -externalRetryDelay 120 \
461      -internalRetries 0 \
462      -internalRetryDelay 120 \
463      -mldpP2mpFecType 6 \
464      -triggerVplsPwInitiation False
465     ixNet setMultiAttrs $sg_vport/protocols/cfm \
466      -enableOptionalLmFunctionality False \
467      -enableOptionalTlvValidation True \
468      -enabled False \
469      -receiveCcm True \
470      -sendCcm True \
471      -suppressErrorsOnAis True
472     ixNet setMultiAttrs $sg_vport/protocols/eigrp \
473      -enabled False
474     ixNet setMultiAttrs $sg_vport/protocols/elmi \
475      -enabled False
476     ixNet setMultiAttrs $sg_vport/protocols/igmp \
477      -enabled False \
478      -numberOfGroups 0 \
479      -numberOfQueries 0 \
480      -queryTimePeriod 0 \
481      -sendLeaveOnStop True \
482      -statsEnabled False \
483      -timePeriod 0
484     ixNet setMultiAttrs $sg_vport/protocols/isis \
485      -allL1RbridgesMac "01:80:c2:00:00:40" \
486      -emulationType isisL3Routing \
487      -enabled False \
488      -helloMulticastMac "01:80:c2:00:00:41" \
489      -lspMgroupPdusPerInterval 0 \
490      -nlpId 192 \
491      -rateControlInterval 0 \
492      -sendP2PHellosToUnicastMac True \
493      -spbAllL1BridgesMac "09:00:2b:00:00:05" \
494      -spbHelloMulticastMac "09:00:2b:00:00:05" \
495      -spbNlpId 192
496     ixNet setMultiAttrs $sg_vport/protocols/lacp \
497      -enablePreservePartnerInfo False \
498      -enabled False
499     ixNet setMultiAttrs $sg_vport/protocols/ldp \
500      -enableDiscardSelfAdvFecs False \
501      -enableHelloJitter True \
502      -enableVpnLabelExchangeOverLsp True \
503      -enabled False \
504      -helloHoldTime 15 \
505      -helloInterval 5 \
506      -keepAliveHoldTime 30 \
507      -keepAliveInterval 10 \
508      -p2mpCapabilityParam 1288 \
509      -p2mpFecType 6 \
510      -targetedHelloInterval 15 \
511      -targetedHoldTime 45 \
512      -useTransportLabelsForMplsOam False
513     ixNet setMultiAttrs $sg_vport/protocols/linkOam \
514      -enabled False
515     ixNet setMultiAttrs $sg_vport/protocols/lisp \
516      -burstIntervalInMs 0 \
517      -enabled False \
518      -ipv4MapRegisterPacketsPerBurst 0 \
519      -ipv4MapRequestPacketsPerBurst 0 \
520      -ipv4SmrPacketsPerBurst 0 \
521      -ipv6MapRegisterPacketsPerBurst 0 \
522      -ipv6MapRequestPacketsPerBurst 0 \
523      -ipv6SmrPacketsPerBurst 0
524     ixNet setMultiAttrs $sg_vport/protocols/mld \
525      -enableDoneOnStop True \
526      -enabled False \
527      -mldv2Report type143 \
528      -numberOfGroups 0 \
529      -numberOfQueries 0 \
530      -queryTimePeriod 0 \
531      -timePeriod 0
532     ixNet setMultiAttrs $sg_vport/protocols/mplsOam \
533      -enabled False
534     ixNet setMultiAttrs $sg_vport/protocols/mplsTp \
535      -apsChannelType {00 02 } \
536      -bfdCcChannelType {00 07 } \
537      -delayManagementChannelType {00 05 } \
538      -enableHighPerformanceMode True \
539      -enabled False \
540      -faultManagementChannelType {00 58 } \
541      -lossMeasurementChannelType {00 04 } \
542      -onDemandCvChannelType {00 09 } \
543      -pwStatusChannelType {00 0B } \
544      -y1731ChannelType {7F FA }
545     ixNet setMultiAttrs $sg_vport/protocols/ospf \
546      -enableDrOrBdr False \
547      -enabled False \
548      -floodLinkStateUpdatesPerInterval 0 \
549      -rateControlInterval 0
550     ixNet setMultiAttrs $sg_vport/protocols/ospfV3 \
551      -enabled False
552     ixNet setMultiAttrs $sg_vport/protocols/pimsm \
553      -bsmFramePerInterval 0 \
554      -crpFramePerInterval 0 \
555      -dataMdtFramePerInterval 0 \
556      -denyGrePimIpPrefix {0.0.0.0/32} \
557      -enableDiscardJoinPruneProcessing False \
558      -enableRateControl False \
559      -enabled False \
560      -helloMsgsPerInterval 0 \
561      -interval 0 \
562      -joinPruneMessagesPerInterval 0 \
563      -registerMessagesPerInterval 0 \
564      -registerStopMessagesPerInterval 0
565     ixNet setMultiAttrs $sg_vport/protocols/ping \
566      -enabled False
567     ixNet setMultiAttrs $sg_vport/protocols/rip \
568      -enabled False
569     ixNet setMultiAttrs $sg_vport/protocols/ripng \
570      -enabled False
571     ixNet setMultiAttrs $sg_vport/protocols/rsvp \
572      -enableControlLspInitiationRate False \
573      -enableShowTimeValue False \
574      -enableVpnLabelExchangeOverLsp True \
575      -enabled False \
576      -maxLspInitiationsPerSec 400 \
577      -useTransportLabelsForMplsOam False
578     ixNet setMultiAttrs $sg_vport/protocols/stp \
579      -enabled False
580     ixNet setMultiAttrs $sg_vport/rateControlParameters \
581      -maxRequestsPerBurst 1 \
582      -maxRequestsPerSec 250 \
583      -minRetryInterval 10 \
584      -retryCount 3 \
585      -sendInBursts False \
586      -sendRequestsAsFastAsPossible False
587     ixNet setMultiAttrs $sg_vport/capture \
588      -controlCaptureTrigger {} \
589      -controlCaptureFilter {} \
590      -hardwareEnabled False \
591      -softwareEnabled False \
592      -displayFiltersDataCapture {} \
593      -displayFiltersControlCapture {} \
594      -controlBufferSize 30 \
595      -controlBufferBehaviour bufferLiveNonCircular
596     ixNet setMultiAttrs $sg_vport/protocolStack/options \
597      -routerSolicitationDelay 1 \
598      -routerSolicitationInterval 4 \
599      -routerSolicitations 3 \
600      -retransTime 1000 \
601      -dadTransmits 1 \
602      -dadEnabled True \
603      -ipv4RetransTime 3000 \
604      -ipv4McastSolicit 4
605     sg_commit
606     set sg_vport [lindex [ixNet remapIds $sg_vport] 0]
607     set ixNetSG_ref(2) $sg_vport
608     set ixNetSG_Stack(1) $sg_vport
609
610     #
611     # configuring the object that corresponds to /vport:1/l1Config/rxFilters/uds:1
612     #
613     set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:1
614     ixNet setMultiAttrs $sg_uds \
615      -destinationAddressSelector anyAddr \
616      -customFrameSizeTo 0 \
617      -customFrameSizeFrom 0 \
618      -error errAnyFrame \
619      -patternSelector anyPattern \
620      -sourceAddressSelector anyAddr \
621      -isEnabled True \
622      -frameSizeType any
623     sg_commit
624     set sg_uds [lindex [ixNet remapIds $sg_uds] 0]
625
626     #
627     # configuring the object that corresponds to /vport:1/l1Config/rxFilters/uds:2
628     #
629     set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:2
630     ixNet setMultiAttrs $sg_uds \
631      -destinationAddressSelector anyAddr \
632      -customFrameSizeTo 0 \
633      -customFrameSizeFrom 0 \
634      -error errAnyFrame \
635      -patternSelector anyPattern \
636      -sourceAddressSelector anyAddr \
637      -isEnabled True \
638      -frameSizeType any
639     sg_commit
640     set sg_uds [lindex [ixNet remapIds $sg_uds] 0]
641
642     #
643     # configuring the object that corresponds to /vport:1/l1Config/rxFilters/uds:3
644     #
645     set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:3
646     ixNet setMultiAttrs $sg_uds \
647      -destinationAddressSelector anyAddr \
648      -customFrameSizeTo 0 \
649      -customFrameSizeFrom 0 \
650      -error errAnyFrame \
651      -patternSelector anyPattern \
652      -sourceAddressSelector anyAddr \
653      -isEnabled True \
654      -frameSizeType any
655     sg_commit
656     set sg_uds [lindex [ixNet remapIds $sg_uds] 0]
657
658     #
659     # configuring the object that corresponds to /vport:1/l1Config/rxFilters/uds:4
660     #
661     set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:4
662     ixNet setMultiAttrs $sg_uds \
663      -destinationAddressSelector anyAddr \
664      -customFrameSizeTo 0 \
665      -customFrameSizeFrom 0 \
666      -error errAnyFrame \
667      -patternSelector anyPattern \
668      -sourceAddressSelector anyAddr \
669      -isEnabled True \
670      -frameSizeType any
671     sg_commit
672     set sg_uds [lindex [ixNet remapIds $sg_uds] 0]
673
674     #
675     # configuring the object that corresponds to /vport:1/l1Config/rxFilters/uds:5
676     #
677     set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:5
678     ixNet setMultiAttrs $sg_uds \
679      -destinationAddressSelector anyAddr \
680      -customFrameSizeTo 0 \
681      -customFrameSizeFrom 0 \
682      -error errAnyFrame \
683      -patternSelector anyPattern \
684      -sourceAddressSelector anyAddr \
685      -isEnabled True \
686      -frameSizeType any
687     sg_commit
688     set sg_uds [lindex [ixNet remapIds $sg_uds] 0]
689
690     #
691     # configuring the object that corresponds to /vport:1/l1Config/rxFilters/uds:6
692     #
693     set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:6
694     ixNet setMultiAttrs $sg_uds \
695      -destinationAddressSelector anyAddr \
696      -customFrameSizeTo 0 \
697      -customFrameSizeFrom 0 \
698      -error errAnyFrame \
699      -patternSelector anyPattern \
700      -sourceAddressSelector anyAddr \
701      -isEnabled True \
702      -frameSizeType any
703     sg_commit
704     set sg_uds [lindex [ixNet remapIds $sg_uds] 0]
705
706     #
707     # configuring the object that corresponds to /vport:1/protocols/static/lan:1
708     #
709     set sg_lan [ixNet add $ixNetSG_Stack(1)/protocols/static lan]
710     ixNet setMultiAttrs $sg_lan \
711      -atmEncapsulation ::ixNet::OBJ-null \
712      -count 1 \
713      -countPerVc 1 \
714      -enableIncrementMac False \
715      -enableIncrementVlan False \
716      -enableSiteId False \
717      -enableVlan False \
718      -enabled True \
719      -frEncapsulation ::ixNet::OBJ-null \
720      -incrementPerVcVlanMode noIncrement \
721      -incrementVlanMode noIncrement \
722      -mac $srcMac \
723      -macRangeMode normal \
724      -numberOfVcs 1 \
725      -siteId 0 \
726      -skipVlanIdZero True \
727      -tpid {0x8100} \
728      -trafficGroupId ::ixNet::OBJ-null \
729      -vlanCount 1 \
730      -vlanId {1} \
731      -vlanPriority {0}
732     sg_commit
733     set sg_lan [lindex [ixNet remapIds $sg_lan] 0]
734
735     #
736     # configuring the object that corresponds to /vport:2
737     #
738     set sg_vport [ixNet add $ixNetSG_Stack(0) vport]
739     ixNet setMultiAttrs $sg_vport \
740      -transmitIgnoreLinkStatus False \
741      -txGapControlMode averageMode \
742      -type tenGigLan \
743      -connectedTo ::ixNet::OBJ-null \
744      -txMode interleaved \
745      -isPullOnly False \
746      -rxMode captureAndMeasure \
747      -name {10GE LAN - 002}
748     ixNet setMultiAttrs $sg_vport/l1Config \
749      -currentType tenGigLan
750     ixNet setMultiAttrs $sg_vport/l1Config/tenGigLan \
751      -ppm 0 \
752      -flowControlDirectedAddress "01 80 C2 00 00 01" \
753      -enablePPM False \
754      -autoInstrumentation endOfFrame \
755      -transmitClocking internal \
756      -txIgnoreRxLinkFaults False \
757      -loopback False \
758      -enableLASIMonitoring False \
759      -enabledFlowControl False
760     ixNet setMultiAttrs $sg_vport/l1Config/tenGigLan/oam \
761      -tlvType {00} \
762      -linkEvents False \
763      -enabled False \
764      -vendorSpecificInformation {00 00 00 00} \
765      -macAddress "00:00:00:00:00:00" \
766      -loopback False \
767      -idleTimer 5 \
768      -tlvValue {00} \
769      -enableTlvOption False \
770      -maxOAMPDUSize 64 \
771      -organizationUniqueIdentifier {000000}
772     ixNet setMultiAttrs $sg_vport/l1Config/tenGigLan/fcoe \
773      -supportDataCenterMode False \
774      -priorityGroupSize priorityGroupSize-8 \
775      -pfcPauseDelay 1 \
776      -pfcPriorityGroups {0 1 2 3 4 5 6 7} \
777      -flowControlType ieee802.1Qbb \
778      -enablePFCPauseDelay False
779     ixNet setMultiAttrs $sg_vport/l1Config/fortyGigLan \
780      -ppm 0 \
781      -flowControlDirectedAddress "01 80 C2 00 00 01" \
782      -enablePPM False \
783      -autoInstrumentation endOfFrame \
784      -transmitClocking internal \
785      -txIgnoreRxLinkFaults False \
786      -loopback False \
787      -enableLASIMonitoring False \
788      -enabledFlowControl False
789     ixNet setMultiAttrs $sg_vport/l1Config/fortyGigLan/fcoe \
790      -supportDataCenterMode False \
791      -priorityGroupSize priorityGroupSize-8 \
792      -pfcPauseDelay 1 \
793      -pfcPriorityGroups {0 1 2 3 4 5 6 7} \
794      -flowControlType ieee802.1Qbb \
795      -enablePFCPauseDelay False
796     ixNet setMultiAttrs $sg_vport/l1Config/OAM \
797      -tlvType {00} \
798      -linkEvents False \
799      -enabled False \
800      -vendorSpecificInformation {00 00 00 00} \
801      -macAddress "00:00:00:00:00:00" \
802      -loopback False \
803      -idleTimer 5 \
804      -tlvValue {00} \
805      -enableTlvOption False \
806      -maxOAMPDUSize 64 \
807      -organizationUniqueIdentifier {000000}
808     ixNet setMultiAttrs $sg_vport/l1Config/rxFilters/filterPalette \
809      -sourceAddress1Mask {00:00:00:00:00:00} \
810      -destinationAddress1Mask {00:00:00:00:00:00} \
811      -sourceAddress2 {00:00:00:00:00:00} \
812      -pattern2OffsetType fromStartOfFrame \
813      -pattern2Offset 20 \
814      -pattern1Mask {00} \
815      -sourceAddress2Mask {00:00:00:00:00:00} \
816      -destinationAddress2 {00:00:00:00:00:00} \
817      -destinationAddress1 {00:00:00:00:00:00} \
818      -sourceAddress1 {00:00:00:00:00:00} \
819      -pattern1 {00} \
820      -destinationAddress2Mask {00:00:00:00:00:00} \
821      -pattern2Mask {00} \
822      -pattern1Offset 20 \
823      -pattern2 {00} \
824      -pattern1OffsetType fromStartOfFrame
825     ixNet setMultiAttrs $sg_vport/protocols/arp \
826      -enabled False
827     ixNet setMultiAttrs $sg_vport/protocols/bfd \
828      -enabled False \
829      -intervalValue 0 \
830      -packetsPerInterval 0
831     ixNet setMultiAttrs $sg_vport/protocols/bgp \
832      -autoFillUpDutIp False \
833      -disableReceivedUpdateValidation False \
834      -enableAdVplsPrefixLengthInBits False \
835      -enableExternalActiveConnect True \
836      -enableInternalActiveConnect True \
837      -enableVpnLabelExchangeOverLsp True \
838      -enabled False \
839      -externalRetries 0 \
840      -externalRetryDelay 120 \
841      -internalRetries 0 \
842      -internalRetryDelay 120 \
843      -mldpP2mpFecType 6 \
844      -triggerVplsPwInitiation False
845     ixNet setMultiAttrs $sg_vport/protocols/cfm \
846      -enableOptionalLmFunctionality False \
847      -enableOptionalTlvValidation True \
848      -enabled False \
849      -receiveCcm True \
850      -sendCcm True \
851      -suppressErrorsOnAis True
852     ixNet setMultiAttrs $sg_vport/protocols/eigrp \
853      -enabled False
854     ixNet setMultiAttrs $sg_vport/protocols/elmi \
855      -enabled False
856     ixNet setMultiAttrs $sg_vport/protocols/igmp \
857      -enabled False \
858      -numberOfGroups 0 \
859      -numberOfQueries 0 \
860      -queryTimePeriod 0 \
861      -sendLeaveOnStop True \
862      -statsEnabled False \
863      -timePeriod 0
864     ixNet setMultiAttrs $sg_vport/protocols/isis \
865      -allL1RbridgesMac "01:80:c2:00:00:40" \
866      -emulationType isisL3Routing \
867      -enabled False \
868      -helloMulticastMac "01:80:c2:00:00:41" \
869      -lspMgroupPdusPerInterval 0 \
870      -nlpId 192 \
871      -rateControlInterval 0 \
872      -sendP2PHellosToUnicastMac True \
873      -spbAllL1BridgesMac "09:00:2b:00:00:05" \
874      -spbHelloMulticastMac "09:00:2b:00:00:05" \
875      -spbNlpId 192
876     ixNet setMultiAttrs $sg_vport/protocols/lacp \
877      -enablePreservePartnerInfo False \
878      -enabled False
879     ixNet setMultiAttrs $sg_vport/protocols/ldp \
880      -enableDiscardSelfAdvFecs False \
881      -enableHelloJitter True \
882      -enableVpnLabelExchangeOverLsp True \
883      -enabled False \
884      -helloHoldTime 15 \
885      -helloInterval 5 \
886      -keepAliveHoldTime 30 \
887      -keepAliveInterval 10 \
888      -p2mpCapabilityParam 1288 \
889      -p2mpFecType 6 \
890      -targetedHelloInterval 15 \
891      -targetedHoldTime 45 \
892      -useTransportLabelsForMplsOam False
893     ixNet setMultiAttrs $sg_vport/protocols/linkOam \
894      -enabled False
895     ixNet setMultiAttrs $sg_vport/protocols/lisp \
896      -burstIntervalInMs 0 \
897      -enabled False \
898      -ipv4MapRegisterPacketsPerBurst 0 \
899      -ipv4MapRequestPacketsPerBurst 0 \
900      -ipv4SmrPacketsPerBurst 0 \
901      -ipv6MapRegisterPacketsPerBurst 0 \
902      -ipv6MapRequestPacketsPerBurst 0 \
903      -ipv6SmrPacketsPerBurst 0
904     ixNet setMultiAttrs $sg_vport/protocols/mld \
905      -enableDoneOnStop True \
906      -enabled False \
907      -mldv2Report type143 \
908      -numberOfGroups 0 \
909      -numberOfQueries 0 \
910      -queryTimePeriod 0 \
911      -timePeriod 0
912     ixNet setMultiAttrs $sg_vport/protocols/mplsOam \
913      -enabled False
914     ixNet setMultiAttrs $sg_vport/protocols/mplsTp \
915      -apsChannelType {00 02 } \
916      -bfdCcChannelType {00 07 } \
917      -delayManagementChannelType {00 05 } \
918      -enableHighPerformanceMode True \
919      -enabled False \
920      -faultManagementChannelType {00 58 } \
921      -lossMeasurementChannelType {00 04 } \
922      -onDemandCvChannelType {00 09 } \
923      -pwStatusChannelType {00 0B } \
924      -y1731ChannelType {7F FA }
925     ixNet setMultiAttrs $sg_vport/protocols/ospf \
926      -enableDrOrBdr False \
927      -enabled False \
928      -floodLinkStateUpdatesPerInterval 0 \
929      -rateControlInterval 0
930     ixNet setMultiAttrs $sg_vport/protocols/ospfV3 \
931      -enabled False
932     ixNet setMultiAttrs $sg_vport/protocols/pimsm \
933      -bsmFramePerInterval 0 \
934      -crpFramePerInterval 0 \
935      -dataMdtFramePerInterval 0 \
936      -denyGrePimIpPrefix {0.0.0.0/32} \
937      -enableDiscardJoinPruneProcessing False \
938      -enableRateControl False \
939      -enabled False \
940      -helloMsgsPerInterval 0 \
941      -interval 0 \
942      -joinPruneMessagesPerInterval 0 \
943      -registerMessagesPerInterval 0 \
944      -registerStopMessagesPerInterval 0
945     ixNet setMultiAttrs $sg_vport/protocols/ping \
946      -enabled False
947     ixNet setMultiAttrs $sg_vport/protocols/rip \
948      -enabled False
949     ixNet setMultiAttrs $sg_vport/protocols/ripng \
950      -enabled False
951     ixNet setMultiAttrs $sg_vport/protocols/rsvp \
952      -enableControlLspInitiationRate False \
953      -enableShowTimeValue False \
954      -enableVpnLabelExchangeOverLsp True \
955      -enabled False \
956      -maxLspInitiationsPerSec 400 \
957      -useTransportLabelsForMplsOam False
958     ixNet setMultiAttrs $sg_vport/protocols/stp \
959      -enabled False
960     ixNet setMultiAttrs $sg_vport/rateControlParameters \
961      -maxRequestsPerBurst 1 \
962      -maxRequestsPerSec 250 \
963      -minRetryInterval 10 \
964      -retryCount 3 \
965      -sendInBursts False \
966      -sendRequestsAsFastAsPossible False
967     ixNet setMultiAttrs $sg_vport/capture \
968      -controlCaptureTrigger {} \
969      -controlCaptureFilter {} \
970      -hardwareEnabled False \
971      -softwareEnabled False \
972      -displayFiltersDataCapture {} \
973      -displayFiltersControlCapture {} \
974      -controlBufferSize 30 \
975      -controlBufferBehaviour bufferLiveNonCircular
976     ixNet setMultiAttrs $sg_vport/protocolStack/options \
977      -routerSolicitationDelay 1 \
978      -routerSolicitationInterval 4 \
979      -routerSolicitations 3 \
980      -retransTime 1000 \
981      -dadTransmits 1 \
982      -dadEnabled True \
983      -ipv4RetransTime 3000 \
984      -ipv4McastSolicit 4
985     sg_commit
986     set sg_vport [lindex [ixNet remapIds $sg_vport] 0]
987     set ixNetSG_ref(10) $sg_vport
988     set ixNetSG_Stack(1) $sg_vport
989
990     #
991     # configuring the object that corresponds to /vport:2/l1Config/rxFilters/uds:1
992     #
993     set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:1
994     ixNet setMultiAttrs $sg_uds \
995      -destinationAddressSelector anyAddr \
996      -customFrameSizeTo 0 \
997      -customFrameSizeFrom 0 \
998      -error errAnyFrame \
999      -patternSelector anyPattern \
1000      -sourceAddressSelector anyAddr \
1001      -isEnabled True \
1002      -frameSizeType any
1003     sg_commit
1004     set sg_uds [lindex [ixNet remapIds $sg_uds] 0]
1005
1006     #
1007     # configuring the object that corresponds to /vport:2/l1Config/rxFilters/uds:2
1008     #
1009     set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:2
1010     ixNet setMultiAttrs $sg_uds \
1011      -destinationAddressSelector anyAddr \
1012      -customFrameSizeTo 0 \
1013      -customFrameSizeFrom 0 \
1014      -error errAnyFrame \
1015      -patternSelector anyPattern \
1016      -sourceAddressSelector anyAddr \
1017      -isEnabled True \
1018      -frameSizeType any
1019     sg_commit
1020     set sg_uds [lindex [ixNet remapIds $sg_uds] 0]
1021
1022     #
1023     # configuring the object that corresponds to /vport:2/l1Config/rxFilters/uds:3
1024     #
1025     set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:3
1026     ixNet setMultiAttrs $sg_uds \
1027      -destinationAddressSelector anyAddr \
1028      -customFrameSizeTo 0 \
1029      -customFrameSizeFrom 0 \
1030      -error errAnyFrame \
1031      -patternSelector anyPattern \
1032      -sourceAddressSelector anyAddr \
1033      -isEnabled True \
1034      -frameSizeType any
1035     sg_commit
1036     set sg_uds [lindex [ixNet remapIds $sg_uds] 0]
1037
1038     #
1039     # configuring the object that corresponds to /vport:2/l1Config/rxFilters/uds:4
1040     #
1041     set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:4
1042     ixNet setMultiAttrs $sg_uds \
1043      -destinationAddressSelector anyAddr \
1044      -customFrameSizeTo 0 \
1045      -customFrameSizeFrom 0 \
1046      -error errAnyFrame \
1047      -patternSelector anyPattern \
1048      -sourceAddressSelector anyAddr \
1049      -isEnabled True \
1050      -frameSizeType any
1051     sg_commit
1052     set sg_uds [lindex [ixNet remapIds $sg_uds] 0]
1053
1054     #
1055     # configuring the object that corresponds to /vport:2/l1Config/rxFilters/uds:5
1056     #
1057     set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:5
1058     ixNet setMultiAttrs $sg_uds \
1059      -destinationAddressSelector anyAddr \
1060      -customFrameSizeTo 0 \
1061      -customFrameSizeFrom 0 \
1062      -error errAnyFrame \
1063      -patternSelector anyPattern \
1064      -sourceAddressSelector anyAddr \
1065      -isEnabled True \
1066      -frameSizeType any
1067     sg_commit
1068     set sg_uds [lindex [ixNet remapIds $sg_uds] 0]
1069
1070     #
1071     # configuring the object that corresponds to /vport:2/l1Config/rxFilters/uds:6
1072     #
1073     set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:6
1074     ixNet setMultiAttrs $sg_uds \
1075      -destinationAddressSelector anyAddr \
1076      -customFrameSizeTo 0 \
1077      -customFrameSizeFrom 0 \
1078      -error errAnyFrame \
1079      -patternSelector anyPattern \
1080      -sourceAddressSelector anyAddr \
1081      -isEnabled True \
1082      -frameSizeType any
1083     sg_commit
1084     set sg_uds [lindex [ixNet remapIds $sg_uds] 0]
1085
1086     #
1087     # configuring the object that corresponds to /vport:2/protocols/static/lan:1
1088     #
1089     set sg_lan [ixNet add $ixNetSG_Stack(1)/protocols/static lan]
1090     ixNet setMultiAttrs $sg_lan \
1091      -atmEncapsulation ::ixNet::OBJ-null \
1092      -count 1 \
1093      -countPerVc 1 \
1094      -enableIncrementMac False \
1095      -enableIncrementVlan False \
1096      -enableSiteId False \
1097      -enableVlan False \
1098      -enabled True \
1099      -frEncapsulation ::ixNet::OBJ-null \
1100      -incrementPerVcVlanMode noIncrement \
1101      -incrementVlanMode noIncrement \
1102      -mac $dstMac \
1103      -macRangeMode normal \
1104      -numberOfVcs 1 \
1105      -siteId 0 \
1106      -skipVlanIdZero True \
1107      -tpid {0x8100} \
1108      -trafficGroupId ::ixNet::OBJ-null \
1109      -vlanCount 1 \
1110      -vlanId {1} \
1111      -vlanPriority {0}
1112     sg_commit
1113     set sg_lan [lindex [ixNet remapIds $sg_lan] 0]
1114
1115     ###
1116     ### /availableHardware area
1117     ###
1118
1119     #
1120     # configuring the object that corresponds to /availableHardware/chassis"
1121     #
1122     set sg_chassis [ixNet add $ixNetSG_Stack(0)/availableHardware chassis]
1123     ixNet setMultiAttrs $sg_chassis \
1124      -masterChassis {} \
1125      -sequenceId 1 \
1126      -cableLength 0 \
1127      -hostname $::chassis
1128     sg_commit
1129     set sg_chassis [lindex [ixNet remapIds $sg_chassis] 0]
1130     set ixNetSG_Stack(1) $sg_chassis
1131
1132     #
1133     # configuring the object that corresponds to /availableHardware/chassis/card
1134     #
1135     set sg_card $ixNetSG_Stack(1)/card:$::card
1136     ixNet setMultiAttrs $sg_card \
1137      -aggregationMode normal
1138     sg_commit
1139     set sg_card [lindex [ixNet remapIds $sg_card] 0]
1140     set ixNetSG_ref(19) $sg_card
1141     set ixNetSG_Stack(2) $sg_card
1142
1143     #
1144     # configuring the object that corresponds to /availableHardware/chassis/card/aggregation:1
1145     #
1146     set sg_aggregation $ixNetSG_Stack(2)/aggregation:1
1147     ixNet setMultiAttrs $sg_aggregation \
1148      -mode normal
1149     sg_commit
1150     set sg_aggregation [lindex [ixNet remapIds $sg_aggregation] 0]
1151
1152     #
1153     # configuring the object that corresponds to /availableHardware/chassis/card/aggregation:2
1154     #
1155     set sg_aggregation $ixNetSG_Stack(2)/aggregation:2
1156     ixNet setMultiAttrs $sg_aggregation \
1157      -mode normal
1158     sg_commit
1159     set sg_aggregation [lindex [ixNet remapIds $sg_aggregation] 0]
1160
1161     #
1162     # configuring the object that corresponds to /availableHardware/chassis/card/aggregation:3
1163     #
1164     set sg_aggregation $ixNetSG_Stack(2)/aggregation:3
1165     ixNet setMultiAttrs $sg_aggregation \
1166      -mode normal
1167     sg_commit
1168     set sg_aggregation [lindex [ixNet remapIds $sg_aggregation] 0]
1169
1170     #
1171     # configuring the object that corresponds to /availableHardware/chassis/card/aggregation:4
1172     #
1173     set sg_aggregation $ixNetSG_Stack(2)/aggregation:4
1174     ixNet setMultiAttrs $sg_aggregation \
1175      -mode normal
1176     sg_commit
1177     set sg_aggregation [lindex [ixNet remapIds $sg_aggregation] 0]
1178     ixNet setMultiAttrs $ixNetSG_ref(2) \
1179      -connectedTo $ixNetSG_ref(19)/port:$::port1
1180     sg_commit
1181     ixNet setMultiAttrs $ixNetSG_ref(10) \
1182      -connectedTo $ixNetSG_ref(19)/port:$::port2
1183     sg_commit
1184     sg_commit
1185
1186     ###
1187     ### /impairment area
1188     ###
1189
1190     #
1191     # configuring the object that corresponds to /impairment/profile:3
1192     #
1193     set sg_profile [ixNet add $ixNetSG_Stack(0)/impairment profile]
1194     ixNet setMultiAttrs $sg_profile \
1195      -enabled False \
1196      -name {Impairment Profile 1} \
1197      -links {} \
1198      -allLinks True \
1199      -priority 1
1200     ixNet setMultiAttrs $sg_profile/checksums \
1201      -dropRxL2FcsErrors False \
1202      -correctTxL2FcsErrors False \
1203      -alwaysCorrectWhenModifying True \
1204      -correctTxChecksumOverIp False \
1205      -correctTxIpv4Checksum False
1206     ixNet setMultiAttrs $sg_profile/rxRateLimit \
1207      -enabled False \
1208      -value 8 \
1209      -units {kKilobitsPerSecond}
1210     ixNet setMultiAttrs $sg_profile/drop \
1211      -enabled True \
1212      -clusterSize 1 \
1213      -percentRate 0
1214     ixNet setMultiAttrs $sg_profile/reorder \
1215      -enabled False \
1216      -clusterSize 1 \
1217      -percentRate 0 \
1218      -skipCount 1
1219     ixNet setMultiAttrs $sg_profile/duplicate \
1220      -enabled False \
1221      -clusterSize 1 \
1222      -percentRate 0 \
1223      -duplicateCount 1
1224     ixNet setMultiAttrs $sg_profile/bitError \
1225      -enabled False \
1226      -logRate 3 \
1227      -skipEndOctets 0 \
1228      -skipStartOctets 0
1229     ixNet setMultiAttrs $sg_profile/delay \
1230      -enabled True \
1231      -value 300 \
1232      -units {kMicroseconds}
1233     ixNet setMultiAttrs $sg_profile/delayVariation \
1234      -uniformSpread 0 \
1235      -enabled False \
1236      -units {kMicroseconds} \
1237      -distribution {kUniform} \
1238      -exponentialMeanArrival 0 \
1239      -gaussianStandardDeviation 0
1240     ixNet setMultiAttrs $sg_profile/customDelayVariation \
1241      -enabled False \
1242      -name {}
1243     sg_commit
1244     set sg_profile [lindex [ixNet remapIds $sg_profile] 0]
1245     set ixNetSG_Stack(1) $sg_profile
1246
1247     #
1248     # configuring the object that corresponds to /impairment/profile:3/fixedClassifier:1
1249     #
1250     set sg_fixedClassifier [ixNet add $ixNetSG_Stack(1) fixedClassifier]
1251     sg_commit
1252     set sg_fixedClassifier [lindex [ixNet remapIds $sg_fixedClassifier] 0]
1253
1254     ###
1255     ### /traffic area
1256     ###
1257
1258     #
1259     # configuring the object that corresponds to /traffic/trafficItem:1
1260     #
1261     set sg_trafficItem [ixNet add $ixNetSG_Stack(0)/traffic trafficItem]
1262     ixNet setMultiAttrs $sg_trafficItem \
1263      -transportRsvpTePreference one \
1264      -trafficItemType l2L3 \
1265      -biDirectional $::biDirect \
1266      -mergeDestinations True \
1267      -hostsPerNetwork 1 \
1268      -transmitMode interleaved \
1269      -ordinalNo 0 \
1270      -trafficType {ethernetVlan} \
1271      -interAsLdpPreference two \
1272      -allowSelfDestined False \
1273      -enabled True \
1274      -maxNumberOfVpnLabelStack 2 \
1275      -interAsBgpPreference one \
1276      -suspend False \
1277      -transportLdpPreference two \
1278      -egressEnabled False \
1279      -enableDynamicMplsLabelValues False \
1280      -routeMesh oneToOne \
1281      -name {Traffic Item 1} \
1282      -srcDestMesh oneToOne
1283     sg_commit
1284     set sg_trafficItem [lindex [ixNet remapIds $sg_trafficItem] 0]
1285     set ixNetSG_ref(26) $sg_trafficItem
1286     set ixNetSG_Stack(1) $sg_trafficItem
1287
1288     #
1289     # configuring the object that corresponds to /traffic/trafficItem:1/endpointSet:1
1290     #
1291     set sg_endpointSet [ixNet add $ixNetSG_Stack(1) endpointSet]
1292     ixNet setMultiAttrs $sg_endpointSet \
1293      -destinations [list $ixNetSG_ref(10)/protocols] \
1294      -destinationFilter {} \
1295      -sourceFilter {} \
1296      -trafficGroups {} \
1297      -sources [list $ixNetSG_ref(2)/protocols] \
1298      -name {EndpointSet-1}
1299     sg_commit
1300     set sg_endpointSet [lindex [ixNet remapIds $sg_endpointSet] 0]
1301
1302     #
1303     # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1
1304     #
1305     set sg_configElement $ixNetSG_Stack(1)/configElement:1
1306     ixNet setMultiAttrs $sg_configElement \
1307      -crc goodCrc \
1308      -preambleCustomSize 8 \
1309      -enableDisparityError False \
1310      -preambleFrameSizeMode auto \
1311      -destinationMacMode manual
1312     ixNet setMultiAttrs $sg_configElement/frameSize \
1313      -weightedPairs {} \
1314      -fixedSize 64 \
1315      -incrementFrom 64 \
1316      -randomMin 64 \
1317      -randomMax 1518 \
1318      -quadGaussian {} \
1319      -type fixed \
1320      -presetDistribution cisco \
1321      -incrementStep 1 \
1322      -incrementTo 1518
1323     ixNet setMultiAttrs $sg_configElement/frameRate \
1324      -bitRateUnitsType bitsPerSec \
1325      -rate 10 \
1326      -enforceMinimumInterPacketGap 0 \
1327      -type percentLineRate \
1328      -interPacketGapUnitsType nanoseconds
1329     ixNet setMultiAttrs $sg_configElement/framePayload \
1330      -type incrementByte \
1331      -customRepeat True \
1332      -customPattern {}
1333     ixNet setMultiAttrs $sg_configElement/frameRateDistribution \
1334      -streamDistribution applyRateToAll \
1335      -portDistribution applyRateToAll
1336     ixNet setMultiAttrs $sg_configElement/transmissionControl \
1337      -frameCount 1 \
1338      -minGapBytes 12 \
1339      -interStreamGap 0 \
1340      -interBurstGap 0 \
1341      -interBurstGapUnits nanoseconds \
1342      -type continuous \
1343      -duration 1 \
1344      -repeatBurst 1 \
1345      -enableInterStreamGap False \
1346      -startDelayUnits bytes \
1347      -iterationCount 1 \
1348      -burstPacketCount 1 \
1349      -enableInterBurstGap False \
1350      -startDelay 0
1351     sg_commit
1352     set sg_configElement [lindex [ixNet remapIds $sg_configElement] 0]
1353     set ixNetSG_Stack(2) $sg_configElement
1354
1355     #
1356     # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ethernet-1"
1357     #
1358     set sg_stack $ixNetSG_Stack(2)/stack:"ethernet-1"
1359     sg_commit
1360     set sg_stack [lindex [ixNet remapIds $sg_stack] 0]
1361     set ixNetSG_Stack(3) $sg_stack
1362
1363     #
1364     # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ethernet-1"/field:"ethernet.header.destinationAddress-1"
1365     #
1366     set sg_field $ixNetSG_Stack(3)/field:"ethernet.header.destinationAddress-1"
1367     ixNet setMultiAttrs $sg_field \
1368      -singleValue {00:00:00:00:00:00} \
1369      -seed {1} \
1370      -optionalEnabled True \
1371      -fullMesh False \
1372      -valueList {{00:00:00:00:00:00}} \
1373      -stepValue {00:00:00:00:00:00} \
1374      -fixedBits {00:00:00:00:00:00} \
1375      -fieldValue {00:00:00:00:00:00} \
1376      -auto False \
1377      -randomMask {00:00:00:00:00:00} \
1378      -trackingEnabled False \
1379      -valueType singleValue \
1380      -activeFieldChoice False \
1381      -startValue {00:00:00:00:00:00} \
1382      -countValue {1}
1383     sg_commit
1384     set sg_field [lindex [ixNet remapIds $sg_field] 0]
1385
1386     #
1387     # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ethernet-1"/field:"ethernet.header.sourceAddress-2"
1388     #
1389     set sg_field $ixNetSG_Stack(3)/field:"ethernet.header.sourceAddress-2"
1390     ixNet setMultiAttrs $sg_field \
1391      -singleValue {00:00:00:00:00:00} \
1392      -seed {1} \
1393      -optionalEnabled True \
1394      -fullMesh False \
1395      -valueList {{00:00:00:00:00:00}} \
1396      -stepValue {00:00:00:00:00:00} \
1397      -fixedBits {00:00:00:00:00:00} \
1398      -fieldValue {00:00:00:00:00:00} \
1399      -auto False \
1400      -randomMask {00:00:00:00:00:00} \
1401      -trackingEnabled False \
1402      -valueType singleValue \
1403      -activeFieldChoice False \
1404      -startValue {00:00:00:00:00:00} \
1405      -countValue {1}
1406     sg_commit
1407     set sg_field [lindex [ixNet remapIds $sg_field] 0]
1408
1409     #
1410     # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ethernet-1"/field:"ethernet.header.etherType-3"
1411     #
1412     set sg_field $ixNetSG_Stack(3)/field:"ethernet.header.etherType-3"
1413     ixNet setMultiAttrs $sg_field \
1414      -singleValue {800} \
1415      -seed {1} \
1416      -optionalEnabled True \
1417      -fullMesh False \
1418      -valueList {{0xFFFF}} \
1419      -stepValue {0xFFFF} \
1420      -fixedBits {0xFFFF} \
1421      -fieldValue {800} \
1422      -auto True \
1423      -randomMask {0xFFFF} \
1424      -trackingEnabled False \
1425      -valueType singleValue \
1426      -activeFieldChoice False \
1427      -startValue {0xFFFF} \
1428      -countValue {1}
1429     sg_commit
1430     set sg_field [lindex [ixNet remapIds $sg_field] 0]
1431
1432     #
1433     # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ipv4-2"
1434     #
1435     set sg_stack $ixNetSG_Stack(2)/stack:"ipv4-2"
1436     sg_commit
1437     set sg_stack [lindex [ixNet remapIds $sg_stack] 0]
1438     set ixNetSG_Stack(3) $sg_stack
1439
1440     #
1441     # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ipv4-2"/field:"ipv4.header.version-1"
1442     #
1443     set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.version-1"
1444     ixNet setMultiAttrs $sg_field \
1445      -singleValue {4} \
1446      -seed {1} \
1447      -optionalEnabled True \
1448      -fullMesh False \
1449      -valueList {{4}} \
1450      -stepValue {4} \
1451      -fixedBits {4} \
1452      -fieldValue {4} \
1453      -auto False \
1454      -randomMask {4} \
1455      -trackingEnabled False \
1456      -valueType singleValue \
1457      -activeFieldChoice False \
1458      -startValue {4} \
1459      -countValue {1}
1460
1461     #
1462     # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ipv4-2"/field:"ipv4.header.protocol-25"
1463     #
1464     set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.protocol-25"
1465     ixNet setMultiAttrs $sg_field \
1466      -singleValue {17} \
1467      -seed {1} \
1468      -optionalEnabled True \
1469      -fullMesh False \
1470      -valueList {{61}} \
1471      -stepValue {61} \
1472      -fixedBits {61} \
1473      -fieldValue {$proto} \
1474      -auto True \
1475      -randomMask {61} \
1476      -trackingEnabled False \
1477      -valueType singleValue \
1478      -activeFieldChoice False \
1479      -startValue {61} \
1480      -countValue {1}
1481
1482     #
1483     # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ipv4-2"/field:"ipv4.header.checksum-26"
1484     #
1485     set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.checksum-26"
1486     ixNet setMultiAttrs $sg_field \
1487      -singleValue {0} \
1488      -seed {1} \
1489      -optionalEnabled True \
1490      -fullMesh False \
1491      -valueList {{0}} \
1492      -stepValue {0} \
1493      -fixedBits {0} \
1494      -fieldValue {0} \
1495      -auto True \
1496      -randomMask {0} \
1497      -trackingEnabled False \
1498      -valueType singleValue \
1499      -activeFieldChoice False \
1500      -startValue {0} \
1501      -countValue {1}
1502
1503     #
1504     # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ipv4-2"/field:"ipv4.header.srcIp-27"
1505     #
1506     set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.srcIp-27"
1507     ixNet setMultiAttrs $sg_field \
1508      -singleValue $srcIp \
1509      -seed {1} \
1510      -optionalEnabled True \
1511      -fullMesh False \
1512      -valueList {{0.0.0.0}} \
1513      -stepValue {0.0.0.0} \
1514      -fixedBits {0.0.0.0} \
1515      -fieldValue $srcIp \
1516      -auto False \
1517      -randomMask {0.0.0.0} \
1518      -trackingEnabled False \
1519      -valueType singleValue \
1520      -activeFieldChoice False \
1521      -startValue {0.0.0.0} \
1522      -countValue {1}
1523
1524     #
1525     # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ipv4-2"/field:"ipv4.header.dstIp-28"
1526     #
1527     set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.dstIp-28"
1528     ixNet setMultiAttrs $sg_field \
1529      -singleValue $dstIp \
1530      -seed {1} \
1531      -optionalEnabled True \
1532      -fullMesh False \
1533      -valueList {{0.0.0.0}} \
1534      -stepValue {0.0.0.0} \
1535      -fixedBits {0.0.0.0} \
1536      -fieldValue $dstIp \
1537      -auto False \
1538      -randomMask {0.0.0.0} \
1539      -trackingEnabled False \
1540      -valueType singleValue \
1541      -activeFieldChoice False \
1542      -startValue {0.0.0.0} \
1543      -countValue {1}
1544     #sg_commit
1545     #set sg_field [lindex [ixNet remapIds $sg_field] 0]
1546
1547     #
1548     # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ipv4-2"/field:"ipv4.header.options.pad-58"
1549     #
1550     set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.options.pad-58"
1551     ixNet setMultiAttrs $sg_field \
1552      -singleValue {0} \
1553      -seed {1} \
1554      -optionalEnabled False \
1555      -fullMesh False \
1556      -valueList {{0}} \
1557      -stepValue {0} \
1558      -fixedBits {0} \
1559      -fieldValue {0} \
1560      -auto True \
1561      -randomMask {0} \
1562      -trackingEnabled False \
1563      -valueType singleValue \
1564      -activeFieldChoice False \
1565      -startValue {0} \
1566      -countValue {1}
1567
1568
1569     if { [string compare $proto "udp"] == 0 } {
1570         # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"udp-3"
1571         #
1572         set sg_stack $ixNetSG_Stack(2)/stack:"udp-3"
1573         sg_commit
1574         set sg_stack [lindex [ixNet remapIds $sg_stack] 0]
1575         set ixNetSG_Stack(3) $sg_stack
1576
1577         #
1578         # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"udp-3"/field:"udp.header.srcPort-1"
1579         #
1580         set sg_field $ixNetSG_Stack(3)/field:"udp.header.srcPort-1"
1581         ixNet setMultiAttrs $sg_field \
1582          -singleValue $srcPort \
1583          -seed {1} \
1584          -optionalEnabled True \
1585          -fullMesh False \
1586          -valueList {{63}} \
1587          -stepValue {63} \
1588          -fixedBits {63} \
1589          -fieldValue {$srcPort} \
1590          -auto True \
1591          -randomMask {63} \
1592          -trackingEnabled False \
1593          -valueType singleValue \
1594          -activeFieldChoice False \
1595          -startValue {63} \
1596          -countValue {1}
1597
1598         #
1599         # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"udp-3"/field:"udp.header.dstPort-2"
1600         #
1601         set sg_field $ixNetSG_Stack(3)/field:"udp.header.dstPort-2"
1602         ixNet setMultiAttrs $sg_field \
1603          -singleValue $dstPort \
1604          -seed {1} \
1605          -optionalEnabled True \
1606          -fullMesh False \
1607          -valueList {{63}} \
1608          -stepValue {1} \
1609          -fixedBits {63} \
1610          -fieldValue $dstPort \
1611          -auto False \
1612          -randomMask {63} \
1613          -trackingEnabled False \
1614          -valueType $multipleStreams \
1615          -activeFieldChoice False \
1616          -startValue {0} \
1617          -countValue $numflows
1618
1619         #
1620         # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"udp-3"/field:"udp.header.length-3"
1621         #
1622         set sg_field $ixNetSG_Stack(3)/field:"udp.header.length-3"
1623         ixNet setMultiAttrs $sg_field \
1624          -singleValue {26} \
1625          -seed {1} \
1626          -optionalEnabled True \
1627          -fullMesh False \
1628          -valueList {{8}} \
1629          -stepValue {8} \
1630          -fixedBits {8} \
1631          -fieldValue {26} \
1632          -auto True \
1633          -randomMask {8} \
1634          -trackingEnabled False \
1635          -valueType singleValue \
1636          -activeFieldChoice False \
1637          -startValue {8} \
1638          -countValue {1}
1639
1640         #
1641         # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"udp-3"/field:"udp.header.checksum-4"
1642         #
1643         set sg_field $ixNetSG_Stack(3)/field:"udp.header.checksum-4"
1644         ixNet setMultiAttrs $sg_field \
1645          -singleValue {0} \
1646          -seed {1} \
1647          -optionalEnabled True \
1648          -fullMesh False \
1649          -valueList {{0}} \
1650          -stepValue {0} \
1651          -fixedBits {0} \
1652          -fieldValue {0} \
1653          -auto True \
1654          -randomMask {0} \
1655          -trackingEnabled False \
1656          -valueType singleValue \
1657          -activeFieldChoice False \
1658          -startValue {0} \
1659          -countValue {1}
1660     } else {
1661         # TCP
1662         set sg_field $ixNetSG_Stack(2)/stack:"tcp-3"/field:"tcp.header.srcPort-1"
1663         ixNet setMultiAttrs $sg_field \
1664             -singleValue $srcPort \
1665             -seed 1 \
1666             -optionalEnabled true \
1667             -fullMesh false \
1668             -valueList [list $srcPort] \
1669             -stepValue 60 \
1670             -fixedBits 60 \
1671             -fieldValue $srcPort \
1672             -auto false \
1673             -randomMask 60 \
1674             -trackingEnabled false \
1675             -valueType singleValue \
1676             -activeFieldChoice false \
1677             -startValue 60 \
1678             -countValue 1
1679
1680         set sg_field $ixNetSG_Stack(2)/stack:"tcp-3"/field:"tcp.header.dstPort-2"
1681         ixNet setMultiAttrs $sg_field \
1682             -singleValue $dstPort \
1683             -seed 1 \
1684             -optionalEnabled true \
1685             -fullMesh false \
1686             -valueList [list $dstPort] \
1687             -stepValue 60 \
1688             -fixedBits 60 \
1689             -fieldValue $dstPort \
1690             -auto false \
1691             -randomMask 60 \
1692             -trackingEnabled false \
1693             -valueType singleValue \
1694             -activeFieldChoice false \
1695             -startValue 60 \
1696             -countValue 1
1697
1698         set sg_field $ixNetSG_Stack(2)/stack:"tcp-3"/field:"tcp.header.sequenceNumber-3"
1699         ixNet setMultiAttrs $sg_field \
1700             -singleValue 0 \
1701             -seed 1 \
1702             -optionalEnabled true \
1703             -fullMesh false \
1704             -valueList [list 0x00000000] \
1705             -stepValue 0x00000000 \
1706             -fixedBits 0x00000000 \
1707             -fieldValue 0 \
1708             -auto false \
1709             -randomMask 0x00000000 \
1710             -trackingEnabled false \
1711             -valueType singleValue \
1712             -activeFieldChoice false \
1713             -startValue 0x00000000 \
1714             -countValue 1
1715
1716         set sg_field $ixNetSG_Stack(2)/stack:"tcp-3"/field:"tcp.header.acknowledgementNumber-4"
1717         ixNet setMultiAttrs $sg_field \
1718             -singleValue 0 \
1719             -seed 1 \
1720             -optionalEnabled true \
1721             -fullMesh false \
1722             -valueList [list 0x00000000] \
1723             -stepValue 0x00000000 \
1724             -fixedBits 0x00000000 \
1725             -fieldValue 0 \
1726             -auto false \
1727             -randomMask 0x00000000 \
1728             -trackingEnabled false \
1729             -valueType singleValue \
1730             -activeFieldChoice false \
1731             -startValue 0x00000000 \
1732             -countValue 1
1733
1734         set sg_field $ixNetSG_Stack(2)/stack:"tcp-3"/field:"tcp.header.dataOffset-5"
1735         ixNet setMultiAttrs $sg_field \
1736             -singleValue 5 \
1737             -seed 1 \
1738             -optionalEnabled true \
1739             -fullMesh false \
1740             -valueList [list 5] \
1741             -stepValue 5 \
1742             -fixedBits 5 \
1743             -fieldValue 5 \
1744             -auto true \
1745             -randomMask 5 \
1746             -trackingEnabled false \
1747             -valueType singleValue \
1748             -activeFieldChoice false \
1749             -startValue 5 \
1750             -countValue 1
1751
1752         set sg_field $ixNetSG_Stack(2)/stack:"tcp-3"/field:"tcp.header.reserved-6"
1753         ixNet setMultiAttrs $sg_field \
1754             -singleValue 0 \
1755             -seed 1 \
1756             -optionalEnabled true \
1757             -fullMesh false \
1758             -valueList [list 0] \
1759             -stepValue 0 \
1760             -fixedBits 0 \
1761             -fieldValue 0 \
1762             -auto false \
1763             -randomMask 0 \
1764             -trackingEnabled false \
1765             -valueType singleValue \
1766             -activeFieldChoice false \
1767             -startValue 0 \
1768             -countValue 1
1769
1770         set sg_field $ixNetSG_Stack(2)/stack:"tcp-3"/field:"tcp.header.ecn.nsBit-7"
1771         ixNet setMultiAttrs $sg_field \
1772             -singleValue 0 \
1773             -seed 1 \
1774             -optionalEnabled true \
1775             -fullMesh false \
1776             -valueList [list 0] \
1777             -stepValue 0 \
1778             -fixedBits 0 \
1779             -fieldValue 0 \
1780             -auto false \
1781             -randomMask 0 \
1782             -trackingEnabled false \
1783             -valueType singleValue \
1784             -activeFieldChoice false \
1785             -startValue 0 \
1786             -countValue 1
1787
1788         set sg_field $ixNetSG_Stack(2)/stack:"tcp-3"/field:"tcp.header.ecn.cwrBit-8"
1789         ixNet setMultiAttrs $sg_field \
1790             -singleValue 0 \
1791             -seed 1 \
1792             -optionalEnabled true \
1793             -fullMesh false \
1794             -valueList [list 0] \
1795             -stepValue 0 \
1796             -fixedBits 0 \
1797             -fieldValue 0 \
1798             -auto false \
1799             -randomMask 0 \
1800             -trackingEnabled false \
1801             -valueType singleValue \
1802             -activeFieldChoice false \
1803             -startValue 0 \
1804             -countValue 1
1805
1806         set sg_field $ixNetSG_Stack(2)/stack:"tcp-3"/field:"tcp.header.ecn.ecnEchoBit-9"
1807         ixNet setMultiAttrs $sg_field \
1808             -singleValue 0 \
1809             -seed 1 \
1810             -optionalEnabled true \
1811             -fullMesh false \
1812             -valueList [list 0] \
1813             -stepValue 0 \
1814             -fixedBits 0 \
1815             -fieldValue 0 \
1816             -auto false \
1817             -randomMask 0 \
1818             -trackingEnabled false \
1819             -valueType singleValue \
1820             -activeFieldChoice false \
1821             -startValue 0 \
1822             -countValue 1
1823
1824         set sg_field $ixNetSG_Stack(2)/stack:"tcp-3"/field:"tcp.header.controlBits.urgBit-10"
1825         ixNet setMultiAttrs $sg_field \
1826             -singleValue 0 \
1827             -seed 1 \
1828             -optionalEnabled true \
1829             -fullMesh false \
1830             -valueList [list 0] \
1831             -stepValue 0 \
1832             -fixedBits 0 \
1833             -fieldValue 0 \
1834             -auto false \
1835             -randomMask 0 \
1836             -trackingEnabled false \
1837             -valueType singleValue \
1838             -activeFieldChoice false \
1839             -startValue 0 \
1840             -countValue 1
1841
1842         set sg_field $ixNetSG_Stack(2)/stack:"tcp-3"/field:"tcp.header.controlBits.ackBit-11"
1843         ixNet setMultiAttrs $sg_field \
1844             -singleValue 0 \
1845             -seed 1 \
1846             -optionalEnabled true \
1847             -fullMesh false \
1848             -valueList [list 0] \
1849             -stepValue 0 \
1850             -fixedBits 0 \
1851             -fieldValue 0 \
1852             -auto false \
1853             -randomMask 0 \
1854             -trackingEnabled false \
1855             -valueType singleValue \
1856             -activeFieldChoice false \
1857             -startValue 0 \
1858             -countValue 1
1859
1860         set sg_field $ixNetSG_Stack(2)/stack:"tcp-3"/field:"tcp.header.controlBits.pshBit-12"
1861         ixNet setMultiAttrs $sg_field \
1862             -singleValue 0 \
1863             -seed 1 \
1864             -optionalEnabled true \
1865             -fullMesh false \
1866             -valueList [list 0] \
1867             -stepValue 0 \
1868             -fixedBits 0 \
1869             -fieldValue 0 \
1870             -auto false \
1871             -randomMask 0 \
1872             -trackingEnabled false \
1873             -valueType singleValue \
1874             -activeFieldChoice false \
1875             -startValue 0 \
1876             -countValue 1
1877
1878         set sg_field $ixNetSG_Stack(2)/stack:"tcp-3"/field:"tcp.header.controlBits.rstBit-13"
1879         ixNet setMultiAttrs $sg_field \
1880             -singleValue 0 \
1881             -seed 1 \
1882             -optionalEnabled true \
1883             -fullMesh false \
1884             -valueList [list 0] \
1885             -stepValue 0 \
1886             -fixedBits 0 \
1887             -fieldValue 0 \
1888             -auto false \
1889             -randomMask 0 \
1890             -trackingEnabled false \
1891             -valueType singleValue \
1892             -activeFieldChoice false \
1893             -startValue 0 \
1894             -countValue 1
1895
1896         set sg_field $ixNetSG_Stack(2)/stack:"tcp-3"/field:"tcp.header.controlBits.synBit-14"
1897         ixNet setMultiAttrs $sg_field \
1898             -singleValue 0 \
1899             -seed 1 \
1900             -optionalEnabled true \
1901             -fullMesh false \
1902             -valueList [list 0] \
1903             -stepValue 0 \
1904             -fixedBits 0 \
1905             -fieldValue 0 \
1906             -auto false \
1907             -randomMask 0 \
1908             -trackingEnabled false \
1909             -valueType singleValue \
1910             -activeFieldChoice false \
1911             -startValue 0 \
1912             -countValue 1
1913
1914         set sg_field $ixNetSG_Stack(2)/stack:"tcp-3"/field:"tcp.header.controlBits.finBit-15"
1915         ixNet setMultiAttrs $sg_field \
1916             -singleValue 0 \
1917             -seed 1 \
1918             -optionalEnabled true \
1919             -fullMesh false \
1920             -valueList [list 0] \
1921             -stepValue 0 \
1922             -fixedBits 0 \
1923             -fieldValue 0 \
1924             -auto false \
1925             -randomMask 0 \
1926             -trackingEnabled false \
1927             -valueType singleValue \
1928             -activeFieldChoice false \
1929             -startValue 0 \
1930             -countValue 1
1931
1932         set sg_field $ixNetSG_Stack(2)/stack:"tcp-3"/field:"tcp.header.window-16"
1933         ixNet setMultiAttrs $sg_field \
1934             -singleValue 0 \
1935             -seed 1 \
1936             -optionalEnabled true \
1937             -fullMesh false \
1938             -valueList [list 0x0000] \
1939             -stepValue 0x0000 \
1940             -fixedBits 0x0000 \
1941             -fieldValue 0 \
1942             -auto false \
1943             -randomMask 0x0000 \
1944             -trackingEnabled false \
1945             -valueType singleValue \
1946             -activeFieldChoice false \
1947             -startValue 0x0000 \
1948             -countValue 1
1949
1950         set sg_field $ixNetSG_Stack(2)/stack:"tcp-3"/field:"tcp.header.checksum-17"
1951         ixNet setMultiAttrs $sg_field \
1952             -singleValue 0 \
1953             -seed 1 \
1954             -optionalEnabled true \
1955             -fullMesh false \
1956             -valueList [list 0x0000] \
1957             -stepValue 0x0000 \
1958             -fixedBits 0x0000 \
1959             -fieldValue 0 \
1960             -auto true \
1961             -randomMask 0x0000 \
1962             -trackingEnabled false \
1963             -valueType singleValue \
1964             -activeFieldChoice false \
1965             -startValue 0x0000 \
1966             -countValue 1
1967
1968         set sg_field $ixNetSG_Stack(2)/stack:"tcp-3"/field:"tcp.header.urgentPtr-18"
1969         ixNet setMultiAttrs $sg_field \
1970             -singleValue 0 \
1971             -seed 1 \
1972             -optionalEnabled true \
1973             -fullMesh false \
1974             -valueList [list 0x0000] \
1975             -stepValue 0x0000 \
1976             -fixedBits 0x0000 \
1977             -fieldValue 0 \
1978             -auto false \
1979             -randomMask 0x0000 \
1980             -trackingEnabled false \
1981             -valueType singleValue \
1982             -activeFieldChoice false \
1983             -startValue 0x0000 \
1984             -countValue 1
1985         sg_commit
1986         set sg_field [lindex [ixNet remapIds $sg_field] 0]
1987     }
1988
1989     if { $vxlan_enabled } {
1990         # VXLAN START
1991         #
1992         # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"vxlan-4"
1993         #
1994         set sg_stack $ixNetSG_Stack(2)/stack:"vxlan-4"
1995         sg_commit
1996         set sg_stack [lindex [ixNet remapIds $sg_stack] 0]
1997         set ixNetSG_Stack(3) $sg_stack
1998
1999         #
2000         # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"vxlan-4"/field:"vxlan.header.flags-1
2001         #
2002         set sg_field $ixNetSG_Stack(3)/field:"vxlan.header.flags-1"
2003         ixNet setMultiAttrs $sg_field \
2004         -singleValue 8 \
2005         -seed 1 \
2006         -optionalEnabled true \
2007         -valueList [list 0x08] \
2008         -stepValue 0x08 \
2009         -fixedBits 0x08 \
2010         -fieldValue 8 \
2011         -randomMask 0x08 \
2012         -startValue 0x08
2013
2014         #
2015         # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"vxlan-4"/field:"vxlan.header.reserved-2
2016         #
2017         set sg_field $ixNetSG_Stack(3)/field:"vxlan.header.reserved-2"
2018         ixNet setMultiAttrs $sg_field \
2019         -singleValue 0 \
2020         -seed 1 \
2021         -optionalEnabled true \
2022         -valueList [list 0] \
2023         -stepValue 0 \
2024         -fixedBits 0 \
2025         -fieldValue 0 \
2026         -randomMask 0 \
2027         -startValue 0
2028
2029         #
2030         # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"vxlan-4"/field:"vxlan.header.vni-3"
2031         #
2032         set sg_field $ixNetSG_Stack(3)/field:"vxlan.header.vni-3"
2033         ixNet setMultiAttrs $sg_field \
2034         -singleValue $vni \
2035         -seed 1 \
2036         -optionalEnabled true \
2037         -valueList [list 1234] \
2038         -stepValue 1234 \
2039         -fixedBits 1234 \
2040         -fieldValue $vni \
2041         -randomMask 1234 \
2042         -startValue 1234
2043
2044         #
2045         # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"vxlan-4"/field:"vxlan.header.reserved8-4"
2046         #
2047         set sg_field $ixNetSG_Stack(3)/field:"vxlan.header.reserved8-4"
2048         ixNet setMultiAttrs $sg_field \
2049         -singleValue 0 \
2050         -seed 1 \
2051         -optionalEnabled true \
2052         -valueList [list 0] \
2053         -stepValue 0 \
2054         -fixedBits 0 \
2055         -fieldValue 0 \
2056         -randomMask 0 \
2057         -startValue 0
2058
2059         # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ethernetNoFCS-5"/field:"ethernetNoFCS.header.destinationAddress-1"
2060         set sg_field $ixNetSG_Stack(2)/stack:"ethernetNoFCS-5"/field:"ethernetNoFCS.header.destinationAddress-1"
2061         ixNet setMultiAttrs $sg_field \
2062         -singleValue $inner_dstmac \
2063         -seed 1 \
2064         -optionalEnabled true \
2065         -valueList [list 00:00:00:00:00:00] \
2066         -stepValue 00:00:00:00:00:00 \
2067         -fixedBits 00:00:00:00:00:00 \
2068         -fieldValue $inner_dstmac \
2069         -randomMask 00:00:00:00:00:00 \
2070         -startValue 00:00:00:00:00:00
2071
2072         set sg_field $ixNetSG_Stack(2)/stack:"ethernetNoFCS-5"/field:"ethernetNoFCS.header.sourceAddress-2"
2073         ixNet setMultiAttrs $sg_field \
2074         -singleValue $inner_srcmac \
2075         -seed 1 \
2076         -optionalEnabled true \
2077         -valueList [list 00:00:00:00:00:00] \
2078         -stepValue 00:00:00:00:00:00 \
2079         -fixedBits 00:00:00:00:00:00 \
2080         -fieldValue $inner_srcmac \
2081         -randomMask 00:00:00:00:00:00 \
2082         -startValue 00:00:00:00:00:00
2083
2084         set sg_field $ixNetSG_Stack(2)/stack:"ethernetNoFCS-5"/field:"ethernetNoFCS.header.etherType-3"
2085         ixNet setMultiAttrs $sg_field \
2086         -singleValue 800 \
2087         -seed 1 \
2088         -optionalEnabled true \
2089         -valueList [list 0xFFFF] \
2090         -stepValue 0xFFFF \
2091         -fixedBits 0xFFFF \
2092         -fieldValue 800 \
2093         -auto true \
2094         -randomMask 0xFFFF \
2095         -startValue 0xFFFF
2096
2097         set sg_stack $ixNetSG_Stack(2)/stack:"ipv4-6"
2098         sg_commit
2099         set sg_stack [lindex [ixNet remapIds $sg_stack] 0]
2100         set ixNetSG_Stack(3) $sg_stack
2101
2102         #
2103         # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ipv4-6"/field:"ipv4.header.version-1"/
2104         set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.version-1"
2105         ixNet setMultiAttrs $sg_field \
2106             -singleValue 4 \
2107             -seed 1 \
2108             -optionalEnabled true \
2109             -valueList [list 4] \
2110             -stepValue 4 \
2111             -fixedBits 4 \
2112             -fieldValue 4 \
2113             -randomMask 4 \
2114             -startValue 4
2115
2116         set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.headerLength-2"
2117         ixNet setMultiAttrs $sg_field \
2118         -singleValue 5 \
2119         -seed 1 \
2120         -optionalEnabled true \
2121         -valueList [list 0] \
2122         -stepValue 0 \
2123         -fixedBits 0 \
2124         -fieldValue 5 \
2125         -auto true \
2126         -randomMask 0 \
2127         -startValue 0
2128
2129         set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.priority.raw-3"
2130         ixNet setMultiAttrs $sg_field \
2131         -singleValue 0 \
2132         -seed 1 \
2133         -optionalEnabled true \
2134         -valueList [list 0] \
2135         -stepValue 0 \
2136         -fixedBits 0 \
2137         -fieldValue 0 \
2138         -randomMask 0 \
2139         -startValue 0
2140
2141         set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.priority.tos.precedence-4"
2142         ixNet setMultiAttrs $sg_field \
2143         -singleValue 0 \
2144         -seed 1 \
2145         -optionalEnabled true \
2146         -valueList [list 0] \
2147         -stepValue 0 \
2148         -fixedBits 0 \
2149         -fieldValue "000\ Routine" \
2150         -randomMask 0 \
2151         -activeFieldChoice true \
2152         -startValue 0
2153
2154         set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.priority.tos.delay-5"
2155         ixNet setMultiAttrs $sg_field \
2156         -singleValue 0 \
2157         -seed 1 \
2158         -optionalEnabled true \
2159         -valueList [list 0] \
2160         -stepValue 0 \
2161         -fixedBits 0 \
2162         -fieldValue Normal \
2163         -randomMask 0 \
2164         -activeFieldChoice true \
2165         -startValue 0
2166
2167         set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.priority.tos.throughput-6"
2168         ixNet setMultiAttrs $sg_field \
2169         -singleValue 0 \
2170         -seed 1 \
2171         -optionalEnabled true \
2172         -valueList [list 0] \
2173         -stepValue 0 \
2174         -fixedBits 0 \
2175         -fieldValue Normal \
2176         -randomMask 0 \
2177         -activeFieldChoice true \
2178         -startValue 0
2179
2180         set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.priority.tos.reliability-7"
2181         ixNet setMultiAttrs $sg_field \
2182         -singleValue 0 \
2183         -seed 1 \
2184         -optionalEnabled true \
2185         -valueList [list 0] \
2186         -stepValue 0 \
2187         -fixedBits 0 \
2188         -fieldValue Normal \
2189         -randomMask 0 \
2190         -activeFieldChoice true \
2191         -startValue 0
2192
2193         set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.priority.tos.monetary-8"
2194         ixNet setMultiAttrs $sg_field \
2195         -singleValue 0 \
2196         -seed 1 \
2197         -optionalEnabled true \
2198         -valueList [list 0] \
2199         -stepValue 0 \
2200         -fixedBits 0 \
2201         -fieldValue Normal \
2202         -randomMask 0 \
2203         -activeFieldChoice true \
2204         -startValue 0
2205
2206         set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.priority.tos.unused-9"
2207         ixNet setMultiAttrs $sg_field \
2208         -singleValue 0 \
2209         -seed 1 \
2210         -optionalEnabled true \
2211         -valueList [list 0] \
2212         -stepValue 0 \
2213         -fixedBits 0 \
2214         -fieldValue 0 \
2215         -randomMask 0 \
2216         -activeFieldChoice true \
2217         -startValue 0
2218
2219         set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.totalLength-18"
2220         ixNet setMultiAttrs $sg_field \
2221         -singleValue 28 \
2222         -seed 1 \
2223         -optionalEnabled true \
2224         -valueList [list 20] \
2225         -stepValue 20 \
2226         -fixedBits 20 \
2227         -fieldValue 28 \
2228         -auto true \
2229         -randomMask 20 \
2230         -startValue 20
2231
2232         set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.identification-19"
2233         ixNet setMultiAttrs $sg_field \
2234         -singleValue 0 \
2235         -seed 1 \
2236         -optionalEnabled true \
2237         -valueList [list 0] \
2238         -stepValue 0 \
2239         -fixedBits 0 \
2240         -fieldValue 0 \
2241         -randomMask 0 \
2242         -startValue 0
2243
2244         set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.flags.reserved-20"
2245         ixNet setMultiAttrs $sg_field \
2246         -singleValue 0 \
2247         -seed 1 \
2248         -optionalEnabled true \
2249         -valueList [list 0] \
2250         -stepValue 0 \
2251         -fixedBits 0 \
2252         -fieldValue 0 \
2253         -randomMask 0 \
2254         -startValue 0
2255
2256         set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.flags.fragment-21"
2257         ixNet setMultiAttrs $sg_field \
2258         -singleValue 0 \
2259         -seed 1 \
2260         -optionalEnabled true \
2261         -valueList [list 0] \
2262         -stepValue 0 \
2263         -fixedBits 0 \
2264         -fieldValue "May\ fragment" \
2265         -randomMask 0 \
2266         -startValue 0
2267
2268         set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.flags.lastFragment-22"
2269         ixNet setMultiAttrs $sg_field \
2270         -singleValue 0 \
2271         -seed 1 \
2272         -optionalEnabled true \
2273         -valueList [list 0] \
2274         -stepValue 0 \
2275         -fixedBits 0 \
2276         -fieldValue "Last\ fragment" \
2277         -randomMask 0 \
2278         -startValue 0
2279
2280         set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.fragmentOffset-23"
2281         ixNet setMultiAttrs $sg_field \
2282         -singleValue 0 \
2283         -seed 1 \
2284         -optionalEnabled true \
2285         -valueList [list 0] \
2286         -stepValue 0 \
2287         -fixedBits 0 \
2288         -fieldValue 0 \
2289         -randomMask 0 \
2290         -startValue 0
2291
2292         set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.ttl-24"
2293         ixNet setMultiAttrs $sg_field \
2294         -singleValue 64 \
2295         -seed 1 \
2296         -optionalEnabled true \
2297         -valueList [list 64] \
2298         -stepValue 64 \
2299         -fixedBits 64 \
2300         -fieldValue 64 \
2301         -randomMask 64 \
2302         -startValue 64
2303
2304         set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.protocol-25"
2305         ixNet setMultiAttrs $sg_field \
2306         -singleValue 17 \
2307         -seed 1 \
2308         -optionalEnabled true \
2309         -valueList [list 61] \
2310         -stepValue 61 \
2311         -fixedBits 61 \
2312         -fieldValue $inner_proto \
2313         -auto true \
2314         -randomMask 61 \
2315         -startValue 61
2316
2317         set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.checksum-26"
2318         ixNet setMultiAttrs $sg_field \
2319         -singleValue 63355 \
2320         -seed 1 \
2321         -optionalEnabled true \
2322         -valueList [list 0] \
2323         -stepValue 0 \
2324         -fixedBits 0 \
2325         -fieldValue 63355 \
2326         -auto true \
2327         -randomMask 0 \
2328         -startValue 0
2329
2330         set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.srcIp-27"
2331         ixNet setMultiAttrs $sg_field \
2332         -singleValue $inner_srcip \
2333         -seed 1 \
2334         -optionalEnabled true \
2335         -valueList [list 0.0.0.0] \
2336         -stepValue 0.0.0.0 \
2337         -fixedBits 0.0.0.0 \
2338         -fieldValue $inner_srcip \
2339         -randomMask 0.0.0.0 \
2340         -startValue 0.0.0.0
2341
2342         set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.dstIp-28"
2343         ixNet setMultiAttrs $sg_field \
2344         -singleValue $inner_dstip \
2345         -seed 1 \
2346         -optionalEnabled true \
2347         -valueList [list 0.0.0.0] \
2348         -stepValue 0.0.0.0 \
2349         -fixedBits 0.0.0.0 \
2350         -fieldValue $inner_dstip \
2351         -randomMask 0.0.0.0 \
2352         -startValue 0.0.0.0
2353
2354         set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.options.pad-58"
2355         ixNet setMultiAttrs $sg_field \
2356         -singleValue 0 \
2357         -seed 1 \
2358         -valueList [list 0] \
2359         -stepValue 0 \
2360         -fixedBits 0 \
2361         -fieldValue 0 \
2362         -auto true \
2363         -randomMask 0 \
2364         -startValue 0
2365         sg_commit
2366         set sg_field [lindex [ixNet remapIds $sg_field] 0]
2367
2368         if { [string compare $inner_proto "udp"] == 0 } {
2369             # INNER UDP 
2370             set sg_stack $ixNetSG_Stack(2)/stack:"udp-7"
2371             sg_commit
2372             set sg_stack [lindex [ixNet remapIds $sg_stack] 0]
2373             set ixNetSG_Stack(3) $sg_stack
2374
2375             set sg_field $ixNetSG_Stack(3)/field:"udp.header.srcPort-1"
2376             ixNet setMultiAttrs $sg_field \
2377             -singleValue $inner_srcport \
2378             -seed 1 \
2379             -optionalEnabled true \
2380             -valueList [list 63] \
2381             -stepValue 63 \
2382             -fixedBits 63 \
2383             -fieldValue $inner_srcport \
2384             -auto true \
2385             -randomMask 63 \
2386             -startValue 63
2387
2388             set sg_field $ixNetSG_Stack(3)/field:"udp.header.dstPort-2"
2389             ixNet setMultiAttrs $sg_field \
2390             -singleValue $inner_dstport \
2391             -seed 1 \
2392             -optionalEnabled true \
2393             -valueList [list 63] \
2394             -stepValue 63 \
2395             -fixedBits 63 \
2396             -fieldValue $inner_dstport \
2397             -auto true \
2398             -randomMask 63 \
2399             -startValue 63
2400
2401             set sg_field $ixNetSG_Stack(3)/field:"udp.header.length-3"
2402             ixNet setMultiAttrs $sg_field \
2403             -singleValue 8 \
2404             -seed 1 \
2405             -optionalEnabled true \
2406             -valueList [list 8] \
2407             -stepValue 8 \
2408             -fixedBits 8 \
2409             -fieldValue 8 \
2410             -auto true \
2411             -randomMask 8 \
2412             -startValue 8
2413
2414             set sg_field $ixNetSG_Stack(3)/field:"udp.header.checksum-4"
2415             ixNet setMultiAttrs $sg_field \
2416             -singleValue 0 \
2417             -seed 1 \
2418             -optionalEnabled true \
2419             -valueList [list 0] \
2420             -stepValue 0 \
2421             -fixedBits 0 \
2422             -fieldValue 0 \
2423             -auto true \
2424             -randomMask 0 \
2425             -startValue 0
2426             sg_commit
2427             set sg_field [lindex [ixNet remapIds $sg_field] 0]
2428         } else {
2429
2430             # INNER TCP
2431             set sg_field $ixNetSG_Stack(2)/stack:"tcp-7"/field:"tcp.header.srcPort-1"
2432             ixNet setMultiAttrs $sg_field \
2433                 -singleValue $inner_srcport \
2434                 -seed 1 \
2435                 -optionalEnabled true \
2436                 -fullMesh false \
2437                 -valueList [list $inner_srcport] \
2438                 -stepValue 60 \
2439                 -fixedBits 60 \
2440                 -fieldValue $inner_srcport \
2441                 -auto false \
2442                 -randomMask 60 \
2443                 -trackingEnabled false \
2444                 -valueType singleValue \
2445                 -activeFieldChoice false \
2446                 -startValue 60 \
2447                 -countValue 1
2448
2449             set sg_field $ixNetSG_Stack(2)/stack:"tcp-7"/field:"tcp.header.dstPort-2"
2450             ixNet setMultiAttrs $sg_field \
2451                 -singleValue $inner_dstport \
2452                 -seed 1 \
2453                 -optionalEnabled true \
2454                 -fullMesh false \
2455                 -valueList [list $inner_dstport] \
2456                 -stepValue 60 \
2457                 -fixedBits 60 \
2458                 -fieldValue $inner_dstport \
2459                 -auto false \
2460                 -randomMask 60 \
2461                 -trackingEnabled false \
2462                 -valueType singleValue \
2463                 -activeFieldChoice false \
2464                 -startValue 60 \
2465                 -countValue 1
2466
2467             set sg_field $ixNetSG_Stack(2)/stack:"tcp-7"/field:"tcp.header.sequenceNumber-3"
2468             ixNet setMultiAttrs $sg_field \
2469                 -singleValue 0 \
2470                 -seed 1 \
2471                 -optionalEnabled true \
2472                 -fullMesh false \
2473                 -valueList [list 0x00000000] \
2474                 -stepValue 0x00000000 \
2475                 -fixedBits 0x00000000 \
2476                 -fieldValue 0 \
2477                 -auto true \
2478                 -randomMask 0x00000000 \
2479                 -trackingEnabled false \
2480                 -valueType singleValue \
2481                 -activeFieldChoice false \
2482                 -startValue 0x00000000 \
2483                 -countValue 1
2484
2485             set sg_field $ixNetSG_Stack(2)/stack:"tcp-7"/field:"tcp.header.acknowledgementNumber-4"
2486             ixNet setMultiAttrs $sg_field \
2487                 -singleValue 0 \
2488                 -seed 1 \
2489                 -optionalEnabled true \
2490                 -fullMesh false \
2491                 -valueList [list 0x00000000] \
2492                 -stepValue 0x00000000 \
2493                 -fixedBits 0x00000000 \
2494                 -fieldValue 0 \
2495                 -auto false \
2496                 -randomMask 0x00000000 \
2497                 -trackingEnabled false \
2498                 -valueType singleValue \
2499                 -activeFieldChoice false \
2500                 -startValue 0x00000000 \
2501                 -countValue 1
2502
2503             set sg_field $ixNetSG_Stack(2)/stack:"tcp-7"/field:"tcp.header.dataOffset-5"
2504             ixNet setMultiAttrs $sg_field \
2505                 -singleValue 5 \
2506                 -seed 1 \
2507                 -optionalEnabled true \
2508                 -fullMesh false \
2509                 -valueList [list 5] \
2510                 -stepValue 5 \
2511                 -fixedBits 5 \
2512                 -fieldValue 5 \
2513                 -auto true \
2514                 -randomMask 5 \
2515                 -trackingEnabled false \
2516                 -valueType singleValue \
2517                 -activeFieldChoice false \
2518                 -startValue 5 \
2519                 -countValue 1
2520
2521             set sg_field $ixNetSG_Stack(2)/stack:"tcp-7"/field:"tcp.header.reserved-6"
2522             ixNet setMultiAttrs $sg_field \
2523                 -singleValue 0 \
2524                 -seed 1 \
2525                 -optionalEnabled true \
2526                 -fullMesh false \
2527                 -valueList [list 0] \
2528                 -stepValue 0 \
2529                 -fixedBits 0 \
2530                 -fieldValue 0 \
2531                 -auto false \
2532                 -randomMask 0 \
2533                 -trackingEnabled false \
2534                 -valueType singleValue \
2535                 -activeFieldChoice false \
2536                 -startValue 0 \
2537                 -countValue 1
2538
2539             set sg_field $ixNetSG_Stack(2)/stack:"tcp-7"/field:"tcp.header.ecn.nsBit-7"
2540             ixNet setMultiAttrs $sg_field \
2541                 -singleValue 0 \
2542                 -seed 1 \
2543                 -optionalEnabled true \
2544                 -fullMesh false \
2545                 -valueList [list 0] \
2546                 -stepValue 0 \
2547                 -fixedBits 0 \
2548                 -fieldValue 0 \
2549                 -auto false \
2550                 -randomMask 0 \
2551                 -trackingEnabled false \
2552                 -valueType singleValue \
2553                 -activeFieldChoice false \
2554                 -startValue 0 \
2555                 -countValue 1
2556
2557             set sg_field $ixNetSG_Stack(2)/stack:"tcp-7"/field:"tcp.header.ecn.cwrBit-8"
2558             ixNet setMultiAttrs $sg_field \
2559                 -singleValue 0 \
2560                 -seed 1 \
2561                 -optionalEnabled true \
2562                 -fullMesh false \
2563                 -valueList [list 0] \
2564                 -stepValue 0 \
2565                 -fixedBits 0 \
2566                 -fieldValue 0 \
2567                 -auto false \
2568                 -randomMask 0 \
2569                 -trackingEnabled false \
2570                 -valueType singleValue \
2571                 -activeFieldChoice false \
2572                 -startValue 0 \
2573                 -countValue 1
2574
2575             set sg_field $ixNetSG_Stack(2)/stack:"tcp-7"/field:"tcp.header.ecn.ecnEchoBit-9"
2576             ixNet setMultiAttrs $sg_field \
2577                 -singleValue 0 \
2578                 -seed 1 \
2579                 -optionalEnabled true \
2580                 -fullMesh false \
2581                 -valueList [list 0] \
2582                 -stepValue 0 \
2583                 -fixedBits 0 \
2584                 -fieldValue 0 \
2585                 -auto false \
2586                 -randomMask 0 \
2587                 -trackingEnabled false \
2588                 -valueType singleValue \
2589                 -activeFieldChoice false \
2590                 -startValue 0 \
2591                 -countValue 1
2592
2593             set sg_field $ixNetSG_Stack(2)/stack:"tcp-7"/field:"tcp.header.controlBits.urgBit-10"
2594             ixNet setMultiAttrs $sg_field \
2595                 -singleValue 0 \
2596                 -seed 1 \
2597                 -optionalEnabled true \
2598                 -fullMesh false \
2599                 -valueList [list 0] \
2600                 -stepValue 0 \
2601                 -fixedBits 0 \
2602                 -fieldValue 0 \
2603                 -auto false \
2604                 -randomMask 0 \
2605                 -trackingEnabled false \
2606                 -valueType singleValue \
2607                 -activeFieldChoice false \
2608                 -startValue 0 \
2609                 -countValue 1
2610
2611             set sg_field $ixNetSG_Stack(2)/stack:"tcp-7"/field:"tcp.header.controlBits.ackBit-11"
2612             ixNet setMultiAttrs $sg_field \
2613                 -singleValue 0 \
2614                 -seed 1 \
2615                 -optionalEnabled true \
2616                 -fullMesh false \
2617                 -valueList [list 0] \
2618                 -stepValue 0 \
2619                 -fixedBits 0 \
2620                 -fieldValue 0 \
2621                 -auto false \
2622                 -randomMask 0 \
2623                 -trackingEnabled false \
2624                 -valueType singleValue \
2625                 -activeFieldChoice false \
2626                 -startValue 0 \
2627                 -countValue 1
2628
2629             set sg_field $ixNetSG_Stack(2)/stack:"tcp-7"/field:"tcp.header.controlBits.pshBit-12"
2630             ixNet setMultiAttrs $sg_field \
2631                 -singleValue 0 \
2632                 -seed 1 \
2633                 -optionalEnabled true \
2634                 -fullMesh false \
2635                 -valueList [list 0] \
2636                 -stepValue 0 \
2637                 -fixedBits 0 \
2638                 -fieldValue 0 \
2639                 -auto false \
2640                 -randomMask 0 \
2641                 -trackingEnabled false \
2642                 -valueType singleValue \
2643                 -activeFieldChoice false \
2644                 -startValue 0 \
2645                 -countValue 1
2646
2647             set sg_field $ixNetSG_Stack(2)/stack:"tcp-7"/field:"tcp.header.controlBits.rstBit-13"
2648             ixNet setMultiAttrs $sg_field \
2649                 -singleValue 0 \
2650                 -seed 1 \
2651                 -optionalEnabled true \
2652                 -fullMesh false \
2653                 -valueList [list 0] \
2654                 -stepValue 0 \
2655                 -fixedBits 0 \
2656                 -fieldValue 0 \
2657                 -auto false \
2658                 -randomMask 0 \
2659                 -trackingEnabled false \
2660                 -valueType singleValue \
2661                 -activeFieldChoice false \
2662                 -startValue 0 \
2663                 -countValue 1
2664
2665             set sg_field $ixNetSG_Stack(2)/stack:"tcp-7"/field:"tcp.header.controlBits.synBit-14"
2666             ixNet setMultiAttrs $sg_field \
2667                 -singleValue 0 \
2668                 -seed 1 \
2669                 -optionalEnabled true \
2670                 -fullMesh false \
2671                 -valueList [list 0] \
2672                 -stepValue 0 \
2673                 -fixedBits 0 \
2674                 -fieldValue 0 \
2675                 -auto false \
2676                 -randomMask 0 \
2677                 -trackingEnabled false \
2678                 -valueType singleValue \
2679                 -activeFieldChoice false \
2680                 -startValue 0 \
2681                 -countValue 1
2682
2683             set sg_field $ixNetSG_Stack(2)/stack:"tcp-7"/field:"tcp.header.controlBits.finBit-15"
2684             ixNet setMultiAttrs $sg_field \
2685                 -singleValue 0 \
2686                 -seed 1 \
2687                 -optionalEnabled true \
2688                 -fullMesh false \
2689                 -valueList [list 0] \
2690                 -stepValue 0 \
2691                 -fixedBits 0 \
2692                 -fieldValue 0 \
2693                 -auto false \
2694                 -randomMask 0 \
2695                 -trackingEnabled false \
2696                 -valueType singleValue \
2697                 -activeFieldChoice false \
2698                 -startValue 0 \
2699                 -countValue 1
2700
2701             set sg_field $ixNetSG_Stack(2)/stack:"tcp-7"/field:"tcp.header.window-16"
2702             ixNet setMultiAttrs $sg_field \
2703                 -singleValue 0 \
2704                 -seed 1 \
2705                 -optionalEnabled true \
2706                 -fullMesh false \
2707                 -valueList [list 0x0000] \
2708                 -stepValue 0x0000 \
2709                 -fixedBits 0x0000 \
2710                 -fieldValue 0 \
2711                 -auto false \
2712                 -randomMask 0x0000 \
2713                 -trackingEnabled false \
2714                 -valueType singleValue \
2715                 -activeFieldChoice false \
2716                 -startValue 0x0000 \
2717                 -countValue 1
2718
2719             set sg_field $ixNetSG_Stack(2)/stack:"tcp-7"/field:"tcp.header.checksum-17"
2720             ixNet setMultiAttrs $sg_field \
2721                 -singleValue 0 \
2722                 -seed 1 \
2723                 -optionalEnabled true \
2724                 -fullMesh false \
2725                 -valueList [list 0x0000] \
2726                 -stepValue 0x0000 \
2727                 -fixedBits 0x0000 \
2728                 -fieldValue 0 \
2729                 -auto true \
2730                 -randomMask 0x0000 \
2731                 -trackingEnabled false \
2732                 -valueType singleValue \
2733                 -activeFieldChoice false \
2734                 -startValue 0x0000 \
2735                 -countValue 1
2736
2737             set sg_field $ixNetSG_Stack(2)/stack:"tcp-7"/field:"tcp.header.urgentPtr-18"
2738             ixNet setMultiAttrs $sg_field \
2739                 -singleValue 0 \
2740                 -seed 1 \
2741                 -optionalEnabled true \
2742                 -fullMesh false \
2743                 -valueList [list 0x0000] \
2744                 -stepValue 0x0000 \
2745                 -fixedBits 0x0000 \
2746                 -fieldValue 0 \
2747                 -auto false \
2748                 -randomMask 0x0000 \
2749                 -trackingEnabled false \
2750                 -valueType singleValue \
2751                 -activeFieldChoice false \
2752                 -startValue 0x0000 \
2753                 -countValue 1
2754             sg_commit
2755             set sg_field [lindex [ixNet remapIds $sg_field] 0]
2756
2757         }
2758
2759
2760         set sg_field $ixNetSG_Stack(2)/stack:"fcs-8"/field:"ethernet.fcs-1"
2761         ixNet setMultiAttrs $sg_field \
2762         -singleValue 0 \
2763         -seed 1 \
2764         -optionalEnabled true \
2765         -valueList [list 0] \
2766         -stepValue 0 \
2767         -fixedBits 0 \
2768         -fieldValue 0 \
2769         -auto true \
2770         -randomMask 0 \
2771         -startValue 0
2772
2773         # VXLAN END
2774     } else {
2775         # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"fcs-4"
2776         #
2777         set sg_stack $ixNetSG_Stack(2)/stack:"fcs-4"
2778         sg_commit
2779         set sg_stack [lindex [ixNet remapIds $sg_stack] 0]
2780         set ixNetSG_Stack(3) $sg_stack
2781
2782         #
2783         # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"fcs-4"/field:"ethernet.fcs-1"
2784         #
2785         set sg_field $ixNetSG_Stack(3)/field:"ethernet.fcs-1"
2786         ixNet setMultiAttrs $sg_field \
2787          -singleValue {0} \
2788          -seed {1} \
2789          -optionalEnabled True \
2790          -fullMesh False \
2791          -valueList {{0}} \
2792          -stepValue {0} \
2793          -fixedBits {0} \
2794          -fieldValue {0} \
2795          -auto True \
2796          -randomMask {0} \
2797          -trackingEnabled False \
2798          -valueType singleValue \
2799          -activeFieldChoice False \
2800          -startValue {0} \
2801          -countValue {1}
2802         sg_commit
2803         set sg_field [lindex [ixNet remapIds $sg_field] 0]
2804     }
2805
2806     # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/transmissionDistribution
2807     #
2808     set sg_transmissionDistribution $ixNetSG_Stack(2)/transmissionDistribution
2809     ixNet setMultiAttrs $sg_transmissionDistribution \
2810      -distributions {}
2811     sg_commit
2812     set sg_transmissionDistribution [lindex [ixNet remapIds $sg_transmissionDistribution] 0]
2813
2814         #
2815     # configuring the object that corresponds to /traffic/trafficItem:1/transmissionDistribution
2816     #
2817     set sg_transmissionDistribution $ixNetSG_Stack(1)/transmissionDistribution
2818     ixNet setMultiAttrs $sg_transmissionDistribution \
2819      -distributions {}
2820     sg_commit
2821     sg_commit
2822     set sg_transmissionDistribution [lindex [ixNet remapIds $sg_transmissionDistribution] 0]
2823
2824     #
2825     # configuring the object that corresponds to /traffic/trafficItem:1/tracking
2826     #
2827     set sg_tracking $ixNetSG_Stack(1)/tracking
2828     ixNet setMultiAttrs $sg_tracking \
2829      -offset 0 \
2830      -oneToOneMesh False \
2831      -trackBy {} \
2832      -values {} \
2833      -fieldWidth thirtyTwoBits \
2834      -protocolOffset {Root.0}
2835     ixNet setMultiAttrs $sg_tracking/egress \
2836      -offset {Outer VLAN Priority (3 bits)} \
2837      -enabled False \
2838      -customOffsetBits 0 \
2839      -encapsulation {Ethernet} \
2840      -customWidthBits 0
2841     ixNet setMultiAttrs $sg_tracking/latencyBin \
2842      -enabled False \
2843      -binLimits {1 1.42 2 2.82 4 5.66 8 11.32} \
2844      -numberOfBins 8
2845     sg_commit
2846     set sg_tracking [lindex [ixNet remapIds $sg_tracking] 0]
2847     set ixNetSG_Stack(2) $sg_tracking
2848
2849     # EGRESS START
2850     # Note: The scriptgen generated egress code were removed because we are not using
2851     # flow tracking in our tests.
2852     # Insert EGRESS lines here if needed
2853     # EGRESS END
2854
2855     #
2856     # configuring the object that corresponds to /traffic/trafficItem:1/dynamicUpdate
2857     #
2858     set sg_dynamicUpdate $ixNetSG_Stack(1)/dynamicUpdate
2859     ixNet setMultiAttrs $sg_dynamicUpdate \
2860      -enabledSessionAwareTrafficFields {} \
2861      -enabledDynamicUpdateFields {}
2862     sg_commit
2863     set sg_dynamicUpdate [lindex [ixNet remapIds $sg_dynamicUpdate] 0]
2864
2865     ###
2866     ### /quickTest area
2867     ###
2868
2869     #
2870     # configuring the object that corresponds to /quickTest/rfc2544throughput:1
2871     #
2872     if {$rfc2544TestType == "throughput"} {
2873         set sg_rfc2544throughput [ixNet add $ixNetSG_Stack(0)/quickTest rfc2544throughput]
2874         ixNet setMultiAttrs $sg_rfc2544throughput \
2875          -name {QuickTest1} \
2876          -mode existingMode \
2877          -inputParameters {{}}
2878         ixNet setMultiAttrs $sg_rfc2544throughput/testConfig \
2879          -protocolItem {} \
2880          -enableMinFrameSize False \
2881          -framesize $frameSize \
2882          -reportTputRateUnit mbps \
2883          -duration $duration \
2884          -numtrials $numTrials \
2885          -trafficType constantLoading \
2886          -burstSize 1 \
2887          -framesPerBurstGap 1 \
2888          -tolerance 0 \
2889          -frameLossUnit {0} \
2890          -staggeredStart False \
2891          -framesizeList $frameSize \
2892          -frameSizeMode custom \
2893          -rateSelect percentMaxRate \
2894          -percentMaxRate 100 \
2895          -resolution 0.01 \
2896          -forceRegenerate False \
2897          -reportSequenceError False \
2898          -ipv4rate 50 \
2899          -ipv6rate 50 \
2900          -loadRateList $frameRate \
2901          -fixedLoadUnit percentMaxRate \
2902          -loadRateValue 80 \
2903          -incrementLoadUnit percentMaxRate \
2904          -initialIncrementLoadRate 10 \
2905          -stepIncrementLoadRate 10 \
2906          -maxIncrementLoadRate 100 \
2907           -randomLoadUnit percentMaxRate \
2908          -minRandomLoadRate 10 \
2909          -maxRandomLoadRate 80 \
2910          -countRandomLoadRate 1 \
2911          -minFpsRate 1000 \
2912          -minKbpsRate 64 \
2913          -txDelay 2 \
2914          -delayAfterTransmit 2 \
2915          -minRandomFrameSize 64 \
2916          -maxRandomFrameSize 1518 \
2917          -countRandomFrameSize 1 \
2918          -minIncrementFrameSize 64 \
2919          -stepIncrementFrameSize 64 \
2920          -maxIncrementFrameSize 1518 \
2921          -calculateLatency True \
2922          -latencyType storeForward \
2923          -calculateJitter False \
2924          -enableDataIntegrity False \
2925          -enableBackoffIteration False \
2926          -enableSaturationIteration False \
2927          -enableStopTestOnHighLoss False \
2928          -enableBackoffUseAs% False \
2929          -backoffIteration 1 \
2930          -saturationIteration 1 \
2931          -stopTestOnHighLoss 0 \
2932          -loadType $loadType \
2933          -stepLoadUnit percentMaxRate \
2934          -customLoadUnit percentMaxRate \
2935          -comboLoadUnit percentMaxRate \
2936          -binaryLoadUnit percentMaxRate \
2937          -initialBinaryLoadRate 100 \
2938          -minBinaryLoadRate 1 \
2939          -maxBinaryLoadRate 100 \
2940          -binaryResolution 1 \
2941          -binaryBackoff 50 \
2942          -binaryTolerance $tolerance \
2943          -binaryFrameLossUnit % \
2944          -comboFrameLossUnit % \
2945          -stepFrameLossUnit % \
2946          -initialStepLoadRate 10 \
2947          -maxStepLoadRate 100 \
2948          -stepStepLoadRate 10 \
2949          -stepTolerance 0 \
2950          -initialComboLoadRate 10 \
2951          -maxComboLoadRate 100 \
2952          -minComboLoadRate 10 \
2953          -stepComboLoadRate 10 \
2954          -comboResolution 1 \
2955          -comboBackoff 50 \
2956          -comboTolerance 0 \
2957          -binarySearchType linear \
2958          -unchangedValueList {0} \
2959          -enableFastConvergence $fastConvergence \
2960          -fastConvergenceDuration $convergenceDuration \
2961          -fastConvergenceThreshold 10 \
2962          -framesizeFixedValue $frameSize \
2963          -gap 3 \
2964          -unchangedInitial False \
2965          -generateTrackingOptionAggregationFiles False \
2966          -enableExtraIterations False \
2967          -extraIterationOffsets {10, -10} \
2968          -usePercentOffsets False \
2969          -imixDistribution weight \
2970          -imixAdd {0} \
2971          -imixDelete {0} \
2972          -imixData {{{{64}{{TOS S:0 S:0 S:0 S:0 S:0} S:0}{1 40}}{{128}{{TOS S:0 S:0 S:0 S:0 S:0} S:0}{1 30}}{{256}{{TOS S:0 S:0 S:0 S:0 S:0} S:0}{1 30}}}} \
2973          -imixEnabled False \
2974          -imixTemplates none \
2975          -framesizeImixList $frameSize \
2976          -imixTrafficType {UNCHNAGED} \
2977          -mapType {oneToOne} \
2978          -supportedTrafficTypes {mac,ipv4,ipv6,ipmix}
2979         ixNet setMultiAttrs $sg_rfc2544throughput/learnFrames \
2980          -learnFrequency $learningFrequency \
2981          -learnNumFrames 10 \
2982          -learnRate 100 \
2983          -learnWaitTime 1000 \
2984          -learnFrameSize $frameSize \
2985          -fastPathLearnFrameSize $frameSize \
2986          -learnWaitTimeBeforeTransmit 0 \
2987          -learnSendMacOnly False \
2988          -learnSendRouterSolicitation False \
2989          -fastPathEnable $fastPathEnable \
2990          -fastPathRate 100 \
2991          -fastPathNumFrames 10
2992         ixNet setMultiAttrs $sg_rfc2544throughput/passCriteria \
2993          -passCriteriaLoadRateMode average \
2994          -passCriteriaLoadRateValue 100 \
2995          -passCriteriaLoadRateScale mbps \
2996          -enablePassFail False \
2997          -enableRatePassFail False \
2998          -enableLatencyPassFail False \
2999          -enableStandardDeviationPassFail False \
3000          -latencyThresholdValue 10 \
3001          -latencyThresholdScale us \
3002          -latencyThresholdMode average \
3003          -latencyVariationThresholdValue 0 \
3004          -latencyVariationThresholdScale us \
3005          -latencyVarThresholdMode average \
3006          -enableSequenceErrorsPassFail False \
3007          -seqErrorsThresholdValue 0 \
3008          -seqErrorsThresholdMode average \
3009          -enableDataIntegrityPassFail False \
3010          -dataErrorThresholdValue 0 \
3011          -dataErrorThresholdMode average
3012         sg_commit
3013         set sg_rfc2544throughput [lindex [ixNet remapIds $sg_rfc2544throughput] 0]
3014         set ixNetSG_Stack(1) $sg_rfc2544throughput
3015
3016         #
3017         # configuring the object that corresponds to /quickTest/rfc2544throughput:1/protocols
3018         #
3019         set sg_protocols $ixNetSG_Stack(1)/protocols
3020         ixNet setMultiAttrs $sg_protocols \
3021          -protocolState default \
3022          -waitAfterStart 120 \
3023          -waitAfterStop 30
3024         sg_commit
3025         set sg_protocols [lindex [ixNet remapIds $sg_protocols] 0]
3026
3027         #
3028         # configuring the object that corresponds to /quickTest/rfc2544throughput:1/trafficSelection:1
3029         #
3030         set sg_trafficSelection [ixNet add $ixNetSG_Stack(1) trafficSelection]
3031         ixNet setMultiAttrs $sg_trafficSelection \
3032          -id $ixNetSG_ref(26) \
3033          -includeMode inTest \
3034          -itemType trafficItem
3035         sg_commit
3036         set sg_trafficSelection [lindex [ixNet remapIds $sg_trafficSelection] 0]
3037         ixNet commit
3038
3039     } elseif {$rfc2544TestType == "back2back"} {
3040         #
3041         # configuring the object that corresponds to /quickTest/rfc2544back2back:2
3042         #
3043         set sg_rfc2544back2back [ixNet add $ixNetSG_Stack(0)/quickTest rfc2544back2back]
3044         ixNet setMultiAttrs $sg_rfc2544back2back \
3045          -name {B2B} \
3046          -mode existingMode \
3047          -inputParameters {{}}
3048         ixNet setMultiAttrs $sg_rfc2544back2back/testConfig \
3049          -protocolItem {} \
3050          -framesize $frameSize \
3051          -reportTputRateUnit mbps \
3052          -rfc2544ImixDataQoS False \
3053          -detailedResultsEnabled True \
3054          -rfc2889ordering noOrdering \
3055          -floodedFramesEnabled False \
3056          -duration $duration \
3057          -numtrials $numTrials \
3058          -trafficType constantLoading \
3059          -burstSize 1 \
3060          -framesPerBurstGap 1 \
3061          -tolerance 0 \
3062          -frameLossUnit {0} \
3063          -staggeredStart False \
3064          -framesizeList $frameSize \
3065          -frameSizeMode custom \
3066          -rateSelect percentMaxRate \
3067          -percentMaxRate 100 \
3068          -resolution 0.01 \
3069          -forceRegenerate False \
3070          -reportSequenceError False \
3071          -ipv4rate 50 \
3072          -ipv6rate 50 \
3073          -loadRateList $frameRate \
3074          -minFpsRate 1000 \
3075          -minKbpsRate 64 \
3076          -txDelay 2 \
3077          -delayAfterTransmit 2 \
3078          -minRandomFrameSize 64 \
3079          -maxRandomFrameSize 1518 \
3080          -countRandomFrameSize 1 \
3081          -minIncrementFrameSize 64 \
3082          -stepIncrementFrameSize 64 \
3083          -maxIncrementFrameSize 1518 \
3084          -calculateLatency False \
3085          -calibrateLatency False \
3086          -latencyType cutThrough \
3087          -calculateJitter False \
3088          -enableDataIntegrity False \
3089          -loadType $loadType \
3090          -binaryFrameLossUnit % \
3091          -loadUnit percentMaxRate \
3092          -customLoadUnit percentMaxRate \
3093          -randomLoadUnit percentMaxRate \
3094          -incrementLoadUnit percentMaxRate \
3095          -binaryResolution 100 \
3096          -binaryBackoff 50 \
3097          -binaryTolerance $tolerance \
3098          -initialIncrementLoadRate 100 \
3099          -stepIncrementLoadRate 10 \
3100          -maxIncrementLoadRate 100 \
3101          -minRandomLoadRate 10 \
3102          -maxRandomLoadRate 80 \
3103          -countRandomLoadRate 1 \
3104          -numFrames {100000} \
3105          -loadRate 100 \
3106          -enableMinFrameSize False \
3107          -gap 3 \
3108          -generateTrackingOptionAggregationFiles False \
3109          -sendFullyMeshed False \
3110          -imixDistribution weight \
3111          -imixAdd {0} \
3112          -imixDelete {0} \
3113          -imixData {{{{64}{{TOS S:0 S:0 S:0 S:0 S:0} S:0}{1 40}}{{128}{{TOS S:0 S:0 S:0 S:0 S:0} S:0}{1 30}}{{256}{{TOS S:0 S:0 S:0 S:0 S:0} S:0}{1 30}}}} \
3114          -imixEnabled False \
3115          -imixTemplates none \
3116          -framesizeImixList $frameSize \
3117          -imixTrafficType {UNCHNAGED} \
3118          -ipRatioMode fixed \
3119          -ipv4RatioList {10,25,50,75,90} \
3120          -ipv6RatioList {90,75,50,25,10} \
3121          -minIncrementIpv4Ratio {10} \
3122          -stepIncrementIpv4Ratio {10} \
3123          -maxIncrementIpv4Ratio {90} \
3124          -minIncrementIpv6Ratio {90} \
3125          -stepIncrementIpv6Ratio {-10} \
3126          -maxIncrementIpv6Ratio {10} \
3127          -minRandomIpv4Ratio {10} \
3128          -maxRandomIpv4Ratio {90} \
3129          -minRandomIpv6Ratio {90} \
3130          -maxRandomIpv6Ratio {10} \
3131          -countRandomIpRatio 1 \
3132          -mapType {oneToOne|manyToMany|fullMesh} \
3133          -supportedTrafficTypes {mac,ipv4,ipv6,ipmix}
3134         ixNet setMultiAttrs $sg_rfc2544back2back/learnFrames \
3135          -learnFrequency $learningFrequency \
3136          -learnNumFrames 10 \
3137          -learnRate 100 \
3138          -learnWaitTime 1000 \
3139          -learnFrameSize 64 \
3140          -fastPathLearnFrameSize 64 \
3141          -learnWaitTimeBeforeTransmit 0 \
3142          -learnSendMacOnly False \
3143          -learnSendRouterSolicitation False \
3144          -fastPathEnable $fastPathEnable \
3145          -fastPathRate 100 \
3146          -fastPathNumFrames 10
3147         ixNet setMultiAttrs $sg_rfc2544back2back/passCriteria \
3148          -passCriteriaLoadRateMode average \
3149          -passCriteriaLoadRateValue 100 \
3150          -passCriteriaLoadRateScale mbps \
3151          -enablePassFail False \
3152          -enableRatePassFail False \
3153          -enableLatencyPassFail False \
3154          -enableStandardDeviationPassFail False \
3155          -latencyThresholdValue 10 \
3156          -latencyThresholdScale us \
3157          -latencyThresholdMode average \
3158          -latencyVariationThresholdValue 0 \
3159          -latencyVariationThresholdScale us \
3160          -latencyVarThresholdMode average \
3161          -enableSequenceErrorsPassFail False \
3162          -seqErrorsThresholdValue 0 \
3163          -seqErrorsThresholdMode average \
3164          -enableDataIntegrityPassFail False \
3165          -dataErrorThresholdValue 0 \
3166          -dataErrorThresholdMode average \
3167          -enableFrameCountPassFail False \
3168          -passCriteriaFrameCountValue 100 \
3169          -passCriteriaFrameCountMode average
3170         sg_commit
3171         set sg_rfc2544back2back [lindex [ixNet remapIds $sg_rfc2544back2back] 0]
3172         set ixNetSG_Stack(1) $sg_rfc2544back2back
3173
3174         #
3175         # configuring the object that corresponds to /quickTest/rfc2544back2back:2/protocols
3176         #
3177         set sg_protocols $ixNetSG_Stack(1)/protocols
3178         ixNet setMultiAttrs $sg_protocols \
3179          -protocolState default \
3180          -waitAfterStart 120 \
3181          -waitAfterStop 30
3182         sg_commit
3183         set sg_protocols [lindex [ixNet remapIds $sg_protocols] 0]
3184
3185         #
3186         # configuring the object that corresponds to /quickTest/rfc2544back2back:2/trafficSelection:1
3187         #
3188         set sg_trafficSelection [ixNet add $ixNetSG_Stack(1) trafficSelection]
3189         ixNet setMultiAttrs $sg_trafficSelection \
3190          -id $ixNetSG_ref(26) \
3191          -includeMode inTest \
3192          -itemType trafficItem
3193         sg_commit
3194         set sg_trafficSelection [lindex [ixNet remapIds $sg_trafficSelection] 0]
3195         ixNet commit
3196     }
3197
3198     #
3199     # getting and applying the RFC2544 test
3200     #
3201     set root [ixNet getRoot]
3202     foreach traf_item [ixNet getList $root/traffic trafficItem] {
3203         ixNet exec generate $traf_item
3204     }
3205
3206     set qt [ixNet getList $root quickTest]
3207     if {$rfc2544TestType == "throughput"} {
3208         set rfc2544test [ixNet getList $qt rfc2544throughput]
3209     } elseif {$rfc2544TestType == "back2back"} {
3210         set rfc2544test [ixNet getList $qt rfc2544back2back]
3211     }
3212     ixNet exec apply $rfc2544test
3213     after 5000
3214
3215     #
3216     # starting the RFC2544 Throughput test
3217     #
3218     puts "Starting test..."
3219     ixNet exec start $rfc2544test
3220 }
3221
3222 proc waitForRfc2544Test { } {
3223     # Wait for- and return results of- RFC2544 quicktest.
3224
3225     global rfc2544test
3226
3227     puts "Waiting for test to complete..."
3228     set result [ixNet exec waitForTest $rfc2544test]
3229     puts "Finished Test"
3230
3231     return "$result"
3232 }