Print Final Report1

  • Upload
    oromos

  • View
    92

  • Download
    0

Embed Size (px)

DESCRIPTION

Report on IXIA network

Citation preview

  • 1

    Company Overview:

    Ixia provides the industry's most comprehensive converged IP network validation and network visibility

    solutions. Equipment manufacturers, service providers, enterprises, and government agencies use Ixia's

    solutions to design, verify, and monitor a broad range of wired, Wi-Fi, and 3G/LTE equipment and

    networks. Ixia's test solutions emulate realistic media-rich traffic and network conditions so that customers

    can optimize and validate the design, performance, and security of their pre-deployment networks. Ixia's

    intelligent network visibility platforms provide clarity into physical and virtual production networks for

    improved performance, security, resiliency, and application delivery of cloud, data center, and service

    provider networks.

    IxNetwork Introduction and Overview:

    IxNetwork of IXIA is specifically targeted for the performance and functionality testing of high-speed, high-

    capacity routers and switches. IxNetwork operates only on port-CPU-based test modules of Ixia. With these

    modules running Windows OS, each test port supports an independent PowerPC running stripped down

    version of Linux OS and protocol state machines.

    IxNetwork provides a powerful graphical user interface (GUI) that one can use to configure and run

    complex tests. With IxNetwork one can quickly and easily configure protocol variables and parameters to

    suit a particular device under test (DUT). Combined with Ixia family of Chassis and port-CPU based Load

    Modules, one can use IxNetwork to create a test environment tailored to your specific requirements.

    IxNetwork offers the flexibility to customize the application to meet a wide range of requirements for testing

    complex network topologies, consisting of thousands of routing or switching devices. You can emulate

    millions of routes and reachable hosts within the topology. One can also, easily scales the size of the

    emulated topologies by adding additional test ports.

    IxNetwork also provides with the ability to customize millions of traffic flows to stress the data plane

    performance. One can create sophisticated configurations using powerful wizards and grid controls in the

    graphical user interface. With its enhanced real-time analysis and statistics, IxNetwork is capable of

    reporting comprehensive protocol status and detailed per-flow traffic performance metrics.

    How IxNetwork works:

    IxNetwork is the Ixia application software that can run with the Ixia Platform IxOS on Ixia chassis having

    different loadmodules.

    IxNetwork (Ixia Application)

    Ixia Load Modules (Ixia cards)

    IxOS (Ixia Platform)

    Operating System(Windows)

    Chassis (Ixia Hardware)

  • 2

    IxOS: It is the basic platform for other Ixia products like IxNetwork. It works as an interface between

    Windows operating system and the Ixia application softwares (for example IxNetwork). Basically , IxOS is

    responsible for interacting with the Ixia load modules.

    IxNetwork GUI Framework:

    IxNetwork provides a GUI framework, with a main IxNetwork window that displays sub-windows for Port

    Management, Protocols, Traffic Configuration (for L2 - L3 Traffic or Application Traffic), and the Event

    Scheduler. Additional panels display Statistics, Data Miner, and Analyzer. Users can simultaneously view

    protocol configurations, statistics for traffic and protocols, and trace login information.

    Fig.1: IxNetwork GUI

    Ixia Load Modules:

    There are different Ixia cards like Denali family 10GE LSM, 10ge MSM, Whitney LSMXMV (16) (IxE card name 10/100/1000 LSMXMV16) which are used in different chassis for controlling and managing the network traffic according to card capacity.

    IxNetwork Enhanced Port Management:

    IxNetwork Port Management feature allows user to assign physical ports for immediate configuration. As an

    alternative, user can create assign virtual ports, a port configuration image for a port type, such as Ethernet, without tying up an actual physical port. Protocols can be configured for this test port and the resulting configuration can be saved for later use.

    In Addition, IxNetwork supports emulation of Internet-scale routing topologies to determine the scalability

    limits, and is designed to emulate a wide variety of bridging and routing protocols.The Basic Traffic Wizard

    and Advanced Traffic Wizard allow user to create millions of traffic flows for validating emulated networks

    and hosts. Besides these, some added benefits are Event Scheduler, Test Composer, Enhanced Statistics

    Reporting,Trace Window, Application Traffic, Quick Tests, Flow Tracking, Packet Capture and Analyzer,

    Data miner, etc.

  • 3

    Fig. 2: Port Selection Window

    IxOS Customer Case AutomationI:

    Automation Harness: IxBreaker is the harness for IxOS automation which uses different Ixia APIs and

    IxOSLibrary.

    Fig.3: Ix Breaker GUI

  • 4

    Language used for scripting: TCL (Toolkit Command Language) is a scripting language. It is commonly

    used for rapid prototyping, scripted applications, GUIs and testing.

    IpDecodeOptions.tcl :: There was a customer issue where multiple streams of packets to be configured

    with specified combination of protocols and transmitted. Then capture them from receiving side to verify

    whether each stream of packets with particular protocol is identified or not.

    Following are the multiple stream configuration which are used to simulate different protocol types:

    # configuring ipv4 packets.

    set streamId 1

    stream setDefault

    stream config -name "stream 1"

    stream config -enable true

    stream config -numFrames 5

    stream config -frameSizeType sizeFixed

    stream config -dma advance

    protocol setDefault

    protocol config -name ipV4

    protocol config -ethernetType ethernetII

    ip setDefault

    ip config -sourceIpAddr "1.1.1.1"

    ip config -destIpAddr "2.2.2.1"

    # configuring ipv6 packets.

    set streamId 2

    ip setDefault

    stream setDefault

    stream config -name "stream 2"

    stream config -enable true

    stream config -numFrames 5

    stream config -frameSizeType sizeFixed

    stream config -dma advance

    protocol setDefault

    protocol config -name ipV6

    protocol config -ethernetType ethernetII

    ipV6 setDefault

    #configuring ipv4 packets with tcp.

    set streamId 3

    ipV6 setDefault

    stream setDefault

    stream config -name "stream 3"

    stream config -enable true

    stream config -numFrames 5

    stream config -frameSizeType sizeFixed

    stream config -dma advance

    protocol setDefault

    protocol config -name ipV4

    protocol config -ethernetType ethernetII

    ip config -ipProtocol ipV4ProtocolTcp

    ip config -sourceIpAddr "3.3.3.1"

    ip config -destIpAddr "4.4.4.1"

    tcp setDefault

  • 5

    #configuring ipv4 packets with udp.

    set streamId 4

    ip setDefault

    stream setDefault

    stream config -name "stream 4"

    stream config -enable true

    stream config -numFrames 5

    stream config -frameSizeType sizeFixed

    stream config -dma advance

    protocol setDefault

    protocol config -name ipV4

    protocol config -ethernetType ethernetII

    ip config -ipProtocol ipV4ProtocolUdp

    ip config -sourceIpAddr "5.5.5.1"

    ip config -destIpAddr "6.6.6.1"

    udp setDefault

    #configuring ipv6 packets with tcp.

    set streamId 5

    ipV6 setDefault

    stream setDefault

    stream config -name "stream 5"

    stream config -numFrames 5

    stream config -frameSizeType sizeAuto

    stream config -dma advance

    protocol setDefault

    protocol config -name ipV6

    protocol config -appName noType

    protocol config -ethernetType ethernetII

    ipV6 setDefault

    ipV6 config -sourceAddr "FE80:0:0:0:200:6FF:FE00:200"

    ipV6 config -destAddr "3555:5555:6666:6666:7777:7777:8888:8888"

    ipV6 config -nextHeader ipV4ProtocolTcp

    ipV6 clearAllExtensionHeaders

    tcp setDefault

    tcp config -checksum "50 ed"

    #configuring ipv6 packets with udp.

    set streamId 6

    ipV6 setDefault

    stream setDefault

    stream config -name "stream 6"

    stream config -numFrames 5

    stream config -frameSizeType sizeAuto

    stream config -dma advance

    protocol setDefault

    protocol config -name ipV6

    protocol config -ethernetType ethernetII

    ipV6 setDefault

    ipV6 config -sourceAddr "FE80:0:0:0:200:6FF:FE00:200"

    ipV6 config -destAddr "3555:5555:6666:6666:7777:7777:8888:8888"

    ipV6 config -nextHeader ipV4ProtocolUdp

    ipV6 clearAllExtensionHeaders

    udp setDefault

  • 6

    udp config -checksum "a0 68 "

    #configuring ipv4 packets with icmp.

    set streamId 7

    ip setDefault

    stream setDefault

    stream config -name "stream 7"

    stream config -enable true

    stream config -numFrames 5

    stream config -frameSizeType sizeFixed

    stream config -dma advance

    protocol setDefault

    protocol config -name ipV4

    protocol config -ethernetType ethernetII

    ip config -ipProtocol ipV4ProtocolIcmp

    ip config -sourceIpAddr "3.3.3.1"

    ip config -destIpAddr "4.4.4.1"

    icmp setDefault

    #configuring ipv6 packets with icmp.

    set streamId 8

    stream setDefault

    stream config -name "stream 8"

    stream config -numFrames 5

    stream config -frameSizeType sizeAuto

    stream config -dma advance

    protocol setDefault

    protocol config -name ipV6

    protocol config -appName noType

    protocol config -ethernetType ethernetII

    ipV6 setDefault

    ipV6 config -sourceAddr "FE80:0:0:0:200:6FF:FE00:200"

    ipV6 config -destAddr "3555:5555:6666:6666:7777:7777:8888:8888"

    ipV6 config -nextHeader ipV4ProtocolIpv6Icmp

    ipV6 clearAllExtensionHeaders

    icmpV6 setDefault

    icmpV6 setType icmpV6DestUnreachableMessage

    icmpV6Error setDefault

  • 7

    Fig. 4: Stream configuration on txPort

    Fig. 5: txPort stats view

  • 8

    Fig.6: rxPort stats view

    Fig.7 Capture buffer packet view

  • 9

    Analysis: After capturing the packets from receiving side each and every packet structure is analyzed and

    decoded at the particular offset to confirm whether they match with the transmitting side or not.

    IxNetwork Customer Case AutomationII:

    Automation Harness: IxNetwork Pythar harness is used for IxNetwork automation which uses different

    Ixia APIs and IxNetworkLibrary.

    Language used for scripting: TCL

    Scalability Testing with OSPF and BGP:

    OSPF and BGP Route Ranges each having 2000 routes: 1. Two back to back connected ports are taken in 10GE LSMXMVDC card. 2. Two protocol interfaces are configured for OSPF. 3. Each interface is having 5 Route Ranges. 4. Each Route range is having 200 routes. 5. Again for BGP, two protocol interfaces are configured on same back to back connected ports. 6. Each interface is having 5 Route Ranges. 7. Each Route range is having 200 routes. 8. A traffic item with distribution on IPv4 Source addresses is created. 9. Protocol is started and aggregated protocol statistics is verified. 10. Traffic is started and Traffic Item Statistics is verified. 11. Latency value, Traffic Loss Percentage Tx and Rx frame rates are verified and analyzed for all 4000

    flow groups.

    Fig.8: 2 interfaces having 5 Route Ranges each of which having 200 Routes for OSPF and BGP

  • 10

    Fig.9: OSPF Route Ranges configured on InterfaceI

    Fig.10: OSPF RouteRanges configured on InterfaceII

  • 11

    Fig.11: Each OSPF RouteRange configured with 200 routes

    Fig.12: Learning Table from Interface I

  • 12

    Fig.13: Learning Table from Interface II

    Fig. 14: BGP configured with 5 RouteRanges on InterfaceI

  • 13

    Fig.15: BGP configured with 5 RouteRanges on InterfaceII

    Fig.16: BGP Learning Table on Interface II

  • 14

    Fig.17: Total 4000 Flow Group created

    IxNetwork Customer Case AutomationIII:

    L2TP Simulation: One of the customer case demands 30 sessions of L2TP to be simulated and verified in

    1G Extended back to back connected ports.

    Automation Harness: IxNetwork Pythar harness is used for IxNetwork automation which uses different

    Ixia APIs and IxNetworkLibrary.

    Language used for scripting: TCL

    L2TP Call Setup With RADIUS:

    The call setup procedure is as follows:

    1. The remote user makes a PPP call. 2. The remote user and the LAC perform PPP LCP negotiation. 3. The LAC sends a CHAP challenge message to the remote user. 4. The remote user provides the correct CHAP response. 5. The LAC sends an Access-Request message to the RADIUS server. This Request-Packet may

    include the authentication information (username and password), as well as other attributes.

    6. The LAC RADIUS server authenticates the user, and may return additional configuration data if the server is so configured.

    7. Following successful user authentication, the LAC initiates a tunneling request to the LNS. 8. If authentication of the tunnel is required, the LAC sends a CHAP challenge to the LNS.

  • 15

    9. The LNS returns a CHAP response. 10. The tunnel passes authentication. 11. The LNS sends a CHAP challenge to the LAC. 12. The LAC returns a CHAP response. 13. The tunnel passes authentication. 14. The LAC sends the user CHAP response, response identifier, and PPP negotiation parameters to the

    LNS.

    15. The LNS sends an Access-Request to its RADIUS server for authentication. 16. The RADIUS server authenticates the access request and returns a response. 17. If the LNS is configured to perform a mandatory CHAP authentication of the user, the LNS sends a

    CHAP challenge to the user and the user returns a CHAP response.

    18. The LNS resends the Access-Request to its RADIUS server for authentication. 19. The RADIUS server authenticates the Access-Request and returns a response if the user passes

    authentication.

    20. The LNS assigns an internal IP address to the remote user. At this point, the user can access the internal resources of the enterprise network.

    The figure below shows the setup procedure for an L2TP call in which both the LAC and the LNS use

    RADIUS servers for authentication.

  • 16

    Fig.18: L2TP Work Flow Diagram

    Simulation:

    1. Two Extended 1G back to back connected (using Copper cable) ports are taken.

    2. Config (Scriptgen file) is loaded in the ports.

    3. Links on all ports are checked.

  • 17

    4. Protocols are started.

    5. Now following protocol stats are analyzed:

    i) L2TP Total Bytes Tx and Rx

    ii) Client Tunnels Up

    iii) Server Tunnels Up

    iv) Server Interfaces Up

    v) Sessions Initiated and Sessions Failed

    vi) LCP Total Messages Tx and Rx

    vii) PPP Total Bytes Tx and Rx

    6. Traffic item is generated and applied.

    7. Traffic is started and stopped.

    8. Following Traffic Item Statistics are verified:

    i) Tx Frames

    ii) Frames Delta

    iii) Tx Frame Rate

    iv) Traffic Loss Percentage

    v) Rx Frame Rate

    vi) Rx Frames

    vii) Rx Bytes

    viii) Rx Rate in Bps, bps, Kbps and Mbps

    Fig.19: Emulation of L2TP on back to back connected Ixia ports

  • 18

    Fig: 20: L2TP configured on two back to back connected ports

    Fig.21: LNS and LAC

  • 19

    Fig.22: Configuration of L2TP 30 sessions

    Fig.23: L2TP FlowGroups

  • 20

    Fig. 24: 30 different sessions with session ID generated

    IxNetwork Regression Sanity: The purpose of regression testing is to confirm that a recent program or

    code change has not adversely affected existing features.

    Regression testing is nothing but full or partial selection of already executed test cases which are re-executed

    to ensure existing functionalities work fine.

    This testing is done to make sure that new code changes should not have side effects on the existing

    functionalities. It ensures that old code still works once the new code changes are done.

    Regression Sanity is done to ensure the sanity or health of the IxNetwork with respect to the Ixia platform

    i.e. IxOS.

    Regression Harness: IxNetwork Pythar harness is used for IxNetwork Regression Sanity which uses

    different Ixia APIs and IxNetworkLibrary.

    Language Used for establishing Regression Setup: Python

  • 21

    Fig.25: Pythar Harness setup configuration

    Fig.26: Test-bed for Automation and Regression

    Configures

    Configures

    IXIA

    CHASIS

    LINUX

    BOX USER

    PC

    LAN

    DUT

  • 22

    The organization of IXIA Regression test-bed is as follows:

    The IXIA-Chassis, DUT, user pc and the Linux box are all inter-connected via LAN.

    IxNetwork runs on both IXIA-Chassis and the user pc.

    The Linux box contains the Libraries, Utility files and the test cases.

    The user configures and runs the test cases from the Linux box which in turn configures the IXIA-

    Chassis as well as the DUT.

    Testing Performance of different load modules:

    1. Deciding test coverage.

    2. Organizing test cases.

    3. Preparing test bed (hardware setup).

    4. Preparing testing harness for Regression.

    5. Running Regression test on particular Load Module.

    6. Analysing results.

    Configuring DUT and DUT feature Testing :

    1. DUT test bed preparation.

    2. Configuring DUT ports with Ixia ports.

    3. Deciding test coverage.

    4. Emulating protocol features on Ixia ports.

    5. Emulating protocol features on DUT ports.

    6. Configuring Traffic Item and Flow Group.

    7. Analysing Traffic Item Statistics.

  • 23

    Fig.27: IXIA chassis capacity and performance Test Automation

    Connect to all clients in the

    Terminal Server INCLUDE

    Established connection with chassis

    from all clients

    Clean all existing configuration

    from all client

    Start test-case execution from all

    clients

    Verify basic criteria obtain by the

    test-case

    All criteria

    satisfied and no

    crash in chassis?

    B

    START

    A

    Set Return value = FAILED

    Config-files

    Chassis configuration

    Client configuration

    YES

    NO

    Load configuration on all clients

    Set Return value = PASSED

    Stop all configured protocols

    Clean Up the client

    STOP

  • 24

    Main Difficulties encountered and how they were tackled:

    The main difficulty faced during the project work was to understand working of the IxNetwork software,

    IXIAs Performance and Regression Test Framework and Test bed for automation. A thorough study of

    these as well as guidance of the mentors helped a lot to understand the problems and implement solution

    strategies for the same.

    Limitations of the Project:

    Some limitations of the project are:

    The procedures and scripts written are specific to IxNetwork software and IXIAs Regression and

    Performance Test Framework.

    Conclusion:

    IxNetwork is designed to test network infrastructure, capacity, scalability, and convergence using its scaled

    protocol emulation technology. It works with IXIA's test platform to exchange control and data plane traffic

    with the DUT. It is a vast software with a number of functionalities. The IxNetwork protocol emulation that

    were performed as a part of the project and are successfully implemented form only a small part of the

    software but are of greater importance from user point of view i.e. those users running performance and

    regression test over this software.

    On the other hand, the successfully implemented use-cases that fall under Automation domain and form a

    part of the project also hold importance as these automated test cases are able to verify whether the product

    meets the specified standard that has been developed for efficiency or interoperability, reducing manual

    labour in the process, ensure Quality of Service (QoS) and determine how a system performs in terms of

    responsiveness and stability under a particular workload.

  • 25

    Annexure:

    TCL Scripts and Outputs

    Automation I: test.IpDecodeOptions.tcl

    source library/IxBreakerUtils.tcl

    namespace eval IpDecodeOptions {

    #**********************************************************************************************

    *******************************#

    # Procedure Name : IpDecodeOptions

    # Description : This function captures protocol types from receiving end and validates them with the transmitting

    side.

    # Returns : PASS or FAIL.

    #**********************************************************************************************

    *******************************#

    proc IpDecodeOptions { } \

    {

    set testName [IxOsGetTestName]

    # Parse user given portList

    set portList $::portList($testName)

    set portList1 [lindex $portList 0]

    set portList2 [lindex $portList 1]

    scan $portList1 {%d %d %d} chassis1 card1 port1

    scan $portList2 {%d %d %d} chassis1 card1 port2

    ixGlobalSetDefault

    IxOsPuts "portList $portList :$chassis1 $card1 $port1 , $chassis1 $card1 $port2 :length [llength $portList]"

    # Check whether capture is enabled

    foreach portItem $portList {

    scan $portItem {%d %d %d} chassis card port

    if {![port isCapableFeature $chassis $card $port $::portFeatureCapture]} {

    IxOsPuts "LIMITATION: Port does not support capture"

    set ::invalidTest 1

    return PASS

    }

    }

    # Run the test

    if {[RunTest $portList]} {

    errorMsg "ERR: (Debug [info level 0])"

    return FAIL

    }

    return PASS

    };# proc IpDecodeOptions end.

    #**************************************************************************#

    # Procedure Name : RunTest

    # Description : Run the actual test.

    # Returns : $::TCL_OK (=0) on success and $::TCL_ERROR (=1) on Failure.

    #**************************************************************************#

    proc RunTest { portList } \

    {

    # Parse user given portList

    set portList $::portList(IpDecodeOptions)

    set portList1 [lindex $portList 0]

    set portList2 [lindex $portList 1]

    scan $portList1 {%d %d %d} chassis1 card1 port1

    scan $portList2 {%d %d %d} chassis1 card1 port2

  • 26

    if {[IxOsSetFactoryDefaults $portList]} {

    errorMsg "ERR: (Debug [info level 0])"

    return $::TCL_ERROR

    }

    after 5000

    if {[IxOsCheckLinkState $portList]} {

    IxOsError "IxOsCheckLinkState $portList (Debug [info level 0])"

    return $::TCL_ERROR

    }

    if {[ixClearPortStats $chassis1 $card1 $port1]} {

    IxOsError "ixClearPortStats $chassis1 $card1 $port1 (Debug [info level 0])"

    return $::TCL_ERROR

    }

    if {[ixClearPortStats $chassis1 $card1 $port2]} {

    IxOsError "ixClearPortStats $chassis1 $card1 $port2 (Debug [info level 0])"

    return $::TCL_ERROR

    }

    IxOsPuts "Cleared ports for test."

    # Configure streams

    if {[configStreams $portList]} {

    errorMsg "Stream configuration is not supported (Debug [info level 0])"

    return FAIL

    }

    IxOsPuts "Start Capture"

    # Start capture

    if {[ixStartPortCapture $chassis1 $card1 $port2]} {

    IxOsError "ixStartPortCapture $chassis1 $card1 $port2 $::ixErrorInfo \

    (Debug [info level 0])"

    return $::TCL_ERROR

    }

    after 1000

    # start transmit

    if {[ixStartPortTransmit $chassis1 $card1 $port1]} {

    IxOsError "ixStartPortTransmit $chassis1 $card1 $port1 $::ixErrorInfo \

    (Debug [info level 0])"

    return $::TCL_ERROR

    }

    IxOsPuts "Start Transmit"

    after 5000

    # stop capture

    if {[ixStopPortTransmit $chassis1 $card1 $port1]} {

    IxOsError "ixStartPortTransmit $chassis1 $card1 $port1 $::ixErrorInfo \

    (Debug [info level 0])"

    return $::TCL_ERROR

    }

    # Analyze test

    if {[AnalyzeTest $portList]} {

    errorMsg "ERR: (Debug [info level 0])"

    return FAIL

    }

    return $::TCL_OK

    }

    #**************************************************************************#

    # Procedure Name : configStreams

    # Description : configuring eight streams.

    # Returns : $::TCL_OK (=0) on success and $::TCL_ERROR (=1) on Failure.

    #**************************************************************************#

    proc configStreams { portList } \

    {

  • 27

    # Parse user given portList

    set portList $::portList(IpDecodeOptions)

    set portList1 [lindex $portList 0]

    set portList2 [lindex $portList 1]

    scan $portList1 {%d %d %d} chassis1 card1 port1

    scan $portList2 {%d %d %d} chassis1 card1 port2

    # Get the port

    if {[port get $chassis1 $card1 $port1]} {

    IxOsError "port set $chassis1 $card1 $port1 \

    (Debug [info level 0])"

    return $::TCL_ERROR

    }

    # configuring ipv4 packets.

    set streamId 1

    stream setDefault

    stream config -name "stream 1"

    stream config -enable true

    stream config -numFrames 5

    stream config -frameSizeType sizeFixed

    stream config -dma advance

    protocol setDefault

    protocol config -name ipV4

    protocol config -ethernetType ethernetII

    ip setDefault

    ip config -sourceIpAddr "1.1.1.1"

    ip config -destIpAddr "2.2.2.1"

    if {[ip set $chassis1 $card1 $port1]} {

    IxOsError "Error calling ip set $chassis1 $card1 $port1 \

    $streamId (Debug [info level 0])"

    return $::TCL_ERROR

    }

    if {[stream set $chassis1 $card1 $port1 $streamId]} {

    IxOsError "Error calling stream set $chassis1 $card1 $port1 \

    $streamId (Debug [info level 0])"

    return $::TCL_ERROR

    }

    IxOsPuts "configuration of stream1 is done..."

    IxOsPuts "------------------------------------------------------------------------------------------"

    # configuring ipv6 packets.

    # Reset the L4 protocols of the previous stream if any

    set streamId 2

    ip setDefault

    if {[ip set $chassis1 $card1 $port1]} {

    IxOsError "Error calling ip set $chassis1 $card1 $port1"

    set retCode $::TCL_ERROR

    }

    stream setDefault

    stream config -name "stream 2"

    stream config -enable true

    stream config -numFrames 5

    stream config -frameSizeType sizeFixed

    stream config -dma advance

    protocol setDefault

    protocol config -name ipV6

    protocol config -ethernetType ethernetII

    ipV6 setDefault

    if {[ipV6 set $chassis1 $card1 $port1]} {

    IxOsError "Error calling ipV6 set $chassis1 $card1 $port1"

    set retCode $::TCL_ERROR

  • 28

    }

    ip set $chassis1 $card1 $port1

    ipV6 set $chassis1 $card1 $port1

    if {[stream set $chassis1 $card1 $port1 $streamId]} {

    IxOsError "Error calling stream set $chassis1 $card1 $port1 \

    $streamId (Debug [info level 0])"

    return $::TCL_ERROR

    }

    IxOsPuts "configuration of stream2 is done..."

    IxOsPuts "------------------------------------------------------------------------------------------"

    #configuring ipv4 packets with tcp.

    set streamId 3

    # Reset the L4 protocols of the previous stream if any

    ipV6 setDefault

    if {[ipV6 set $chassis1 $card1 $port1]} {

    IxOsError "Error calling ipV6 set $chassis1 $card1 $port1"

    set retCode $::TCL_ERROR

    }

    stream setDefault

    stream config -name "stream 3"

    stream config -enable true

    stream config -numFrames 5

    stream config -frameSizeType sizeFixed

    stream config -dma advance

    protocol setDefault

    protocol config -name ipV4

    protocol config -ethernetType ethernetII

    ip config -ipProtocol ipV4ProtocolTcp

    ip config -sourceIpAddr "3.3.3.1"

    ip config -destIpAddr "4.4.4.1"

    if {[ip set $chassis1 $card1 $port1]} {

    IxOsError "Error calling ip set $chassis1 $card1 $port1"

    set retCode $::TCL_ERROR

    }

    tcp setDefault

    if {[tcp set $chassis1 $card1 $port1]} {

    IxOsError "Error calling tcp set $chassis1 $card1 $port1"

    set retCode $::TCL_ERROR

    }

    if {[stream set $chassis1 $card1 $port1 $streamId]} {

    IxOsError "Error calling stream set $chassis1 $card1 $port1 \

    $streamId (Debug [info level 0])"

    return $::TCL_ERROR

    }

    IxOsPuts "configuration of stream3 is done..."

    IxOsPuts "------------------------------------------------------------------------------------------"

    #configuring ipv4 packets with udp.

    set streamId 4

    # Reset the L4 protocols of the previous stream if any

    ip setDefault

    if {[ip set $chassis1 $card1 $port1]} {

    IxOsError "Error calling ip set $chassis1 $card1 $port1"

    set retCode $::TCL_ERROR

    }

    stream setDefault

    stream config -name "stream 4"

    stream config -enable true

    stream config -numFrames 5

    stream config -frameSizeType sizeFixed

  • 29

    stream config -dma advance

    protocol setDefault

    protocol config -name ipV4

    protocol config -ethernetType ethernetII

    ip config -ipProtocol ipV4ProtocolUdp

    ip config -sourceIpAddr "5.5.5.1"

    ip config -destIpAddr "6.6.6.1"

    udp setDefault

    if {[ip set $chassis1 $card1 $port1]} {

    IxOsError "Error calling ip set $chassis1 $card1 $port1"

    set retCode $::TCL_ERROR

    }

    if {[udp set $chassis1 $card1 $port1]} {

    IxOsError "Error calling udp set $chassis1 $card1 $port1"

    set retCode $::TCL_ERROR

    }

    if {[stream set $chassis1 $card1 $port1 $streamId]} {

    IxOsError "Error calling stream set $chassis1 $card1 $port1 \

    $streamId (Debug [info level 0])"

    return $::TCL_ERROR

    }

    IxOsPuts "configuration of stream4 is done..."

    IxOsPuts "------------------------------------------------------------------------------------------"

    #configuring ipv6 packets with tcp.

    set streamId 5

    stream setDefault

    stream config -name "stream 5"

    stream config -numFrames 5

    stream config -frameSizeType sizeAuto

    stream config -dma advance

    protocol setDefault

    protocol config -name ipV6

    protocol config -appName noType

    protocol config -ethernetType ethernetII

    ipV6 setDefault

    ipV6 config -sourceAddr "FE80:0:0:0:200:6FF:FE00:200"

    ipV6 config -destAddr "3555:5555:6666:6666:7777:7777:8888:8888"

    ipV6 config -nextHeader ipV4ProtocolTcp

    ipV6 clearAllExtensionHeaders

    if {[ipV6 set $chassis1 $card1 $port1]} {

    IxOsError "Error calling ipV6 set $chassis1 $card1 $port1"

    set retCode $::TCL_ERROR

    }

    tcp setDefault

    tcp config -checksum "50 ed"

    if {[tcp set $chassis1 $card1 $port1]} {

    IxOsError "Error calling tcp set $chassis1 $card1 $port1"

    set retCode $::TCL_ERROR

    }

    if {[stream set $chassis1 $card1 $port1 $streamId]} {

    IxOsError "Error calling stream set $chassis1 $card1 $port1 \

    $streamId (Debug [info level 0])"

    return $::TCL_ERROR

    }

    IxOsPuts "configuration of stream5 is done..."

    IxOsPuts "------------------------------------------------------------------------------------------"

    #configuring ipv6 packets with udp.

    set streamId 6

    stream setDefault

  • 30

    stream config -name "stream 6"

    stream config -numFrames 5

    stream config -frameSizeType sizeAuto

    stream config -dma advance

    protocol setDefault

    protocol config -name ipV6

    protocol config -ethernetType ethernetII

    ipV6 setDefault

    ipV6 config -sourceAddr "FE80:0:0:0:200:6FF:FE00:200"

    ipV6 config -destAddr "3555:5555:6666:6666:7777:7777:8888:8888"

    ipV6 config -nextHeader ipV4ProtocolUdp

    ipV6 clearAllExtensionHeaders

    if {[ipV6 addExtensionHeader ipV4ProtocolUdp]} {

    IxOsError "Error calling ipV6 addExtensionHeader ipV4ProtocolUdp"

    set retCode $::TCL_ERROR

    }

    if {[ipV6 set $chassis1 $card1 $port1]} {

    IxOsError "Error calling ipV6 set $chassis $card1 $port1"

    set retCode $::TCL_ERROR

    }

    udp setDefault

    udp config -checksum "a0 68 "

    if {[udp set $chassis1 $card1 $port1]} {

    IxOsError "Error calling udp set $chassis1 $card1 $port1"

    set retCode $::TCL_ERROR

    }

    if {[stream set $chassis1 $card1 $port1 $streamId]} {

    IxOsError "Error calling stream set $chassis1 $card1 $port1 \

    $streamId (Debug [info level 0])"

    return $::TCL_ERROR

    }

    IxOsPuts "configuration of stream6 is done..."

    IxOsPuts "------------------------------------------------------------------------------------------"

    #configuring ipv4 packets with icmp.

    set streamId 7

    # Reset the L4 protocols of the previous stream if any

    ipV6 setDefault

    if {[ipV6 set $chassis1 $card1 $port1]} {

    IxOsError "Error calling ipV6 set $chassis1 $card1 $port1"

    set retCode $::TCL_ERROR

    }

    stream setDefault

    stream config -name "stream 7"

    stream config -enable true

    stream config -numFrames 5

    stream config -frameSizeType sizeFixed

    stream config -dma advance

    protocol setDefault

    protocol config -name ipV4

    protocol config -ethernetType ethernetII

    ip config -ipProtocol ipV4ProtocolIcmp

    ip config -sourceIpAddr "3.3.3.1"

    ip config -destIpAddr "4.4.4.1"

    if {[ip set $chassis1 $card1 $port1]} {

    IxOsError "Error calling ip set $chassis1 $card1 $port1"

    set retCode $::TCL_ERROR

    }

    icmp setDefault

    if {[icmp set $chassis1 $card1 $port1]} {

  • 31

    IxOsError "Error calling tcp set $chassis1 $card1 $port1"

    set retCode $::TCL_ERROR

    }

    if {[stream set $chassis1 $card1 $port1 $streamId]} {

    IxOsError "Error calling stream set $chassis1 $card1 $port1 \

    $streamId (Debug [info level 0])"

    return $::TCL_ERROR

    }

    IxOsPuts "configuration of stream7 is done..."

    IxOsPuts "------------------------------------------------------------------------------------------"

    #configuring ipv6 packets with icmp.

    set streamId 8

    stream setDefault

    stream config -name "stream 8"

    stream config -numFrames 5

    stream config -frameSizeType sizeAuto

    stream config -dma advance

    protocol setDefault

    protocol config -name ipV6

    protocol config -appName noType

    protocol config -ethernetType ethernetII

    ipV6 setDefault

    ipV6 config -sourceAddr "FE80:0:0:0:200:6FF:FE00:200"

    ipV6 config -destAddr "3555:5555:6666:6666:7777:7777:8888:8888"

    ipV6 config -nextHeader ipV4ProtocolIpv6Icmp

    ipV6 clearAllExtensionHeaders

    if {[ipV6 addExtensionHeader ipV4ProtocolIpv6Icmp]} {

    IxOsError "Error calling ipV6 addExtensionHeader ipV4ProtocolIpv6Icmp"

    set retCode $::TCL_ERROR

    }

    if {[ipV6 set $chassis1 $card1 $port1]} {

    IxOsError "Error calling ipV6 set $chassis1 $card1 $port1"

    set retCode $::TCL_ERROR

    }

    icmpV6 setDefault

    icmpV6 setType icmpV6DestUnreachableMessage

    icmpV6Error setDefault

    if {[icmpV6 set $chassis1 $card1 $port1]} {

    IxOsError "Error calling icmpV6 set $chassis1 $card1 $port1"

    set retCode $::TCL_ERROR

    }

    if {[stream set $chassis1 $card1 $port1 $streamId]} {

    IxOsError "Error calling stream set $chassis1 $card1 $port1 \

    $streamId (Debug [info level 0])"

    return $::TCL_ERROR

    }

    IxOsPuts "configuration of stream8 is done..."

    IxOsPuts "------------------------------------------------------------------------------------------"

    # Write to hardware

    if {[ixWritePortsToHardware portList]} {

    IxOsError "ixWritePortsToHardware $portList \

    $::ixErrorInfo (Debug [info level 0])"

    return FAIL

    }

    IxOsPuts "Stream configuration of all the eight streams are done..."

    return $::TCL_OK

    }

    #**************************************************************************#

  • 32

    # Procedure Name : AnalyzeTest

    # Description : Captures the packets from receiving port and analyze the test with IpDecode options.

    # Returns : $::TCL_OK (=0) on success and $::TCL_ERROR (=1) on Failure.

    #**************************************************************************#

    proc AnalyzeTest { portList } \

    {

    # Parse user given portList

    set portList $::portList(IpDecodeOptions)

    set portList1 [lindex $portList 0]

    set portList2 [lindex $portList 1]

    scan $portList1 {%d %d %d} chassis1 card1 port1

    scan $portList2 {%d %d %d} chassis1 card1 port2

    capture get $chassis1 $card1 $port2

    set txframes [capture cget -nPackets]

    #Checking Frames Sent And frames Received from stats view

    stat get allStats $chassis1 $card1 $port1

    set txFrames [stat cget -framesSent]

    IxOsPuts "Frames Sent = $txFrames"

    stat get allStats $chassis1 $card1 $port2

    set rxFrames [stat cget -framesReceived]

    IxOsPuts "Frames Received = $rxFrames"

    if { $txFrames == $rxFrames } {

    IxOsPuts "0.0% loss"

    IxOsPuts "frames sent = frames received"

    } else {

    IxOsError "ERR: TX and Rx Frames mismatch.(Debug [info level 0])"

    return FAIL

    }

    IxOsPuts "Here is all $rxFrames frames from receiving side"

    captureBuffer get $chassis1 $card1 $port2 1 5

    for {set frame 1} {$frame

  • 33

    set frameData [captureBuffer cget -frame]

    if { [ ip decode $frameData $chassis1 $card1 $port2 ] } {

    IxOsError "ERR:Not an IPv4 packet. (Debug [info level 0])"

    return FAIL

    } else {

    IxOsPuts "Its an IPv4 packet "

    }

    if { [ tcp decode $frameData $chassis1 $card1 $port2 ] } {

    IxOsError "ERR:Not a tcp packet. (Debug [info level 0])"

    return FAIL

    } else {

    IxOsPuts "Its a tcp packet\n"

    }

    }

    IxOsPuts "-----------------------------------------------------------------------------------"

    captureBuffer get $chassis1 $card1 $port2 16 20

    for {set frame 1} {$frame

  • 34

    captureBuffer getframe $frame

    set frameData [captureBuffer cget -frame]

    if { [ ipV6 decode $frameData $chassis1 $card1 $port2 ] } {

    IxOsError "ERR:Not an IPv6 packet. (Debug [info level 0])"

    return FAIL

    } else {

    IxOsPuts "Its an IPv6 packet "

    }

    if { [ udp decode $frameData $chassis1 $card1 $port2 ] } {

    IxOsError "ERR:Not an udp packet. (Debug [info level 0])"

    return FAIL

    } else {

    IxOsPuts "Its an udp packet\n"

    }

    }

    IxOsPuts "-----------------------------------------------------------------------------------"

    captureBuffer get $chassis1 $card1 $port2 31 35

    for {set frame 1} {$frame

  • 35

    # Description : This function initiates the test process

    # Arguments : None

    # Returns : 0 on success and 1 on Failure.

    #*****************************************************************************#

    proc TestRun_[IxOsGetTestName] { }\

    {

    set retVal 0

    IxOsPrintHeader "[IxOsGetTestName]" \

    "Verified the protocol options from the capture buffer\

    validated 6 stream combinations."

    set retVal [IxOsConnectAndLoginToChassis "[IxOsGetTestName]"]

    if {$retVal == 1} {

    errorMsg "ERR: (Debug [info level 0])"

    IxOsPrintFooter "[IxOsGetTestName]"

    return 1

    }

    IxOsTest "[IxOsGetTestName]"

    set retValCleanUp [IxOsDisconnectAndLogOutFromChassis "[IxOsGetTestName]"]

    if {$retValCleanUp == 1} {

    errorMsg "ERR: (Debug [info level 0])"

    set retVal 1

    }

    IxOsPrintFooter "[IxOsGetTestName]"

    }

    };# Name space end

    IxOsInitiateTest IpDecodeOptions [lindex $argv 0] [lindex $argv 1] [lindex $argv 2] [lindex $argv 3]

    Output:

    #########################################################################

    Test Name : IpDecodeOptions

    Test Description : Verified the protocol options from the capture buffer validated 6 stream combinations.

    Time Start : 2013/May/07 02:36:38

    #########################################################################

    2013/May/07 02:36:38 :------------------------------------------

    2013/May/07 02:36:38 :SCRIPT OWNER : sadhikary

    2013/May/07 02:36:38 :------------------------------------------

    CLIENT INFO:

    name: xm2-qa1

    ixos: IxOS 6.50.951.9 EB

    protocol: 7.10.0.919

    2013/May/07 02:36:38 :Connecting to Chassis 1: xm2-qa1 ...

    2013/May/07 02:36:49 :Logging in as xm2-qa1_IpDecodeOptions_1-1-3--1-1-4......

    2013/May/07 02:36:49 :Took ownership of following ports:

    2013/May/07 02:36:49 :{1 1 3} { 1 1 4}

    2013/May/07 02:36:49 :Took Ownership for ports {1 1 3} { 1 1 4}......

    CHASSIS INFO:

    name: xm2-qa1

    ixos: 6.50.951.9

  • 36

    type: MASTER

    module: Optixia XM2

    Card information and serial numbers:

    1) 10/100/1000 LSM XMVDC16

    LM Serial Number 501136 MFG Date Code P953321 Assembly Number 850-1205-01-01 Revision C

    2) 10GE LSM XM4NGY

    LM Serial Number 084070 Assembly Number 860-1229-16 Revision D

    2013/May/07 02:36:49 :INFO: [Setting Factory defaults on {1 1 3} { 1 1 4}]

    #### I T E R A T I O N 1/1 : 2013/May/07 02:36:52 ####

    2013/May/07 02:36:52 :portList {1 1 3} { 1 1 4} :1 1 3 , 1 1 4 :length 2

    2013/May/07 02:36:52 :configuration of stream1 is done...

    2013/May/07 02:36:52 :------------------------------------------------------------------------------------------

    2013/May/07 02:36:52 :configuration of stream2 is done...

    2013/May/07 02:36:52 :------------------------------------------------------------------------------------------

    2013/May/07 02:36:52 :configuration of stream3 is done...

    2013/May/07 02:36:52 :------------------------------------------------------------------------------------------

    2013/May/07 02:36:52 :configuration of stream4 is done...

    2013/May/07 02:36:52 :------------------------------------------------------------------------------------------

    2013/May/07 02:36:52 :configuration of stream5 is done...

    2013/May/07 02:36:52 :------------------------------------------------------------------------------------------

    2013/May/07 02:36:52 :configuration of stream6 is done...

    2013/May/07 02:36:52 :------------------------------------------------------------------------------------------

    2013/May/07 02:36:52 :configuration of stream7 is done...

    2013/May/07 02:36:52 :------------------------------------------------------------------------------------------

    2013/May/07 02:36:52 :configuration of stream8 is done...

    2013/May/07 02:36:52 :------------------------------------------------------------------------------------------

    2013/May/07 02:36:53 :Stream configuration of all the eight streams are done...

    2013/May/07 02:36:59 :Checking link states on ports ...

    2013/May/07 02:37:00 :Links on all ports are up.

    2013/May/07 02:37:01 :Cleared port for test.

    2013/May/07 02:37:01 :Cleared port for test.

    2013/May/07 02:37:01 :Start Capture

    2013/May/07 02:37:03 :Start Transmit

    2013/May/07 02:37:08 :Frames Sent = 40

    2013/May/07 02:37:08 :Frames Received = 40

    2013/May/07 02:37:08 :0.0% loss

    2013/May/07 02:37:08 :frames sent = frames received

    2013/May/07 02:37:08 :Here is all 40 frames from receiving side

    2013/May/07 02:37:08 :Its an IPv4 packet

    2013/May/07 02:37:08 :Its an IPv4 packet

    2013/May/07 02:37:08 :Its an IPv4 packet

    2013/May/07 02:37:08 :Its an IPv4 packet

    2013/May/07 02:37:08 :Its an IPv4 packet

    2013/May/07 02:37:08 :-----------------------------------------------------------------------------------

    2013/May/07 02:37:08 :Its an IPv6 packet

    2013/May/07 02:37:08 :Its an IPv6 packet

    2013/May/07 02:37:08 :Its an IPv6 packet

    2013/May/07 02:37:08 :Its an IPv6 packet

    2013/May/07 02:37:08 :Its an IPv6 packet

    2013/May/07 02:37:08 :-----------------------------------------------------------------------------------

    2013/May/07 02:37:08 :Its an IPv4 packet

    2013/May/07 02:37:08 :Its a tcp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv4 packet

    2013/May/07 02:37:08 :Its a tcp packet

  • 37

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv4 packet

    2013/May/07 02:37:08 :Its a tcp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv4 packet

    2013/May/07 02:37:08 :Its a tcp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv4 packet

    2013/May/07 02:37:08 :Its a tcp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :-----------------------------------------------------------------------------------

    2013/May/07 02:37:08 :Its an IPv4 packet

    2013/May/07 02:37:08 :Its a udp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv4 packet

    2013/May/07 02:37:08 :Its a udp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv4 packet

    2013/May/07 02:37:08 :Its a udp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv4 packet

    2013/May/07 02:37:08 :Its a udp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv4 packet

    2013/May/07 02:37:08 :Its a udp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :-----------------------------------------------------------------------------------

    2013/May/07 02:37:08 :Its an IPv6 packet

    2013/May/07 02:37:08 :Its a tcp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv6 packet

    2013/May/07 02:37:08 :Its a tcp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv6 packet

    2013/May/07 02:37:08 :Its a tcp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv6 packet

    2013/May/07 02:37:08 :Its a tcp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv6 packet

    2013/May/07 02:37:08 :Its a tcp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :-----------------------------------------------------------------------------------

    2013/May/07 02:37:08 :Its an IPv6 packet

    2013/May/07 02:37:08 :Its a udp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv6 packet

    2013/May/07 02:37:08 :Its a udp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv6 packet

    2013/May/07 02:37:08 :Its a udp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv6 packet

    2013/May/07 02:37:08 :Its a udp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv6 packet

    2013/May/07 02:37:08 :Its a udp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :-----------------------------------------------------------------------------------

  • 38

    2013/May/07 02:37:08 :Its an IPv4 packet

    2013/May/07 02:37:08 :Its a icmp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv4 packet

    2013/May/07 02:37:08 :Its a icmp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv4 packet

    2013/May/07 02:37:08 :Its a icmp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv4 packet

    2013/May/07 02:37:08 :Its a icmp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv4 packet

    2013/May/07 02:37:08 :Its a icmp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :-----------------------------------------------------------------------------------

    2013/May/07 02:37:08 :Its an IPv6 packet

    2013/May/07 02:37:08 :Its a icmp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv6 packet

    2013/May/07 02:37:08 :Its a icmp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv6 packet

    2013/May/07 02:37:08 :Its a icmp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv6 packet

    2013/May/07 02:37:08 :Its a icmp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :Its an IPv6 packet

    2013/May/07 02:37:08 :Its a icmp packet

    2013/May/07 02:37:08 :

    2013/May/07 02:37:08 :-----------------------------------------------------------------------------------

    2013/May/07 02:37:08 :Test run ok...

    ITERATION 1 : PASSED : 2013/May/07 02:37:08

    #***************************************************************

    2013/May/07 02:37:08 :Cleared Port Ownership for ports {1 1 3} { 1 1 4}......

    2013/May/07 02:37:08 :Logout User IpDecodeOptions......

    2013/May/07 02:37:08 :Disconnecting from Chassis xm2-qa1......

    #########################################################################

    TEST RUN SUMMARY

    ----------------

    Test Name : IpDecodeOptionsTest

    Total Iteration(s) : 1

    Total Passed Iteration(s) : 1

    Total Failed Iteration(s) : 0

    Total Error(s) : 0

    Total Warning(s) : 0

    Test Result : PASSED

    Avg duration per iteration : 0 sec(s)

    Time Start : {2013/May/07 02:36:38}

    Time End : 2013/May/07 02:37:48

    #########################################################################

    Automation II: test.scalabilitybgpospf2000routes.tcl

    #------------------------------------------------------------------------------

    # Name : test.scalabilitybgpospf2000routes.tcl

  • 39

    # Author : Sadhikary

    # Topology : 1.Configure OSPF, BGP route ranges with 2000 Routes for each protocol

    # Create a traffic item with distribution on IPv4 Source addresses

    # 2.Verify Traffic Configuration (IxNetwork)

    # 3.Start Protocol & Verify Statistics

    # 4.Start/Stop the Traffic & Verify Statistics

    # 5.Verify Traffic Configuration (IxExplorer)

    # Scriptgen used : No

    # ixncfg used : Yes

    # Reviewer :

    #------------------------------------------------------------------------------

    package req Test-Library

    package req IxTclNetwork

    package req IxTclHal

    source "../../../utils/5.40TrafficCommonUtils.tcl"

    set port_check_count 1

    # test.5.1.1.1 Test Case Coverage

    set ::TestPart0 1; # Protocol Stats Verification

    set ::TestPart1 0; # GUI Verification NA

    set ::TestPart2 1; # Traffic Configuration Verification

    set ::TestPart3 0; # Packet capture Verification

    set ::TestPart4 1; # Traffic Stats Verification

    set ::TestPart5 0

    proc checkDetailTrafficConfiguration {} {

    set error 1

    #Getting the Traffic Item object hierarchy details

    set traffic [ixNet getRoot]/traffic

    set trafficItem [lindex [ixNet getList $traffic trafficItem] 0]

    puts "Checking Traffic Item parameters..."

    set expectProp {mergeDestinations false \

    srcDestMesh oneToOne \

    routeMesh oneToOne }

    if {[checkAttributeValue $trafficItem $expectProp] == 1} {

    return $error

    }

    if {[checkAttributeValue $trafficItem/tracking {trackBy "trackingenabled0 ipv4SourceIp0"}] == 1} {

    return $error

    }

    set HLStreamList [ixNet getList $trafficItem highLevelStream]

    set configElementList [ixNet getList $trafficItem configElement]

    set configElement [lindex $configElementList 0]

    set frameRate [ixNet getList $configElement frameRate]

    set framePayload [ixNet getList $configElement framePayload]

    puts "Checking Frame Payload parameters..."

    if {[checkAttributeValue $framePayload {type incrementByte \

    customPattern {} \

    customRepeat True}] == 1} {

    return $error

    }

    set frameRateDist [ixNet getList $configElement frameRateDistribution]

    set frameSize [ixNet getList $configElement frameSize]

    puts "Checking Frame Size parameters..."

    if {[checkAttributeValue $frameSize {type fixed \

    fixedSize 120}] == 1} {

  • 40

    return $error

    }

    set error 0

    return $error

    }

    proc checkChassiTrafficConfiguration {chassis card port numStream} {

    global port_check_count

    set error 1

    if {[ixExplorerConnectChassis $chassis $card $port] != 0} {

    error "Error in initializing/logging in chassis"

    }

    set chassisId [chassis cget -id]

    #Refreshing the chassi

    if {[catch {chassis refresh $chassisId} errMsg]} {

    error "Refreshing chassis Failed"

    }

    # Verifying IxExplorer stream attributes configured from IxNetwork Advanced Traffic Wizard

    puts "Verifying number of IxExplorer stream configured from IxNetwork Advanced Traffic Wizard"

    set streamId 1

    while {1} {

    set strGet [stream get $chassisId $card $port $streamId]

    puts " strGet = $strGet"

    if {$strGet} {

    break

    }

    incr streamId

    }

    set serverStreams [port getStreamCount $chassisId $card $port]

    puts "IxExplorer :: Stream Count [expr $streamId -1] (Expected : $numStream)"

    puts "IxServer :: Stream Count $serverStreams (Expected : $numStream)"

    if {[expr $streamId-1] != $numStream} {

    puts "IxNetwork stream test:"

    set trItems [ixNet getList [ixNet getRoot]/traffic trafficItem]

    foreach trItem $trItems {

    set hlStreams [ixNet getList $trItem highLevelStream]

    foreach hlStream $hlStreams {

    set frameSize [ixNet getAttr $hlStream -appliedFrameSize]

    puts " $hlStream -appliedFrameSize is '$frameSize'"

    }

    }

    puts "end"

    ixExplorerDisconnectChassis $chassisId

    return $error

    }

    #Getting the Frames object hierarchy details

    if {[stream get $chassisId $card $port 1] != 0} {

    error "Error in getting stream data from chassi"

    }

    if {[ip get $chassisId $card $port] != 0} {

    error "Error in getting IP data from chassi"

    }

    if {$port_check_count== 1} {

    puts "Checking Stream frame Values for port $port..."

    puts "Checking first Stream's frame Values..."

    if {[ixExplorerCheckAttributeValue stream {frameSizeMIN 120\

    frameSizeMAX 120 patternType 0}] == 1} {

  • 41

    return $error

    }

    puts "Checking Stream IPV4 Values..."

    if {[ixExplorerCheckAttributeValue ip {sourceIpAddr {2.2.10.0} \

    destIpAddr {52.2.60.0}}] == 1} {

    return $error

    }

    }

    if {$port_check_count== 2} {

    puts "Checking Stream frame Values for port $port..."

    puts "Checking first Stream's frame Values..."

    if {[ixExplorerCheckAttributeValue stream {frameSizeMIN 120\

    frameSizeMAX 120 patternType 0}] == 1} {

    return $error

    }

    puts "Checking Stream IPV4 Values..."

    if {[ixExplorerCheckAttributeValue ip {sourceIpAddr {52.2.60.0} \

    destIpAddr {2.2.10.0}}] == 1} {

    return $error

    }

    }

    incr port_check_count

    if {[ixExplorerDisconnectChassis $chassisId] != 0} {

    error "Error in disconnecting in chassis"

    }

    set error 0

    return $error

    }

    #Initializing return value

    set PASSED 0

    set FAILED 1

    ixNet connect $::py::ixTclServer -port $::py::ixTclPort -version 5.40

    puts "connectToClient Successful"

    puts "loading ixncfg file ..."

    if {[ixNet exec loadConfig [ixNet readFrom config.5.1.1.1_scalabilitybgpospf2000routes.ixncfg ]] != "::ixNet::OK"}

    {

    error "Loading IxNetwork config file FAILED "

    }

    puts "Loading IxNetwork config file : Passed"

    ixNet setMultiAttrs [ixNet getRoot]/globals/interfaces \

    -arpOnLinkup True \

    -nsOnLinkup True

    ixNet commit

    # Now we configure the first Ixia port

    # puts "Now we configure the Ixia port from the script-gen file!!!"

    # set addedPortList [scriptGenConfigPort -1]

    # if {$addedPortList != 0} {

    # error "Failed to load script gen file"

    # }

    # puts "Configuration of the ports Successful"

    #getting the real port list

  • 42

    #Getting the virtual port list

    puts "Getting virtual ports !!!"

    set vPorts [ixNet getList [ixNet getRoot] vport]

    set vPort1 [lindex $vPorts 0]

    set vPort2 [lindex $vPorts 1]

    puts "Virtual ports are = $vPorts"

    puts "Assign virtual ports to real ports!!!"

    ::ixTclNet::AssignPorts $::py::ports {} $vPorts force

    #Following code checks whether ports came up after assigning real ports.

    #If not then explicit connect is used

    set vport1_state [ixNet getAttribute $vPort1 -isAvailable]

    if {$vport1_state != "true"} {

    if {[::ixNet exec connectPort $vPort1] != "::ixNet::OK"} {

    error "Unable to connect the real ports1 to virtual ports1"

    }

    }

    set vport2_state [ixNet getAttribute $vPort2 -isAvailable]

    if {$vport2_state != "true"} {

    if {[::ixNet exec connectPort $vPort2] != "::ixNet::OK"} {

    error "Unable to connect the real ports2 to virtual ports2"

    }

    }

    #Starting all the configured protocol

    puts "Starting all the configured protocol!!!"

    set ret [ixNet exec startAllProtocols]

    if {$ret != "::ixNet::OK"} {

    error "Couldn't start the Protocol Operation"

    }

    puts "Waiting for 90 secs ..."

    after 90000

    #Verify protocol stats info

    if {$::TestPart0 == 1} {

    puts "Verify protocol stats.."

    set BGPStatsList {"Established State Count" 1 \

    "Sess. Configured" 1 \

    "Sess. Up" 1}

    set OSPFStatsList {"Sess. Configured" 1 \

    "Full State Count" 1 \

    "Full Nbrs." 1}

    set portList [list [list [lindex [lindex $::py::ports 0] 0] [lindex [lindex $::py::ports 0] 1] [lindex [lindex $::py::ports

    0] 2]] [list [lindex [lindex

    $::py::ports 1] 0] [lindex [lindex $::py::ports 1] 1] [lindex [lindex $::py::ports 1] 2]]]

    if {[checkAllProtocolStats $portList "BGP Aggregated Statistics" $BGPStatsList]} {

    error "Did not get the expected protocol stats value for BGP"

    }

    puts "Got expected protocol stats values for BGP"

    if {[checkAllProtocolStats $portList "OSPF Aggregated Statistics" $OSPFStatsList]} {

    error "Did not get the expected protocol stats value for OSPF"

  • 43

    }

    puts "Got expected protocol stats values for OSPF"

    }

    # Generate and Apply Traffic

    set traffic [ixNet getRoot]/traffic

    puts "Generating and Applying Traffic"

    if {[generateApplyTraffic] == 1} {

    error "Failed to start traffic"

    }

    puts "Traffic generated and applied successfully"

    after 5000

    #Verifying traffic item configuration in IxNetwork

    if {$::TestPart2 == 1} {

    puts "Verifying Traffic configuration..."

    if {[checkHighLevelSteamCountForAllTrafficItem 1 {0 4000}] == 1} {

    error "checkHighLevelSteamCountForAllTrafficItem 1"

    }

    if {[checkDetailTrafficConfiguration] == 1} {

    error "checkDetailTrafficConfiguration"

    }

    puts "Traffic configuration check successful..."

    #Checking the configured traffic item in IXNetwork Chassis(IXExplore)

    puts "Checking Frames Details in IXNetwork Chassis(IXExplore) !!!"

    if {[checkChassiTrafficConfiguration [lindex [lindex $::py::ports 0] 0] [lindex [lindex $::py::ports 0] 1] [lindex

    [lindex $::py::ports 0] 2] 2000] == 1}

    {

    error "Frame Value checking in Chassis failed for card [lindex [lindex $::py::ports 0] 1] port [lindex [lindex

    $::py::ports 0] 2]"

    } elseif {[checkChassiTrafficConfiguration [lindex [lindex $::py::ports 1] 0] [lindex [lindex $::py::ports 1] 1]

    [lindex [lindex $::py::ports 1] 2] 2000]

    == 1} {

    error "Frame Value checking in Chassis failed for card [lindex [lindex $::py::ports 1] 1] port [lindex [lindex

    $::py::ports 1] 2]"

    } else {

    puts "Frame Value checking in Chassis Passed"

    }

    }

    #Traffic start

    if {[startTraffic $traffic] == 1} {

    error "Failed to start the traffic"

    }

    puts "Traffic started successfully"

    puts "Waiting for 60 secs ..."

    after 60000

    #Traffic Stop

    if {[stopTraffic $traffic] == 1} {

    error "Failed to stop traffic"

    }

    after 5000

    #Verification of Traffic Stats

    if {$::TestPart4 == 1} {

  • 44

    puts "Check Data Plane Port Statistics"

    set txPortList [subst {{[ixNet getAttr $vPort1 -name]} {[ixNet getAttr $vPort2 -name]}}]

    set rxPortList [subst {{[ixNet getAttr $vPort1 -name]} {[ixNet getAttr $vPort2 -name]}}]

    if {[checkAllPortTrafficStats "Data Plane Port Statistics" $txPortList $rxPortList] == 1} {

    error "Incorect values retrieved for Data plane traffic"

    }

    puts "Data plane statistics verification passed"

    puts "Check Traffic Item Statistics..."

    if {[checkAllTrafficStats "Traffic Item Statistics"] == 1} {

    error "Incorect values retrieved for Traffic Item Statistics"

    }

    puts "Check Flow Statistics..."

    if {[checkAllTrafficStats "Flow Statistics"] == 1} {

    error "Incorect values retrieved for Flow Statistics"

    }

    }

    #Stoping all the configured protocol

    puts "Stopping All Protocol Operation!!!"

    set ret [ixNet exec stopAllProtocols]

    if {$ret != "::ixNet::OK"} {

    error "Couldn't stop the Protocol Operation"

    }

    after 5000

    #Unassigning all the ports and removing the same

    return 0

    Output:

    2013-04-29 03:12:17 - INFO : Setting up test scalabilitybgpospf2000routes - timeout: 3600

    2013-04-29 03:12:17 - INFO : Running scalabilitybgpospf2000routes - PID 8909

    2013-04-29 03:12:17 - INFO :

    2013-04-29 03:12:18 - INFO :

    2013-04-29 03:12:23 - INFO : Tcl Client is running Ixia Software version: 6.50.0.234

    2013-04-29 03:12:23 - INFO : connectToClient Successful

    2013-04-29 03:12:23 - INFO : loading ixncfg file ...

    2013-04-29 03:12:40 - INFO : Loading IxNetwork config file : Passed

    2013-04-29 03:12:41 - INFO : Getting virtual ports !!!

    2013-04-29 03:12:41 - INFO : Virtual ports are = ::ixNet::OBJ-/vport:1 ::ixNet::OBJ-/vport:2

    2013-04-29 03:12:41 - INFO : Assign virtual ports to real ports!!!

    2013-04-29 03:12:59 - INFO : Links on all ports are up.

    2013-04-29 03:13:04 - INFO : Starting all the configured protocol!!!

  • 45

    2013-04-29 03:13:05 - INFO : Waiting for 90 secs ...

    2013-04-29 03:14:36 - INFO : Verify protocol stats..

    2013-04-29 03:14:36 - INFO : refreshStatisticsView: ::ixNet::OBJ-/statistics/view:"BGP Aggregated Statistics"

    2013-04-29 03:14:36 - INFO : ixNet getAttr ::ixNet::OBJ-/statistics/view:"BGP Aggregated Statistics"/page -isReady = true

    2013-04-29 03:14:36 - INFO : Checking Statistics View isReady ...

    2013-04-29 03:14:36 - INFO : Statistics View Ready ...

    2013-04-29 03:14:36 - INFO : statValueArray(xm2-qa1,1,3,Established State Count) = 1

    2013-04-29 03:14:36 - INFO : statValueArray(xm2-qa1,1,3,Sess. Configured) = 1

    2013-04-29 03:14:36 - INFO : statValueArray(xm2-qa1,1,3,Sess. Up) = 1

    2013-04-29 03:14:36 - INFO : statValueArray(xm2-qa1,1,4,Established State Count) = 1

    2013-04-29 03:14:36 - INFO : statValueArray(xm2-qa1,1,4,Sess. Configured) = 1

    2013-04-29 03:14:36 - INFO : statValueArray(xm2-qa1,1,4,Sess. Up) = 1

    2013-04-29 03:14:36 - INFO : Sess. Up : (Expected:1)

    2013-04-29 03:14:36 - INFO : Sess. Configured : (Expected:1)

    2013-04-29 03:14:36 - INFO : Established State Count : (Expected:1)

    2013-04-29 03:14:36 - INFO : Sess. Up : (Expected:1)

    2013-04-29 03:14:36 - INFO : Sess. Configured : (Expected:1)

    2013-04-29 03:14:36 - INFO : Established State Count : (Expected:1)

    2013-04-29 03:14:36 - INFO : Got expected protocol stats values for BGP

    2013-04-29 03:14:36 - INFO : refreshStatisticsView: ::ixNet::OBJ-/statistics/view:"OSPF Aggregated Statistics"

    2013-04-29 03:14:36 - INFO : ixNet getAttr ::ixNet::OBJ-/statistics/view:"OSPF Aggregated Statistics"/page -isReady = true

    2013-04-29 03:14:36 - INFO : Checking Statistics View isReady ...

    2013-04-29 03:14:36 - INFO : Statistics View Ready ...

    2013-04-29 03:14:36 - INFO : statValueArray(xm2-qa1,1,3,Full Nbrs.) = 1

    2013-04-29 03:14:36 - INFO : statValueArray(xm2-qa1,1,3,Full State Count) = 1

    2013-04-29 03:14:36 - INFO : statValueArray(xm2-qa1,1,3,Sess. Configured) = 1

    2013-04-29 03:14:36 - INFO : statValueArray(xm2-qa1,1,4,Full Nbrs.) = 1

    2013-04-29 03:14:36 - INFO : statValueArray(xm2-qa1,1,4,Full State Count) = 1

    2013-04-29 03:14:36 - INFO : statValueArray(xm2-qa1,1,4,Sess. Configured) = 1

    2013-04-29 03:14:36 - INFO : Full State Count : (Expected:1)

    2013-04-29 03:14:36 - INFO : Full Nbrs. : (Expected:1)

  • 46

    2013-04-29 03:14:36 - INFO : Sess. Configured : (Expected:1)

    2013-04-29 03:14:36 - INFO : Full State Count : (Expected:1)

    2013-04-29 03:14:36 - INFO : Full Nbrs. : (Expected:1)

    2013-04-29 03:14:36 - INFO : Sess. Configured : (Expected:1)

    2013-04-29 03:14:36 - INFO : Got expected protocol stats values for OSPF

    2013-04-29 03:14:36 - INFO : Generating and Applying Traffic

    2013-04-29 03:14:36 - INFO : using the procedure from 5.40TrafficCommonUtils.tcl

    2013-04-29 03:14:36 - INFO : Verifying refreshLearnedInfoBeforeApply ...

    2013-04-29 03:14:36 - INFO : refreshLearnedInfoBeforeApply = true (true :: y)

    2013-04-29 03:14:36 - INFO : Applying the traffic ....

    2013-04-29 03:15:12 - INFO : Checking Traffic State: stopped for: 90 sec

    2013-04-29 03:15:12 - INFO : Traffic reached stopped state in 0 sec

    2013-04-29 03:15:12 - INFO : Traffic applied successfully ...

    2013-04-29 03:15:12 - INFO : Traffic had no errors nor warnings.

    2013-04-29 03:15:12 - INFO : Traffic generated and applied successfully

    2013-04-29 03:15:17 - INFO : Verifying Traffic configuration...

    2013-04-29 03:15:17 - INFO : Traffic Item Count 1 (Expected : 1)

    2013-04-29 03:15:17 - INFO : TI1 :: High Level Stream Item Count 4000 (Expected : 4000)

    2013-04-29 03:15:17 - INFO : Checking Traffic Item parameters...

    2013-04-29 03:15:17 - INFO : attVal = oneToOne (-routeMesh) expectProp = oneToOne

    2013-04-29 03:15:17 - INFO : -routeMesh is a single value

    2013-04-29 03:15:17 - INFO : attVal = oneToOne (-srcDestMesh) expectProp = oneToOne

    2013-04-29 03:15:17 - INFO : -srcDestMesh is a single value

    2013-04-29 03:15:17 - INFO : attVal = false (-mergeDestinations) expectProp = false

    2013-04-29 03:15:17 - INFO : -mergeDestinations is a single value

    2013-04-29 03:15:17 - INFO : attVal = trackingenabled0 ipv4SourceIp0 (-trackBy) expectProp = trackingenabled0 ipv4SourceIp0

    2013-04-29 03:15:17 - INFO : -trackBy is list

    2013-04-29 03:15:17 - INFO : Checking Frame Payload parameters...

    2013-04-29 03:15:17 - INFO : attVal = true (-customRepeat) expectProp = True

    2013-04-29 03:15:17 - INFO : -customRepeat is a single value

    2013-04-29 03:15:17 - INFO : attVal = (-customPattern) expectProp =

    2013-04-29 03:15:17 - INFO : -customPattern is a single value

  • 47

    2013-04-29 03:15:17 - INFO : attVal = incrementByte (-type) expectProp = incrementByte

    2013-04-29 03:15:17 - INFO : -type is a single value

    2013-04-29 03:15:17 - INFO : Checking Frame Size parameters...

    2013-04-29 03:15:17 - INFO : attVal = fixed (-type) expectProp = fixed

    2013-04-29 03:15:17 - INFO : -type is a single value

    2013-04-29 03:15:17 - INFO : attVal = 120 (-fixedSize) expectProp = 120

    2013-04-29 03:15:17 - INFO : -fixedSize is a single value

    2013-04-29 03:15:17 - INFO : Traffic configuration check successful...

    2013-04-29 03:15:17 - INFO : Checking Frames Details in IXNetwork Chassis(IXExplore) !!!

    2013-04-29 03:15:17 - INFO : Connecting to Tcl Server xm2-qa1 ...

    2013-04-29 03:15:25 - INFO : Connecting to Chassis 1: xm2-qa1 ...

    2013-04-29 03:15:26 - INFO : Connect to the Chassis xm2-qa1 successfully !!!

    2013-04-29 03:15:26 - INFO : Log in successfully with user: IxNetwork/1uac-0511230/Admin05 !!!

    2013-04-29 03:15:27 - INFO : Refreshed the Chassis xm2-qa1 !!!

    2013-04-29 03:15:28 - INFO : Verifying number of IxExplorer stream configured from IxNetwork Advanced Traffic Wizard

    2013-04-29 03:15:28 - INFO : strGet = 0

    2013-04-29 03:15:28 - INFO : strGet = 0

    .

    2013-04-29 03:15:45 - INFO : IxExplorer :: Stream Count 2000 (Expected : 2000)

    2013-04-29 03:15:45 - INFO : IxServer :: Stream Count 2000 (Expected : 2000)

    2013-04-29 03:15:45 - INFO : Checking Stream frame Values for port 4...

    2013-04-29 03:15:45 - INFO : Checking first Stream's frame Values...

    2013-04-29 03:15:45 - INFO : attVal = 0 (-patternType) expectProp = 0

    2013-04-29 03:15:45 - INFO : attVal = 120 (-frameSizeMAX) expectProp = 120

    2013-04-29 03:15:45 - INFO : attVal = 120 (-frameSizeMIN) expectProp = 120

    2013-04-29 03:15:45 - INFO : Checking Stream IPV4 Values...

    2013-04-29 03:15:45 - INFO : attVal = 2.2.10.0 (-destIpAddr) expectProp = 2.2.10.0

    2013-04-29 03:15:45 - INFO : attVal = 52.2.60.0 (-sourceIpAddr) expectProp = 52.2.60.0

    2013-04-29 03:15:45 - INFO : Successfully disconnected from the Chassis 1 !!!

    2013-04-29 03:15:45 - INFO : Frame Value checking in Chassis Passed

    2013-04-29 03:15:45 - INFO : Starting the traffic...

    2013-04-29 03:15:47 - INFO : Checking Traffic State: started for: 90 sec

  • 48

    2013-04-29 03:15:47 - INFO : 0: Traffic state --> startedWaitingForStats

    2013-04-29 03:15:48 - INFO : 1: Traffic state --> startedWaitingForStats

    2013-04-29 03:15:49 - INFO : Traffic reached started state in 2 sec

    2013-04-29 03:15:49 - INFO : Traffic had no errors nor warnings.

    2013-04-29 03:15:49 - INFO : Traffic started successfully

    2013-04-29 03:15:49 - INFO : Waiting for 60 secs ...

    2013-04-29 03:16:49 - INFO : Stopping the traffic....

    2013-04-29 03:16:49 - INFO : Checking Traffic State: stopped for: 90 sec

    2013-04-29 03:16:49 - INFO : 0: Traffic state --> startedWaitingForStats

    2013-04-29 03:16:50 - INFO : 1: Traffic state --> startedWaitingForStats

    2013-04-29 03:16:51 - INFO : 2: Traffic state --> startedWaitingForStats

    2013-04-29 03:16:52 - INFO : 3: Traffic state --> stoppedWaitingForStats

    2013-04-29 03:16:53 - INFO : 4: Traffic state --> stoppedWaitingForStats

    2013-04-29 03:16:54 - INFO : 5: Traffic state --> stoppedWaitingForStats

    2013-04-29 03:16:55 - INFO : Traffic reached stopped state in 6 sec

    2013-04-29 03:16:55 - INFO : Traffic had no errors nor warnings.

    2013-04-29 03:17:00 - INFO : Check Data Plane Port Statistics

    2013-04-29 03:17:00 - INFO : refreshStatisticsView: ::ixNet::OBJ-/statistics/view:"Data Plane Port Statistics"

    2013-04-29 03:17:00 - INFO : ixNet getAttr ::ixNet::OBJ-/statistics/view:"Data Plane Port Statistics"/page -isReady = true

    2013-04-29 03:17:00 - INFO : Checking Statistics View isReady ...

    2013-04-29 03:17:00 - INFO : Statistics View Ready ...

    2013-04-29 03:17:00 - INFO : statValueArray(Ethernet - 001,"Rx Frames") = 5555149

    2013-04-29 03:17:00 - INFO : statValueArray(Ethernet - 001,"Tx Frames") = 5555149

    2013-04-29 03:17:00 - INFO : statValueArray(Ethernet - 002,"Rx Frames") = 5555149

    2013-04-29 03:17:00 - INFO : statValueArray(Ethernet - 002,"Tx Frames") = 5555149

    2013-04-29 03:17:00 - INFO : (Total Tx: 11110298 Total Rx: 11110298)

    2013-04-29 03:17:00 - INFO : Data plane statistics verification passed

    2013-04-29 03:17:00 - INFO : Check Traffic Item Statistics...

    2013-04-29 03:17:00 - INFO : Setting the page size for SV ::ixNet::OBJ-/statistics/view:"Traffic Item Statistics"/page

    2013-04-29 03:17:02 - INFO : refreshStatisticsView: ::ixNet::OBJ-/statistics/view:"Traffic Item Statistics"

    2013-04-29 03:17:02 - INFO : ixNet getAttr ::ixNet::OBJ-/statistics/view:"Traffic Item Statistics"/page -isReady = true

    2013-04-29 03:17:02 - INFO : Checking Statistics View isReady ...

  • 49

    2013-04-29 03:17:02 - INFO : Statistics View Ready ...

    2013-04-29 03:17:02 - INFO : Actual Number of pages available: 1

    2013-04-29 03:17:23 - INFO : refreshStatisticsView: ::ixNet::OBJ-/statistics/view:"Traffic Item Statistics"

    2013-04-29 03:17:23 - INFO : ixNet getAttr ::ixNet::OBJ-/statistics/view:"Traffic Item Statistics"/page -isReady = true

    2013-04-29 03:17:23 - INFO : Page 1 :: Number of rows 1

    2013-04-29 03:17:23 - INFO : Page: 1 : Row: 0 (Tx: 11110298 Rx: 11110298) Traffic Stats correct...

    2013-04-29 03:17:23 - INFO : Page: 1 Traffic Stats Verification completed....

    2013-04-29 03:17:23 - INFO : Check Flow Statistics...

    2013-04-29 03:17:23 - INFO : Setting the page size for SV ::ixNet::OBJ-/statistics/view:"Flow Statistics"/page

    2013-04-29 03:17:25 - INFO : refreshStatisticsView: ::ixNet::OBJ-/statistics/view:"Flow Statistics"

    2013-04-29 03:17:25 - INFO : ixNet getAttr ::ixNet::OBJ-/statistics/view:"Flow Statistics"/page -isReady = true

    2013-04-29 03:17:25 - INFO : Checking Statistics View isReady ...

    2013-04-29 03:17:25 - INFO : Statistics View Ready ...

    2013-04-29 03:17:25 - INFO : Actual Number of pages available: 80

    2013-04-29 03:17:45 - INFO : refreshStatisticsView: ::ixNet::OBJ-/statistics/view:"Flow Statistics"

    2013-04-29 03:17:45 - INFO : ixNet getAttr ::ixNet::OBJ-/statistics/view:"Flow Statistics"/page -isReady = true

    2013-04-29 03:17:45 - INFO : Page 1 :: Number of rows 50

    2013-04-29 03:17:45 - INFO : Page: 1 : Row: 0 (Tx: 2778 Rx: 2778) Traffic Stats correct...

    2013-04-29 03:17:45 - INFO : Page: 1 : Row: 1 (Tx: 2778 Rx: 2778) Traffic Stats correct

    .

    2013-04-29 03:17:45 - INFO : Page: 1 Traffic Stats Verification completed....

    2013-04-29 03:18:11 - INFO : refreshStatisticsView: ::ixNet::OBJ-/statistics/view:"Flow Statistics"

    2013-04-29 03:18:11 - INFO : ixNet getAttr ::ixNet::OBJ-/statistics/view:"Flow Statistics"/page -isReady = true

    2013-04-29 03:18:12 - INFO : Page: 2 Traffic Stats Verification completed....

    2013-04-29 03:53:09 - INFO : Stopping All Protocol Operation!!!

    2013-04-29 03:53:14 - INFO : Test ran on Unknown

    2013-04-29 03:53:14 - INFO : Result PASS

    Automation III: test.l2tp_b2b_30sess_unequal_ranges.tcl

    package req IxTclNetwork

    set currDir [file dirname [info script]]

    set confFile [file join $currDir \

  • 50

    config.l2tp_b2b_30sess_unequal_ranges.tcl]

    # initialize return value

    set flag 1

    ixNet connect $py::ixTclServer -port $py::ixTclPort

    #Creating New Config

    ixNet exec newConfig

    puts "loading Scriptgen file ..."

    source $confFile

    # Assign real ports to virtual ports

    puts "getting virtual ports ...."

    set vPorts [ixNet getList [ixNet getRoot] vport]

    set vPort1 [lindex $vPorts 0]

    set vPort2 [lindex $vPorts 1]

    puts "Virtual ports are = $vPorts"

    # Assign virtual ports to real ports

    puts "Assign virtual ports to real ports ..."

    set force true

    set status [ixTclNet::AssignPorts $py::ports {} $vPorts force]

    puts "Assigned: $status"

    ixNet exec clearStats

    puts "Starting Protocols..."

    ixNet exec startAllProtocols

    puts "DONE"; update idletasks

    after 30000

    set stats [sm::getSnapshotStats "L2TP\ General\ Statistics"]

    # sm::dispStats $stats

    set matchList [list \

    [list [lindex $py::ports 1] \

    [list "L2TP Total Bytes Tx" >= 2000 \

    "Client Tunnels Up" = 0 \

  • 51

    "Server Tunnels Up" = 30 \

    "Server Interfaces Up" = 30 \

    "Sessions Initiated" = 30 \

    "Sessions Failed" = 0 \

    "LCP Total Messages Tx" = 60 \

    "LCP Total Messages Rx" = 60 \

    "NCP Total Messages Tx" = 90 \

    "NCP Total Messages Rx" = 90 \

    "PPP Total Bytes Tx" >= 1000 \

    "PPP Total Bytes Rx" >= 1000 ]]\

    [list [lindex $py::ports 0] \

    [list "L2TP Total Bytes Tx" >= 2000 \

    "Client Tunnels Up" = 30 \

    "Server Tunnels Up" = 0 \

    "Client Interfaces Up" = 30 \

    "Sessions Initiated" = 30 \

    "Sessions Failed" = 0 \

    "LCP Total Messages Tx" = 60 \

    "LCP Total Messages Rx" = 60 \