#!/usr/bin/env tclsh # Copyright (c) 2014, Ixia # Copyright (c) 2015-2017, Intel Corporation # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # 3. Neither the name of the copyright holder nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # This file is a modified version of a script generated by Ixia # IxNetwork. lappend auto_path [list $lib_path] ################################################################### ########################## Configuration ########################## ################################################################### # verify that the IXIA chassis spec is given set reqVars [list "machine" "port" "user" "chassis" "card" "port1" "port2" "output_dir" "bidir"] set rfc2544test "" foreach var $reqVars { set var_ns [namespace which -variable "$var"] if { [string compare $var_ns ""] == 0 } { errorMsg "The '$var' variable is undefined. Did you set it?" return -1 } } # machine configuration set ::IxNserver $machine set ::IxNport $port set ::biDirect $bidir # change to windows path format and append directory set output_dir [string map {"/" "\\"} $output_dir] set output_dir "$output_dir\\rfctests" puts "Output directory is $output_dir" proc startRfc2544Test { testSpec trafficSpec } { # Start RFC2544 quicktest. # Configure global variables. See documentation on 'global' for more # information on why this is necessary # https://www.tcl.tk/man/tcl8.5/tutorial/Tcl13.html global rfc2544test global sg_rfc2544throughput global sg_rfc2544back2back # flow spec set rfc2544TestType [dict get $testSpec rfc2544TestType] set binary [dict get $testSpec binary] set duration [dict get $testSpec duration] set L2CountValue 1 set L2Increment False set L3ValueType singleValue set L3CountValue 1 set L4ValueType singleValue set L4CountValue 1 # RFC2544 to IXIA terminology mapping (it affects Ixia configuration inside this script): # Test => Trial # Trial => Iteration if {$binary} { set numTests [dict get $testSpec tests] set frameRate 100 set tolerance [dict get $testSpec lossrate] set loadType binary } else { set numTests 1 set frameRate [dict get $testSpec framerate] set tolerance 0.0 set loadType custom } set learningFrames True if {$learningFrames} { set learningFrequency oncePerTest set fastPathEnable True } else { set learningFrequency never set fastPathEnable False } set multipleStreams [dict get $testSpec multipleStreams] set streamType [dict get $testSpec streamType] if {($multipleStreams < 0)} { set multipleStreams 0 } if {$multipleStreams} { if {($streamType == "L2")} { set L2CountValue $multipleStreams set L2Increment True } elseif {($streamType == "L3")} { set L3ValueType increment set L3CountValue $multipleStreams } else { set L4ValueType increment set L4CountValue $multipleStreams } } set fastConvergence True set convergenceDuration [expr $duration/10] # traffic spec # extract nested dictionaries set trafficSpec_l2 [dict get $trafficSpec l2] set trafficSpec_l3 [dict get $trafficSpec l3] set trafficSpec_l4 [dict get $trafficSpec l4] set trafficSpec_vlan [dict get $trafficSpec vlan] set frameSize [dict get $trafficSpec_l2 framesize] set srcMac [dict get $trafficSpec_l2 srcmac] set dstMac [dict get $trafficSpec_l2 dstmac] set srcPort [dict get $trafficSpec_l4 srcport] set dstPort [dict get $trafficSpec_l4 dstport] # Tested protocols: udp, tcp, gre set proto [dict get $trafficSpec_l3 proto] set proto [string tolower $proto] set srcIp [dict get $trafficSpec_l3 srcip] set dstIp [dict get $trafficSpec_l3 dstip] set proto_value 17 if { [string compare $proto "tcp"] == 0 } { set proto_value 6 } # VXLAN set vxlan_enabled [dict exists $trafficSpec_l4 vni] set geneve_enabled [dict exists $trafficSpec_l4 geneve_vni] if { $vxlan_enabled } { puts "VXLAN is enabled. Setting VXLAN variables" set vni [dict get $trafficSpec_l4 vni] set inner_srcmac [dict get $trafficSpec_l4 inner_srcmac] set inner_dstmac [dict get $trafficSpec_l4 inner_dstmac] set inner_srcip [dict get $trafficSpec_l4 inner_srcip] set inner_dstip [dict get $trafficSpec_l4 inner_dstip] set inner_proto [dict get $trafficSpec_l4 inner_proto] set inner_proto [string tolower $inner_proto] set inner_srcport [dict get $trafficSpec_l4 inner_srcport] set inner_dstport [dict get $trafficSpec_l4 inner_dstport] } elseif { $geneve_enabled } { puts "GENEVE is enabled. Setting GENEVE variables" set geneve_vni [dict get $trafficSpec_l4 geneve_vni] set inner_srcmac [dict get $trafficSpec_l4 inner_srcmac] set inner_dstmac [dict get $trafficSpec_l4 inner_dstmac] set inner_srcip [dict get $trafficSpec_l4 inner_srcip] set inner_dstip [dict get $trafficSpec_l4 inner_dstip] set inner_proto [dict get $trafficSpec_l4 inner_proto] set inner_proto [string tolower $inner_proto] set inner_srcport [dict get $trafficSpec_l4 inner_srcport] set inner_dstport [dict get $trafficSpec_l4 inner_dstport] } set gre_enabled False if { [string compare $proto "gre"] == 0 } { puts "GRE is enabled. Setting GRE variables" set proto_value 47 set gre_enabled True set inner_srcmac [dict get $trafficSpec_l4 inner_srcmac] set inner_dstmac [dict get $trafficSpec_l4 inner_dstmac] set inner_srcip [dict get $trafficSpec_l4 inner_srcip] set inner_dstip [dict get $trafficSpec_l4 inner_dstip] set inner_proto [dict get $trafficSpec_l4 inner_proto] set inner_proto [string tolower $inner_proto] set inner_srcport [dict get $trafficSpec_l4 inner_srcport] set inner_dstport [dict get $trafficSpec_l4 inner_dstport] } if {$frameSize < 68 } { if {$rfc2544TestType == "back2back"} { puts "INFO: Packet size too small, packet size will be \ increased to 68 for this test" } } # constants set VERSION [package require IxTclNetwork] ################################################################### ############################ Operation ############################ ################################################################### puts "Connecting to IxNetwork machine..." ixNet connect $::IxNserver -port $::IxNport -version $VERSION puts "Connected to IxNetwork machine" puts "Configuring IxNetwork machine..." set ::_sg_cc 0 proc sg_commit {} {ixNet commit} ixNet rollback ixNet setSessionParameter version 6.30.701.16 ixNet execute newConfig set ixNetSG_Stack(0) [ixNet getRoot] # # setting global options # set sg_top [ixNet getRoot] ixNet setMultiAttrs $sg_top/availableHardware \ -offChassisHwM {} \ -isOffChassis False ixNet setMultiAttrs $sg_top/globals/preferences \ -connectPortsOnLoadConfig True \ -rebootPortsOnConnect False ixNet setMultiAttrs $sg_top/globals/interfaces \ -arpOnLinkup True \ -nsOnLinkup True \ -sendSingleArpPerGateway True \ -sendSingleNsPerGateway True ixNet setMultiAttrs $sg_top/impairment/defaultProfile/checksums \ -dropRxL2FcsErrors False \ -correctTxL2FcsErrors False \ -alwaysCorrectWhenModifying True \ -correctTxChecksumOverIp False \ -correctTxIpv4Checksum False ixNet setMultiAttrs $sg_top/impairment/defaultProfile/rxRateLimit \ -enabled False \ -value 8 \ -units {kKilobitsPerSecond} ixNet setMultiAttrs $sg_top/impairment/defaultProfile/drop \ -enabled False \ -clusterSize 1 \ -percentRate 0 ixNet setMultiAttrs $sg_top/impairment/defaultProfile/reorder \ -enabled False \ -clusterSize 1 \ -percentRate 0 \ -skipCount 1 ixNet setMultiAttrs $sg_top/impairment/defaultProfile/duplicate \ -enabled False \ -clusterSize 1 \ -percentRate 0 \ -duplicateCount 1 ixNet setMultiAttrs $sg_top/impairment/defaultProfile/bitError \ -enabled False \ -logRate 3 \ -skipEndOctets 0 \ -skipStartOctets 0 ixNet setMultiAttrs $sg_top/impairment/defaultProfile/delay \ -enabled False \ -value 300 \ -units {kMicroseconds} ixNet setMultiAttrs $sg_top/impairment/defaultProfile/delayVariation \ -uniformSpread 0 \ -enabled False \ -units {kMicroseconds} \ -distribution {kUniform} \ -exponentialMeanArrival 0 \ -gaussianStandardDeviation 0 ixNet setMultiAttrs $sg_top/impairment/defaultProfile/customDelayVariation \ -enabled False \ -name {} ixNet setMultiAttrs $sg_top/statistics \ -additionalFcoeStat2 fcoeInvalidFrames \ -csvLogPollIntervalMultiplier 1 \ -pollInterval 2 \ -guardrailEnabled True \ -enableCsvLogging False \ -dataStorePollingIntervalMultiplier 1 \ -maxNumberOfStatsPerCustomGraph 16 \ -additionalFcoeStat1 fcoeInvalidDelimiter \ -timestampPrecision 3 \ -enableDataCenterSharedStats False \ -timeSynchronization syncTimeToTestStart \ -enableAutoDataStore False ixNet setMultiAttrs $sg_top/statistics/measurementMode \ -measurementMode mixedMode ixNet setMultiAttrs $sg_top/eventScheduler \ -licenseServerLocation {127.0.0.1} ixNet setMultiAttrs $sg_top/traffic \ -destMacRetryCount 1 \ -maxTrafficGenerationQueries 500 \ -enableStaggeredTransmit False \ -learningFrameSize $frameSize \ -useTxRxSync True \ -enableDestMacRetry True \ -enableMulticastScalingFactor False \ -destMacRetryDelay 5 \ -largeErrorThreshhold 2 \ -refreshLearnedInfoBeforeApply False \ -enableMinFrameSize False \ -macChangeOnFly False \ -waitTime 1 \ -enableInstantaneousStatsSupport False \ -learningFramesCount 10 \ -globalStreamControl continuous \ -displayMplsCurrentLabelValue False \ -mplsLabelLearningTimeout 30 \ -enableStaggeredStartDelay True \ -enableDataIntegrityCheck False \ -enableSequenceChecking False \ -globalStreamControlIterations 1 \ -enableStreamOrdering False \ -frameOrderingMode none \ -learningFramesRate 100 ixNet setMultiAttrs $sg_top/traffic/statistics/latency \ -enabled True \ -mode storeForward ixNet setMultiAttrs $sg_top/traffic/statistics/interArrivalTimeRate \ -enabled False ixNet setMultiAttrs $sg_top/traffic/statistics/delayVariation \ -enabled False \ -statisticsMode rxDelayVariationErrorsAndRate \ -latencyMode storeForward \ -largeSequenceNumberErrorThreshold 2 ixNet setMultiAttrs $sg_top/traffic/statistics/sequenceChecking \ -enabled False \ -sequenceMode rxThreshold ixNet setMultiAttrs $sg_top/traffic/statistics/advancedSequenceChecking \ -enabled False \ -advancedSequenceThreshold 1 ixNet setMultiAttrs $sg_top/traffic/statistics/cpdpConvergence \ -enabled False \ -dataPlaneJitterWindow 10485760 \ -dataPlaneThreshold 95 \ -enableDataPlaneEventsRateMonitor False \ -enableControlPlaneEvents False ixNet setMultiAttrs $sg_top/traffic/statistics/packetLossDuration \ -enabled False ixNet setMultiAttrs $sg_top/traffic/statistics/dataIntegrity \ -enabled False ixNet setMultiAttrs $sg_top/traffic/statistics/errorStats \ -enabled False ixNet setMultiAttrs $sg_top/traffic/statistics/prbs \ -enabled False ixNet setMultiAttrs $sg_top/traffic/statistics/iptv \ -enabled False ixNet setMultiAttrs $sg_top/traffic/statistics/l1Rates \ -enabled False ixNet setMultiAttrs $sg_top/quickTest/globals \ -productLabel {Your switch/router name here} \ -serialNumber {Your switch/router serial number here} \ -version {Your firmware version here} \ -comments {} \ -titlePageComments {} \ -maxLinesToDisplay 100 \ -enableCheckLinkState False \ -enableAbortIfLinkDown False \ -enableSwitchToStats True \ -enableCapture False \ -enableSwitchToResult True \ -enableGenerateReportAfterRun False \ -enableRebootCpu False \ -saveCaptureBeforeRun False \ -linkDownTimeout 5 \ -sleepTimeAfterReboot 10 \ -useDefaultRootPath False \ -outputRootPath $::output_dir sg_commit set sg_top [lindex [ixNet remapIds $sg_top] 0] set ixNetSG_Stack(0) $sg_top ### ### /vport area ### # # configuring the object that corresponds to /vport:1 # set sg_vport [ixNet add $ixNetSG_Stack(0) vport] ixNet setMultiAttrs $sg_vport \ -transmitIgnoreLinkStatus False \ -txGapControlMode averageMode \ -type tenGigLan \ -connectedTo ::ixNet::OBJ-null \ -txMode interleaved \ -isPullOnly False \ -rxMode captureAndMeasure \ -name {10GE LAN - 001} ixNet setMultiAttrs $sg_vport/l1Config \ -currentType tenGigLan ixNet setMultiAttrs $sg_vport/l1Config/tenGigLan \ -ppm 0 \ -flowControlDirectedAddress "01 80 C2 00 00 01" \ -enablePPM False \ -autoInstrumentation endOfFrame \ -transmitClocking internal \ -txIgnoreRxLinkFaults False \ -loopback False \ -enableLASIMonitoring False \ -enabledFlowControl True ixNet setMultiAttrs $sg_vport/l1Config/tenGigLan/oam \ -tlvType {00} \ -linkEvents False \ -enabled False \ -vendorSpecificInformation {00 00 00 00} \ -macAddress "00:00:00:00:00:00" \ -loopback False \ -idleTimer 5 \ -tlvValue {00} \ -enableTlvOption False \ -maxOAMPDUSize 64 \ -organizationUniqueIdentifier {000000} ixNet setMultiAttrs $sg_vport/l1Config/tenGigLan/fcoe \ -supportDataCenterMode False \ -priorityGroupSize priorityGroupSize-8 \ -pfcPauseDelay 1 \ -pfcPriorityGroups {0 1 2 3 4 5 6 7} \ -flowControlType ieee802.1Qbb \ -enablePFCPauseDelay False ixNet setMultiAttrs $sg_vport/l1Config/fortyGigLan \ -ppm 0 \ -flowControlDirectedAddress "01 80 C2 00 00 01" \ -enablePPM False \ -autoInstrumentation endOfFrame \ -transmitClocking internal \ -txIgnoreRxLinkFaults False \ -loopback False \ -enableLASIMonitoring False \ -enabledFlowControl False ixNet setMultiAttrs $sg_vport/l1Config/fortyGigLan/fcoe \ -supportDataCenterMode False \ -priorityGroupSize priorityGroupSize-8 \ -pfcPauseDelay 1 \ -pfcPriorityGroups {0 1 2 3 4 5 6 7} \ -flowControlType ieee802.1Qbb \ -enablePFCPauseDelay False ixNet setMultiAttrs $sg_vport/l1Config/OAM \ -tlvType {00} \ -linkEvents False \ -enabled False \ -vendorSpecificInformation {00 00 00 00} \ -macAddress "00:00:00:00:00:00" \ -loopback False \ -idleTimer 5 \ -tlvValue {00} \ -enableTlvOption False \ -maxOAMPDUSize 64 \ -organizationUniqueIdentifier {000000} ixNet setMultiAttrs $sg_vport/l1Config/rxFilters/filterPalette \ -sourceAddress1Mask {00:00:00:00:00:00} \ -destinationAddress1Mask {00:00:00:00:00:00} \ -sourceAddress2 {00:00:00:00:00:00} \ -pattern2OffsetType fromStartOfFrame \ -pattern2Offset 20 \ -pattern1Mask {00} \ -sourceAddress2Mask {00:00:00:00:00:00} \ -destinationAddress2 {00:00:00:00:00:00} \ -destinationAddress1 {00:00:00:00:00:00} \ -sourceAddress1 {00:00:00:00:00:00} \ -pattern1 {00} \ -destinationAddress2Mask {00:00:00:00:00:00} \ -pattern2Mask {00} \ -pattern1Offset 20 \ -pattern2 {00} \ -pattern1OffsetType fromStartOfFrame ixNet setMultiAttrs $sg_vport/protocols/arp \ -enabled False ixNet setMultiAttrs $sg_vport/protocols/bfd \ -enabled False \ -intervalValue 0 \ -packetsPerInterval 0 ixNet setMultiAttrs $sg_vport/protocols/bgp \ -autoFillUpDutIp False \ -disableReceivedUpdateValidation False \ -enableAdVplsPrefixLengthInBits False \ -enableExternalActiveConnect True \ -enableInternalActiveConnect True \ -enableVpnLabelExchangeOverLsp True \ -enabled False \ -externalRetries 0 \ -externalRetryDelay 120 \ -internalRetries 0 \ -internalRetryDelay 120 \ -mldpP2mpFecType 6 \ -triggerVplsPwInitiation False ixNet setMultiAttrs $sg_vport/protocols/cfm \ -enableOptionalLmFunctionality False \ -enableOptionalTlvValidation True \ -enabled False \ -receiveCcm True \ -sendCcm True \ -suppressErrorsOnAis True ixNet setMultiAttrs $sg_vport/protocols/eigrp \ -enabled False ixNet setMultiAttrs $sg_vport/protocols/elmi \ -enabled False ixNet setMultiAttrs $sg_vport/protocols/igmp \ -enabled False \ -numberOfGroups 0 \ -numberOfQueries 0 \ -queryTimePeriod 0 \ -sendLeaveOnStop True \ -statsEnabled False \ -timePeriod 0 ixNet setMultiAttrs $sg_vport/protocols/isis \ -allL1RbridgesMac "01:80:c2:00:00:40" \ -emulationType isisL3Routing \ -enabled False \ -helloMulticastMac "01:80:c2:00:00:41" \ -lspMgroupPdusPerInterval 0 \ -nlpId 192 \ -rateControlInterval 0 \ -sendP2PHellosToUnicastMac True \ -spbAllL1BridgesMac "09:00:2b:00:00:05" \ -spbHelloMulticastMac "09:00:2b:00:00:05" \ -spbNlpId 192 ixNet setMultiAttrs $sg_vport/protocols/lacp \ -enablePreservePartnerInfo False \ -enabled False ixNet setMultiAttrs $sg_vport/protocols/ldp \ -enableDiscardSelfAdvFecs False \ -enableHelloJitter True \ -enableVpnLabelExchangeOverLsp True \ -enabled False \ -helloHoldTime 15 \ -helloInterval 5 \ -keepAliveHoldTime 30 \ -keepAliveInterval 10 \ -p2mpCapabilityParam 1288 \ -p2mpFecType 6 \ -targetedHelloInterval 15 \ -targetedHoldTime 45 \ -useTransportLabelsForMplsOam False ixNet setMultiAttrs $sg_vport/protocols/linkOam \ -enabled False ixNet setMultiAttrs $sg_vport/protocols/lisp \ -burstIntervalInMs 0 \ -enabled False \ -ipv4MapRegisterPacketsPerBurst 0 \ -ipv4MapRequestPacketsPerBurst 0 \ -ipv4SmrPacketsPerBurst 0 \ -ipv6MapRegisterPacketsPerBurst 0 \ -ipv6MapRequestPacketsPerBurst 0 \ -ipv6SmrPacketsPerBurst 0 ixNet setMultiAttrs $sg_vport/protocols/mld \ -enableDoneOnStop True \ -enabled False \ -mldv2Report type143 \ -numberOfGroups 0 \ -numberOfQueries 0 \ -queryTimePeriod 0 \ -timePeriod 0 ixNet setMultiAttrs $sg_vport/protocols/mplsOam \ -enabled False ixNet setMultiAttrs $sg_vport/protocols/mplsTp \ -apsChannelType {00 02 } \ -bfdCcChannelType {00 07 } \ -delayManagementChannelType {00 05 } \ -enableHighPerformanceMode True \ -enabled False \ -faultManagementChannelType {00 58 } \ -lossMeasurementChannelType {00 04 } \ -onDemandCvChannelType {00 09 } \ -pwStatusChannelType {00 0B } \ -y1731ChannelType {7F FA } ixNet setMultiAttrs $sg_vport/protocols/ospf \ -enableDrOrBdr False \ -enabled False \ -floodLinkStateUpdatesPerInterval 0 \ -rateControlInterval 0 ixNet setMultiAttrs $sg_vport/protocols/ospfV3 \ -enabled False ixNet setMultiAttrs $sg_vport/protocols/pimsm \ -bsmFramePerInterval 0 \ -crpFramePerInterval 0 \ -dataMdtFramePerInterval 0 \ -denyGrePimIpPrefix {0.0.0.0/32} \ -enableDiscardJoinPruneProcessing False \ -enableRateControl False \ -enabled False \ -helloMsgsPerInterval 0 \ -interval 0 \ -joinPruneMessagesPerInterval 0 \ -registerMessagesPerInterval 0 \ -registerStopMessagesPerInterval 0 ixNet setMultiAttrs $sg_vport/protocols/ping \ -enabled False ixNet setMultiAttrs $sg_vport/protocols/rip \ -enabled False ixNet setMultiAttrs $sg_vport/protocols/ripng \ -enabled False ixNet setMultiAttrs $sg_vport/protocols/rsvp \ -enableControlLspInitiationRate False \ -enableShowTimeValue False \ -enableVpnLabelExchangeOverLsp True \ -enabled False \ -maxLspInitiationsPerSec 400 \ -useTransportLabelsForMplsOam False ixNet setMultiAttrs $sg_vport/protocols/stp \ -enabled False ixNet setMultiAttrs $sg_vport/rateControlParameters \ -maxRequestsPerBurst 1 \ -maxRequestsPerSec 250 \ -minRetryInterval 10 \ -retryCount 3 \ -sendInBursts False \ -sendRequestsAsFastAsPossible False ixNet setMultiAttrs $sg_vport/capture \ -controlCaptureTrigger {} \ -controlCaptureFilter {} \ -hardwareEnabled False \ -softwareEnabled False \ -displayFiltersDataCapture {} \ -displayFiltersControlCapture {} \ -controlBufferSize 30 \ -controlBufferBehaviour bufferLiveNonCircular ixNet setMultiAttrs $sg_vport/protocolStack/options \ -routerSolicitationDelay 1 \ -routerSolicitationInterval 4 \ -routerSolicitations 3 \ -retransTime 1000 \ -dadTransmits 1 \ -dadEnabled True \ -ipv4RetransTime 3000 \ -ipv4McastSolicit 4 sg_commit set sg_vport [lindex [ixNet remapIds $sg_vport] 0] set ixNetSG_ref(2) $sg_vport set ixNetSG_Stack(1) $sg_vport # # configuring the object that corresponds to /vport:1/l1Config/rxFilters/uds:1 # set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:1 ixNet setMultiAttrs $sg_uds \ -destinationAddressSelector anyAddr \ -customFrameSizeTo 0 \ -customFrameSizeFrom 0 \ -error errAnyFrame \ -patternSelector anyPattern \ -sourceAddressSelector anyAddr \ -isEnabled True \ -frameSizeType any sg_commit set sg_uds [lindex [ixNet remapIds $sg_uds] 0] # # configuring the object that corresponds to /vport:1/l1Config/rxFilters/uds:2 # set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:2 ixNet setMultiAttrs $sg_uds \ -destinationAddressSelector anyAddr \ -customFrameSizeTo 0 \ -customFrameSizeFrom 0 \ -error errAnyFrame \ -patternSelector anyPattern \ -sourceAddressSelector anyAddr \ -isEnabled True \ -frameSizeType any sg_commit set sg_uds [lindex [ixNet remapIds $sg_uds] 0] # # configuring the object that corresponds to /vport:1/l1Config/rxFilters/uds:3 # set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:3 ixNet setMultiAttrs $sg_uds \ -destinationAddressSelector anyAddr \ -customFrameSizeTo 0 \ -customFrameSizeFrom 0 \ -error errAnyFrame \ -patternSelector anyPattern \ -sourceAddressSelector anyAddr \ -isEnabled True \ -frameSizeType any sg_commit set sg_uds [lindex [ixNet remapIds $sg_uds] 0] # # configuring the object that corresponds to /vport:1/l1Config/rxFilters/uds:4 # set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:4 ixNet setMultiAttrs $sg_uds \ -destinationAddressSelector anyAddr \ -customFrameSizeTo 0 \ -customFrameSizeFrom 0 \ -error errAnyFrame \ -patternSelector anyPattern \ -sourceAddressSelector anyAddr \ -isEnabled True \ -frameSizeType any sg_commit set sg_uds [lindex [ixNet remapIds $sg_uds] 0] # # configuring the object that corresponds to /vport:1/l1Config/rxFilters/uds:5 # set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:5 ixNet setMultiAttrs $sg_uds \ -destinationAddressSelector anyAddr \ -customFrameSizeTo 0 \ -customFrameSizeFrom 0 \ -error errAnyFrame \ -patternSelector anyPattern \ -sourceAddressSelector anyAddr \ -isEnabled True \ -frameSizeType any sg_commit set sg_uds [lindex [ixNet remapIds $sg_uds] 0] # # configuring the object that corresponds to /vport:1/l1Config/rxFilters/uds:6 # set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:6 ixNet setMultiAttrs $sg_uds \ -destinationAddressSelector anyAddr \ -customFrameSizeTo 0 \ -customFrameSizeFrom 0 \ -error errAnyFrame \ -patternSelector anyPattern \ -sourceAddressSelector anyAddr \ -isEnabled True \ -frameSizeType any sg_commit set sg_uds [lindex [ixNet remapIds $sg_uds] 0] # # configuring the object that corresponds to /vport:1/protocols/static/lan:1 # set sg_lan [ixNet add $ixNetSG_Stack(1)/protocols/static lan] ixNet setMultiAttrs $sg_lan \ -atmEncapsulation ::ixNet::OBJ-null \ -count $L2CountValue \ -countPerVc 1 \ -enableIncrementMac $L2Increment \ -enableIncrementVlan False \ -enableSiteId False \ -enableVlan False \ -enabled True \ -frEncapsulation ::ixNet::OBJ-null \ -incrementPerVcVlanMode noIncrement \ -incrementVlanMode noIncrement \ -mac $srcMac \ -macRangeMode normal \ -numberOfVcs 1 \ -siteId 0 \ -skipVlanIdZero True \ -tpid {0x8100} \ -trafficGroupId ::ixNet::OBJ-null \ -vlanCount 1 \ -vlanId {1} \ -vlanPriority {0} sg_commit set sg_lan [lindex [ixNet remapIds $sg_lan] 0] # # configuring the object that corresponds to /vport:2 # set sg_vport [ixNet add $ixNetSG_Stack(0) vport] ixNet setMultiAttrs $sg_vport \ -transmitIgnoreLinkStatus False \ -txGapControlMode averageMode \ -type tenGigLan \ -connectedTo ::ixNet::OBJ-null \ -txMode interleaved \ -isPullOnly False \ -rxMode captureAndMeasure \ -name {10GE LAN - 002} ixNet setMultiAttrs $sg_vport/l1Config \ -currentType tenGigLan ixNet setMultiAttrs $sg_vport/l1Config/tenGigLan \ -ppm 0 \ -flowControlDirectedAddress "01 80 C2 00 00 01" \ -enablePPM False \ -autoInstrumentation endOfFrame \ -transmitClocking internal \ -txIgnoreRxLinkFaults False \ -loopback False \ -enableLASIMonitoring False \ -enabledFlowControl False ixNet setMultiAttrs $sg_vport/l1Config/tenGigLan/oam \ -tlvType {00} \ -linkEvents False \ -enabled False \ -vendorSpecificInformation {00 00 00 00} \ -macAddress "00:00:00:00:00:00" \ -loopback False \ -idleTimer 5 \ -tlvValue {00} \ -enableTlvOption False \ -maxOAMPDUSize 64 \ -organizationUniqueIdentifier {000000} ixNet setMultiAttrs $sg_vport/l1Config/tenGigLan/fcoe \ -supportDataCenterMode False \ -priorityGroupSize priorityGroupSize-8 \ -pfcPauseDelay 1 \ -pfcPriorityGroups {0 1 2 3 4 5 6 7} \ -flowControlType ieee802.1Qbb \ -enablePFCPauseDelay False ixNet setMultiAttrs $sg_vport/l1Config/fortyGigLan \ -ppm 0 \ -flowControlDirectedAddress "01 80 C2 00 00 01" \ -enablePPM False \ -autoInstrumentation endOfFrame \ -transmitClocking internal \ -txIgnoreRxLinkFaults False \ -loopback False \ -enableLASIMonitoring False \ -enabledFlowControl False ixNet setMultiAttrs $sg_vport/l1Config/fortyGigLan/fcoe \ -supportDataCenterMode False \ -priorityGroupSize priorityGroupSize-8 \ -pfcPauseDelay 1 \ -pfcPriorityGroups {0 1 2 3 4 5 6 7} \ -flowControlType ieee802.1Qbb \ -enablePFCPauseDelay False ixNet setMultiAttrs $sg_vport/l1Config/OAM \ -tlvType {00} \ -linkEvents False \ -enabled False \ -vendorSpecificInformation {00 00 00 00} \ -macAddress "00:00:00:00:00:00" \ -loopback False \ -idleTimer 5 \ -tlvValue {00} \ -enableTlvOption False \ -maxOAMPDUSize 64 \ -organizationUniqueIdentifier {000000} ixNet setMultiAttrs $sg_vport/l1Config/rxFilters/filterPalette \ -sourceAddress1Mask {00:00:00:00:00:00} \ -destinationAddress1Mask {00:00:00:00:00:00} \ -sourceAddress2 {00:00:00:00:00:00} \ -pattern2OffsetType fromStartOfFrame \ -pattern2Offset 20 \ -pattern1Mask {00} \ -sourceAddress2Mask {00:00:00:00:00:00} \ -destinationAddress2 {00:00:00:00:00:00} \ -destinationAddress1 {00:00:00:00:00:00} \ -sourceAddress1 {00:00:00:00:00:00} \ -pattern1 {00} \ -destinationAddress2Mask {00:00:00:00:00:00} \ -pattern2Mask {00} \ -pattern1Offset 20 \ -pattern2 {00} \ -pattern1OffsetType fromStartOfFrame ixNet setMultiAttrs $sg_vport/protocols/arp \ -enabled False ixNet setMultiAttrs $sg_vport/protocols/bfd \ -enabled False \ -intervalValue 0 \ -packetsPerInterval 0 ixNet setMultiAttrs $sg_vport/protocols/bgp \ -autoFillUpDutIp False \ -disableReceivedUpdateValidation False \ -enableAdVplsPrefixLengthInBits False \ -enableExternalActiveConnect True \ -enableInternalActiveConnect True \ -enableVpnLabelExchangeOverLsp True \ -enabled False \ -externalRetries 0 \ -externalRetryDelay 120 \ -internalRetries 0 \ -internalRetryDelay 120 \ -mldpP2mpFecType 6 \ -triggerVplsPwInitiation False ixNet setMultiAttrs $sg_vport/protocols/cfm \ -enableOptionalLmFunctionality False \ -enableOptionalTlvValidation True \ -enabled False \ -receiveCcm True \ -sendCcm True \ -suppressErrorsOnAis True ixNet setMultiAttrs $sg_vport/protocols/eigrp \ -enabled False ixNet setMultiAttrs $sg_vport/protocols/elmi \ -enabled False ixNet setMultiAttrs $sg_vport/protocols/igmp \ -enabled False \ -numberOfGroups 0 \ -numberOfQueries 0 \ -queryTimePeriod 0 \ -sendLeaveOnStop True \ -statsEnabled False \ -timePeriod 0 ixNet setMultiAttrs $sg_vport/protocols/isis \ -allL1RbridgesMac "01:80:c2:00:00:40" \ -emulationType isisL3Routing \ -enabled False \ -helloMulticastMac "01:80:c2:00:00:41" \ -lspMgroupPdusPerInterval 0 \ -nlpId 192 \ -rateControlInterval 0 \ -sendP2PHellosToUnicastMac True \ -spbAllL1BridgesMac "09:00:2b:00:00:05" \ -spbHelloMulticastMac "09:00:2b:00:00:05" \ -spbNlpId 192 ixNet setMultiAttrs $sg_vport/protocols/lacp \ -enablePreservePartnerInfo False \ -enabled False ixNet setMultiAttrs $sg_vport/protocols/ldp \ -enableDiscardSelfAdvFecs False \ -enableHelloJitter True \ -enableVpnLabelExchangeOverLsp True \ -enabled False \ -helloHoldTime 15 \ -helloInterval 5 \ -keepAliveHoldTime 30 \ -keepAliveInterval 10 \ -p2mpCapabilityParam 1288 \ -p2mpFecType 6 \ -targetedHelloInterval 15 \ -targetedHoldTime 45 \ -useTransportLabelsForMplsOam False ixNet setMultiAttrs $sg_vport/protocols/linkOam \ -enabled False ixNet setMultiAttrs $sg_vport/protocols/lisp \ -burstIntervalInMs 0 \ -enabled False \ -ipv4MapRegisterPacketsPerBurst 0 \ -ipv4MapRequestPacketsPerBurst 0 \ -ipv4SmrPacketsPerBurst 0 \ -ipv6MapRegisterPacketsPerBurst 0 \ -ipv6MapRequestPacketsPerBurst 0 \ -ipv6SmrPacketsPerBurst 0 ixNet setMultiAttrs $sg_vport/protocols/mld \ -enableDoneOnStop True \ -enabled False \ -mldv2Report type143 \ -numberOfGroups 0 \ -numberOfQueries 0 \ -queryTimePeriod 0 \ -timePeriod 0 ixNet setMultiAttrs $sg_vport/protocols/mplsOam \ -enabled False ixNet setMultiAttrs $sg_vport/protocols/mplsTp \ -apsChannelType {00 02 } \ -bfdCcChannelType {00 07 } \ -delayManagementChannelType {00 05 } \ -enableHighPerformanceMode True \ -enabled False \ -faultManagementChannelType {00 58 } \ -lossMeasurementChannelType {00 04 } \ -onDemandCvChannelType {00 09 } \ -pwStatusChannelType {00 0B } \ -y1731ChannelType {7F FA } ixNet setMultiAttrs $sg_vport/protocols/ospf \ -enableDrOrBdr False \ -enabled False \ -floodLinkStateUpdatesPerInterval 0 \ -rateControlInterval 0 ixNet setMultiAttrs $sg_vport/protocols/ospfV3 \ -enabled False ixNet setMultiAttrs $sg_vport/protocols/pimsm \ -bsmFramePerInterval 0 \ -crpFramePerInterval 0 \ -dataMdtFramePerInterval 0 \ -denyGrePimIpPrefix {0.0.0.0/32} \ -enableDiscardJoinPruneProcessing False \ -enableRateControl False \ -enabled False \ -helloMsgsPerInterval 0 \ -interval 0 \ -joinPruneMessagesPerInterval 0 \ -registerMessagesPerInterval 0 \ -registerStopMessagesPerInterval 0 ixNet setMultiAttrs $sg_vport/protocols/ping \ -enabled False ixNet setMultiAttrs $sg_vport/protocols/rip \ -enabled False ixNet setMultiAttrs $sg_vport/protocols/ripng \ -enabled False ixNet setMultiAttrs $sg_vport/protocols/rsvp \ -enableControlLspInitiationRate False \ -enableShowTimeValue False \ -enableVpnLabelExchangeOverLsp True \ -enabled False \ -maxLspInitiationsPerSec 400 \ -useTransportLabelsForMplsOam False ixNet setMultiAttrs $sg_vport/protocols/stp \ -enabled False ixNet setMultiAttrs $sg_vport/rateControlParameters \ -maxRequestsPerBurst 1 \ -maxRequestsPerSec 250 \ -minRetryInterval 10 \ -retryCount 3 \ -sendInBursts False \ -sendRequestsAsFastAsPossible False ixNet setMultiAttrs $sg_vport/capture \ -controlCaptureTrigger {} \ -controlCaptureFilter {} \ -hardwareEnabled False \ -softwareEnabled False \ -displayFiltersDataCapture {} \ -displayFiltersControlCapture {} \ -controlBufferSize 30 \ -controlBufferBehaviour bufferLiveNonCircular ixNet setMultiAttrs $sg_vport/protocolStack/options \ -routerSolicitationDelay 1 \ -routerSolicitationInterval 4 \ -routerSolicitations 3 \ -retransTime 1000 \ -dadTransmits 1 \ -dadEnabled True \ -ipv4RetransTime 3000 \ -ipv4McastSolicit 4 sg_commit set sg_vport [lindex [ixNet remapIds $sg_vport] 0] set ixNetSG_ref(10) $sg_vport set ixNetSG_Stack(1) $sg_vport # # configuring the object that corresponds to /vport:2/l1Config/rxFilters/uds:1 # set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:1 ixNet setMultiAttrs $sg_uds \ -destinationAddressSelector anyAddr \ -customFrameSizeTo 0 \ -customFrameSizeFrom 0 \ -error errAnyFrame \ -patternSelector anyPattern \ -sourceAddressSelector anyAddr \ -isEnabled True \ -frameSizeType any sg_commit set sg_uds [lindex [ixNet remapIds $sg_uds] 0] # # configuring the object that corresponds to /vport:2/l1Config/rxFilters/uds:2 # set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:2 ixNet setMultiAttrs $sg_uds \ -destinationAddressSelector anyAddr \ -customFrameSizeTo 0 \ -customFrameSizeFrom 0 \ -error errAnyFrame \ -patternSelector anyPattern \ -sourceAddressSelector anyAddr \ -isEnabled True \ -frameSizeType any sg_commit set sg_uds [lindex [ixNet remapIds $sg_uds] 0] # # configuring the object that corresponds to /vport:2/l1Config/rxFilters/uds:3 # set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:3 ixNet setMultiAttrs $sg_uds \ -destinationAddressSelector anyAddr \ -customFrameSizeTo 0 \ -customFrameSizeFrom 0 \ -error errAnyFrame \ -patternSelector anyPattern \ -sourceAddressSelector anyAddr \ -isEnabled True \ -frameSizeType any sg_commit set sg_uds [lindex [ixNet remapIds $sg_uds] 0] # # configuring the object that corresponds to /vport:2/l1Config/rxFilters/uds:4 # set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:4 ixNet setMultiAttrs $sg_uds \ -destinationAddressSelector anyAddr \ -customFrameSizeTo 0 \ -customFrameSizeFrom 0 \ -error errAnyFrame \ -patternSelector anyPattern \ -sourceAddressSelector anyAddr \ -isEnabled True \ -frameSizeType any sg_commit set sg_uds [lindex [ixNet remapIds $sg_uds] 0] # # configuring the object that corresponds to /vport:2/l1Config/rxFilters/uds:5 # set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:5 ixNet setMultiAttrs $sg_uds \ -destinationAddressSelector anyAddr \ -customFrameSizeTo 0 \ -customFrameSizeFrom 0 \ -error errAnyFrame \ -patternSelector anyPattern \ -sourceAddressSelector anyAddr \ -isEnabled True \ -frameSizeType any sg_commit set sg_uds [lindex [ixNet remapIds $sg_uds] 0] # # configuring the object that corresponds to /vport:2/l1Config/rxFilters/uds:6 # set sg_uds $ixNetSG_Stack(1)/l1Config/rxFilters/uds:6 ixNet setMultiAttrs $sg_uds \ -destinationAddressSelector anyAddr \ -customFrameSizeTo 0 \ -customFrameSizeFrom 0 \ -error errAnyFrame \ -patternSelector anyPattern \ -sourceAddressSelector anyAddr \ -isEnabled True \ -frameSizeType any sg_commit set sg_uds [lindex [ixNet remapIds $sg_uds] 0] # # configuring the object that corresponds to /vport:2/protocols/static/lan:1 # set sg_lan [ixNet add $ixNetSG_Stack(1)/protocols/static lan] ixNet setMultiAttrs $sg_lan \ -atmEncapsulation ::ixNet::OBJ-null \ -count $L2CountValue \ -countPerVc 1 \ -enableIncrementMac $L2Increment \ -enableIncrementVlan False \ -enableSiteId False \ -enableVlan False \ -enabled True \ -frEncapsulation ::ixNet::OBJ-null \ -incrementPerVcVlanMode noIncrement \ -incrementVlanMode noIncrement \ -mac $dstMac \ -macRangeMode normal \ -numberOfVcs 1 \ -siteId 0 \ -skipVlanIdZero True \ -tpid {0x8100} \ -trafficGroupId ::ixNet::OBJ-null \ -vlanCount 1 \ -vlanId {1} \ -vlanPriority {0} sg_commit set sg_lan [lindex [ixNet remapIds $sg_lan] 0] ### ### /availableHardware area ### # # configuring the object that corresponds to /availableHardware/chassis" # set sg_chassis [ixNet add $ixNetSG_Stack(0)/availableHardware chassis] ixNet setMultiAttrs $sg_chassis \ -masterChassis {} \ -sequenceId 1 \ -cableLength 0 \ -hostname $::chassis sg_commit set sg_chassis [lindex [ixNet remapIds $sg_chassis] 0] set ixNetSG_Stack(1) $sg_chassis # # configuring the object that corresponds to /availableHardware/chassis/card # set sg_card $ixNetSG_Stack(1)/card:$::card ixNet setMultiAttrs $sg_card \ -aggregationMode normal sg_commit set sg_card [lindex [ixNet remapIds $sg_card] 0] set ixNetSG_ref(19) $sg_card set ixNetSG_Stack(2) $sg_card # # configuring the object that corresponds to /availableHardware/chassis/card/aggregation:1 # set sg_aggregation $ixNetSG_Stack(2)/aggregation:1 ixNet setMultiAttrs $sg_aggregation \ -mode normal sg_commit set sg_aggregation [lindex [ixNet remapIds $sg_aggregation] 0] # # configuring the object that corresponds to /availableHardware/chassis/card/aggregation:2 # set sg_aggregation $ixNetSG_Stack(2)/aggregation:2 ixNet setMultiAttrs $sg_aggregation \ -mode normal sg_commit set sg_aggregation [lindex [ixNet remapIds $sg_aggregation] 0] # # configuring the object that corresponds to /availableHardware/chassis/card/aggregation:3 # set sg_aggregation $ixNetSG_Stack(2)/aggregation:3 ixNet setMultiAttrs $sg_aggregation \ -mode normal sg_commit set sg_aggregation [lindex [ixNet remapIds $sg_aggregation] 0] # # configuring the object that corresponds to /availableHardware/chassis/card/aggregation:4 # set sg_aggregation $ixNetSG_Stack(2)/aggregation:4 ixNet setMultiAttrs $sg_aggregation \ -mode normal sg_commit set sg_aggregation [lindex [ixNet remapIds $sg_aggregation] 0] ixNet setMultiAttrs $ixNetSG_ref(2) \ -connectedTo $ixNetSG_ref(19)/port:$::port1 sg_commit ixNet setMultiAttrs $ixNetSG_ref(10) \ -connectedTo $ixNetSG_ref(19)/port:$::port2 sg_commit sg_commit ### ### /impairment area ### # # configuring the object that corresponds to /impairment/profile:3 # set sg_profile [ixNet add $ixNetSG_Stack(0)/impairment profile] ixNet setMultiAttrs $sg_profile \ -enabled False \ -name {Impairment Profile 1} \ -links {} \ -allLinks True \ -priority 1 ixNet setMultiAttrs $sg_profile/checksums \ -dropRxL2FcsErrors False \ -correctTxL2FcsErrors False \ -alwaysCorrectWhenModifying True \ -correctTxChecksumOverIp False \ -correctTxIpv4Checksum False ixNet setMultiAttrs $sg_profile/rxRateLimit \ -enabled False \ -value 8 \ -units {kKilobitsPerSecond} ixNet setMultiAttrs $sg_profile/drop \ -enabled True \ -clusterSize 1 \ -percentRate 0 ixNet setMultiAttrs $sg_profile/reorder \ -enabled False \ -clusterSize 1 \ -percentRate 0 \ -skipCount 1 ixNet setMultiAttrs $sg_profile/duplicate \ -enabled False \ -clusterSize 1 \ -percentRate 0 \ -duplicateCount 1 ixNet setMultiAttrs $sg_profile/bitError \ -enabled False \ -logRate 3 \ -skipEndOctets 0 \ -skipStartOctets 0 ixNet setMultiAttrs $sg_profile/delay \ -enabled True \ -value 300 \ -units {kMicroseconds} ixNet setMultiAttrs $sg_profile/delayVariation \ -uniformSpread 0 \ -enabled False \ -units {kMicroseconds} \ -distribution {kUniform} \ -exponentialMeanArrival 0 \ -gaussianStandardDeviation 0 ixNet setMultiAttrs $sg_profile/customDelayVariation \ -enabled False \ -name {} sg_commit set sg_profile [lindex [ixNet remapIds $sg_profile] 0] set ixNetSG_Stack(1) $sg_profile # # configuring the object that corresponds to /impairment/profile:3/fixedClassifier:1 # set sg_fixedClassifier [ixNet add $ixNetSG_Stack(1) fixedClassifier] sg_commit set sg_fixedClassifier [lindex [ixNet remapIds $sg_fixedClassifier] 0] ### ### /traffic area ### # # configuring the object that corresponds to /traffic/trafficItem:1 # set sg_trafficItem [ixNet add $ixNetSG_Stack(0)/traffic trafficItem] ixNet setMultiAttrs $sg_trafficItem \ -transportRsvpTePreference one \ -trafficItemType l2L3 \ -biDirectional $::biDirect \ -mergeDestinations True \ -hostsPerNetwork 1 \ -transmitMode interleaved \ -ordinalNo 0 \ -trafficType {ethernetVlan} \ -interAsLdpPreference two \ -allowSelfDestined False \ -enabled True \ -maxNumberOfVpnLabelStack 2 \ -interAsBgpPreference one \ -suspend False \ -transportLdpPreference two \ -egressEnabled False \ -enableDynamicMplsLabelValues False \ -routeMesh oneToOne \ -name {Traffic Item 1} \ -srcDestMesh oneToOne sg_commit set sg_trafficItem [lindex [ixNet remapIds $sg_trafficItem] 0] set ixNetSG_ref(26) $sg_trafficItem set ixNetSG_Stack(1) $sg_trafficItem # # configuring the object that corresponds to /traffic/trafficItem:1/endpointSet:1 # set sg_endpointSet [ixNet add $ixNetSG_Stack(1) endpointSet] ixNet setMultiAttrs $sg_endpointSet \ -destinations [list $ixNetSG_ref(10)/protocols] \ -destinationFilter {} \ -sourceFilter {} \ -trafficGroups {} \ -sources [list $ixNetSG_ref(2)/protocols] \ -name {EndpointSet-1} sg_commit set sg_endpointSet [lindex [ixNet remapIds $sg_endpointSet] 0] # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1 # set sg_configElement $ixNetSG_Stack(1)/configElement:1 ixNet setMultiAttrs $sg_configElement \ -crc goodCrc \ -preambleCustomSize 8 \ -enableDisparityError False \ -preambleFrameSizeMode auto \ -destinationMacMode manual ixNet setMultiAttrs $sg_configElement/frameSize \ -weightedPairs {} \ -fixedSize 64 \ -incrementFrom 64 \ -randomMin 64 \ -randomMax 1518 \ -quadGaussian {} \ -type fixed \ -presetDistribution cisco \ -incrementStep 1 \ -incrementTo 1518 ixNet setMultiAttrs $sg_configElement/frameRate \ -bitRateUnitsType bitsPerSec \ -rate 10 \ -enforceMinimumInterPacketGap 0 \ -type percentLineRate \ -interPacketGapUnitsType nanoseconds ixNet setMultiAttrs $sg_configElement/framePayload \ -type incrementByte \ -customRepeat True \ -customPattern {} ixNet setMultiAttrs $sg_configElement/frameRateDistribution \ -streamDistribution applyRateToAll \ -portDistribution applyRateToAll ixNet setMultiAttrs $sg_configElement/transmissionControl \ -frameCount 1 \ -minGapBytes 12 \ -interStreamGap 0 \ -interBurstGap 0 \ -interBurstGapUnits nanoseconds \ -type continuous \ -duration 1 \ -repeatBurst 1 \ -enableInterStreamGap False \ -startDelayUnits bytes \ -iterationCount 1 \ -burstPacketCount 1 \ -enableInterBurstGap False \ -startDelay 0 sg_commit set sg_configElement [lindex [ixNet remapIds $sg_configElement] 0] set ixNetSG_Stack(2) $sg_configElement # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ethernet-1" # set sg_stack $ixNetSG_Stack(2)/stack:"ethernet-1" sg_commit set sg_stack [lindex [ixNet remapIds $sg_stack] 0] set ixNetSG_Stack(3) $sg_stack # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ethernet-1"/field:"ethernet.header.destinationAddress-1" # set sg_field $ixNetSG_Stack(3)/field:"ethernet.header.destinationAddress-1" ixNet setMultiAttrs $sg_field \ -singleValue $dstMac \ -seed {1} \ -optionalEnabled True \ -fullMesh False \ -valueList {{00:00:00:00:00:00}} \ -stepValue {00:00:00:00:00:01} \ -fixedBits {00:00:00:00:00:00} \ -fieldValue $dstMac \ -auto False \ -randomMask {00:00:00:00:00:00} \ -trackingEnabled False \ -valueType singleValue \ -activeFieldChoice False \ -startValue $dstMac \ -countValue {1} sg_commit set sg_field [lindex [ixNet remapIds $sg_field] 0] # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ethernet-1"/field:"ethernet.header.sourceAddress-2" # set sg_field $ixNetSG_Stack(3)/field:"ethernet.header.sourceAddress-2" ixNet setMultiAttrs $sg_field \ -singleValue $srcMac \ -seed {1} \ -optionalEnabled True \ -fullMesh False \ -valueList {{00:00:00:00:00:00}} \ -stepValue {00:00:00:00:00:00} \ -fixedBits {00:00:00:00:00:00} \ -fieldValue $srcMac \ -auto False \ -randomMask {00:00:00:00:00:00} \ -trackingEnabled False \ -valueType singleValue \ -activeFieldChoice False \ -startValue $srcMac \ -countValue {1} sg_commit set sg_field [lindex [ixNet remapIds $sg_field] 0] # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ethernet-1"/field:"ethernet.header.etherType-3" # set sg_field $ixNetSG_Stack(3)/field:"ethernet.header.etherType-3" ixNet setMultiAttrs $sg_field \ -singleValue {800} \ -seed {1} \ -optionalEnabled True \ -fullMesh False \ -valueList {{0xFFFF}} \ -stepValue {0xFFFF} \ -fixedBits {0xFFFF} \ -fieldValue {800} \ -auto True \ -randomMask {0xFFFF} \ -trackingEnabled False \ -valueType singleValue \ -activeFieldChoice False \ -startValue {0xFFFF} \ -countValue {1} sg_commit set sg_field [lindex [ixNet remapIds $sg_field] 0] # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ipv4-2" # set sg_stack $ixNetSG_Stack(2)/stack:"ipv4-2" sg_commit set sg_stack [lindex [ixNet remapIds $sg_stack] 0] set ixNetSG_Stack(3) $sg_stack # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ipv4-2"/field:"ipv4.header.version-1" # set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.version-1" ixNet setMultiAttrs $sg_field \ -singleValue {4} \ -seed {1} \ -optionalEnabled True \ -fullMesh False \ -valueList {{4}} \ -stepValue {4} \ -fixedBits {4} \ -fieldValue {4} \ -auto False \ -randomMask {4} \ -trackingEnabled False \ -valueType singleValue \ -activeFieldChoice False \ -startValue {4} \ -countValue {1} # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ipv4-2"/field:"ipv4.header.protocol-25" # set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.protocol-25" ixNet setMultiAttrs $sg_field \ -singleValue {$proto_value} \ -seed {1} \ -optionalEnabled True \ -fullMesh False \ -valueList {{61}} \ -stepValue {61} \ -fixedBits {61} \ -fieldValue {$proto} \ -auto True \ -randomMask {61} \ -trackingEnabled False \ -valueType singleValue \ -activeFieldChoice False \ -startValue {61} \ -countValue {1} # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ipv4-2"/field:"ipv4.header.checksum-26" # set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.checksum-26" ixNet setMultiAttrs $sg_field \ -singleValue {0} \ -seed {1} \ -optionalEnabled True \ -fullMesh False \ -valueList {{0}} \ -stepValue {1} \ -fixedBits {0} \ -fieldValue {0} \ -auto False \ -randomMask {0} \ -trackingEnabled False \ -valueType increment \ -activeFieldChoice False \ -startValue {0} \ -countValue {65536} # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ipv4-2"/field:"ipv4.header.srcIp-27" # set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.srcIp-27" ixNet setMultiAttrs $sg_field \ -singleValue $srcIp \ -seed {1} \ -optionalEnabled True \ -fullMesh False \ -valueList {{0.0.0.0}} \ -stepValue {0.0.0.0} \ -fixedBits {0.0.0.0} \ -fieldValue $srcIp \ -auto False \ -randomMask {0.0.0.0} \ -trackingEnabled False \ -valueType singleValue \ -activeFieldChoice False \ -startValue {0.0.0.0} \ -countValue {1} # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ipv4-2"/field:"ipv4.header.dstIp-28" # set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.dstIp-28" ixNet setMultiAttrs $sg_field \ -singleValue $dstIp \ -seed {1} \ -optionalEnabled True \ -fullMesh False \ -valueList {{0.0.0.0}} \ -stepValue {0.0.0.1} \ -fixedBits {0.0.0.0} \ -fieldValue $dstIp \ -auto False \ -randomMask {0.0.0.0} \ -trackingEnabled False \ -valueType $L3ValueType \ -activeFieldChoice False \ -startValue $dstIp \ -countValue $L3CountValue #sg_commit #set sg_field [lindex [ixNet remapIds $sg_field] 0] # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ipv4-2"/field:"ipv4.header.options.pad-58" # set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.options.pad-58" ixNet setMultiAttrs $sg_field \ -singleValue {0} \ -seed {1} \ -optionalEnabled False \ -fullMesh False \ -valueList {{0}} \ -stepValue {0} \ -fixedBits {0} \ -fieldValue {0} \ -auto True \ -randomMask {0} \ -trackingEnabled False \ -valueType singleValue \ -activeFieldChoice False \ -startValue {0} \ -countValue {1} # Suffix for stack names # This variable should be incremented after setting sg_stack like: # set sg_stack $ixNetSG_Stack(2)/stack:"protocolnamehere-$stack_number" # incr stack_number set stack_number 3 if { [string compare $proto "udp"] == 0 } { # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"udp-3" # set sg_stack $ixNetSG_Stack(2)/stack:"udp-$stack_number" sg_commit set sg_stack [lindex [ixNet remapIds $sg_stack] 0] set ixNetSG_Stack(3) $sg_stack incr stack_number # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"udp-3"/field:"udp.header.srcPort-1" # set sg_field $ixNetSG_Stack(3)/field:"udp.header.srcPort-1" ixNet setMultiAttrs $sg_field \ -singleValue $srcPort \ -seed {1} \ -optionalEnabled True \ -fullMesh False \ -valueList {{63}} \ -stepValue {63} \ -fixedBits {63} \ -fieldValue $srcPort \ -auto False \ -randomMask {63} \ -trackingEnabled False \ -valueType singleValue \ -activeFieldChoice False \ -startValue $srcPort \ -countValue {1} # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"udp-3"/field:"udp.header.dstPort-2" # set sg_field $ixNetSG_Stack(3)/field:"udp.header.dstPort-2" ixNet setMultiAttrs $sg_field \ -singleValue $dstPort \ -seed {1} \ -optionalEnabled True \ -fullMesh False \ -valueList {{63}} \ -stepValue {1} \ -fixedBits {63} \ -fieldValue $dstPort \ -auto False \ -randomMask {63} \ -trackingEnabled False \ -valueType $L4ValueType \ -activeFieldChoice False \ -startValue {0} \ -countValue $L4CountValue # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"udp-3"/field:"udp.header.length-3" # set sg_field $ixNetSG_Stack(3)/field:"udp.header.length-3" ixNet setMultiAttrs $sg_field \ -singleValue {26} \ -seed {1} \ -optionalEnabled True \ -fullMesh False \ -valueList {{8}} \ -stepValue {8} \ -fixedBits {8} \ -fieldValue {26} \ -auto True \ -randomMask {8} \ -trackingEnabled False \ -valueType singleValue \ -activeFieldChoice False \ -startValue {8} \ -countValue {1} # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"udp-3"/field:"udp.header.checksum-4" # set sg_field $ixNetSG_Stack(3)/field:"udp.header.checksum-4" ixNet setMultiAttrs $sg_field \ -singleValue {0} \ -seed {1} \ -optionalEnabled True \ -fullMesh False \ -valueList {{0}} \ -stepValue {0} \ -fixedBits {0} \ -fieldValue {0} \ -auto True \ -randomMask {0} \ -trackingEnabled False \ -valueType singleValue \ -activeFieldChoice False \ -startValue {0} \ -countValue {1} } elseif { [string compare $proto "tcp"] == 0 } { # TCP set sg_stack $ixNetSG_Stack(2)/stack:"tcp-$stack_number" sg_commit set sg_stack [lindex [ixNet remapIds $sg_stack] 0] set ixNetSG_Stack(3) $sg_stack incr stack_number set sg_field $ixNetSG_Stack(3)/field:"tcp.header.srcPort-1" ixNet setMultiAttrs $sg_field \ -singleValue $srcPort \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list $srcPort] \ -stepValue 60 \ -fixedBits 60 \ -fieldValue $srcPort \ -auto false \ -randomMask 60 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 60 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.dstPort-2" ixNet setMultiAttrs $sg_field \ -singleValue $dstPort \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list $dstPort] \ -stepValue 60 \ -fixedBits 60 \ -fieldValue $dstPort \ -auto false \ -randomMask 60 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.sequenceNumber-3" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0x00000000] \ -stepValue 0x00000000 \ -fixedBits 0x00000000 \ -fieldValue 0 \ -auto false \ -randomMask 0x00000000 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0x00000000 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.acknowledgementNumber-4" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0x00000000] \ -stepValue 0x00000000 \ -fixedBits 0x00000000 \ -fieldValue 0 \ -auto false \ -randomMask 0x00000000 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0x00000000 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.dataOffset-5" ixNet setMultiAttrs $sg_field \ -singleValue 5 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 5] \ -stepValue 5 \ -fixedBits 5 \ -fieldValue 5 \ -auto true \ -randomMask 5 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 5 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.reserved-6" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto false \ -randomMask 0 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.ecn.nsBit-7" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto false \ -randomMask 0 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.ecn.cwrBit-8" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto false \ -randomMask 0 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.ecn.ecnEchoBit-9" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto false \ -randomMask 0 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.controlBits.urgBit-10" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto false \ -randomMask 0 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.controlBits.ackBit-11" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto false \ -randomMask 0 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.controlBits.pshBit-12" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto false \ -randomMask 0 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.controlBits.rstBit-13" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto false \ -randomMask 0 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.controlBits.synBit-14" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto false \ -randomMask 0 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.controlBits.finBit-15" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto false \ -randomMask 0 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.window-16" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0x0000] \ -stepValue 0x0000 \ -fixedBits 0x0000 \ -fieldValue 0 \ -auto false \ -randomMask 0x0000 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0x0000 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.checksum-17" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0x0000] \ -stepValue 0x0000 \ -fixedBits 0x0000 \ -fieldValue 0 \ -auto true \ -randomMask 0x0000 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0x0000 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.urgentPtr-18" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0x0000] \ -stepValue 0x0000 \ -fixedBits 0x0000 \ -fieldValue 0 \ -auto false \ -randomMask 0x0000 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0x0000 \ -countValue 1 sg_commit set sg_field [lindex [ixNet remapIds $sg_field] 0] } elseif { [string compare $proto "gre"] == 0 } { # GRE set gre_enabled True } if { $vxlan_enabled || $gre_enabled || $geneve_enabled } { # VXLAN and GRE have similar inner frame data so we set unique fields # for each protocol then set the common fields. # if { $vxlan_enabled } { # VXLAN START # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"vxlan-4" # set sg_stack $ixNetSG_Stack(2)/stack:"vxlan-$stack_number" sg_commit set sg_stack [lindex [ixNet remapIds $sg_stack] 0] set ixNetSG_Stack(3) $sg_stack incr stack_number # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"vxlan-4"/field:"vxlan.header.flags-1 # set sg_field $ixNetSG_Stack(3)/field:"vxlan.header.flags-1" ixNet setMultiAttrs $sg_field \ -singleValue 8 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0x08] \ -stepValue 0x08 \ -fixedBits 0x08 \ -fieldValue 8 \ -randomMask 0x08 \ -startValue 0x08 # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"vxlan-4"/field:"vxlan.header.reserved-2 # set sg_field $ixNetSG_Stack(3)/field:"vxlan.header.reserved-2" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -randomMask 0 \ -startValue 0 # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"vxlan-4"/field:"vxlan.header.vni-3" # set sg_field $ixNetSG_Stack(3)/field:"vxlan.header.vni-3" ixNet setMultiAttrs $sg_field \ -singleValue $vni \ -seed 1 \ -optionalEnabled true \ -valueList [list 1234] \ -stepValue 1234 \ -fixedBits 1234 \ -fieldValue $vni \ -randomMask 1234 \ -startValue 1234 # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"vxlan-4"/field:"vxlan.header.reserved8-4" # set sg_field $ixNetSG_Stack(3)/field:"vxlan.header.reserved8-4" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -randomMask 0 \ -startValue 0 } elseif { $geneve_enabled } { # GENEVE START # set sg_stack $ixNetSG_Stack(2)/stack:"geneve-$stack_number" sg_commit set sg_stack [lindex [ixNet remapIds $sg_stack] 0] set ixNetSG_Stack(3) $sg_stack incr stack_number set sg_field $ixNetSG_Stack(3)/field:"geneve.header.version-1" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0x00] \ -stepValue 0x00 \ -fixedBits 0x00 \ -fieldValue 0 \ -randomMask 0x00 \ -startValue 0x00 set sg_field $ixNetSG_Stack(3)/field:"geneve.header.optionsLength-2" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0x00] \ -stepValue 0x00 \ -fixedBits 0x00 \ -fieldValue 0 \ -randomMask 0x00 \ -startValue 0x00 set sg_field $ixNetSG_Stack(3)/field:"geneve.header.flags-3" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0x00] \ -stepValue 0x00 \ -fixedBits 0x00 \ -fieldValue 0 \ -randomMask 0x00 \ -startValue 0x00 set sg_field $ixNetSG_Stack(3)/field:"geneve.header.protocolType-4" ixNet setMultiAttrs $sg_field \ -singleValue 6558 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0x6558] \ -stepValue 0x6558 \ -fixedBits 0x6558 \ -fieldValue 6558 \ -randomMask 0x6558 \ -startValue 0x6558 set sg_field $ixNetSG_Stack(3)/field:"geneve.header.vni-5" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -randomMask 0 \ -startValue 0 } elseif { $gre_enabled } { puts "Setting GRE attributes" # GRE START # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"gre-3" # set sg_stack $ixNetSG_Stack(2)/stack:"gre-$stack_number" sg_commit set sg_stack [lindex [ixNet remapIds $sg_stack] 0] set ixNetSG_Stack(3) $sg_stack incr stack_number set sg_field $ixNetSG_Stack(3)/field:"gre.header.checksumPresent-1" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue "0:No\ Checksum" \ -randomMask 0 \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"gre.header.reserved1-2" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -randomMask 0 \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"gre.header.keyPresent-3" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue "0:No\ Key\ field" \ -randomMask 0 \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"gre.header.sequencePresent-4" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue "0:No\ sequence\ number\ field" \ -randomMask 0 \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"gre.header.reserved2-5" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -randomMask 0 \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"gre.header.version-6" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -randomMask 0 \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"gre.header.protocol-7" ixNet setMultiAttrs $sg_field \ -singleValue 6558 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0x0] \ -stepValue 0x0 \ -fixedBits 0x0 \ -fieldValue 6558 \ -auto true \ -randomMask 0x0 \ -startValue 0x0 set sg_field $ixNetSG_Stack(3)/field:"gre.header.checksumHolder.withChecksum.checksum-8" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto true \ -randomMask 0 \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"gre.header.checksumHolder.withChecksum.reserved-9" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -randomMask 0 \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"gre.header.checksumHolder.noChecksum-10" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -randomMask 0 \ -activeFieldChoice true \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"gre.header.keyHolder.key-11" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -randomMask 0 \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"gre.header.keyHolder.noKey-12" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -randomMask 0 \ -activeFieldChoice true \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"gre.header.sequenceHolder.sequenceNum-13" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -randomMask 0 \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"gre.header.sequenceHolder.noSequenceNum-14" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -randomMask 0 \ -activeFieldChoice true \ -startValue 0 sg_commit set sg_field [lindex [ixNet remapIds $sg_field] 0] } # Common fields for VXLAN and GRE # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ethernetNoFCS-5"/field:"ethernetNoFCS.header.destinationAddress-1" set sg_stack $ixNetSG_Stack(2)/stack:"ethernetNoFCS-$stack_number" sg_commit set sg_stack [lindex [ixNet remapIds $sg_stack] 0] set ixNetSG_Stack(3) $sg_stack incr stack_number set sg_field $ixNetSG_Stack(3)/field:"ethernetNoFCS.header.destinationAddress-1" ixNet setMultiAttrs $sg_field \ -singleValue $inner_dstmac \ -seed 1 \ -optionalEnabled true \ -valueList [list 00:00:00:00:00:00] \ -stepValue 00:00:00:00:00:00 \ -fixedBits 00:00:00:00:00:00 \ -fieldValue $inner_dstmac \ -randomMask 00:00:00:00:00:00 \ -startValue 00:00:00:00:00:00 set sg_field $ixNetSG_Stack(3)/field:"ethernetNoFCS.header.sourceAddress-2" ixNet setMultiAttrs $sg_field \ -singleValue $inner_srcmac \ -seed 1 \ -optionalEnabled true \ -valueList [list 00:00:00:00:00:00] \ -stepValue 00:00:00:00:00:00 \ -fixedBits 00:00:00:00:00:00 \ -fieldValue $inner_srcmac \ -randomMask 00:00:00:00:00:00 \ -startValue 00:00:00:00:00:00 set sg_field $ixNetSG_Stack(3)/field:"ethernetNoFCS.header.etherType-3" ixNet setMultiAttrs $sg_field \ -singleValue 800 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0xFFFF] \ -stepValue 0xFFFF \ -fixedBits 0xFFFF \ -fieldValue 800 \ -auto true \ -randomMask 0xFFFF \ -startValue 0xFFFF set sg_stack $ixNetSG_Stack(2)/stack:"ipv4-$stack_number" sg_commit set sg_stack [lindex [ixNet remapIds $sg_stack] 0] set ixNetSG_Stack(3) $sg_stack incr stack_number # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"ipv4-6"/field:"ipv4.header.version-1"/ set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.version-1" ixNet setMultiAttrs $sg_field \ -singleValue 4 \ -seed 1 \ -optionalEnabled true \ -valueList [list 4] \ -stepValue 4 \ -fixedBits 4 \ -fieldValue 4 \ -randomMask 4 \ -startValue 4 set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.headerLength-2" ixNet setMultiAttrs $sg_field \ -singleValue 5 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 5 \ -auto true \ -randomMask 0 \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.priority.raw-3" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -randomMask 0 \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.priority.tos.precedence-4" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue "000\ Routine" \ -randomMask 0 \ -activeFieldChoice true \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.priority.tos.delay-5" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue Normal \ -randomMask 0 \ -activeFieldChoice true \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.priority.tos.throughput-6" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue Normal \ -randomMask 0 \ -activeFieldChoice true \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.priority.tos.reliability-7" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue Normal \ -randomMask 0 \ -activeFieldChoice true \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.priority.tos.monetary-8" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue Normal \ -randomMask 0 \ -activeFieldChoice true \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.priority.tos.unused-9" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -randomMask 0 \ -activeFieldChoice true \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.totalLength-18" ixNet setMultiAttrs $sg_field \ -singleValue 28 \ -seed 1 \ -optionalEnabled true \ -valueList [list 20] \ -stepValue 20 \ -fixedBits 20 \ -fieldValue 28 \ -auto true \ -randomMask 20 \ -startValue 20 set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.identification-19" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -randomMask 0 \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.flags.reserved-20" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -randomMask 0 \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.flags.fragment-21" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue "May\ fragment" \ -randomMask 0 \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.flags.lastFragment-22" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue "Last\ fragment" \ -randomMask 0 \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.fragmentOffset-23" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -randomMask 0 \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.ttl-24" ixNet setMultiAttrs $sg_field \ -singleValue 64 \ -seed 1 \ -optionalEnabled true \ -valueList [list 64] \ -stepValue 64 \ -fixedBits 64 \ -fieldValue 64 \ -randomMask 64 \ -startValue 64 set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.protocol-25" ixNet setMultiAttrs $sg_field \ -singleValue 17 \ -seed 1 \ -optionalEnabled true \ -valueList [list 61] \ -stepValue 61 \ -fixedBits 61 \ -fieldValue $inner_proto \ -auto true \ -randomMask 61 \ -startValue 61 set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.checksum-26" ixNet setMultiAttrs $sg_field \ -singleValue 63355 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 63355 \ -auto true \ -randomMask 0 \ -startValue 0 set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.srcIp-27" ixNet setMultiAttrs $sg_field \ -singleValue $inner_srcip \ -seed 1 \ -optionalEnabled true \ -valueList [list 0.0.0.0] \ -stepValue 0.0.0.0 \ -fixedBits 0.0.0.0 \ -fieldValue $inner_srcip \ -randomMask 0.0.0.0 \ -startValue 0.0.0.0 set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.dstIp-28" ixNet setMultiAttrs $sg_field \ -singleValue $inner_dstip \ -seed 1 \ -optionalEnabled true \ -valueList [list 0.0.0.0] \ -stepValue 0.0.0.0 \ -fixedBits 0.0.0.0 \ -fieldValue $inner_dstip \ -randomMask 0.0.0.0 \ -startValue 0.0.0.0 set sg_field $ixNetSG_Stack(3)/field:"ipv4.header.options.pad-58" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto true \ -randomMask 0 \ -startValue 0 sg_commit set sg_field [lindex [ixNet remapIds $sg_field] 0] if { [string compare $inner_proto "udp"] == 0 } { # INNER UDP set sg_stack $ixNetSG_Stack(2)/stack:"udp-$stack_number" sg_commit set sg_stack [lindex [ixNet remapIds $sg_stack] 0] set ixNetSG_Stack(3) $sg_stack incr stack_number set sg_field $ixNetSG_Stack(3)/field:"udp.header.srcPort-1" ixNet setMultiAttrs $sg_field \ -singleValue $inner_srcport \ -seed 1 \ -optionalEnabled true \ -valueList [list 63] \ -stepValue 63 \ -fixedBits 63 \ -fieldValue $inner_srcport \ -auto true \ -randomMask 63 \ -startValue 63 set sg_field $ixNetSG_Stack(3)/field:"udp.header.dstPort-2" ixNet setMultiAttrs $sg_field \ -singleValue $inner_dstport \ -seed 1 \ -optionalEnabled true \ -valueList [list 63] \ -stepValue 63 \ -fixedBits 63 \ -fieldValue $inner_dstport \ -auto true \ -randomMask 63 \ -startValue 63 set sg_field $ixNetSG_Stack(3)/field:"udp.header.length-3" ixNet setMultiAttrs $sg_field \ -singleValue 8 \ -seed 1 \ -optionalEnabled true \ -valueList [list 8] \ -stepValue 8 \ -fixedBits 8 \ -fieldValue 8 \ -auto true \ -randomMask 8 \ -startValue 8 set sg_field $ixNetSG_Stack(3)/field:"udp.header.checksum-4" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto true \ -randomMask 0 \ -startValue 0 sg_commit set sg_field [lindex [ixNet remapIds $sg_field] 0] } else { # INNER TCP set sg_stack $ixNetSG_Stack(2)/stack:"tcp-$stack_number" sg_commit set sg_stack [lindex [ixNet remapIds $sg_stack] 0] set ixNetSG_Stack(3) $sg_stack incr stack_number set sg_field $ixNetSG_Stack(3)/field:"tcp.header.srcPort-1" ixNet setMultiAttrs $sg_field \ -singleValue $inner_srcport \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list $inner_srcport] \ -stepValue 60 \ -fixedBits 60 \ -fieldValue $inner_srcport \ -auto false \ -randomMask 60 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 60 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.dstPort-2" ixNet setMultiAttrs $sg_field \ -singleValue $inner_dstport \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list $inner_dstport] \ -stepValue 60 \ -fixedBits 60 \ -fieldValue $inner_dstport \ -auto false \ -randomMask 60 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 60 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.sequenceNumber-3" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0x00000000] \ -stepValue 0x00000000 \ -fixedBits 0x00000000 \ -fieldValue 0 \ -auto true \ -randomMask 0x00000000 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0x00000000 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.acknowledgementNumber-4" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0x00000000] \ -stepValue 0x00000000 \ -fixedBits 0x00000000 \ -fieldValue 0 \ -auto false \ -randomMask 0x00000000 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0x00000000 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.dataOffset-5" ixNet setMultiAttrs $sg_field \ -singleValue 5 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 5] \ -stepValue 5 \ -fixedBits 5 \ -fieldValue 5 \ -auto true \ -randomMask 5 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 5 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.reserved-6" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto false \ -randomMask 0 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.ecn.nsBit-7" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto false \ -randomMask 0 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.ecn.cwrBit-8" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto false \ -randomMask 0 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.ecn.ecnEchoBit-9" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto false \ -randomMask 0 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.controlBits.urgBit-10" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto false \ -randomMask 0 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.controlBits.ackBit-11" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto false \ -randomMask 0 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.controlBits.pshBit-12" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto false \ -randomMask 0 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.controlBits.rstBit-13" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto false \ -randomMask 0 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.controlBits.synBit-14" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto false \ -randomMask 0 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.controlBits.finBit-15" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto false \ -randomMask 0 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.window-16" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0x0000] \ -stepValue 0x0000 \ -fixedBits 0x0000 \ -fieldValue 0 \ -auto false \ -randomMask 0x0000 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0x0000 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.checksum-17" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0x0000] \ -stepValue 0x0000 \ -fixedBits 0x0000 \ -fieldValue 0 \ -auto true \ -randomMask 0x0000 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0x0000 \ -countValue 1 set sg_field $ixNetSG_Stack(3)/field:"tcp.header.urgentPtr-18" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -fullMesh false \ -valueList [list 0x0000] \ -stepValue 0x0000 \ -fixedBits 0x0000 \ -fieldValue 0 \ -auto false \ -randomMask 0x0000 \ -trackingEnabled false \ -valueType singleValue \ -activeFieldChoice false \ -startValue 0x0000 \ -countValue 1 sg_commit set sg_field [lindex [ixNet remapIds $sg_field] 0] } set sg_stack $ixNetSG_Stack(2)/stack:"fcs-$stack_number" sg_commit set sg_stack [lindex [ixNet remapIds $sg_stack] 0] set ixNetSG_Stack(3) $sg_stack incr stack_number set sg_field $ixNetSG_Stack(3)/field:"ethernet.fcs-1" ixNet setMultiAttrs $sg_field \ -singleValue 0 \ -seed 1 \ -optionalEnabled true \ -valueList [list 0] \ -stepValue 0 \ -fixedBits 0 \ -fieldValue 0 \ -auto true \ -randomMask 0 \ -startValue 0 # VXLAN/GRE END } else { # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"fcs-4" # set sg_stack $ixNetSG_Stack(2)/stack:"fcs-4" sg_commit set sg_stack [lindex [ixNet remapIds $sg_stack] 0] set ixNetSG_Stack(3) $sg_stack # # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/stack:"fcs-4"/field:"ethernet.fcs-1" # set sg_field $ixNetSG_Stack(3)/field:"ethernet.fcs-1" ixNet setMultiAttrs $sg_field \ -singleValue {0} \ -seed {1} \ -optionalEnabled True \ -fullMesh False \ -valueList {{0}} \ -stepValue {0} \ -fixedBits {0} \ -fieldValue {0} \ -auto True \ -randomMask {0} \ -trackingEnabled False \ -valueType singleValue \ -activeFieldChoice False \ -startValue {0} \ -countValue {1} sg_commit set sg_field [lindex [ixNet remapIds $sg_field] 0] } # configuring the object that corresponds to /traffic/trafficItem:1/configElement:1/transmissionDistribution # set sg_transmissionDistribution $ixNetSG_Stack(2)/transmissionDistribution ixNet setMultiAttrs $sg_transmissionDistribution \ -distributions {} sg_commit set sg_transmissionDistribution [lindex [ixNet remapIds $sg_transmissionDistribution] 0] # # configuring the object that corresponds to /traffic/trafficItem:1/transmissionDistribution # set sg_transmissionDistribution $ixNetSG_Stack(1)/transmissionDistribution ixNet setMultiAttrs $sg_transmissionDistribution \ -distributions {} sg_commit sg_commit set sg_transmissionDistribution [lindex [ixNet remapIds $sg_transmissionDistribution] 0] # # configuring the object that corresponds to /traffic/trafficItem:1/tracking # set sg_tracking $ixNetSG_Stack(1)/tracking ixNet setMultiAttrs $sg_tracking \ -offset 0 \ -oneToOneMesh False \ -trackBy {} \ -values {} \ -fieldWidth thirtyTwoBits \ -protocolOffset {Root.0} ixNet setMultiAttrs $sg_tracking/egress \ -offset {Outer VLAN Priority (3 bits)} \ -enabled False \ -customOffsetBits 0 \ -encapsulation {Ethernet} \ -customWidthBits 0 ixNet setMultiAttrs $sg_tracking/latencyBin \ -enabled False \ -binLimits {1 1.42 2 2.82 4 5.66 8 11.32} \ -numberOfBins 8 sg_commit set sg_tracking [lindex [ixNet remapIds $sg_tracking] 0] set ixNetSG_Stack(2) $sg_tracking # EGRESS START # Note: The scriptgen generated egress code were removed because we are not using # flow tracking in our tests. # Insert EGRESS lines here if needed # EGRESS END # # configuring the object that corresponds to /traffic/trafficItem:1/dynamicUpdate # set sg_dynamicUpdate $ixNetSG_Stack(1)/dynamicUpdate ixNet setMultiAttrs $sg_dynamicUpdate \ -enabledSessionAwareTrafficFields {} \ -enabledDynamicUpdateFields {} sg_commit set sg_dynamicUpdate [lindex [ixNet remapIds $sg_dynamicUpdate] 0] ### ### /quickTest area ### # # configuring the object that corresponds to /quickTest/rfc2544throughput:1 # if {$rfc2544TestType == "throughput"} { set sg_rfc2544throughput [ixNet add $ixNetSG_Stack(0)/quickTest rfc2544throughput] ixNet setMultiAttrs $sg_rfc2544throughput \ -name {QuickTest1} \ -mode existingMode \ -inputParameters {{}} ixNet setMultiAttrs $sg_rfc2544throughput/testConfig \ -protocolItem {} \ -enableMinFrameSize False \ -framesize $frameSize \ -reportTputRateUnit mbps \ -duration $duration \ -numtrials $numTests \ -trafficType constantLoading \ -burstSize 1 \ -framesPerBurstGap 1 \ -tolerance 0 \ -frameLossUnit {0} \ -staggeredStart False \ -framesizeList $frameSize \ -frameSizeMode custom \ -rateSelect percentMaxRate \ -percentMaxRate 100 \ -resolution 0.01 \ -forceRegenerate False \ -reportSequenceError False \ -ipv4rate 50 \ -ipv6rate 50 \ -loadRateList $frameRate \ -fixedLoadUnit percentMaxRate \ -loadRateValue 80 \ -incrementLoadUnit percentMaxRate \ -initialIncrementLoadRate 10 \ -stepIncrementLoadRate 10 \ -maxIncrementLoadRate 100 \ -randomLoadUnit percentMaxRate \ -minRandomLoadRate 10 \ -maxRandomLoadRate 80 \ -countRandomLoadRate 1 \ -minFpsRate 1000 \ -minKbpsRate 64 \ -txDelay 2 \ -delayAfterTransmit 2 \ -minRandomFrameSize 64 \ -maxRandomFrameSize 1518 \ -countRandomFrameSize 1 \ -minIncrementFrameSize 64 \ -stepIncrementFrameSize 64 \ -maxIncrementFrameSize 1518 \ -calculateLatency True \ -latencyType storeForward \ -calculateJitter False \ -enableDataIntegrity False \ -enableBackoffIteration False \ -enableSaturationIteration False \ -enableStopTestOnHighLoss False \ -enableBackoffUseAs% False \ -backoffIteration 1 \ -saturationIteration 1 \ -stopTestOnHighLoss 0 \ -loadType $loadType \ -stepLoadUnit percentMaxRate \ -customLoadUnit percentMaxRate \ -comboLoadUnit percentMaxRate \ -binaryLoadUnit percentMaxRate \ -initialBinaryLoadRate 100 \ -minBinaryLoadRate 1 \ -maxBinaryLoadRate 100 \ -binaryResolution 1 \ -binaryBackoff 50 \ -binaryTolerance $tolerance \ -binaryFrameLossUnit % \ -comboFrameLossUnit % \ -stepFrameLossUnit % \ -initialStepLoadRate 10 \ -maxStepLoadRate 100 \ -stepStepLoadRate 10 \ -stepTolerance 0 \ -initialComboLoadRate 10 \ -maxComboLoadRate 100 \ -minComboLoadRate 10 \ -stepComboLoadRate 10 \ -comboResolution 1 \ -comboBackoff 50 \ -comboTolerance 0 \ -binarySearchType linear \ -unchangedValueList {0} \ -enableFastConvergence $fastConvergence \ -fastConvergenceDuration $convergenceDuration \ -fastConvergenceThreshold 10 \ -framesizeFixedValue $frameSize \ -gap 3 \ -unchangedInitial False \ -generateTrackingOptionAggregationFiles False \ -enableExtraIterations False \ -extraIterationOffsets {10, -10} \ -usePercentOffsets False \ -imixDistribution weight \ -imixAdd {0} \ -imixDelete {0} \ -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}}}} \ -imixEnabled False \ -imixTemplates none \ -framesizeImixList $frameSize \ -imixTrafficType {UNCHNAGED} \ -mapType {oneToOne} \ -supportedTrafficTypes {mac,ipv4,ipv6,ipmix} ixNet setMultiAttrs $sg_rfc2544throughput/learnFrames \ -learnFrequency $learningFrequency \ -learnNumFrames 10 \ -learnRate 100 \ -learnWaitTime 1000 \ -learnFrameSize $frameSize \ -fastPathLearnFrameSize $frameSize \ -learnWaitTimeBeforeTransmit 0 \ -learnSendMacOnly False \ -learnSendRouterSolicitation False \ -fastPathEnable $fastPathEnable \ -fastPathRate 100 \ -fastPathNumFrames 10 ixNet setMultiAttrs $sg_rfc2544throughput/passCriteria \ -passCriteriaLoadRateMode average \ -passCriteriaLoadRateValue 100 \ -passCriteriaLoadRateScale mbps \ -enablePassFail False \ -enableRatePassFail False \ -enableLatencyPassFail False \ -enableStandardDeviationPassFail False \ -latencyThresholdValue 10 \ -latencyThresholdScale us \ -latencyThresholdMode average \ -latencyVariationThresholdValue 0 \ -latencyVariationThresholdScale us \ -latencyVarThresholdMode average \ -enableSequenceErrorsPassFail False \ -seqErrorsThresholdValue 0 \ -seqErrorsThresholdMode average \ -enableDataIntegrityPassFail False \ -dataErrorThresholdValue 0 \ -dataErrorThresholdMode average sg_commit set sg_rfc2544throughput [lindex [ixNet remapIds $sg_rfc2544throughput] 0] set ixNetSG_Stack(1) $sg_rfc2544throughput # # configuring the object that corresponds to /quickTest/rfc2544throughput:1/protocols # set sg_protocols $ixNetSG_Stack(1)/protocols ixNet setMultiAttrs $sg_protocols \ -protocolState default \ -waitAfterStart 120 \ -waitAfterStop 30 sg_commit set sg_protocols [lindex [ixNet remapIds $sg_protocols] 0] # # configuring the object that corresponds to /quickTest/rfc2544throughput:1/trafficSelection:1 # set sg_trafficSelection [ixNet add $ixNetSG_Stack(1) trafficSelection] ixNet setMultiAttrs $sg_trafficSelection \ -id $ixNetSG_ref(26) \ -includeMode inTest \ -itemType trafficItem sg_commit set sg_trafficSelection [lindex [ixNet remapIds $sg_trafficSelection] 0] ixNet commit } elseif {$rfc2544TestType == "back2back"} { # # configuring the object that corresponds to /quickTest/rfc2544back2back:2 # set sg_rfc2544back2back [ixNet add $ixNetSG_Stack(0)/quickTest rfc2544back2back] ixNet setMultiAttrs $sg_rfc2544back2back \ -name {B2B} \ -mode existingMode \ -inputParameters {{}} ixNet setMultiAttrs $sg_rfc2544back2back/testConfig \ -protocolItem {} \ -framesize $frameSize \ -reportTputRateUnit mbps \ -rfc2544ImixDataQoS False \ -detailedResultsEnabled True \ -rfc2889ordering noOrdering \ -floodedFramesEnabled False \ -duration $duration \ -numtrials $numTests \ -trafficType constantLoading \ -burstSize 1 \ -framesPerBurstGap 1 \ -tolerance 0 \ -frameLossUnit {0} \ -staggeredStart False \ -framesizeList $frameSize \ -frameSizeMode custom \ -rateSelect percentMaxRate \ -percentMaxRate 100 \ -resolution 0.01 \ -forceRegenerate False \ -reportSequenceError False \ -ipv4rate 50 \ -ipv6rate 50 \ -loadRateList $frameRate \ -minFpsRate 1000 \ -minKbpsRate 64 \ -txDelay 2 \ -delayAfterTransmit 2 \ -minRandomFrameSize 64 \ -maxRandomFrameSize 1518 \ -countRandomFrameSize 1 \ -minIncrementFrameSize 64 \ -stepIncrementFrameSize 64 \ -maxIncrementFrameSize 1518 \ -calculateLatency False \ -calibrateLatency False \ -latencyType cutThrough \ -calculateJitter False \ -enableDataIntegrity False \ -loadType $loadType \ -binaryFrameLossUnit % \ -loadUnit percentMaxRate \ -customLoadUnit percentMaxRate \ -randomLoadUnit percentMaxRate \ -incrementLoadUnit percentMaxRate \ -binaryResolution 100 \ -binaryBackoff 50 \ -binaryTolerance $tolerance \ -initialIncrementLoadRate 100 \ -stepIncrementLoadRate 10 \ -maxIncrementLoadRate 100 \ -minRandomLoadRate 10 \ -maxRandomLoadRate 80 \ -countRandomLoadRate 1 \ -numFrames {100000} \ -loadRate 100 \ -enableMinFrameSize False \ -gap 3 \ -generateTrackingOptionAggregationFiles False \ -sendFullyMeshed False \ -imixDistribution weight \ -imixAdd {0} \ -imixDelete {0} \ -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}}}} \ -imixEnabled False \ -imixTemplates none \ -framesizeImixList $frameSize \ -imixTrafficType {UNCHNAGED} \ -ipRatioMode fixed \ -ipv4RatioList {10,25,50,75,90} \ -ipv6RatioList {90,75,50,25,10} \ -minIncrementIpv4Ratio {10} \ -stepIncrementIpv4Ratio {10} \ -maxIncrementIpv4Ratio {90} \ -minIncrementIpv6Ratio {90} \ -stepIncrementIpv6Ratio {-10} \ -maxIncrementIpv6Ratio {10} \ -minRandomIpv4Ratio {10} \ -maxRandomIpv4Ratio {90} \ -minRandomIpv6Ratio {90} \ -maxRandomIpv6Ratio {10} \ -countRandomIpRatio 1 \ -mapType {oneToOne|manyToMany|fullMesh} \ -supportedTrafficTypes {mac,ipv4,ipv6,ipmix} ixNet setMultiAttrs $sg_rfc2544back2back/learnFrames \ -learnFrequency $learningFrequency \ -learnNumFrames 10 \ -learnRate 100 \ -learnWaitTime 1000 \ -learnFrameSize 64 \ -fastPathLearnFrameSize 64 \ -learnWaitTimeBeforeTransmit 0 \ -learnSendMacOnly False \ -learnSendRouterSolicitation False \ -fastPathEnable $fastPathEnable \ -fastPathRate 100 \ -fastPathNumFrames 10 ixNet setMultiAttrs $sg_rfc2544back2back/passCriteria \ -passCriteriaLoadRateMode average \ -passCriteriaLoadRateValue 100 \ -passCriteriaLoadRateScale mbps \ -enablePassFail False \ -enableRatePassFail False \ -enableLatencyPassFail False \ -enableStandardDeviationPassFail False \ -latencyThresholdValue 10 \ -latencyThresholdScale us \ -latencyThresholdMode average \ -latencyVariationThresholdValue 0 \ -latencyVariationThresholdScale us \ -latencyVarThresholdMode average \ -enableSequenceErrorsPassFail False \ -seqErrorsThresholdValue 0 \ -seqErrorsThresholdMode average \ -enableDataIntegrityPassFail False \ -dataErrorThresholdValue 0 \ -dataErrorThresholdMode average \ -enableFrameCountPassFail False \ -passCriteriaFrameCountValue 100 \ -passCriteriaFrameCountMode average sg_commit set sg_rfc2544back2back [lindex [ixNet remapIds $sg_rfc2544back2back] 0] set ixNetSG_Stack(1) $sg_rfc2544back2back # # configuring the object that corresponds to /quickTest/rfc2544back2back:2/protocols # set sg_protocols $ixNetSG_Stack(1)/protocols ixNet setMultiAttrs $sg_protocols \ -protocolState default \ -waitAfterStart 120 \ -waitAfterStop 30 sg_commit set sg_protocols [lindex [ixNet remapIds $sg_protocols] 0] # # configuring the object that corresponds to /quickTest/rfc2544back2back:2/trafficSelection:1 # set sg_trafficSelection [ixNet add $ixNetSG_Stack(1) trafficSelection] ixNet setMultiAttrs $sg_trafficSelection \ -id $ixNetSG_ref(26) \ -includeMode inTest \ -itemType trafficItem sg_commit set sg_trafficSelection [lindex [ixNet remapIds $sg_trafficSelection] 0] ixNet commit } # # getting and applying the RFC2544 test # set root [ixNet getRoot] foreach traf_item [ixNet getList $root/traffic trafficItem] { ixNet exec generate $traf_item } set qt [ixNet getList $root quickTest] if {$rfc2544TestType == "throughput"} { set rfc2544test [ixNet getList $qt rfc2544throughput] } elseif {$rfc2544TestType == "back2back"} { set rfc2544test [ixNet getList $qt rfc2544back2back] } ixNet exec apply $rfc2544test after 5000 # # starting the RFC2544 Throughput test # puts "Starting test..." ixNet exec start $rfc2544test } proc waitForRfc2544Test { } { # Wait for- and return results of- RFC2544 quicktest. global rfc2544test puts "Waiting for test to complete..." set result [ixNet exec waitForTest $rfc2544test] puts "Finished Test" return "$result" }