1. Field of the Invention
The invention relates to network communications, data units, and the transmission of and receipt of network traffic.
2. Related Art
Networks such as the Internet carry a variety of data communicated using a variety of network devices including servers, routers, hubs, switches, and other devices. Before placing a network into use, the network, including the network devices, network media, network segments and network applications included therein, may be tested to ensure successful operation. Network devices and applications may be tested, for example, to ensure that they function as intended, comply with supported protocols, and can withstand anticipated traffic demands. Such testing may also be performed on already deployed network devices, network segments and network applications.
To assist with the construction, installation and maintenance of networks, network applications and network devices, networks may be augmented with network analyzing devices, network conformance systems, network monitoring devices, and network traffic generators, all which are referred to herein as network testing systems. The network testing systems may allow for analyzing the performance of networks, network applications and network devices by capturing, modifying, analyzing and/or sending network communications.
Network testing systems send and receive a large amount of network traffic and establish and end many communication sessions. Network interface devices, units, cards, chips and the like perform much of the work in sending and receiving network traffic and establishing and ending sessions. To track network communications sent and received by network testing systems so that network devices may be tested, network communications are prepared with test information. The functioning of a device under test may be evaluated based on review of the test information included in network communications.
Throughout this description, the embodiments and examples shown should be considered as exemplars, rather than limitations on the devices and methods described.
Device and Systems
The network testing system 110 may be in the form of a chassis or card rack, as shown in
The network testing system 110 and/or one or more of the network cards 120 may include an operating system such as, for example, versions of Linux, Unix and Microsoft Windows.
At least one network card 120 is coupled with network 140 via a communications medium 144. Although only one connection over communications medium 144 is shown, each of the network cards 120 may be connected with network 140 over a communications medium. In addition, in some embodiments, each network card may have two or more connections with network 140 or two or more networks. The communications medium 144 may be, for example, wire lines such as an Ethernet cable, fibre optic cable, and coaxial cable, and may be wireless.
The network testing system 110 and the network cards 120 may support one or more well known higher level communications standards or protocols such as, for example, one or more versions of the User Datagram Protocol (UDP), Transmission Control Protocol (TCP), Internet Protocol (IP), Internet Control Message Protocol (ICMP), Internet Group Management Protocol (IGMP), Session Initiation Protocol (SIP), Hypertext Transfer Protocol (HTTP), address resolution protocol (ARP), reverse address resolution protocol (RARP), file transfer protocol (FTP), Simple Mail Transfer Protocol (SMTP); may support one or more well known lower level communications standards or protocols such as, for example, the 10 and/or 40 Gigabit Ethernet standards, the Fibre Channel standards, one or more varieties of the IEEE 802 Ethernet standards, Asynchronous Transfer Mode (ATM), X.25, Integrated Services Digital Network (ISDN), token ring, frame relay, Point to Point Protocol (PPP), Fiber Distributed Data Interface (FDDI), Universal Serial Bus (USB), IEEE 1394 (also known as i.link® and Firewire®); may support proprietary protocols; and may support other protocols. Each network card 120 may support a single communications protocol, may support a number of related protocols, or may support a number or combination of unrelated protocols.
The term “network card” as used herein encompasses line cards, test cards, analysis cards, network line cards, load modules, interface cards, network interface cards, data interface cards, packet engine cards, service cards, smart cards, switch cards, relay access cards, CPU cards, port cards, and others. The network cards 120 may be referred to as blades, particularly when a processor is included on the network card.
The network cards 120 may include one or more processors 124, memory 126 such as a version of random access memory (RAM), and one or more network communications units 128. In another embodiment, the network cards 120 may have no processors 124 and may include one or more network communications units 128. In the embodiment in which the network cards do not include a processor, processing may be performed by a processor on a motherboard coupled with back plane 112, on another card, on the backplane or by a remote or external unit that includes a processor. When the network card 120 includes two or more network communications units 128, the network card 120 is in effect two or more network capable devices. That is, a network card 120 having n network communications units 128 may function as n network capable devices.
The network communications unit 128 may be implemented as one or more field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), programmable logic devices (PLDs), programmable logic arrays (PLAs), other kinds of devices, and combinations of these. The variable location of test information in a data unit described herein may be implemented in the network communications unit 128. The network communications unit 128 may support one or more communications protocols in hardware. The network communications unit 128 may include a network interface through which the network card 120 may transmit and/or receive communications over the network 140 to and from network capable devices 130.
The back plane 112 may serve as a bus or communications medium for the network cards 120. The back plane 112 may also provide power to the network cards 120.
The network testing system 110 may have coupled therewith a display 118 and user input devices such as a keyboard 114 and a mouse 116, as well as other user input devices including, for example, pens and trackballs. The user input devices may be coupled to a network card, other card, motherboard, or backplane included in the chassis. The network testing system 110 may have a computer (not shown) coupled thereto. The computer may be local to or remote from the network testing system 110. In another embodiment, the network testing system 110 may include a processor on a card, motherboard or backplane that allows the chassis to also serve as a computer workstation.
In addition to the chassis shown as the network testing system 110, the network testing system may be implemented in a computer such as a personal computer, server, or workstation as described below regarding
The network 140 may be a local area network (LAN), a wide area network (WAN), a storage area network (SAN), or a combination of these. The network 140 may be wired, wireless, or a combination of these. The network 140 may include or be the Internet. The network 140 may be public or private, may be a segregated test network, and may be a combination of these. The network 140 may be comprised of a single or numerous nodes providing numerous physical and logical paths for data units to travel. Each node may be a network capable device as described below.
Communications on the network 140 may take various forms, including frames, cells, datagrams, packets, higher level logical groupings, or other units of information, all of which are referred to herein as data units. Those data units that are communicated over a network are referred to herein as network traffic. The network traffic may include data units that represent electronic mail messages, text messages, streaming media such as music (audio) and video (movies, television, videophone), telephone (voice) conversations, web pages, graphics, documents, secure business transactions, and others. The data units may vary in size.
The term network capable device 130 as used herein means a device capable of communicating over the network 140 and/or listening to, relaying injecting, delaying, dropping, and/or modifying network traffic on network 140. The network capable devices 130 may be computing devices such as computer workstations, personal computers, servers, portable computers, set-top boxes, video game systems, personal video recorders, telephones, personal digital assistants (PDAs), computing tablets, and the like; peripheral devices such as printers, scanners, facsimile machines and the like; network capable storage devices including disk drives such as network attached storage (NAS) and SAN devices; network testing equipment such as analyzing devices, network conformance systems, emulation systems, network monitoring devices, and network traffic generators; components such as processors, network cards and network communications units; and networking devices such as routers, relays, firewalls, hubs, switches, bridges, traffic accelerators, load balancers, and multiplexers. In addition, the network capable devices 130 may include appliances such as refrigerators, washing machines, and the like as well as residential or commercial heating, ventilation, and air conditioning (HVAC) systems, alarm systems, and other devices or systems capable of communicating over a network. One or more of the network capable devices 130 may be devices to be tested and may be referred to as devices under test.
Network interface 214 is similar to and performs the same or similar functionality of network communications units 128 shown in
Network interface 214 may be implemented as a chip or chipset on a motherboard or main board of a computer or other computing device, may be implemented as a chip or chip set on a network interface card (NIC) coupled to or included in a computer or computing device, and may otherwise communicate with, have access to, and/or be accessible to processor 210 and memory 212.
The backplane connector 302 may allow the network card 300 to be coupled with a network testing system such as network testing system 110. The memory 330 may be, for example, RAM, and may be coupled with processor 310. The processor 310 may be a multipurpose processor, such as, for example, a PowerPC processor available from IBM, Inc., and may be a specialized processor. The processor 310 may be coupled with the network communications unit 320. The processor is capable of executing instructions which may be located in a local memory, other storage medium, or other local or remote storage device. In one embodiment, the network card 300 includes no processor, and commands are received from a processor included on another card, on a mother board, or on a backplane.
The network card 300 may include and/or have access to local and/or remote memory, storage media and storage devices. Instructions to be executed by the processor may be stored on and executed from any local or remote machine readable medium or storage device. A machine readable medium includes, for example, without limitation, magnetic media (e.g., hard disks, tape, floppy disks), optical media (e.g., CD, DVD), flash memory products (e.g., memory stick, compact flash and others), and volatile and non-volatile silicon memory products (e.g., random access memory (RAM), programmable read-only memory (PROM), electronically erasable programmable read-only memory (EEPROM), and others). A storage device is a device that allows for the reading from and/or writing to a machine readable medium. Storage devices include hard disk drives, DVD drives, flash memory devices, and others.
The network communications unit 320 may include one or more circuits, chips, logic, firmware and/or instructions that allow for communication of data units over a network and the sending and receiving of outgoing and incoming data units that have test information in a varying location. The network communications unit 320 may provide support for the lower and/or higher level communications standards or protocols described above. The network communications unit 320 may be implemented as one or more FPGAs. The network communications unit 320 may include or be coupled with a general purpose processor 310, memory 330 such as RAM, and other devices or components on network card 300. The network communications unit 320 may also be implemented or included on one or more ASICs, PLDs, PLAs, silicon devices, integrated circuits, general purpose processors, specialized processors such as a network processor, or other devices.
The network communications unit 320 may include a send processing unit (SND) 322 and a receive processing unit (RCV) 324. The receive processing unit 324 may include a floating pattern match unit (FPM) 326. The send processing unit 322 prepares data units for transmission on the communications medium 350 according to a communications protocol and pursuant to instructions or information received from either processor 310, an application running on a network testing system in which network card 300 is included, or from another software or hardware entity. The data units may be directed to a port in a network testing system, may traverse a network or network portion, and/or may pass through or be processed by one or more network capable devices. The data units may be directed to one or more network capable devices.
When preparing the data units for transmission, the send processing unit 322 adds, places or otherwise includes test information in the data unit. The test information may include a signature, a group identifier a sequence number, and/or other information about the data unit. The test information may also be referred to as a test information block. The contents of the data unit are described in more detail below regarding
The receive processing unit 324 receives data units from the communications medium 350 and extracts test information, data, and other information from the incoming data units. The floating pattern match unit 326 in the receive processing unit 324 may search for a signature included in the incoming data units. This search may be performed one bit at a time, in byte-size portions (8 bits), in word portions (16, 32, 48, 64, etc. bits), and the like. Different portions of the signature may be sought out simultaneously. The signature may be a constant size that is used consistently by network cards in network testing units. The signature may be, for example, 4 bytes, 8 bytes, 12 bytes, 16 bytes, etc. The signature may be a varying size.
Additional and fewer units, hardware and firmware may be included in the network card 300. In addition, send processing unit 322 and the receive processing unit 324 of the network communications unit 320 may be combined as a single entity or further refined into additional processing units, so long as the processing described herein is can be achieved.
Referring now to
Data Units
As required by various communications standards, data unit 400 begins with a header 410 and ends with a frame check sequence (FCS) 436 of two or four bytes. The header 410 may have various sizes which may depend on the particular communications standard, and may be of varying size.
The data unit 400 includes test information 428 which is located at a variable position within the data unit 400. That is, the location of the test information 428 in the data unit 400 may vary between data units in different flows or streams, or emanating from different nodes or ports. In one embodiment, the test information is at a uniform or constant location per flow or stream. In one embodiment, the test information is at a uniform or constant location per port or node.
Test information 428 refers to a signature (SIG) 422, a packet group identifier (PGID) 424, and a sequence number (SEQ) 426. The test information 428 may also include other data items, information or fields to convey test related information and data. The test information may include a timestamp, such as a send or transmit timestamp. The test information may be thought of and referred to as a test information block.
In this example, the signature may be 4 bytes, 8 bytes, 12 bytes, 16 bytes, etc. The signature is used to identify where the test information block is located in the data unit 400. In addition, a mask of only a certain pre-determined number of bits of an expected signature may be used to identify and locate the test information block within the data unit 400. In one embodiment the signature is 12 bytes long, as shown in
The packet sequence group identifier 424 may identify a stream or flow within a stream, such that all data units in the stream or flow have the same packet group identifier 424. A flow is a group of data units sent in sequence from a particular node or port. The packet group identifier 424 may be a 2 byte, 4 byte, 8 byte or other size field. In one embodiment the packet group identifier 424 is 4 bytes long, as shown in
The sequence number 426 identifies the ordering of data units within a stream or flow. The sequence number is typically sequentially assigned, such that when a series of data units are sent, the sequence number is incremented from data unit to data unit. The sequence number 426 may be a 2 byte, 4 byte, 8 byte or other size field. In one embodiment the sequence number 426 is 4 bytes long, as shown in
When a data unit is constructed, the network testing system may compute and place a data integrity cyclical redundancy check (DI CRC) 432 value toward the end of the data unit 400. In one embodiment the data integrity cyclical redundancy check 432 is a field 12 bytes from the end of the data unit 400. The data integrity cyclical redundancy check 432 value is computed to verify the contents of the test payload 420 of the data unit 420. The test payload of a data unit is that portion of the data unit spanning from the end of the header 410 to the beginning of the data integrity cyclical redundancy check 432 field. The data integrity cyclical redundancy check 432 value may be computed, for example, by the send processing unit 322 of network communications unit 320 shown in
A transmit or send timestamp 434 may be included in the data unit 400 toward the end of the data unit 400 next to the data integrity cyclical redundancy check field 432. In other embodiments, the send timestamp may be placed in the header of the 410, the test payload, and in the test information block 428. The send timestamp may be set as close as practicable to the time a network communications unit completes construction of a data unit and transmits the data unit onto a communications medium. The send timestamp 434 may be a 2 byte, 4 byte, 8 byte or other size field. In one embodiment, the send timestamp 434 is 4 bytes long, as shown in
Data unit 500 is an example data unit constructed with test information placed toward the middle of the data unit 500. The test information is between header 502 and the data integrity cyclical redundancy check 510. The test information includes a signature 504, a packet group identifier 506 and a sequence number 508. The data integrity cyclical redundancy check 510 is located adjacent to a timestamp 512 which is adjacent to the last field in the data unit, a frame check sequence 514.
Data unit 520 is an example data unit constructed with test information placed next to header 522. Header 522 is a relatively long header. The test information is relatively far from the data integrity cyclical redundancy check 530 and the end of the data unit. The test information includes a signature 524, a packet group identifier 526, a sequence number 528, and a timestamp 532. In this example data unit, the timestamp 532 is not toward the end of the data unit, but is included in the test information. In this example data unit, the signature 524 is immediately adjacent to or next to the header 522. The data integrity cyclical redundancy check 510 is located adjacent to the last field in the data unit, a frame check sequence 534. In this example, the frame check sequence 534 is two bytes long.
Data unit 540 is an example data unit constructed with test information placed in a large or long header 542 of the data unit. The test information is included before the test payload. The test information includes a signature 544, a packet group identifier 546 and a sequence number 548. In this example, the test information and the signature 544 do not begin on an 8 byte boundary, but begin but begin offset 4 bytes from an 8 byte boundary. The data integrity cyclical redundancy check 550 is located adjacent to a timestamp 552 which is adjacent to the last field in the data unit, a frame check sequence 554.
Data unit 560 is an example data unit constructed with test information placed next to the data integrity cyclical redundancy check 570 toward the end of the data unit and at the end of the test payload. Header 562 is a relatively long header. The test information is relatively far from the header 562 and the beginning of the data unit 560. The test information includes a signature 564, a packet group identifier 566, and a sequence number 568. In this example, the test information and, more specifically, the signature 564 do not begin on an 8 byte boundary, but begin offset 2 bytes from an 8 byte boundary. In this example data unit, test information and, more specifically, the sequence number 568 is immediately adjacent to or next to the data integrity cyclical redundancy check 570. The data integrity cyclical redundancy check 570 is located adjacent to a timestamp 572 which is adjacent to the last field in the data unit, a frame check sequence 574.
Methods
The methods described below in
As shown in
As shown in
A packet group identifier, a sequence number and other test information is obtained from the test information area in the data unit, as shown in block 714. A timestamp, the send timestamp, may also be obtained from the data unit. In various embodiments, the timestamp may be obtained from the test information block, or from another location in the data unit, such is in the header or toward the end of the data unit. If a signature is not found, the test information is not obtained from the data unit and block 714 is skipped.
A CRC computation is performed on the test payload to verify the integrity of the test payload, as shown in block 716. A computation of the FCS is performed to verify the integrity of the data unit, as shown in block 718.
The results of blocks 714, 716 and 718 are stored in memory for access by a network testing unit software application, as shown in block 720. In another embodiment the results of blocks 714, 716 and 718 are communicated to a network testing unit software application. The results of blocks 714, 716 and 718 may be stored on a machine readable medium included in, coupled with or otherwise accessible by a network testing system. If a signature is not found in a data unit, the results of blocks 716 and 718 are stored.
The test information accumulated concerning a number of data units received, such as from a flow or stream, may be used by a network testing system to evaluate whether any data units were missing, whether the data units were received in order, and to perform various analyses. The test information accumulated concerning a number of data units received may be used to prepare various statistics, including for example, the number of bytes received in a flow or stream; the number of data units received in a flow or stream; the receive rate for a flow or stream; sequence error analysis and statistics; order information analysis and statistics; various latency data may be computing using the timestamp include in the data unit and a receive timestamp that may be obtained upon receipt of the data unit, including maximum data unit latency, minimum data unit latency, cumulative data unit latency, and average data unit latency; and others.
With regard to
Although exemplary embodiments of the invention have been shown and described, it will be apparent to those having ordinary skill in the art that a number of changes, modifications, or alterations to the invention as described herein may be made, none of which depart from the scope of the invention. All such changes, modifications and alterations should therefore be seen as within the scope of the invention.