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