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