[NTDP] Introduction to NTDP
"Craig Brown \(crbrown\)" <crbrown@cisco.com> Sat, 17 June 2006 02:30 UTC
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1FrQZd-0007wD-LF; Fri, 16 Jun 2006 22:30:09 -0400
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1FrQZc-0007w8-Ji for ntdp@ietf.org; Fri, 16 Jun 2006 22:30:08 -0400
Received: from ind-iport-1.cisco.com ([64.104.129.195]) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1FrQZZ-00020J-4r for ntdp@ietf.org; Fri, 16 Jun 2006 22:30:08 -0400
Received: from hkg-core-1.cisco.com ([64.104.123.94]) by ind-iport-1.cisco.com with ESMTP; 17 Jun 2006 08:23:14 -0700
X-IronPort-AV: i="4.06,144,1149490800"; d="scan'208"; a="69202768:sNHT35001040"
Received: from xbh-hkg-412.apac.cisco.com (xbh-hkg-412.cisco.com [64.104.123.69]) by hkg-core-1.cisco.com (8.12.10/8.12.6) with ESMTP id k5H2Rp6D007542 for <ntdp@ietf.org>; Sat, 17 Jun 2006 10:27:52 +0800 (CST)
Received: from xmb-hkg-411.apac.cisco.com ([64.104.123.77]) by xbh-hkg-412.apac.cisco.com with Microsoft SMTPSVC(6.0.3790.0); Sat, 17 Jun 2006 10:30:00 +0800
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Date: Sat, 17 Jun 2006 10:29:59 +0800
Message-ID: <B4B37A0BBB6A0F43B07F12F1056472D6013BF7E8@xmb-hkg-411.apac.cisco.com>
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
Thread-Topic: Introduction to NTDP
Thread-Index: AcaRte36dyWIWuAvQwORo8a6Vv3Yiw==
From: "Craig Brown (crbrown)" <crbrown@cisco.com>
To: ntdp@ietf.org
X-OriginalArrivalTime: 17 Jun 2006 02:30:00.0921 (UTC) FILETIME=[EEDD0C90:01C691B5]
X-Spam-Score: 0.0 (/)
X-Scan-Signature: 162d87dc0b780d17da9b1934777fd451
Subject: [NTDP] Introduction to NTDP
X-BeenThere: ntdp@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: define standards for the purpose of scripting of network testing equipment <ntdp.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/ntdp>, <mailto:ntdp-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www1.ietf.org/pipermail/ntdp>
List-Post: <mailto:ntdp@ietf.org>
List-Help: <mailto:ntdp-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/ntdp>, <mailto:ntdp-request@ietf.org?subject=subscribe>
Errors-To: ntdp-bounces@ietf.org
Reposting to this new alias. 1. Introduction This initiative is to create a protocol for the automatic control of devices that generate and analyze traffic and/or emulate network protocols for the testing of a network or a specific network device. To perform either network or a network device specific testing, a tester will use a product to generate traffic, emulate routing protocols and emulate network end points, such as a network host or HTTP client. This product is referred to as a network testing device (NTD). The term network testing device should not be confused with the term device under test (DUT). In fact, the network testing device will most likely support the generation and analysis of traffic to validate the performance, scalability, etc of a device under test. Traffic generation can be defined as the sending of stateless traffic, traffic analysis can be defined as the analysis of received packets for some set of measurements, and protocol emulation can be defined as the emulation of one/many devices/applications. This might include, for example, emulation of a router for sending and receiving of routing protocol updates, emulation of a user generating HTTP traffic or making a IP call, or emulation of a device generating security breaches such as malicious attacks. Automatic control is defined as the unattended operation of a test device in a specific manner such that particular traffic is generated/analyzed and particular protocols are emulated. Consider the example of a testbed that is testing network protocols, generating some typical layer 4-7 traffic, placing a call and sending voice traffic, and injecting malicious attacks for security testing. For this example, there is potentially one device for generating the routing protocol traffic, several devices for the emulating clients/ server traffic, one device for the emulating voice traffic, and one device for the generating security testing. Today, the tester must learn the scripting commands for each generation/emulation device, develop separate scripts to manage each those devices, and combine the results of the various tools into one view. This protocol is not intended for the management of the devices within the network. Specifications such as NETCONF, for device configurations are already focused on that area. The purpose of this alias is to discuss the current issues that need resolving and propose a general direction that a new Working Group would move towards. The intention is not to produce an overall solution and explain the intricacies of a design. Some areas will be intentionally left unexplained because that will be the purpose of the proposed Working Group to resolve. 1.1. Existing API specification The history behind what started the creation of this alias is that approximately four years ago, Cisco and several vendors started developing a specification that defined a common API. The purpose of this API was to provide the tester with the ability to control various network testing devices using a standard set of commands. This project has been relatively successful but because of legal constraints, distribution of the API has been limited. The experience has shown us that the concept works but also showed several pitfalls that would be avoided with an improved architectural design. The specification consists of several groupings: session, traffic, and routing protocol APIs. Each protocol has the actions of config, control, info, and stats and to shorten the list below these names have been replaced by one listing with the term action. * Session APIs connect interface_action alarms cleanup_session * Traffic APIs traffic_control * Routing Protocol APIs bgp_action dhcp_action igmp_action isis_action ldp_action l2tp_action mld_action msdp_action multicast_action ospf_action pim_action ppp_action pppox_action rip_action rsvp_action rsvpte_action There is a group working to develop the command sets for layer 4 to 7 starting with the protocols HTTP, FTP, and Telnet. The issues that we found in developing this API and would like to avoid in the creation of a protocol are: A software abstraction layer was required about the API because the variances in implementation by each vendor. The variances occurred because the API was developed on top of the vendor's existing API and therefore there was an additional level of translation from the common API to the proprietary API. Every parameter that was offered by the vendors was placed into the specification. This created a large document which, as it continues to grow, becomes daunting for the tester to interpret. Also, as each vendor does not implement all the parameters, the tester is required to be knowledgeable about each vendor's implementation. The software abstraction layer helps resolve some of this problem - but not completely. Having the ability to learn the capabilities of the device would greatly assist in this problem. Implementation time of the common API lagged behind the implementation of a feature. Testers were able to use the vendor's libraries and GUI when a new feature was available but had to wait for the API specification and for the vendor implementation of that specification. This reduced the incentive for the testers to use the common API and then increased the issues of script portability. The specification was not originally designed for performance and scalability and therefore created testing issues. The eventual design for this specification will include the objective of performance and scalability and with the ability to scale downward to smaller functional testing requirements. 1.1.1. Coding Example This example shows some basic commands used to connect to a device, configure the interface, configure a routing protocol, configure traffic, and disconnect from the device. # Connect to Vendor A vendorA::connect -device 10.1.1.1 -username Craig -port_list {104/1 104/2} # Port handles are returned from the connect command and used for subsequent referencing. # In this example, the port handle is the same as the port name # Configure the port interface vendorA::interface_config -port_handle 104/1 -mode config -intf_ip_addr 10.10.10.2 \ -intf_mode ethernet -netmask 255.255.255.0 -gateway 10.10.10.1 # Create the DHCP emulation port set dhcp_ret [vendorA::emulation_dhcp_config -port_handle 1 -mode create -outstanding_sessions 1] if { [keylget dhcp_ret status] != 1 } {error "Failed to config handle"} set dhcpgrp_ret [vendorA:emulation_dhcp_group_config -handle dhcp_ret \ -mode create -encap ethernet_ii_qinq \ -num_sessions 5 -mac_addr 00.10.95.11.12 -mac_addr_step 0.0.0.0.0.1 \ -vlan_id_outer 1 -vlan_id_step_outer 1 -vlan_id_counter_outer 2 \ -vlan_id 10 -vlan_id_step 1 -vlan_id_count 1 ] if { [keylget dhcpgrp_ret status ] != 1 } {error -Failed to configure DHCP group?} # Control of the dhcp group, bind all configured groups on the dhcp_ret port handle set dhcpctrl_ret [vendorA::emulation_dhcp_control -port_handle dhcp_ret -action bind] if { [keylget dhcpctrl_ret status] != 1 } { error -Failed to bind DHCP?} # Traffic config using DHCP resolved address information in "normal" mode vendorA::traffic_control -port_handle 1 -mode create -l2_encap ethernet_ii_qinq \ -traffic_src_no 1 \ -dhcp_link 1 \ -dhcp_link_groups 1 \ -mac_src_mode dhcp_emulation \ -mac_dst 00.10.95.22.11.09 \ -l3_protocol ipv4 \ -ip_dst_addr 192.162.2.1 \ -ip_dst_step 0.0.0.1 \ -ip_dst_count 2 # Disconnect from the device vendorA::cleanup_session -port_handle {104/1 104/2} 2. Technology Overview There appears to be some overlap with other standards in the areas of communicating with the test device. To illustrate how NTDP may work, we will use the NETCONF Architecture as a baseline. Layer Example +-------------+ +-----------------------------+ | Content | | Data Structures | +-------------+ +-----------------------------+ | | +-------------+ +-----------------------------+ | Operations | | <config>, <control> <query> | +-------------+ +-----------------------------+ | | +-------------+ +-----------------------------+ | RPC | | <rpc>, <rpc-reply> | +-------------+ +-----------------------------+ | | +-------------+ +-----------------------------+ | Application | | BEEP, SSH, SSL, console | | Protocol | | | +-------------+ +-----------------------------+ Similar to NETCONF, we propose a similar transport layer with perhaps a different set of operations commands. The data structures would be divided in categories based on the technologies. For example, the data structure for configuring HTTP will be different from SIP, as would the routing protocols. As we progress in this discussion the topics will include areas such as: - protocols (there's a number of these...) - traffic generation and analysis - infrastructure (chassis connection, alarms, capture buffer, etc.) - syntax rules (general syntactical structure of the protocol, transport layer or transport layer independence, etc.) I hope this begins to clarify the intent and look forward to many discussions. Regards, Craig _______________________________________________ NTDP mailing list NTDP@ietf.org https://www1.ietf.org/mailman/listinfo/ntdp
- [NTDP] Introduction to NTDP Craig Brown (crbrown)