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