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