|

The TCP, IP, ICMP, DHCP Test Environment is used by design engineers, quality assurance engineers and testers to find and fix bugs in their TCP/IP stack or engine. The tests help ensure that the TCP/IP stack is sufficiently robust so that it is not vulnerable to the wide range of attacks in today's Internet. The tests make use of the Maxwell network emulation environment, so that each test sequence can intelligently impair all aspects of the TCP, IP, ICMP, and DHCP protocol. For IP test, TCP test, UDP test, ICMP test, and DHCP test, there's never been anything like Maxwell.
The TCP/IP Test Environment contains hundreds of unique test cases that take on parameters for greater coverage. The tests ensure TCP/IP compliance through vulnerability and robustness testing, with tests for both IPv4 and IPv6.
- Are you under time pressure to test and verify that your TCP/IP implementation is correct?
- Are you aggravated by the lack of support for inducing common conditions such as testing TCP back-off algorithms?
- Are you disappointed by test suite products that do not let you incorporate your own data sources?
- Are you frustrated that you have to do a porting exercise to instrument the TCP/IP stack before you can use a test suite product?
- Are you underwhelmed by the support engineer who knows very little about the TCP/IP protocol?
- Would you like to see pass/fail results and not have to analyze complicated outputs?
- Do you need to replicate a customer reported bug, but don't have a way to customize the environment to properly test and replicate the problem?
The Maxwell TCP/IP Test Environment can provide you with the customization and flexibility you need to accurately test your implementation and meet your schedules. Please complete the form below so that we may discuss your requirements and get you started with an evaluation unit.
The tests are grouped into categories as follows:
TCP Connection Setup:
- TCP states CLOSED, LISTEN, SYN-RECEIVED, SYN-SENT.
- Test the ability to handle malformed or illegal sequence and acknowledgment numbers during the remainder of the connection.
TCP Options Processing:
Insertion and modification of options during the TCP connection set up sequences.
- Unknown options with and without length fields
- Illegal options (e.g. bad option number or valid option with invalid size)
- Non zero padding between end of option and end of TCP header
- Zero length options
- Known options with wrong lengths (e.g. max segment size option with length of five)
- Options with very long lengths that fit in the TCP header
- Options with very long lengths that do not fit in the TCP header
- No end-of-option option
- Valid options with illegal and unusual values
- Valid options with values that exercise bit boundary conditions
- Options at various times during the connection
- Valid options on unnatural boundaries
- Break the usual single SYN/ACK into two distinct packets
- Options missing from TCP MSS calculation
TCP Connection: TCP state ESTABLISHED
- Send RST and URG into zero offered window
- Remove push bits
- Split segment into N small segments
- Split segment into N small segments and add a PUSH bit on each small segment
- URG bit plus urgent pointer of zero, 1, maximum-1 and maximum value
- Urgent pointer with non-zero value but URG bit not set
- Sequence of segments/packets with URG with the urgent pointer in each successive packet pointing to a lower sequence number
- Premature use of socket pair and initial sequence number
- Exercise slow start at connection startup
- Trigger congestive backoff by delaying (or dropping) packets or ACK flags
- After triggering congestive backoff, discard or delay first/second/third segments
- Insert ECN bit into IP underneath TCP connection
- Put connection startup options into TCP packets during connection (and shutdown phases)
- Vary the offered window sizes to check for boundary conditions
- Vary the offered window size to be odd numbers
- Offset the sequence number space to exercise wrap arithmetic
- Memorize and replay segments/packets beyond normally expected times.
- Rapidly change the offered window (including zero window and maximum window)
TCP Connection Close:TCP states FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, LAST-ACK, TIME-WAIT
- Add options to the shutdown packets
- Throw a SYN or SYN/ACK where the FIN/ACK is expected
- Break FIN/ACK into two distinct packets, one with ACK and the other with FIN
- Send data into a half closed connection
- Test the time wait connection duration
IP Fragmentation tests:
- Illegal fragments
- Out of order fragments
- Duplicated fragments
- Overlapping fragments
- Tiny fragments
- Fragments with improperly copied options
- Fragments with extra options
- Fragments with overlapping options
IP Options Processing tests
- Unknown options
- Illegal options
- Zero length options
- Known options with wrong lengths
- Malformed options
IP Framing Tests
- Change frame size to larger than IP datagram
- Substitute jumbo frames for normal frames
IPv4 ICMP
- Change type and codes to values not assigned by IANA.
- Set the checksum to zero.
- Set unused protocol fields to non-zero values.
- Truncate messages.
- Extend messages
- Set protocol fields (including length fields) to inconsistent values.
- Set protocol address fields to unreasonable values such as 127.0.0.1 and 255.255.255.255.
- Allow user specified changes of 8, 16, and 32-bit quantities in the packet.
IPv4 DHCP Client (packets from DHCP client to DHCP server)
- Change fields (such as hardware type) to values that have not been assigned by IANA.
- Set field lengths (such as hardware address length) to invalid values.
- Set time values to the maximum.
- Force "must be zero" fields and flags to be non-zero.
- Change various IP address fields to contain invalid values such as broadcast (255.255.255.255) and localhost (127.0.0.1).
- Change hardware address fields to invalid values.
- Change host name and boot file name to invalid, non-null-terminated values.
- Set the magic cookie bytes to an incorrect value.
- Allow the user to overwrite an 8, 16, or 32-bit value in the packet.
- Allow the user to overwrite an 8, 16, or 32-bit value in a specified DHCP option.
IPv4 DHCP Server (packets from DHCP server to DHCP client)
- Change fields (such as hardware type) to values that have not been assigned by IANA.
- Set field lengths (such as hardware address length) to invalid values.
- Set time values to the maximum.
- Force "must be zero" fields and flags to be non-zero.
- Change various IP address fields to contain invalid values such as broadcast (255.255.255.255) and localhost (127.0.0.1).
- Change hardware address fields to invalid values.
- Change host name and boot file name to invalid, non-null-terminated values.
- Set the magic cookie bytes to an incorrect value.
- Allow the user to overwrite an 8, 16, or 32-bit value in the packet.
- Allow the user to overwrite an 8, 16, or 32-bit value in a specified DHCP option.
IPv6 UDP Datagram
- Change the source and destination addresses to improper or unusual values such as loopback, multicast, interface-local multicast, link-local multicast, etc.
- Set the "next header" field to a value not assigned by IANA with all of the above mentioned address variations.
- Set the "hop count" to zero with all of the above mentioned address variations.
- Insert a type 0 routing extension header with the next address being one of the above mentioned address variations.
- Insert a type 0 routing extension header with inconsistent information.
- Insert hop-by-hop extension with various router alert option values and without any message.
- Insert hop-by-hop extension with two router alerts with various router alert option values and without any message.
- Insert hop-by-hop extension with a router alert option with an invalid length.
IPv6 ICMP
- Change type and code fields to values not assigned by IANA.
- Set the checksum to zero.
- Set unused protocol fields to non-zero values.
- Truncate messages.
- Extend messages
- Set protocol fields to inconsistent values.
- Set the Parameter Problem Pointer field to zero and 0xFFFF.
- Change the address of the appended IPv6 header to contain an invalid or unusual address.
- Allow user specified changes of 8, 16, and 32-bit quantities in the packet.
IPv6 DHCP Client (packets from DHCP client to DHCP server)
- Change fields (such as the option code of the Client Identifier option) to values that have not been assigned by IANA.
- Change field lengths to invalid or unusual values.
- Remove Client Identifier option.
- Remove Server Identifier option.
- Truncate DUID of Client Identifier option to hardware type field.
- Change transaction ID field to 0xffffff.
- Changes the T1 and T2 fields of the IA_NA option to one second in the future.
- Change message type.
- Allow the user to overwrite an 8, 16, or 32-bit value in the packet.
- Allow the user to overwrite an 8, 16, or 32-bit value in a specified DHCP option.
IPv6 DHCP Server (packets from DHCP server to DHCP client)
- Change fields (such as the option code of the Client Identifier option) to values that have not been assigned by IANA.
- Change field lengths to invalid or unusual values.
- Remove Client Identifier option.
- Remove Server Identifier option.
- Truncate DUID of Client Identifier option to hardware type field.
- Change transaction ID field to 0xffffff.
- Changes the T1 and T2 fields of the IA_NA option to one second in the future.
- Change message type.
- Allow the user to overwrite an 8, 16, or 32-bit value in the packet.
- Allow the user to overwrite an 8, 16, or 32-bit value in a specified DHCP option.
TCP Client and Server Side Test Coverage
Maxwell supports BOTH server side and client side TCP testing.
- Server side testing is often possible straight "out of the box" with no programming needed. Client side testing is almost as simple, only requiring that one compile a dual client-server program to run on the target test machine. InterWorking Labs provides the source code for this program in ANSI C which uses the POSIX.1-2001 socket API to virtually eliminate or minimize porting issues.
- After the initial connection handshake, the TCP state transition possibilities become identical for the client and server side. Thus, only a small fraction of any tests from any supplier are relevant to those state changes. The Maxwell TCP/IP tests provide 100% state diagram coverage, and over 80% of it can often be tested with no extra porting or programming effort.
Other Areas of Test Coverage
- The user may control several aspects of IPv4 fragmentation, such as the MTU (fragment size), fragment overlap, and fragment order. This permits most of the tests to be expanded for more test coverage.
- Reaction to changes in network characteristics (e.g. congestion)
- Sequence Number Arithmetic
- Changing of IP addresses, MAC addresses, and routes underneath the TCP connection
Establishing a source of authority
The Maxwell TCP/IP Test Environment references the RFCs that correlate to each test area. These official IETF documents detail the Internet standards and best current practices that can point the user toward a better understanding of the problem.
TCP/IP RFCs Covered
- RFC 2018 TCP Selective Acknowledgement Options
- RFC 2001 TCP Slow Start, Congestion Avoidance, Fast Retransmit, and Fast Recovery Algorithms
- RFC 791, Internet Protocol (IP)
- RFC 792 Internet Control Message Protocol (ICMP)
- RFC 793 Transmission Control Protocol (TCP)
- RFC 894 A Standard for the Transmission of IP Datagrams over Ethernet Networks
- RFC 1042 Standard for the transmission of IP datagrams over IEEE 802 networks
- RFC 1108 U.S. Department of Defense Security Options for the Internet Protocol
- RFC 1122 Requirements for Internet Hosts -- Communication Layers
- RFC 1323 TCP Extensions for High Performance
- RFC 2113 IP Router Alert Option
- RFC 2460 Internet Protocol, Version 6 (IPv6) Specification
- RFC 2473 Generic Packet Tunneling in IPv6 Specification
- RFC 2675 IPv6 Jumbograms
- RFC 2711 IPv6 Router Alert Option
- RFC 4291 IP Version 6 Addressing Architecture
- RFC 4301 Security Architecture for the Internet Protocol
- RFC 4302 IP Authentication Header
- RFC 4443 Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification
Sample test documentation... Purpose of the Test: Impairment to handle no end-of-option option Impairment Algorithm: 1. Maxwell will detect the start of a TCP connection between Device A and Device B. 2. Maxwell will intercept a TCP packet flowing from Device A to Device B that contains an option. (Several variations include: modifying only packets during the initial three way handshake, during the data transfer phase, and during the connection termination handshake.) 3. Maxwell will change the contents of the packet so that option zero (meaning end of option list is removed) and replaced with an illegal value. Possible Behaviors or Outcomes: The TCP stack in Device B may hang while waiting for the (non-existent) end of option value. Device B may time-out. Device B may accept the options.
The TCP, IP, ICMP, DHCP Test Environment is used by design engineers, quality assurance engineers and testers to find and fix bugs in their TCP/IP stack or engine. The tests help ensure that the TCP/IP stack is sufficiently robust so that it is not vulnerable to the wide range of attacks in today's Internet. The tests make use of the Maxwell network emulation environment, so that each test sequence can intelligently impair all aspects of the TCP, IP, ICMP, and DHCP protocol. For IP test, TCP test, UDP test, ICMP test, and DHCP test, there's never been anything like Maxwell.
|