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