Techniques are presented herein to facilitate latency measurements in a networking environment. A first network device receives a packet for transport within a network domain that comprises a plurality of network devices. The plurality of network devices have a common time reference, that is, they are time synchronized. The first network device generates timestamp information indicating time of arrival of the packet at the first network device. The first network device inserts into the packet a tag that comprises at least a first subfield and a second subfield. The first subfield comprising a type indicator to signify to other network devices in the network domain that the tag includes timestamp information, and the second subfield includes the timestamp information. The first network device sends the packet from to into the network domain to another network device. Other network devices which receive that packet can make latency measurements.
|
0. #3# 30. An apparatus comprising:
an ingress port configured to receive a network traffic packet, the network traffic packet comprising a header with a layer 2 portion and a layer 3 portion, wherein the network traffic packet does not include time information sourced from a common time reference; and
a timestamp logic unit configured to generate timestamp information based on time of arrival of the network traffic packet at the ingress port and insert into the layer 2 portion of the header of the network traffic packet, a tag that is distinct from contents of the network traffic packet, wherein the tag comprises subfields including a type subfield and multiple timestamp subfields, wherein the type subfield comprises an indicator to signify to other network devices that the tag includes timestamp information, and wherein at least one of the multiple timestamp subfields having an associated precision subfield to indicate a precision for a timestamp value for time of arrival of the network traffic packet in an associated timestamp subfield.
0. #3# 34. An apparatus comprising:
a plurality of ports, each port configured to receive and send network traffic packets in a network domain, the network traffic packets comprising a header with a layer 2 portion and a layer 3 portion, wherein at least one of the plurality of ports is an ingress port at an edge of the network domain, wherein the network traffic packets do not include time information sourced from a common time reference;
a timestamp logic unit configured to insert into the layer 2 portion of a received network traffic packet a first timestamp information indicating time of arrival of the received network traffic packet at the network domain from outside the network domain, wherein the first timestamp information is generated with reference to the ingress port at the edge of the network domain to enable latency measurements based on the first timestamp information, and the first timestamp information is distinct from contents of the received network traffic packet, the first timestamp information having an associated precision; and
wherein the layer 2 portion of the received network traffic packet further includes a type subfield that comprises an indicator to signify to other network devices received network traffic packet includes timestamp information.
0. #3# 25. A method, comprising:
capturing, at a first network device that is configured to forward network traffic packets, a network traffic packet for transport within a network domain that comprises a plurality of network devices, the network traffic packet comprising a header with a layer 2 portion and a layer 3 portion, wherein the first network device is at an ingress edge of the network domain for the network traffic packet, and wherein the network traffic packet does not include time information sourced from a common time reference and is transported to the first network device from outside of the network domain;
generating, by the first network device, timestamp information indicating time of capture of the network traffic packet at the first network device;
including in the layer 2 portion of the header of the network traffic packet a tag that is distinct from contents of the network traffic packet, wherein the tag comprises at least a first subfield and multiple second subfields, wherein the first subfield comprising a type subfield comprises an indicator to signify to other network devices in the network domain that the tag includes timestamp information, and wherein at least one of the multiple second subfields comprises a timestamp value that indicates time of capture of the network traffic packet at the first network device with an associated precision; and
sending the network traffic packet from the first network device to a second network device.
15. #3# An apparatus comprising:
a plurality of ports each configured to receive and send network traffic packets in a network domain, the network traffic packets comprising a header with a layer 2 portion and a layer 3 portion, wherein at least one of the plurality of ports is an egress port at an egress edge of the network domain, and wherein the network traffic packets do not include time information sourced from a common time reference;
a timestamp logic unit configured to extract, from the layer 2 portion of the header of the network traffic packet a tag that is distinct from contents of the network traffic packet, the tag including a type subfield and multiple timestamp subfields, wherein the type subfield comprises an indicator to signify to other network devices in the network domain that the tag includes timestamp information, wherein at least one of the multiple timestamp subfields including timestamp information indicating time of arrival of the a network traffic packet at the network domain with an associated precision, wherein the timestamp information is generated at a network device arranged at an ingress edge of the network domain for the network traffic packet; and
a latency measurement unit configured to determine a time of arrival of the network traffic packet at the egress port and determine an elapsed time between the arrival of the network traffic packet at the network domain and the arrival of the network traffic packet at the egress port.
8. #3# A method comprising:
receiving a network traffic packet at an egress port of a first network device, the network traffic packet not including time information sourced from a common time reference and having been transported within a network domain that comprises a plurality of network devices, the network traffic packet comprising a header with a layer 2 portion and a layer 3 portion, wherein the plurality of network devices have a common time reference, and wherein the first network device is at an egress edge of the network domain for the network traffic packet;
determining a time of arrival of the network traffic packet at the first network device;
extracting, by the first network device, from the layer 2 portion of the header of the network traffic packet a tag that is distinct from contents of the network traffic packet, the tag including a type subfield and multiple timestamp subfields, wherein the type subfield comprises an indicator to signify to other network devices in the network domain that the tag includes timestamp information, wherein at least one of the multiple timestamp subfields including timestamp information indicating time of arrival of the network traffic packet within the network domain with an associated precision, wherein the network traffic packet was received within the network domain at a second network device, wherein the second network device is arranged at an ingress edge of the network domain for the network traffic packet; and
determining the a latency of the network traffic packet within the network domain by calculating an elapsed time between the timestamp information and the arrival of the network traffic packet at the egress port of the first network device.
1. #3# A method comprising:
receiving a network traffic packet at a first network device for transport within a network domain that comprises a plurality of network devices, the network traffic packet comprising a header with a layer 2 portion and a layer 3 portion, wherein the plurality of network devices have a common time reference and the network traffic packet does not include time information sourced from the common time reference, and wherein the first network device is at an ingress edge of the network domain for the network traffic packet, wherein the network traffic packet is received at the first network device from outside of the network domain;
generating, by the first network device, timestamp information indicating time of arrival of the network traffic packet within the network domain;
inserting into the layer 2 portion of the header of the network traffic packet a first tag that is distinct from contents of the network traffic packet, wherein the first tag comprises at least a first type subfield and a multiple second subfield subfields, wherein the first type subfield comprising a type an indicator to signify to other network devices in the network domain that the first tag includes timestamp information data, and wherein at least one of the multiple second subfield subfields includes the timestamp information indicating time of arrival of the network traffic packet with an associated precision, wherein the timestamp information is configured to be used by each device in the network domain that receives the network traffic packet as an indication of when the network traffic packet entered the network domain; and
sending the network traffic packet from the first network device to another network device in the network domain.
2. The method of #3# claim 1, further comprising:
receiving at a second network device the network traffic packet sent from the first network device;
determining a time of arrival of the network traffic packet at the second network device; and
measuring latency of the network traffic packet within the network domain based on the time of arrival of the network traffic packet and the timestamp information contained in the first tag of the network traffic packet.
3. The method of #3# claim 1, further comprising:
at each of the other network devices in the network domain:
receiving the network traffic packet sent by the first network device;
determining time of arrival of the network traffic packet; and
measuring latency of the network traffic packet within the network domain based on the time of arrival of the network traffic packet and the timestamp information contained in the first tag of the network traffic packet.
4. The method of #3# claim 1, wherein the first type subfield of the first tag is an Ethertype subfield.
5. The method of #3# claim 1, further comprising inserting in the first tag a validity bit that indicates whether or not the timestamp information is valid.
6. The method of #3# claim 1, wherein inserting into the network traffic packet comprises inserting a predetermined bit pattern in the second subfield to indicate that the timestamp information of the second subfield is not valid.
7. The method of #3# claim 1, further comprising:
receiving at a second network device the network traffic packet sent from the first network device; and
inserting an additional a second tag into the network traffic packet, the additional second tag including timestamp information representing time of arrival of the network traffic packet at the second network device, wherein the second tag is distinct from contents of the network traffic packet and distinct from the first tag.
9. The method of #3# claim 8, wherein extracting the timestamp information comprises extracting at least a first subfield and a multiple second subfield subfields, the first subfield being the type subfield comprising a type the indicator signifying that the multiple second subfield includes subfields include the timestamp information.
10. The method of #3# claim 9, wherein extracting the first subfield comprises extracting an Ethertype subfield.
11. The method of #3# claim 9, wherein extracting the timestamp information comprises extracting a predetermined bit pattern in the second subfield to indicate that the timestamp information of the second subfield is not valid.
12. The method of #3# claim 8, wherein extracting the timestamp information comprises extracting timestamp information for each of the plurality of network devices that the network traffic packet traversed travelling from the second network device to the first network device.
13. The method of #3# claim 8, wherein extracting the timestamp information comprises extracting a validity bit that indicates whether or not the timestamp information is valid.
0. #3# 14. The method of
16. The apparatus of #3# claim 15, wherein the timestamp logic unit is configured to extract at least a first subfield and a multiple second subfield subfields, the first subfield being the type subfield comprising a type the indicator signifying that the multiple second subfield includes subfields include the timestamp information.
17. The apparatus of #3# claim 16, wherein the timestamp logic unit is configured to extract the first subfield as an Ethertype subfield.
18. The apparatus of #3# claim 16, wherein the timestamp logic unit is configured to extract the timestamp information by extracting a predetermined bit pattern in the second subfield to indicate that the timestamp information of the second subfield is not valid.
19. The apparatus of #3# claim 15, wherein the latency measurement unit is configured to determine the elapsed time from the time of arrival of the network traffic packet at the egress port and the timestamp information.
0. #3# 20. The apparatus of
21. The apparatus of #3# claim 15, wherein the timestamp logic unit is configured to extract the timestamp information by extracting a validity bit that indicates whether or not the timestamp information is valid.
0. #3# 22. The apparatus of
23. The method of #3# claim 1, wherein generating the timestamp information indicating time of arrival of the network traffic packet within the network domain comprises determining a time of arrival at the first network device.
0. #3# 24. The method of
0. #3# 26. The method of claim 25, wherein the tag further includes a subfield indicating a validity of the network traffic packet.
0. #3# 27. The method of claim 25, wherein the network traffic packet containing the tag is formatted such that the network traffic packet can be processed by a second network device that is not configured to understand the tag.
0. #3# 28. The method of claim 25, further comprising:
capturing the network traffic packet at the second network device;
determining time of capture of the network traffic packet at the second network device; and
measuring latency of the network traffic packet within the network domain based on the time of capture of the network traffic packet at the second network device and the timestamp information included in the tag of the network traffic packet.
0. #3# 29. The method of claim 25, wherein the tag further includes a precision subfield indicating precision of the timestamp value in an associated second subfield.
0. #3# 31. The apparatus of claim 30, wherein the network traffic packet further comprises a validity check subfield.
0. #3# 32. The apparatus of claim 30, further comprising:
a latency measurement unit configured to determine latency of the network traffic packet traversing a network domain from a first ingress port of the network domain to a second port based on at least one of the subfields containing timestamp information.
0. #3# 36. A system comprising the apparatus of claim 34, and further comprising another apparatus that receives the network traffic packet that includes the first timestamp information.
0. #3# 37. The method of claim 1, wherein inserting comprises inserting a plurality of additional tags into the network traffic packet, each additional tag including different timestamp information, wherein each additional tag is distinct from the first tag and distinct from other additional tags.
0. #3# 38. The method of claim 8, wherein the network traffic packet includes multiple tags, each tag of the multiple tags including timestamp information indicating time of arrival of the network traffic packet at a different network device, and wherein each tag of the multiple tags is distinct from other tags.
0. #3# 39. The method of claim 38, wherein one or more tags of the multiple tags have been overwritten by a network device when the network traffic packet has a maximum number of tags.
|
This application is a continuation of U.S. application Ser. No. 13/708,347, filed Dec. 7, 2012, entitled “Timestamping Packets in a Network,” which claims priority to U.S. Provisional Patent Application No. 61/702,323, filed Sep. 18, 2012, also entitled “Timestamping Packets in a Network.” Both applications are incorporated herein by reference in their entirety.
The present disclosure relates to networking systems and devices.
In a computer network, such as a data center, data is transmitted from a source to a destination in the form of packets that generally pass through one or more networking devices (e.g., switches, routers, firewalls, etc.). During the transmission, packets are generally temporarily stored in one or more network buffers of the networking devices.
Certain data center customers demand network architectures that can provide low latency, high bandwidth, and often massive scalability. However, measuring latency may be difficult and time sensitive applications often do not have the proper visibility into how it has taken for packets to reach a certain destination and when packets were actually sourced at specific locations in the network.
Techniques are presented herein to facilitate latency measurements in a networking environment. A first network device receives a packet for transport within a network domain that comprises a plurality of network devices. The plurality of network devices have a common time reference, that is, they are time synchronized. The first network device generates timestamp information indicating time of arrival of the packet at the first network device. The first network device inserts into the packet a tag that comprises at least a first subfield and a second subfield. The first subfield comprises a type indicator to signify to other network devices in the network domain that the tag includes timestamp information, and the second subfield includes the timestamp information. The first network device sends the packet into the network domain to another network device. Other network devices in the network domain which receive that packet can then make latency measurements, insert another tag, overwrite the tag, and perform various other operations described herein.
Reference is first made to
A packet 40 enters the network domain 10 at some edge node, e.g., network device 20(1) in the example of
A timestamp tag (TTAG) is inserted into a packet 40 by the edge network device 20(1) of the network domain 10. The TTAG includes timestamp information indicating time of arrival at network device 20(1). All of the network devices in the network domain 10 that receive the packet 40 (with the inserted TTAG) can perform measurements based on the timestamp information contained in TTAG inserted into packet 40, and perform other operations, including adding another TTAG, overwriting an existing TTAG, adding another timestamp value into an existing TTAG, etc., as will described in more detail hereinafter. As indicated in
The network devices 20(1)-20(N) shown in
Turning now to
The timestamp logic unit 23 generates a timestamp upon arrival of the packet at an ingress port 21 of the network device. The timestamp is with respect to the common time reference 30 used by all network devices in the network domain. The timestamp logic unit 23 may insert the TTAG into a packet 40 immediately upon arrival at the ingress port, and then forward the packet to be processed by the packet processing logic 26, insert the TTAG in parallel with the processing of the packet by the packet processing logic 26, or after processing of the packet by the packet processing logic 26. Examples of various formats of a TTAG are presented hereinafter in connection with
The timestamp logic unit 23 may also be configured to insert additional information into a TTAG, including one or more bits to indicate a validity of the timestamp value, one or more bits to indicate a timing precision of the timestamp value. In general, precision is system or network domain wide and is pre-negotiated among the network devices with respect to the common time reference 30. When a new timestamp value is to be inserted into a packet, a network device uses either ingress port timestamp from the common time reference 30 (synchronized clock) or an invalid value of zero. Invalid values are preserved across the network domain, as described further hereinafter.
Since any device can serve as an edge node in a network domain, each network device includes latency measurement 24 which is configured to perform a latency computation (current time minus the timestamp value contained in a TTAG of a received packet). For example, the latency measurement unit 24 in network device 20(2) may compute the latency associated with packet 40 using the timestamp value contained in the TTAG inserted by edge network device 20(1).
The CPU 28 may perform higher level latency analysis and reporting operations based on software instructions contained in memory 29. The memory 29 may also serve for additional storage of latency measurements. The CPU 28 may send latency measurements to a local or remotely located computing device that is used by a network administrator to monitor performance of network domain 20. Moreover, the CPU 28 in any given network device may receive commands or instructions from a network management station (
Memory 29 may comprise read only memory (ROM), random access memory (RAM), magnetic disk storage media devices, optical storage media devices, flash memory devices, electrical, optical, or other physical/tangible memory storage devices. The CPU is, for example, a microprocessor or microcontroller. Thus, in general, the memory 29 may comprise one or more tangible (non-transitory) computer readable storage media (e.g., a memory device) encoded with software comprising computer executable instructions and when the software is executed (by the CPU 28) it is operable to perform the operations described herein.
The timestamp logic unit 23 and latency measurement unit 24 may be embodied by digital logic gates configured to perform the operations described herein, or in another form, by software stored in memory 29 and executed by CPU 28 to perform the operations described herein. In another example, the timestamp logic unit 23 and latency measurement unit 24 may be integrated or embedded with the packet processing logic 26, which itself may be embodied by one or more application specific integrated circuits (ASICs).
As shown in
Reference is now made to
There is another way to signify an invalid timestamp value in a packet without using the explicit validity bit 130. A Timestamp subfield value of zero represents an invalid timestamp. Thus, when the value contained in Timestamp subfield 130 is all zeros, a network device construes this as indicating that the timestamp contained in the TTAG is invalid. The subfield can be compatible with timestamp always valid in the network when invalid capability is disabled in the network domain. Thus, a predetermined bit pattern (e.g., all zeros) in the Timestamp subfield 130 indicates that the timestamp information of the Timestamp subfield is not valid.
Turning to
In some implementations of the techniques described herein, the number of TTAGs that can be inserted into a packet is limited in number to, for example, six (6) or some number between one (1) and ten (10). In other implementations, the number of TTAGs that can be inserted into a packet is unlimited, in which any device that receives the packet within the network for passing the packet to a destination from a source can insert a TTAG into the packet. In some implementations, when the maximum number of TTAGs that can be inserted into a packet is reached, downstream network devices cannot insert TTAGs into the packet. In yet other implementations, when the maximum number of TTAGs that can be inserted into a packet is reached, downstream network devices are allowed to over-write TTAGs on a first-in, first-out basis.
There are numerous possibilities for locating the TTAG information in the packet. The TTAG can be inserted within a Layer 2 portion of the packet. This is in contrast to conventional approaches that perform application-specific packet time measurements at Layer 3. For example, one conventional packet time measurement approach collects runtime measurement of packets based on an application-specific determination of packet arrivals at Layer 3, as opposed to incorporating timestamp tag information directly into all packets at Layer 2 as accomplished using the techniques presented herein.
In some implementations, such as for Internet Protocol Version 4 (IPv4) or IPv6 packets, the TTAG can be provided immediately after the virtual local area network (VLAN) subfield and immediately before the IPv4 or IPv6 field in the packet header portion of the packet, in which the TTAG is meshed in the protocol stack within the header portion of the packet. Other locations for insertions of the TTAG within a packet may be envisioned while remaining within the spirit and scope of the techniques presented herein.
Turning now to
At 240, the first network device sends the packet to another network device in the network domain, using the normal packet processing functions for the packet. At 250, another network device in the network domain receives the packet, and can perform any one or more of: (i) measuring latency with respect to first network device based on timestamp information in tag, (ii) overwriting tag with new tag, (iii) adding an additional tag to the packet, and (iv) adding an additional timestamp to an existing tag, or (v) doing nothing and processing the packet in the normal course without performing any of operations (i)-)(iv).
At 250, the network device sends the packet on in the network in the ordinary course of packet processing. Operations 240 and 250 are repeated at subsequent network devices in the network domain as the packet travels through the network domain.
As explained above in connection with
Thus, particular implementations of the subject matter have been described. Other implementations are within the scope of the following claims. In some cases, the actions recited in the claims can be performed in a different order and still achieve desirable results. In addition, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In certain implementations, multitasking and parallel processing may be advantageous.
The above description is intended by way of example only.
Edsall, Thomas J., Huang, Wei-Jen, Huang, Chih-Tsung, Lin, Yichou
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
6246684, | Dec 24 1997 | RPX CLEARINGHOUSE LLC | Method and apparatus for re-ordering data packets in a network environment |
6690646, | Jul 13 1999 | GOOGLE LLC | Network capacity planning based on buffers occupancy monitoring |
6853623, | Mar 05 1999 | Cisco Technology, Inc. | Remote monitoring of switch network |
6892237, | Mar 28 2000 | Cisco Technology, Inc. | Method and apparatus for high-speed parsing of network messages |
6990202, | Oct 04 2001 | HEWLETT-PACKARD DEVELOPMENT COMPANY L P | Packetizing devices for secure scalable data streaming |
7106731, | Dec 31 1997 | Cisco Technology, Inc. | Router with class of service mapping |
7395332, | Mar 28 2000 | Cisco Technology, Inc. | Method and apparatus for high-speed parsing of network messages |
7474666, | Sep 03 2003 | Cisco Systems, Inc; Cisco Technology, Inc | Switch port analyzers |
7539777, | Oct 25 2002 | Cisco Technology, Inc. | Method and system for network time protocol forwarding |
7656818, | Oct 28 2005 | Cisco Technology, Inc. | Customizable network device management methods and systems |
7792130, | Aug 12 2007 | VIVO MOBILE COMMUNICATION CO , LTD | Wireless device and method of transmitting uplink data and buffer status reports in a wireless communications system |
7830793, | Oct 22 2004 | Cisco Technology, Inc. | Network device architecture for consolidating input/output and reducing latency |
7899048, | Jan 15 2003 | Cisco Technology, Inc. | Method and apparatus for remotely monitoring network traffic through a generic network |
7961621, | Oct 11 2005 | Cisco Technology, Inc. | Methods and devices for backward congestion notification |
7969971, | Oct 22 2004 | Cisco Technology, Inc. | Ethernet extension for the data center |
8116307, | Sep 23 2004 | Juniper Networks, Inc | Packet structure for mirrored traffic flow |
8166216, | Dec 29 2006 | CAVIUM INTERNATIONAL; MARVELL ASIA PTE, LTD | Floating frame timing circuits for network devices |
8208389, | Jul 20 2006 | Cisco Technology, Inc.; Cisco Technology, Inc | Methods and apparatus for improved determination of network metrics |
8274905, | Aug 22 2006 | CenturyLink Intellectual Property LLC | System and method for displaying a graph representative of network performance over a time period |
8605588, | May 08 2007 | Cisco Technology, Inc. | Packet drop analysis for flows of data |
8640036, | Apr 07 2010 | Cisco Techology, Inc. | Messaging and presence protocol as a configuration and management bus for embedded devices |
8681806, | Jun 23 2008 | Koninklijke Philips Electronics N V | Method for communicating in a network and radio stations associated |
8718482, | Nov 10 2009 | CALIX, INC | Transparent clock for precision timing distribution |
20030231596, | |||
20040105392, | |||
20060007939, | |||
20060062209, | |||
20060253900, | |||
20060268847, | |||
20070230697, | |||
20080013475, | |||
20080019282, | |||
20080159260, | |||
20080279181, | |||
20090034416, | |||
20090041011, | |||
20090100040, | |||
20090122805, | |||
20090171474, | |||
20100054152, | |||
20100154033, | |||
20110044173, | |||
20110069626, | |||
20110149998, | |||
20110222412, | |||
20120106576, | |||
20120320933, | |||
20130036239, | |||
WO2008097001, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Dec 03 2012 | HUANG, WEI-JEN | Cisco Technology, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 055445 | /0278 | |
Dec 03 2012 | HUANG, CHIH-TSUNG | Cisco Technology, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 055445 | /0278 | |
Dec 03 2012 | LIN, YICHOU | Cisco Technology, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 055445 | /0278 | |
Dec 07 2012 | EDSALL, THOMAS J | Cisco Technology, Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 055445 | /0278 | |
May 01 2019 | Cisco Technology, Inc. | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
May 01 2019 | BIG: Entity status set to Undiscounted (note the period is included in the code). |
Oct 21 2024 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Date | Maintenance Schedule |
Jan 16 2027 | 4 years fee payment window open |
Jul 16 2027 | 6 months grace period start (w surcharge) |
Jan 16 2028 | patent expiry (for year 4) |
Jan 16 2030 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jan 16 2031 | 8 years fee payment window open |
Jul 16 2031 | 6 months grace period start (w surcharge) |
Jan 16 2032 | patent expiry (for year 8) |
Jan 16 2034 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jan 16 2035 | 12 years fee payment window open |
Jul 16 2035 | 6 months grace period start (w surcharge) |
Jan 16 2036 | patent expiry (for year 12) |
Jan 16 2038 | 2 years to revive unintentionally abandoned end. (for year 12) |