Print Final Report1

March 20, 2018 | Author: oromos | Category: Ip Address, I Pv6, Radius, Computer Network, Streaming Media


Comments



Description

1Company 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, IXIA’s 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 IXIA’s 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 <= 5} {incr frame} { capture get $chassis1 $card1 $port2 captureBuffer getframe $frame 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 " } } IxOsPuts "-----------------------------------------------------------------------------------" captureBuffer get $chassis1 $card1 $port2 6 10 for {set frame 1} {$frame <= 5} {incr frame} { capture get $chassis1 $card1 $port2 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 " } } IxOsPuts "-----------------------------------------------------------------------------------" captureBuffer get $chassis1 $card1 $port2 11 15 for {set frame 1} {$frame <= 5} {incr frame} { capture get $chassis1 $card1 $port2 captureBuffer getframe $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 <= 5} {incr frame} { capture get $chassis1 $card1 $port2 captureBuffer getframe $frame 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 { [ 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 21 25 for {set frame 1} {$frame <= 5} {incr frame} { capture get $chassis1 $card1 $port2 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 { [ 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 26 30 for {set frame 1} {$frame <= 5} {incr frame} { capture get $chassis1 $card1 $port2 set numPacketsCaptured [capture cget -nPackets] 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 <= 5} {incr frame} { capture get $chassis1 $card1 $port2 captureBuffer getframe $frame 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 { [ icmp decode $frameData $chassis1 $card1 $port2 ] } { IxOsError "ERR:Not a icmp packet. (Debug [info level 0])" return FAIL } else { IxOsPuts "Its a icmp packet\n" } } IxOsPuts "-----------------------------------------------------------------------------------" captureBuffer get $chassis1 $card1 $port2 36 40 for {set frame 1} {$frame <= 5} {incr frame} { capture get $chassis1 $card1 $port2 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 { [ icmpV6 decode $frameData $chassis1 $card1 $port2 ] } { IxOsError "ERR:Not a icmp packet. (Debug [info level 0])" return FAIL } else { IxOsPuts "Its a icmp packet\n" } } IxOsPuts "-----------------------------------------------------------------------------------" IxOsPuts "Test run ok..." return $::TCL_OK } #*****************************************************************************# # Procedure Name : TestRun_IpDecodeOptions 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<$streamId> = $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 : <IxNetProxyTclTest: scalabilitybgpospf2000routes 10.200.102.135:8017 [<xm2-qa1 1 3>, <xm2-qa1 1 4>]> 2013-04-29 03:12:18 - INFO : <IxNetProxyTclTest: scalabilitybgpospf2000routes 10.200.102.135:8017 [<xm2-qa1 1 3>, <xm2-qa1 1 4>]> 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 : <1> (Expected:1) 2013-04-29 03:14:36 - INFO : Sess. Configured : <1> (Expected:1) 2013-04-29 03:14:36 - INFO : Established State Count : <1> (Expected:1) 2013-04-29 03:14:36 - INFO : Sess. Up : <1> (Expected:1) 2013-04-29 03:14:36 - INFO : Sess. Configured : <1> (Expected:1) 2013-04-29 03:14:36 - INFO : Established State Count : <1> (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 : <1> (Expected:1) 2013-04-29 03:14:36 - INFO : Full Nbrs. : <1> (Expected:1) 46 2013-04-29 03:14:36 - INFO : Sess. Configured : <1> (Expected:1) 2013-04-29 03:14:36 - INFO : Full State Count : <1> (Expected:1) 2013-04-29 03:14:36 - INFO : Full Nbrs. : <1> (Expected:1) 2013-04-29 03:14:36 - INFO : Sess. Configured : <1> (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<1> = 0 2013-04-29 03:15:28 - INFO : strGet<2> = 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 \ "NCP Total Messages Tx" = 90 \ "NCP Total Messages Rx" = 90 \ "PPP Total Bytes Tx" >= 1000 \ "PPP Total Bytes Rx" >= 1000 ]]] if {[sm::checkStats $stats $matchList] == 1} { puts "Expected L2TP stats don't match" return $flag } sm::startTraff set count 0 while {[ixNet getAttr [ixNet getRoot]/traffic -isTrafficRunning] == "false"} { 52 after 1000 puts "isTrafficRunning = [ixNet getAttr [ixNet getRoot]/traffic -isTrafficRunning]" incr count if {$count > 90} {break} } puts "DONE" after 10000 sm::stopTraff set count 0 while {[ixNet getAttr [ixNet getRoot]/traffic -isTrafficRunning] == "true"} { after 1000 puts "isTrafficRunning = [ixNet getAttr [ixNet getRoot]/traffic -isTrafficRunning]" incr count if {$count > 90} {break} } puts "DONE" after 5000 set tstats [sm::getSnapshotStats "Traffic\ Statistics"] # sm::dispStats $tstats ;# uncomment this to get listing of stats set traffMatch [list \ [list "TI1-TRAFFICITEM (000001-0001)" \ [list "Tx Frames" >= 4000 \ "Frames Delta" = 0 \ "Tx Frame Rate" >= 0 \ "Loss %" = 0 \ "Rx Frame Rate" >= 0 \ "Rx Frames" >= 4000 \ "Rx Bytes" >= 1000000 \ "Rx Rate (Bps)" >= 0 \ "Rx Rate (bps)" >= 0 \ 53 "Rx Rate (Kbps)" >= 0 \ "Rx Rate (Mbps)" >= 0 ]]\ [list] \ [list "TI1-TRAFFICITEM (000003-0001)" \ [list "Tx Frames" >= 4000 \ "Frames Delta" = 0 \ "Tx Frame Rate" >= 0 \ "Loss %" = 0 \ "Rx Frame Rate" >= 0 \ "Rx Frames" >= 4000 \ "Rx Bytes" >= 1000000 \ "Rx Rate (Bps)" >= 0 ]]] #sm::dispStats $tstats if {[sm::checkStats $tstats $traffMatch] == 1} { puts "Expected Traffic stats don't match" return $flag } ixNet exec stopAllProtocols after 10000 ixTclNet::UnassignPorts ixNet exec newConfig set flag 0 puts "DONE!" return $flag Output: 2013-04-22 05:19:35 - INFO : Setting up test l2tp_b2b_30sess_unequal_ranges - timeout: 1800 2013-04-22 05:19:36 - INFO : Running l2tp_b2b_30sess_unequal_ranges - PID 15774 2013-04-22 05:19:36 - INFO : <IxNetProxyTclTest: l2tp_b2b_30sess_unequal_ranges 10.200.102.135:8012 [<xm2- qa1 1 5>, <xm2-qa1 1 6>]> 54 2013-04-22 05:19:36 - INFO : <IxNetProxyTclTest: l2tp_b2b_30sess_unequal_ranges 10.200.102.135:8012 [<xm2- qa1 1 5>, <xm2-qa1 1 6>]> 2013-04-22 05:19:39 - INFO : loading Scriptgen file ... 2013-04-22 05:19:57 - INFO : getting virtual ports .... 2013-04-22 05:19:57 - INFO : Virtual ports are = ::ixNet::OBJ-/vport:1 ::ixNet::OBJ-/vport:2 2013-04-22 05:19:57 - INFO : Assign virtual ports to real ports ... 2013-04-22 05:20:16 - INFO : Links on all ports are up. 2013-04-22 05:20:41 - INFO : Assigned: ::ixNet::OBJ-/vport:1 ::ixNet::OBJ-/vport:2 2013-04-22 05:20:41 - INFO : Starting Protocols... 2013-04-22 05:20:49 - INFO : DONE 2013-04-22 05:21:19 - INFO : xm2-qa1 1 6 RETURNED EXPECTED TOL 2013-04-22 05:21:19 - INFO : ---------------------------------------------------------------------------- 2013-04-22 05:21:19 - INFO : L2TP Total Bytes Tx 4320.00 >= 2000.00 - ...Passed 2013-04-22 05:21:19 - INFO : Client Tunnels Up 0.00 = 0.00 - ...Passed 2013-04-22 05:21:19 - INFO : Server Tunnels Up 30.00 = 30.00 - ...Passed 2013-04-22 05:21:19 - INFO : Server Interfaces Up 30.00 = 30.00 - ...Passed 2013-04-22 05:21:19 - INFO : Sessions Initiated 30.00 = 30.00 - ...Passed 2013-04-22 05:21:19 - INFO : Sessions Failed 0.00 = 0.00 - ...Passed 2013-04-22 05:21:19 - INFO : LCP Total Messages Tx 60.00 = 60.00 - ...Passed 2013-04-22 05:21:19 - INFO : LCP Total Messages Rx 60.00 = 60.00 - ...Passed 2013-04-22 05:21:19 - INFO : NCP Total Messages Tx 90.00 = 90.00 - ...Passed 2013-04-22 05:21:19 - INFO : NCP Total Messages Rx 90.00 = 90.00 - ...Passed 2013-04-22 05:21:19 - INFO : PPP Total Bytes Tx 2700.00 >= 1000.00 - ...Passed 2013-04-22 05:21:19 - INFO : PPP Total Bytes Rx 2700.00 >= 1000.00 - ...Passed 2013-04-22 05:21:19 - INFO : 2013-04-22 05:21:19 - INFO : xm2-qa1 1 5 RETURNED EXPECTED TOL 2013-04-22 05:21:19 - INFO : ---------------------------------------------------------------------------- 2013-04-22 05:21:19 - INFO : L2TP Total Bytes Tx 6300.00 >= 2000.00 - ...Passed 55 2013-04-22 05:21:19 - INFO : Client Tunnels Up 30.00 = 30.00 - ...Passed 2013-04-22 05:21:19 - INFO : Server Tunnels Up 0.00 = 0.00 - ...Passed 2013-04-22 05:21:19 - INFO : Client Interfaces Up 30.00 = 30.00 - ...Passed 2013-04-22 05:21:19 - INFO : Sessions Initiated 30.00 = 30.00 - ...Passed 2013-04-22 05:21:19 - INFO : Sessions Failed 0.00 = 0.00 - ...Passed 2013-04-22 05:21:19 - INFO : LCP Total Messages Tx 60.00 = 60.00 - ...Passed 2013-04-22 05:21:19 - INFO : LCP Total Messages Rx 60.00 = 60.00 - ...Passed 2013-04-22 05:21:19 - INFO : NCP Total Messages Tx 90.00 = 90.00 - ...Passed 2013-04-22 05:21:19 - INFO : NCP Total Messages Rx 90.00 = 90.00 - ...Passed 2013-04-22 05:21:19 - INFO : PPP Total Bytes Tx 2700.00 >= 1000.00 - ...Passed 2013-04-22 05:21:19 - INFO : PPP Total Bytes Rx 2700.00 >= 1000.00 - ...Passed 2013-04-22 05:21:19 - INFO : 2013-04-22 05:21:24 - INFO : Applying traffic... 2013-04-22 05:21:53 - INFO : Starting traffic... 2013-04-22 05:21:58 - INFO : DONE 2013-04-22 05:21:58 - INFO : DONE 2013-04-22 05:22:08 - INFO : Stopping traffic... 2013-04-22 05:22:08 - INFO : DONE 2013-04-22 05:22:08 - INFO : DONE 2013-04-22 05:22:20 - INFO : TI1-TRAFFICITEM (000001-0001) RETURNED EXPECTED TOL 2013-04-22 05:22:20 - INFO : ---------------------------------------------------------------------------- 2013-04-22 05:22:20 - INFO : Tx Frames 16440.00 >= 4000.00 - ...Passed 2013-04-22 05:22:20 - INFO : Frames Delta 0.00 = 0.00 - ...Passed 2013-04-22 05:22:20 - INFO : Tx Frame Rate 510.00 >= 0.00 - ...Passed 2013-04-22 05:22:20 - INFO : Loss % 0.00 = 0.00 - ...Passed 2013-04-22 05:22:20 - INFO : Rx Frame Rate 510.00 >= 0.00 - ...Passed 2013-04-22 05:22:20 - INFO : Rx Frames 16440.00 >= 4000.00 - ...Passed 2013-04-22 05:22:20 - INFO : Rx Bytes 4932000.00 >= 1000000.00 - ...Passed 2013-04-22 05:22:20 - INFO : Rx Rate (Bps) 153000.00 >= 0.00 - ...Passed 56 2013-04-22 05:22:20 - INFO : Rx Rate (bps) 1224000.00 >= 0.00 - ...Passed 2013-04-22 05:22:20 - INFO : Rx Rate (Kbps) 1224.00 >= 0.00 - ...Passed 2013-04-22 05:22:20 - INFO : Rx Rate (Mbps) 1.22 >= 0.00 - ...Passed 2013-04-22 05:22:20 - INFO : 2013-04-22 05:22:20 - INFO : TI1-TRAFFICITEM (000003-0001) RETURNED EXPECTED TOL 2013-04-22 05:22:20 - INFO : ---------------------------------------------------------------------------- 2013-04-22 05:22:20 - INFO : Tx Frames 16440.00 >= 4000.00 - ...Passed 2013-04-22 05:22:20 - INFO : Frames Delta 0.00 = 0.00 - ...Passed 2013-04-22 05:22:20 - INFO : Tx Frame Rate 510.00 >= 0.00 - ...Passed 2013-04-22 05:22:20 - INFO : Loss % 0.00 = 0.00 - ...Passed 2013-04-22 05:22:20 - INFO : Rx Frame Rate 510.00 >= 0.00 - ...Passed 2013-04-22 05:22:20 - INFO : Rx Frames 16440.00 >= 4000.00 - ...Passed 2013-04-22 05:22:20 - INFO : Rx Bytes 4932000.00 >= 1000000.00 - ...Passed 2013-04-22 05:22:20 - INFO : Rx Rate (Bps) 153000.00 >= 0.00 - ...Passed 2013-04-22 05:22:20 - INFO : 2013-04-22 05:22:41 - INFO : DONE! 2013-04-22 05:22:41 - INFO : Test ran on Unknown 2013-04-22 05:22:41 - INFO : Result PASS 2013-04-22 05:22:41 - INFO : SQL - results updating for l2tp_b2b_30sess_unequal_ranges. 2013-04-22 05:22:41 - INFO : SQL - /home/pkhettry/test- logs/logs_130422_0457/l2tp_b2b_30sess_unequal_ranges_2P-B2B-1G.log. 57 References and Bibliography [1] A. S. Tanenbaum, “Computer Networks”, 4 th Edition [2] B. A. Forouzan, “Data Communications and Networking”, 4 th Edition [3] http://wiki.tcl.tk/ [4] http://tmml.sourceforge.net/doc/tcl/ [5] http://www.tcl.tk [6] http://en.wikipedia.org/ [7] http://searchsoftwarequality.techtarget.com/ [8] http://www.ciscopress.com/ [9] http://www.perforce.com/ [10] IxNetwork User Guide
Copyright © 2024 DOKUMEN.SITE Inc.