US20180278514A1 - Traceroute for multi-path routing - Google Patents

Traceroute for multi-path routing Download PDF

Info

Publication number
US20180278514A1
US20180278514A1 US15/470,427 US201715470427A US2018278514A1 US 20180278514 A1 US20180278514 A1 US 20180278514A1 US 201715470427 A US201715470427 A US 201715470427A US 2018278514 A1 US2018278514 A1 US 2018278514A1
Authority
US
United States
Prior art keywords
network device
traceroute
router
paths
packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US15/470,427
Inventor
Ankit Chadha
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Juniper Networks Inc
Original Assignee
Juniper Networks Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Juniper Networks Inc filed Critical Juniper Networks Inc
Priority to US15/470,427 priority Critical patent/US20180278514A1/en
Assigned to JUNIPER NETWORKS, INC. reassignment JUNIPER NETWORKS, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: CHADHA, ANKIT
Priority to CN201711465522.9A priority patent/CN108667681B/en
Priority to EP18152156.8A priority patent/EP3382954B1/en
Publication of US20180278514A1 publication Critical patent/US20180278514A1/en
Priority to US17/821,998 priority patent/US20220407800A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/10Active monitoring, e.g. heartbeat, ping or trace-route
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/20Hop count for routing purposes, e.g. TTL
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/26Route discovery packet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/28Flow control; Congestion control in relation to timing considerations
    • H04L47/286Time to live
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/20Network management software packages

Definitions

  • the invention relates to computer networks and, more particularly, to software utilities for determining the status of computer network connections.
  • a computer network is a collection of interconnected computing devices that can exchange data and share resources.
  • the computing devices communicate data by dividing the data into small blocks called packets, which are individually routed across the network from a source device to a destination device.
  • the destination device extracts the data from the packets and assembles the data into its original form.
  • routers maintain routing information that describes routes through the network.
  • a “route” can generally be defined as a path between two locations on the network.
  • the router Upon receiving an incoming packet, the router examines information within the packet to identify the destination for the packet. Based on the destination, the router forwards the packet in accordance with the routing information.
  • traceroute allows a source network device to identify a network path from the source network device to a destination network device.
  • the traceroute utility determines the network path to a target network device by recording an Internet Control Message Protocol (ICMP) echo request packet's path from the source device to a specified network destination.
  • ICMP Internet Control Message Protocol
  • the traceroute typically displays how many hops the packet traveled to reach the network destination, identifies each hop along the path by its network address, and shows the round-trip time for reaching each hop.
  • this disclosure describes techniques for extending network connectivity software utilities, such as traceroute, to provide complete visibility into a network topology between a source device and a destination device, even when an intermediate network device may be actively utilizing multiple network links when forwarding packets toward the destination.
  • a network device in the network path such as an intermediate router, may be configured to actively utilize multiple paths, i.e., links, when forwarding traffic to reach a destination network device.
  • the intermediate device may be configured to generally apply equal cost multi-path for forwarding packets on any of a set of active links based on a hashing operation.
  • the intermediate network device may utilize respective sessions to track forwarding of a corresponding traceroute packet along each of the active multiple paths. For example, in response to receiving a traceroute packet specifying the network destination, the intermediate network device may configure and output a respective modified traceroute packet on each of the corresponding paths leading from the network device toward the destination.
  • the respective modified traceroute packets may each include a respective identifier associated with the corresponding path of the multiple paths. The network device forwards the respective modified traceroute packets along the corresponding paths such that each path may be traced by its respective traceroute packet.
  • a subsequent network device along each of the paths receives the modified traceroute packet for a given path and configures a response to include an identifier associated with the corresponding path.
  • the network device may associate the response with the particular path along which the modified traceroute packet was forwarded to the network device.
  • the source network device updates the results of the traceroute utility to reflect each of the multiple paths within the network and configures a new traceroute packet with an incremented Time-to-Live (TTL) value and sends the traceroute packet towards the destination network device.
  • TTL Time-to-Live
  • the source network device continues this process until a response is received from the destination network device.
  • the traceroute packets and the responses may provide source network device with complete visibility even when a given intermediate device may be actively forwarding packets destined for the destination, even for the same packet flow, along multiple network paths.
  • a method may include receiving, by a network device coupled to a plurality of paths for reaching a destination network device and positioned between a source network device and the destination network device, a traceroute packet.
  • the method may also include, for each of the plurality of paths, modifying, by the network device, a payload of the traceroute packet to include a respective identifier for a corresponding path of the plurality of paths to construct a respective modified traceroute packet for the corresponding path.
  • the method may also include forwarding, by the network device, the respective modified traceroute packets on the corresponding paths.
  • a method may include sending, by a source network device, a traceroute packet to an intermediate network device coupled to a plurality of paths for reaching a destination network device, wherein the intermediate network device is positioned between the source network device and the destination network device.
  • the method may also include receiving, by the source network device and from the intermediate network device, one or more respective responses, wherein each of the one or more respective responses comprises a payload including a respective identifier for a corresponding path of the plurality of paths.
  • a network device may include a plurality of network interfaces, each of the network interfaces coupled to a different one of a plurality of paths for reaching a destination network device, wherein the network device is positioned between a source network device and the destination network device.
  • the network device may also include one or more hardware-based processors configured to: receive a traceroute packet destined for the destination device; for each of the plurality of paths, modify a payload of the traceroute packet to include a respective identifier for a corresponding path of the plurality of paths to construct a respective modified traceroute packet for the corresponding path; and forward the respective modified traceroute packets on the corresponding paths.
  • a source network device may include one or more hardware-based processors configured to: send a traceroute packet toward a destination network device; and receive one or more respective responses, wherein each of the one or more respective responses comprises a payload including a respective identifier for a corresponding path of a plurality of paths of an intermediate network device, wherein the intermediate network device is positioned between the source network device and the destination network device.
  • FIG. 1 is a block diagram illustrating an example network system in which intermediate network devices have been enhanced so as to enable a software utility, such as traceroute, to trace and report on connectivity information from a source destination to a destination device, even when one or more of the intermediate network device utilize multiple, active links when forwarding packets of the utility toward the destination.
  • a software utility such as traceroute
  • FIG. 2 is a block diagram illustrating an example of a router, in accordance with the techniques of described in this disclosure.
  • FIG. 3 is a block diagram illustrating an example of a network device, such as source network device of FIG. 1 , that allows administrator to implement traceroute of a plurality of paths, in accordance with the techniques described herein.
  • FIG. 4 is a block diagram illustrating an example format of a traceroute packet for use in tracing multiple paths, in accordance with the techniques described herein.
  • FIG. 5 is a block diagram illustrating an example format of a response packet for use in tracing multiple paths, in accordance with the techniques described herein.
  • FIG. 6 is a flowchart illustrating an example operation of network system, in accordance with the techniques described in this disclosure.
  • FIG. 7 is a flowchart illustrating an example operation of network device, in accordance with the techniques described in this disclosure.
  • FIG. 8 is a flowchart illustrating an example operation of source network device, in accordance with the techniques described in this disclosure.
  • FIG. 1 is a block diagram illustrating an example network system in which intermediate network devices have been enhanced so as to enable a software utility, such as traceroute, to trace and report on connectivity information from a source destination to a destination device, even when one or more of the intermediate network device utilize multiple, active links when forwarding packets of the utility toward the destination.
  • source network device 12 and network device 18 A- 18 E (collectively, “network devices 18 ” or “routers 18 ”) support use of the extended traceroute that has been extended to facilitate exploration of a network topology of each of the multiple paths when forwarding traffic to reach a destination network device.
  • network system 10 includes source network device 12 and destination network device 14 connected across network 8 via intermediate routers, switches, and other network devices, shown for purposes of examples as routers 18 .
  • Network 8 may comprise a public network such as the Internet, a private network, such as those owned and operated by an enterprise or service provider or a combination of both public and private networks.
  • network 8 may be alternatively referred to herein as a Service Provider (SP) network.
  • SP Service Provider
  • Network 8 may include one or more Wide Area Networks (WANs), Local Area Networks (LANs), Virtual Local Area Networks (VLANs), Virtual Private Networks (VPNs), and/or another type of network.
  • WANs Wide Area Networks
  • LANs Local Area Networks
  • VLANs Virtual Local Area Networks
  • VPNs Virtual Private Networks
  • network 8 may be an Internet Protocol (IP) network in which routers 18 use IP forwarding for transporting network packets.
  • IP Internet Protocol
  • network 8 may be a label switching network in which network devices such as routers 18 , often referred to as Label Switching Routers or LSRs, use Multi-Protocol Label Switching (MPLS) signaling protocols to establish Label Switched Paths (LSPs) for transporting the network packets received from source devices 12 .
  • MPLS Multi-Protocol Label Switching
  • the MPLS data-carrying mechanism of network 8 may be viewed as lying between layer 2 and layer 3 of the Open Systems Interconnection (OSI) model and is often referred to as a layer 2.5 protocol. Reference to layers followed by a numeral may refer to a particular layer of the OSI model.
  • OSI Open Systems Interconnection
  • OSI Reference Model the ISO Model of Architecture for Open Systems Interconnection
  • Hubert Zimmermann published in IEEE Transactions on Communications, vol. 28, no. 4, dated April 1980, which is hereby incorporated by reference as if fully set forth herein.
  • Further information regarding MPLS and the various features of MPLS, as well as, general architectural information regarding MPLS can be found in Request for Comments (RFC) 3031, titled “Multiprotocol Label Switching Architecture,” prepared by the Network Working Group of the Internet Engineering Task Force (IETF), dated January 2001, incorporated by reference herein.
  • RRC Request for Comments
  • network 8 may comprise any number of interconnected networks, either public or private, in which the various networks interconnect to form various virtual networks.
  • network 8 may include a variety of other network devices for forwarding network traffic, such as additional routers, switches, or bridges.
  • additional routers, switches, or bridges may be included in a single network or within multiple networks.
  • routers 18 may reside in a single network or within multiple networks. Although described with respect to routers, aspects of the techniques are applicable to other network devices, such as bridges, switches, gateways, network caches, and network acceleration devices.
  • source network device 12 and destination network device 14 may each be a personal computer, a laptop computer, a mobile telephone, a network telephone, a television set-top box, a network device integrated into a vehicle, a video game system, a point-of-sale device, a personal digital assistant, an intermediate network device, a network appliance, a supercomputer, a mainframe computer, or another type of device capable of interfacing with and communicating over network 8 .
  • a number of physical and/or virtual communication links 15 A- 15 H (collectively, “links 15 ”) of network 8 interconnect routers 18 to facilitate control and data communication between the routers.
  • Physical links of network 8 may include, for example, Ethernet PHY, Synchronous Optical Networking (SONET)/Synchronous Digital Hierarchy (SDH), Lambda, or other Layer 2 data links that include packet transport capability.
  • Logical links of network 8 may include, for example, an Ethernet Virtual LAN, an MPLS LSP, or an MPLS-TE LSP.
  • source network device 12 connects to network 8 via access link 15 A
  • destination network device 14 connects to network 8 via access links 15 G and/or 15 H
  • routers 18 communicate via access links 15 B- 15 F.
  • Access links 15 may comprise wired and/or wireless communication links.
  • the term “communication link,” as used herein, comprises any form of transport medium, wired or wireless, and can include intermediate nodes such as network devices.
  • Each of access links 15 may comprise, for instance, aspects of an asymmetric DSL network, WiMAX, a T-1 line, an Integrated Service Digital Network (ISDN), or wired Ethernet.
  • ISDN Integrated Service Digital Network
  • Routers 18 maintain routing information that describes available routes through network 8 .
  • the receiving router Upon receiving an incoming packet, the receiving router examines information within the packet and forwards the packet in accordance with the routing information.
  • the routers exchange routing information, e.g., bandwidth availability of links, in accordance with a defined routing protocol, such as an Interior Gateway Protocol (IGP), Open Shortest Path First (OSPF), Intermediate System-Intermediate System (IS-IS) or Routing Information Protocol (RIP).
  • IGP Interior Gateway Protocol
  • OSPF Open Shortest Path First
  • IS-IS Intermediate System-Intermediate System
  • RIP Routing Information Protocol
  • ECMP Equal-Cost Multipath
  • a router implementing ECMP may identify, when forwarding a packet, which next-hop (path) of a plurality of next-hops to use, and may output the packet on a given link based on the selection. For example, the router may determine the next-hop using hash-threshold, Modulo-N, and/or Highest random weight (HRW) techniques.
  • HRW Highest random weight
  • ECMP ECMP
  • Request for Comments (RFC) 2991 titled “Multipath Issues in Unicast and Multicast Next-Hop Selection,” prepared by the Network Working Group of the Internet Engineering Task Force (IETF), dated November 2000, and RFC 2992, titled “Analysis of an Equal-Cost Multi-Path Algorithm,” IETF, dated November 2000, both incorporated by reference herein.
  • RFC 2992 titled “Analysis of an Equal-Cost Multi-Path Algorithm,” IETF, dated November 2000, both incorporated by reference herein.
  • FIG. 1 are illustrated with respect to Equal-Cost Multi-Path (ECMP) paths, network system 10 may include other types of multipath routing.
  • the techniques described herein are not limited to ECMP topologies and may be advantageous in any network where an intermediate device is actively forward packets destined for a destination device, even traceroute packets targeting the destination device, along any of a plurality of paths toward the destination.
  • Other examples include weighted ECMP.
  • Source network device 12 may typically use traceroute to identify a network path from source network device 12 to destination network device 14 . Using traceroute, source network device 12 sends a traceroute packet towards destination network device 14 .
  • Source network device 12 may implement traceroute and send a traceroute packet toward destination network device 14 with an initial hop count, e.g., a Time-to-Live (TTL) value.
  • a receiving router e.g., “intermediary router”
  • the router typically sends a response, e.g., TTL expired message, port-unreachable, and Error/TimeOut packets, back to source network device 12 informing the source network device that the packet was received and the hop count has expired.
  • Source network device 12 receives the response and configures a traceroute tree based on the response.
  • Source network device 12 proceeds to send another traceroute packet with an incremented TTL value such that the traceroute packet reaches the next device in the path, and continues this process until the destination device is reached.
  • a router e.g., router 18 A
  • the traceroute packet may use a different port number from previous traceroute packets.
  • router 18 A may forward the traceroute packet toward the destination network device along a different one of 15 B, 15 C since the port-number is often considered when calculating the next-hop hash, e.g., part of a 5-tuple.
  • the 5-tuple within a header of a packet, such as the traceroute packet being forwarded, may include: ⁇ source network address, destination network address, source port, destination port, protocol>, for example.
  • the trace of a network path of a network device e.g., router 18 A
  • ECMP or other technique to actively forward packets destined for the same destination along multiple paths
  • the traceroute responses do not provide source network device 12 a complete picture of each path of router 18 A's multiple paths, and the conventional traceroute utility provides incomplete or inaccurate results, if any.
  • intermediate devices such as routers 18 are configured to enhance the traceroute packets to provide complete visibility of multiple paths of a network device. For example, responsive to receiving a traceroute packet to be forwarded toward the destination, any of routers 18 currently applying ECMP or other technique to actively utilize multiple paths toward the destination may generate, configure and output a respective modified traceroute packet along each of the multiple paths such that each of the paths may be individually identified.
  • administrator 16 accesses source network device 12 and invokes a diagnostic software utility, such as traceroute, to initiate a traceroute request.
  • the software utility executing on source device 12 may configure a traceroute packet, e.g., protocol data unit (PDU) packet, with an identifier associated with a network path for which the traceroute packet is to be forwarded on.
  • source network device 12 may initially configure a traceroute packet with a TTL value of one and may include a “session-stack” in the traceroute payload comprising a network address of source network device 12 and a session identifier representing the path to router 18 A. That is, the session-stack may indicate the forwarding network device and the path that the packet was forwarded.
  • source network device 12 may configure the session-stack as 10.1.1.1:1, which includes the IP address of source network device 12 (e.g., 10.1.1.1) and a session number of one that is associated with the single next-hop path from source device 12 .
  • Source network device 12 may send the traceroute packet upstream towards destination network device 14 .
  • Router 18 A may receive the traceroute packet.
  • router 18 A may process the traceroute packet by decrementing the TTL value and determining whether the TTL value is zero.
  • router 18 A may determine that the TTL value is zero and may configure a response packet, e.g., a TTL expired packet, to include a payload having a “reverse-session-stack” with values copied from the received session-stack (e.g., 10.1.1.1:1).
  • Router 18 A sends the response packet back toward source network device 12 .
  • Source network device 12 receives the response packet and may determine, based on the reverse-session-stack of the response packet, that router 18 A is the next-hop for source device 12 along a single path via access link 15 A.
  • source device 12 may configure and send a new traceroute packet with an incremented TTL value toward destination network device 14 to identify the one or more next-hops in the path.
  • source network device 12 may send another traceroute packet as described above (e.g., 10.1.1.1:1) with an incremented TTL value of two.
  • router 18 A receives the traceroute packet, router 18 A decrements the TTL value and determines that the TTL value is greater than one. In response, router 18 A may forward the traceroute packet to a next-hop.
  • router 18 A may output a message to inform source network device 12 as to the number of active forwarding paths (links 15 B, 15 C) available to router 18 A for reaching destination network device 14 . Because router 18 A is configured to select between any of the active multiple paths for the traceroute packet, router 18 A may configure respective modified traceroute packets for each of the multiple paths. In the example of FIG. 1 , router 18 A may perform a destination lookup on the received traceroute packet and determine, based on its internal routing information, that it is configured to forward packets destined for the destination along any of two active paths, i.e., the paths leading to routers 18 B, 18 C, respectively.
  • Router 18 A may inform source network device 12 as to the existence of the two viable paths for the traceroute packet.
  • router 18 A may inform source network device 12 of the number of paths by configuring an indicator 13 such as a new utility PDU packet to include a tally of the next-hop paths and/or network addresses of next-hop routers on the next-hop paths.
  • routers 18 B, 18 C are each a next-hop router to router 18 A via links 15 B, 15 C, respectively.
  • router 18 B may have an IP address of 10.39.1.1 and router 18 C may have an IP address of 10.100.1.1.
  • Router 18 A may configure a new utility PDU packet as a list of strings, e.g., ⁇ 2, 10.39.1.1, 10.100.1.1 ⁇ , to inform source network device 12 that router 18 A has two next-hop paths to routers 18 B and 18 C, for example. Router 18 A may send indicator 13 to source network device 12 .
  • Source network device 12 may receive indicator 13 and may delay constructing a new traceroute packet with an incremented TTL value until it determines, based on indicator 13 , that it has received a response to the corresponding traceroute packets generated by router 18 A and output along each of the multiple paths leading from router 18 A toward the destination.
  • Router 18 A may configure a respective modified traceroute packet to be forwarded to each of the paths to routers 18 B and 18 C. For example, router 18 A may modify the received traceroute packet to include a respective identifier associated with a path to router 18 B. In another example, router 18 A may modify the received traceroute packet to include a respective identifier associated with a path to router 18 C.
  • router 18 A may configure respective identifiers representing sessions 16 , 17 for each path to router 18 B and router 18 C, respectively.
  • router 18 A may configure one modified traceroute packet to include an identifier representing the path to router 18 B, which is denoted by session 16 .
  • Router 18 A may send the modified traceroute packet to router 18 B via access link 15 B.
  • router 18 A may also configure another modified traceroute packet to include an identifier representing the path to router 18 C, which is denoted by session 17 . Router 18 A may send this modified traceroute packet to router 18 C via access link 15 C. In some examples, router 18 A may send the respective modified traceroute packets to the corresponding paths in parallel. In other examples, router 18 A may send the respective modified traceroute packets to the corresponding paths sequentially. In any event, router 18 A may send a respective modified traceroute packet on the corresponding paths to trace the next-hop along each of the paths to routers 18 B and 18 C.
  • router 18 A may, for example, modify a payload of the traceroute packet to include a session-stack that comprises at least its network address (e.g., 192, 168.0.2) and a session identifier (e.g., 1) that associates router 18 A with the path to router 18 B via link 15 B.
  • Router 18 A may send the modified traceroute packet on access link 15 B toward router 18 B.
  • Router 18 B receives the modified traceroute packet, decrements the TTL value, and may determine that the TTL value is zero for which router 18 B is to construct response 20 A.
  • router 18 B may configure a TTL expired packet with a reverse-session-stack that may include the session-stack value received from router 18 A (e.g., 10.1.1.1:1, 192.168.0.2:1).
  • router 18 A may, for example, modify a payload of the traceroute packet to include a session-stack that comprises at least its network address (e.g., 192. 168.0.2) and a session number (e.g., 2) that associates router 18 A with the path to router 18 C via link 15 C (e.g., session 17 ).
  • Router 18 A may send the modified traceroute packet on access link 15 C toward router 18 C.
  • Router 18 C receives the modified traceroute packet, decrements the TTL value, and determines that the TTL value is zero for which router 18 C is to construct response 20 B.
  • router 18 C may configure a TTL expired packet with a reverse-session-stack that includes the session-stack value received from router 18 A (e.g., 10.1.1.1:1, 192.168.0.2:2).
  • Routers 18 B and 18 C may each send their response (e.g., 20 A, 20 B) downstream toward router 18 A.
  • Source network device 12 may receive responses 20 A, 20 B with their respective reverse-session stacks, and may determine, from the respective identifiers, that router 18 B is a next-hop for one path of router 18 A, and router 18 C is a next-hop for another path of router 18 A.
  • source network device 12 may receive from router 18 B a response including a reverse-session-stack of “10.1.1.1:1, 192.168.0.2:1” for which source network device 12 may determine that router 18 B is associated with session identifier “1,” which represents the trace for session 16 .
  • Source network device 12 may also receive from router 18 C a response including a reverse-session-stack of “10.1.1.1:1, 192,168.0.2:2” for which source network device 12 may determine that router 18 C is associated with session identifier “2,” which represents the trace for session 17 .
  • source network device 12 may determine from indicator 13 that router 18 A has two paths. Based on the information from indicator 13 , source network device 12 may configure a new traceroute packet with an incremented TTL value when a response is received for all paths of router 18 A. For example, when source network device 12 receives a response from router 18 B with an identifier of a path from router 18 A to router 18 B and a response from router 18 C with an identifier of a path from router 18 A to router 18 C, source network device 12 may determine, based on indicator 13 , that a response was received for all paths of router 18 A. In response, router 18 A may configure a traceroute tree of the paths of router 18 A and may configure a new traceroute packet with an incremented TTL value. Source network device 12 may send the new traceroute packet towards destination network device 14 to identify the next-hop in the path.
  • source network device 12 may increment the TTL value to three and send a new traceroute packet (e.g., 10.1.1.1:1) toward destination network device 14 . Since the TTL value is greater than one, router 18 A may forward the traceroute packet after modifying the traceroute packet to include its network address and a respective session identifier associated with a corresponding next-hop path connected to the router.
  • a new traceroute packet e.g., 10.1.1.1:1
  • router 18 A may forward the traceroute packet after modifying the traceroute packet to include its network address and a respective session identifier associated with a corresponding next-hop path connected to the router.
  • router 18 A decrements the TTL value to two and modifies the received traceroute packet having a current session-stack (e.g., 10.1.1.1:1) to include the network address of router 18 A (e.g., 192.168.0.2) and a session number (e.g., 1) to construct a modified traceroute packet with an updated session-stack (e.g., 10.1.1.1:1, 192.168.0.2:1) that represents the path from source network device 12 to router 18 B.
  • a current session-stack e.g., 10.1.1.1:1
  • an updated session-stack e.g., 10.1.1.1:1, 192.168.0.2:1
  • router 18 B When router 18 B receives the modified traceroute packet from router 18 A, router 18 B decrements the TTL value and determines that the TTL value is not zero for which router 18 B is to forward the modified traceroute to its next-hop. Router 18 B may perform a destination lookup and determine that router 18 B has a single path to router 18 D. Router 18 B configures an indicator (not shown) to inform source network device 12 of the number of paths available to router 18 B. For example, router 18 B may configure a new utility PDU packet as ⁇ 1, 10.168.1.224 ⁇ , which may include a tally of available next-hop paths (e.g., 1) to router 18 B and the network address of router 18 D (e.g., 10.168.1.224) that is coupled to the path. Router 18 B may send the new utility PDU packet to source network device 12 such that source network device 12 is informed of the number of paths for router 18 B.
  • a new utility PDU packet may include a tally of available next-hop paths (e.g.
  • router 18 B may further modify the modified traceroute packet to include an identifier representing the path to router 18 D.
  • router 18 B may further modify the modified traceroute packet that has a current session-stack (e.g., 10.1.1.1:1, 192.168.0.2:1) to include its network address (e.g., 10.39.1.1) and a session identifier (e.g., 1) to construct a modified traceroute packet having an updated session-stack (e.g., 10.1.1.1:1, 192.168.0.2:1, 10.39.1.1:1) to represent a path from source network device 12 to router 18 D.
  • Router 18 B then sends the modified traceroute packet to router 18 D.
  • Router 18 D receives the modified traceroute packet, decrements the TTL value, and may determine that the TTL value is zero for which router 18 D is to construct a response.
  • router 18 D may configure a TTL expired packet with a reverse-session-stack copied from the updated session-stack received from router 18 B, and sends the response downstream toward source network device 12 .
  • Source network device 12 may receive the response with the reverse-session-stack, and may determine, from an identifier in the updated session-stack, that router 18 D is a next-next-hop for one path of router 18 A.
  • source network device 12 may update the traceroute tree to include routers 18 B and 18 D as the next-hop, and next-next-hop for session 16 of router 18 A.
  • router 18 A decrements the TTL value to two and modifies the received traceroute packet having a current session-stack (e.g., 10.1.1.1:1) to include the network address of router 18 A (e.g., 192.168.0.2) and a session identifier (e.g., 2) to construct a modified traceroute packet with an updated session-stack (e.g., 10.1.1.1:1, 192.168.0.2:2) that represents the path from router 18 A to router 18 C.
  • a current session-stack e.g., 10.1.1.1:1
  • a session identifier e.g., 2
  • an updated session-stack e.g., 10.1.1.1:1, 192.168.0.2:2
  • Router 18 C may perform a destination lookup and determine that it has two paths to routers 18 D, 18 E, respectively.
  • Router 18 C may configure an indicator (not shown) to inform source network device 12 of the number of paths.
  • router 18 D may configure a new utility PDU packet as ⁇ 2, 10.168.1.224, 100.200.2.2 ⁇ , which may include a tally of the available next-hops (e.g., 2) to routers 18 D and 18 E, respectively, and include the network addresses of router 18 D (e.g., 10.168.1.224) and router 18 E (e.g., 100.200.2.2) that is coupled to the paths.
  • Router 18 D may send the indicator to source network device 12 such that source network device 12 is informed of the number of paths for router 18 D.
  • router 18 C may configure respective identifiers representing sessions 18 , 19 for each path to router 18 D and router 18 E, respectively.
  • router 18 C may configure one modified traceroute packet to include an identifier representing the path to router 18 D, which is denoted by session 18 .
  • Router 18 C may send the modified traceroute packet to router 18 D via access link 15 E.
  • router 18 C may also configure another modified traceroute packet to include an identifier representing the path to router 18 E, which is denoted by session 19 . Router 18 C may send this modified traceroute packet to router 18 E via access link 15 F. In some examples, router 18 C may send the respective modified traceroute packets to the corresponding paths in parallel, and in other examples, may send the respective modified traceroute packets to the corresponding paths sequentially. In any event, router 18 C may send a respective modified traceroute packet on the corresponding paths to trace the next-hop along each of the paths to routers 18 D and 18 E.
  • router 18 C may, for example, further modify the payload of the modified traceroute packet to include a session-stack comprising at least its network address (e.g., 10.100.1.1) and a session identifier (e.g., 1) that associates router 18 C with the path to router 18 D via link 15 E (e.g., session 18 ). That is, router 18 C may modify the current session-stack (e.g., 10.1.1.1:1, 192.168.0.2:2) with the above information to construct an updated session-stack (e.g., 10.1.1.1:1, 192.168.0.2:2, 10.100.1.1:1) to represent the path to router 18 D. Router 18 C may send the modified traceroute packet on access link 15 E toward router 18 D.
  • a session-stack comprising at least its network address (e.g., 10.100.1.1) and a session identifier (e.g., 1) that associates router 18 C with the path to router 18 D via link 15 E (e.g.
  • Router 18 D receives the modified traceroute packet, decrements the TTL value, and may determine that the TTL value is zero for which router 18 D is to construct response 21 A. In this example, router 18 D may configure a TTL expired packet with a reverse-session-stack that includes the session-stack value received from router 18 C. Router 18 D sends the response with the reverse-session-stack downstream toward source network device 12 .
  • router 18 C may, for example, further modify the payload of the modified traceroute packet to include a session-stack comprising at least its network address (e.g., 10.100.1.1) and a session identifier (e.g., 2) that associates router 18 C with the path to router 18 E via link 15 F (e.g., session 19 ). That is, router 18 C may modify the current session-stack (e.g., 10.1.1.1:1, 192.168.0.2:2) with the above information to construct an updated session-stack (e.g., 10.1.1.1:1, 192.168.0.2:2, 10.100.1.1:2) to represent the path to router 18 E. Router 18 C may send the modified traceroute packet on access link 15 F toward router 18 E.
  • a session-stack comprising at least its network address (e.g., 10.100.1.1) and a session identifier (e.g., 2) that associates router 18 C with the path to router 18 E via link 15 F (e.g.
  • Router 18 E receives the modified traceroute packet, decrements the TTL value, and may determine that the TTL value is zero for which router 18 E is to construct response 21 B. In this example, router 18 E may configure a TTL expired packet with a reverse-session-stack that includes the session-stack received from router 18 C, and send the response downstream toward source network device 12 .
  • Source network device 12 may receive responses 21 A, 21 B with their respective reverse-session stacks, and may determine, from the respective identifiers, that router 18 D is a next-hop for one path of router 18 C and router 18 E is a next-hop for another path of router 18 C. In accordance with the techniques described herein, source device 12 may determine that one path to reach router 18 D includes routers 18 A, 18 B, and another path to reach router 18 D includes routers 18 A, 18 C. That is, source device 12 may trace the paths for each of the ECMP routes.
  • source network device 12 may receive from router 18 D a response including a reverse-session-stack of “10.1.1.1:1, 192.168.0.2:2, 10.100.1.1:1” for which source network device 12 may determine that router 18 D is associated with session identifier “1,” which represents the trace for session 18 .
  • Source network device 12 may also receive from router 18 E a response including a reverse-session-stack of “10.1.1.1:1, 192,168.0.2:2, 10.100.1.1:2” for which source network device 12 may determine that router 18 C is associated with session identifier “2,” which represents the trace for session 19 .
  • source network device 12 may send a new traceroute packet with an incremented TTL value upstream towards destination network device 14 .
  • Source network device 12 continues this process until a response from destination network device 14 is received.
  • source network device 12 may send a traceroute packet with a TTL value of four towards destination network device 14 , such that destination device 14 receives the traceroute packet from either routers 18 D or 18 E and returns a port-unreachable message to signal the trace is complete.
  • source network device 12 may configure a final traceroute tree based on the responses, which is logically represented as:
  • FIG. 2 is a block diagram illustrating an example of a router, in accordance with the techniques of described in this disclosure.
  • router 18 may represent any of routers 18 of FIG. 1 .
  • Router 18 includes a control unit 32 that includes a routing engine 34 .
  • Router 18 includes interface cards 88 A- 88 N (collectively, “IFCs 88 ”) that send and receive packet flows via inbound network links 90 A- 90 N (collectively, “inbound network links 90 ”) and outbound network links 92 A- 92 N (collectively, “outbound network links 92 ”), respectively.
  • IFCs 88 are typically coupled to links 90 , 92 via a number of interface ports (not shown).
  • Inbound links 90 and outbound links 92 may represent physical interfaces, logical interfaces, or some combination thereof.
  • Routing engine 34 provides an operating environment for various protocols 44 that execute at different layers of a network stack. Routing engine 34 is responsible for the maintenance of routing information 40 to reflect the current topology of a network and other network entities to which router 18 is connected. In particular, routing protocols periodically update routing information 40 to accurately reflect the topology of the network and other entities based on routing protocol messages received by router 18 .
  • the protocols may be software processes executing on one or more processors.
  • routing engine 34 includes network protocols that operate at a network layer of the network stack. In the example of FIG. 2 , network protocols include TCP/IP 46 .
  • Routing engine 34 may also include various messaging protocols, including Internet Control Message Protocol (ICMP) 48 and User Datagram Protocol (UDP) 49 to implement traceroute techniques described in this disclosure.
  • ICMP 48 may include ICMP version 4, as illustrated in Request for Comments (RFC) 792, titled “Internet Control Message Protocol,” prepared by the Network Working Group of the Internet Engineering Task Force (IETF), dated September 1981, and ICMP version 6, as illustrated in Request for Comments (RFC) 4443, titled “Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6), both incorporated by reference herein.
  • Router 18 may use ICMP 48 to convey control information, such as an ICMP traceroute request, to source network device 12 .
  • UDP 49 may also provide a procedure for which router 18 A may send traceroute messages to other network devices, as illustrated in Request for Comments (RFC) 768, titled “User Datagram Protocol,” dated Aug. 28, 1980, incorporated by reference herein.
  • Routing engine 34 may include other routing and/or messaging protocols not shown in FIG. 2 .
  • Routing engine 34 may also include a traceroute module 42 .
  • traceroute module 42 may execute in the control plane of router 18 . Although the examples of traceroute module 42 are described with respect to the control plane, traceroute module 42 may be configured to execute in either the control plane, the forwarding plane, or both.
  • router 18 may receive a traceroute packet including a TTL value from any of inbound links 90 .
  • forwarding engine 36 may decrement the TTL value and determine that the TTL value is not zero.
  • traceroute module 42 may determine a number of paths from router 18 that are reachable to destination network device 14 .
  • Traceroute module 42 may configure an indicator to inform source network device 12 of the next-hop paths of the router.
  • traceroute module 42 may configure a new utility PDU packet to include a tally of the network paths available to router 18 that are reachable to the destination network device.
  • traceroute module 42 may include in the new utility PDU packet one or more network addresses of next-hop routers on those paths.
  • Traceroute module 42 may forward the indicator to forwarding engine 36 such that the indicator is forwarded on any of outbound links 92 to source network device 12 .
  • Traceroute module 42 may also modify the traceroute packet to include an identifier of a corresponding path of a plurality of paths of router 18 .
  • router 18 may construct a new traceroute packet to include the identifier.
  • router 18 may modify an existing traceroute packet to include the identifier.
  • traceroute module 42 may modify a payload of the received traceroute packet to include a network address of router 18 and/or a session identifier to associate with a corresponding path for which the traceroute packet was forwarded to router 18 .
  • the traceroute packet may, as described above, include a current session-stack that comprises one or more network addresses of network devices that forwarded the traceroute packet and one or more session identifiers of the path for which the traceroute packet was forwarded. That is, the traceroute packet may identify the path from source network device 12 to router 18 .
  • traceroute module 42 may construct, for a corresponding path, an updated session-stack to include one or more network addresses from source network device 12 to router 18 .
  • router 18 may receive a traceroute packet including a TTL value from any of inbound links 90 .
  • Forwarding engine 36 may decrement the TTL value and determine that the TTL value is zero.
  • forwarding engine 36 may forward the traceroute packet to routing engine 34 such that traceroute module 42 may configure an extended traceroute response, in accordance with the techniques described herein.
  • traceroute module 42 may construct a TTL expired message to include a reverse-session-stack within a payload of the response that comprises an identifier associated with the corresponding path for which the traceroute packet was forwarded to router 18 .
  • traceroute module 42 may copy the session-stack received from the traceroute packet to the reverse-session-stack of the response. That is, the reverse-session-stack may comprise one or more network addresses leading up to router 18 and/or one or more session identifiers of the path for which the traceroute packet was forwarded to router 18 .
  • Forwarding engine 36 represents hardware and logic functions that provide high-speed forwarding of network traffic.
  • Forwarding engine 36 typically includes a set of one or more forwarding chips programmed with forwarding information that maps network destinations with specific next hops and the corresponding output interface ports.
  • forwarding engine 36 includes forwarding information 50 .
  • forwarding engine 36 maintains forwarding information 50 that associates network destinations with specific next hops and corresponding interface ports.
  • routing engine 34 analyzes routing information 40 and generates forwarding information 50 in accordance with routing information 40 .
  • Forwarding information 50 may be maintained in the form of one or more tables, link lists, radix trees, databases, flat files, or any other data structures.
  • router 18 illustrated in FIG. 2 is shown for exemplary purposes only. The disclosure is not limited to this architecture. In other examples, router 18 may be configured in a variety of ways. In one example, some of the functionality of routing engine 34 and forwarding engine 36 may be distributed within IFCs 88 .
  • control unit 32 may be implemented solely in software, or hardware, or may be implemented as combinations of software, hardware, or firmware.
  • control unit 32 may include one or more processors, one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or any other equivalent integrated or discrete logic circuitry, or any combination thereof, which execute software instructions.
  • DSPs digital signal processors
  • ASICs application specific integrated circuits
  • FPGAs field programmable gate arrays
  • the various software modules of control unit 32 may comprise executable instructions stored, embodied, or encoded in a computer-readable medium, such as a computer-readable storage medium, containing instructions.
  • Computer-readable storage media may include random access memory (RAM), read only memory (ROM), programmable read only memory (PROM), erasable programmable read only memory (EPROM), electronically erasable programmable read only memory (EEPROM), non-volatile random access memory (NVRAM), flash memory, a hard disk, a CD-ROM, a floppy disk, a cassette, a solid state drive, magnetic media, optical media, or other computer-readable media.
  • Computer-readable media may be encoded with instructions corresponding to various aspects of router 18 , e.g., protocols. Control unit 32 , in some examples, retrieves and executes the instructions from memory for these aspects.
  • FIG. 3 is a block diagram illustrating an example of a network device, such as source network device 12 of FIG. 1 , that allows administrator 16 to implement an extended traceroute utility to identify network paths of a network device with a plurality of paths, in accordance with the techniques described herein.
  • source network device 12 includes interface cards 324 A- 324 N (collectively, “IFCs 324 ”) that send and receive packet flows via inbound network links 326 A- 326 N (collectively, “inbound network links 326 ”) and outbound network links 328 A- 328 N (collectively, “outbound network links 328 ”), respectively.
  • IFCs 324 are coupled to control unit 320 by an input/output bus 330 .
  • control unit 320 provides an operating environment of executing software instructions stored within storage device 333 .
  • control unit 320 may include one or more programmable processors 334 capable of executing software instructions.
  • Operating system 335 when executed by processor 334 , provides an execution environment for software components, including diagnostic protocols such as traceroute 336 .
  • Traceroute 336 allows source network device 12 to output traceroute request packets, and receive traceroute response packets, as described herein.
  • traceroute 336 may construct a traceroute packet comprising an identifier for one or more paths from source network device 12 that are reachable to destination network device 14 .
  • traceroute 336 may also construct the traceroute packet to include a network address of source network device 12 .
  • Traceroute 336 may also determine from one or more indicators received from routers 18 the number of paths a router has to reach destination network device 14 . Based on the indicator, traceroute 336 may determine whether source network device 12 has received a response from each of the plurality of paths of the router. If source network device 12 has not received a response for each of the paths of the router, traceroute 336 may prevent source network device 12 from configuring a new traceroute packet with an incremented TTL value and may wait until source network device 12 receives a response for all paths of the router. If source network device 12 has received a response for all paths of the router, traceroute 336 may configure a traceroute tree based on the responses, and may also increment the TTL value and configure another traceroute packet.
  • the source network device or the target network device may be any form of network device, and either or both of the devices may have one or more unnumbered interfaces.
  • Examples of other devices include servers, laptops, desktops, mobile devices, intrusion detection devices, virtual private network (VPN) appliances, routers, hubs, switches, gateways, firewalls, security devices and other network devices and appliances.
  • VPN virtual private network
  • FIG. 4 is a block diagram illustrating an example format of a traceroute packet 400 for use in tracing multiple paths of a network device, in accordance with the techniques described herein.
  • traceroute packet 400 merely illustrated as an example and may include more or fewer data fields.
  • Traceroute packet 400 includes a header 401 including at least a source port field 402 , a destination port field 404 , and a TTL value field 406 .
  • Source port field 402 may include source information for purposes of routing.
  • source port field 402 may contain a source IP address of source network device 12 .
  • Destination port field 404 contains destination information.
  • destination port field 404 may contain a destination IP address of destination network device 14 .
  • the TTL field 410 may include a value that indicates a maximum number of hops the packet can traverse on the way to the packet's destination prior to expiration.
  • Length field 408 may include the length of traceroute packet 400 .
  • Checksum field 410 may be calculated taking into account the entire traceroute packet 400 . Further information regarding UDP and the packet format of UDP can be found in Request for Comments (RFC) 768, titled “User Datagram Protocol,” dated Aug. 28, 1980, incorporated by reference herein.
  • RRC Request for Comments
  • Payload 412 may include a “session-stack” as described in this disclosure.
  • payload 412 may comprise a network device identifier (“DEV ID”) field 414 and a session identifier (“SESSION ID”) field 416 .
  • DEV ID network device identifier
  • SESSION ID session identifier
  • a network device may enter a network device identifier (e.g., an IP address) of the source network device into network device identifier field 412 , and may enter a session number into session identifier field 414 to associate a particular path of the source network device that is reachable to the destination network device.
  • an intermediate network device e.g., router 18 A
  • that receives traceroute packet 400 with TTL value field 406 having a TTL value greater than one may modify payload 412 to include its network address in network device identifier field 414 and a session number associated with a particular path of the intermediate network device in session identifier field 416 .
  • router 18 A may add to payload 412 its network address to device identifier field 412 and a respective session identifier associating with one of the paths to routers 18 B and 18 C in session identifier field 416 .
  • payload 410 may include a list of network addresses for source network device 12 and router 18 A, and a respective session identifier to associate with the path to router 18 B, for example.
  • FIG. 5 is a block diagram illustrating an example format of a response 500 for use in tracing multiple paths of a network device, in accordance with the techniques described herein.
  • Response 500 may, for example, be structured similar to an ICMP time exceeded packet and is configured by traceroute module 42 of FIG. 2 .
  • Response 500 may include an IP header 502 that contains destination information for purposes of routing.
  • IP header 502 may contain a source IP address, a destination IP address, and a Time to Live (TTL) value that indicates a maximum number of hops the packet can traverse on the way to the packet's destination prior to expiration.
  • TTL Time to Live
  • response 500 may include a header 503 having a type field 504 , a code field 506 , and a checksum 508 .
  • Type field 504 is used to identify the type of message. For example, a type value of “11” indicates that the packet is a time exceeded message. This type of packet is used by a traceroute utility to respond when a TTL value is zero.
  • Code field 506 varies depending on the particular type of message, as specified by type field 504 . For example, for a traceroute reply packet having type 11 (“time exceeded”), a code value of “0” indicates that the time to live expired while the packet was in transit.
  • Checksum 508 may be calculated taking into account the entire packet.
  • Payload 510 is extended to include a reverse-session-stack” as described in this disclosure.
  • payload 510 may comprise a network device identifier (“DEV ID”) field 512 and a session identifier (“SESSION ID”) field 514 .
  • DEV ID network device identifier
  • SESSION ID session identifier
  • a target network device may configure a traceroute response packet 500 with payload 510 copied from the payload of a traceroute packet (as described in FIG. 4 ) received from a previous-hop. That is, the one or more device identifiers and one or more session identifiers included in the received traceroute packet is included in a payload 510 of response 500 .
  • FIG. 6 is a flowchart illustrating an example operation of network system 10 , in accordance with the techniques described in this disclosure. For illustration purposes, FIG. 6 is explained with reference to source network device 12 of FIGS. 1 and 3 , and routers 18 A- 18 C of FIGS. 1 and 2 . Although the examples described below are illustrated with respect to routers 18 A- 18 C of FIGS. 1 and 2 , any of routers 18 may perform the described examples.
  • Source network device 12 may configure a traceroute packet including an identifier associated with one or more paths from source network device 12 to destination network device and a TTL value ( 602 ). For example, an administrator may invoke the traceroute utility 336 of source network device 12 to configure a traceroute packet to include an identifier having a session-stack comprising a network address of source network device 12 and a session identifier to associate the one or more paths from the source network device to the destination network device. Source network device 12 may send the traceroute packet upstream towards destination network device 14 ( 604 ).
  • An intermediate network device may receive the traceroute packet ( 606 ). As further described in FIG. 6 , router 18 A may determine, based on the TTL value included with the traceroute packet, whether to forward the traceroute packet or to construct a response to the traceroute packet. In this example, router 18 A may be illustrated to forward the traceroute packet.
  • router 18 A may determine a number of paths of router 18 A that may reach the destination ( 608 ). In one example, router 18 A may configure an indicator that includes the number of the paths for router 18 A. In this example, router 18 A may include an indicator representing the number of paths to routers 18 B and 18 C. In some examples, the indicator may further include one or more network addresses of next-hop devices on the paths, such as network addresses of routers 18 B and 18 C.
  • Router 18 A may send the indicator to source network device 12 ( 610 ).
  • Source network device 12 may receive the indicator ( 612 ).
  • Source network device 12 may determine based on the indicator the number of paths of router 18 A.
  • Router 18 A may modify a payload of the traceroute packet to include a respective identifier associated with a corresponding path of router 18 A ( 614 ). For example, router 18 A may configure one respective modified traceroute packet including a session-stack comprising a network address of router 18 A and a respective session identifier to associate a corresponding path to router 18 B. Router 18 A may also configure another respective modified traceroute packet including a session-stack comprising the network address of router 18 A and a respective session identifier to associate a corresponding path to router 18 C. That is, router 18 A may construct respective modified traceroute packets for corresponding paths of router 18 A. Router 18 A may send the respective modified traceroute packets to their corresponding paths to target routers 18 B and 18 C ( 616 ).
  • Target routers 18 B and 18 C may each receive a respective modified traceroute packet ( 618 , 620 ). Each of routers 18 B and 18 C may, when the TTL value is one, configure a response to the modified traceroute packet ( 622 , 624 ). As further described in FIG. 6 , the received modified traceroute packet is forwarded to a control plane of the target network device such that the target network device may configure a response.
  • the response may include a reverse-session-stack copied from the session-stack received from router 18 A. That is, the response for router 18 B may include network addresses for source network device 12 and intermediate router 18 A, and a session identifier associating the path from intermediate router 18 A to target router 18 B.
  • the response for router 18 C may include network addresses for source network device 12 and intermediate router 18 A, and a session identifier associating the path from intermediate router 18 A to target router 18 C.
  • Routers 18 B and 18 C may each send its response toward source network device 12 ( 626 , 628 ). For example, in response to configuring the response, each of routers 18 B and 18 C may forward the response to its forwarding engine to forward the response on an outbound interface link to router 18 A.
  • Intermediate router 18 A may receive the responses ( 630 ). Router 18 A may receive the responses in parallel or sequentially. In any event, router 18 A may send the responses from routers 18 B and 18 C toward source network device 12 ( 632 ).
  • Source network device 12 may receive the responses on any of inbound interface links 328 and may determine whether source network device 12 has received a response for each of the plurality of network paths of a network device based on the received indicator ( 634 ). For example, based on the received indicator, the traceroute utility 336 of source network device 12 may determine that source network device 12 expects to receive a response for the path from router 18 A to router 18 B and another response for the path from router 18 A to router 18 C. In response to receiving a response for each of the network paths of router 18 A, source network device 12 may then configure a traceroute tree based on the received responses ( 636 ), and configure a new traceroute packet with an incremented TTL value for which source network device 12 may send toward destination network device 14 ( 638 ). Source network device 12 may continue the process until receiving a response from a destination network device.
  • FIG. 7 is a flowchart illustrating an example operation of router 18 , in accordance with the techniques described in this disclosure.
  • Router 18 of FIG. 7 may represent any of routers 18 of FIGS. 1 and 2 .
  • Router 18 may receive a traceroute packet including a TTL value from one of inbound network links 90 ( 702 ).
  • the forwarding engine 36 of router 18 may decrement the TTL value and determine whether the TTL value is zero ( 704 ). If the TTL value is zero, router 18 may forward the traceroute packet to routing engine 34 such that traceroute module 42 may construct a response to the traceroute packet.
  • Traceroute module 42 of router 18 may construct a response including a respective identifier received from the traceroute packet ( 706 ). For example, router 18 may receive a traceroute packet that includes in its payload a session-stack comprising one or more network addresses of network devices that forwarded the traceroute packet and/or one or more session identifiers associated with paths for which the traceroute packet was forwarded on. In one example, router 18 may construct an extended TTL expired message including in a payload of the message a reverse-session-stack that copies the session-stack of the received traceroute packet. That is, the response may include the one or more network addresses of network devices that forwarded the traceroute packet and the one or more session identifiers associated with paths for which the traceroute packet was forwarded. Router 18 may forward the response to forwarding engine 36 to send the response on any of outbound links 92 toward source network device 12 ( 708 ).
  • router 18 may determine a number of paths it has for reaching destination network device 14 ( 710 ). For example, traceroute module 42 of router 18 may perform a destination lookup to determine the paths reachable to destination network device 14 . Traceroute module 42 may configure an indicator comprising the number of paths ( 712 ). In one example, router 18 may use traceroute module 42 to configure the indicator as a new utility PDU including the number of paths of router 18 . In some examples, the new utility PDU may include one or more network addresses of next-hop network devices on the paths of router 18 . Router 18 may send the indicator on any of outbound links 92 toward source network device 12 ( 714 ).
  • Traceroute module 42 of router 18 may modify a payload of the traceroute packet to include a respective identifier for a corresponding path of router 18 ( 716 ).
  • traceroute module 42 may modify the payload to include a session-stack comprising at least a network address of router 18 and a session identifier associated with a corresponding path of router 18 that may reach destination network device 14 .
  • Router 18 may forward the respective modified traceroute packet on the corresponding paths ( 718 ).
  • traceroute module 42 may forward the respective modified traceroute packets to forwarding engine 36 to forward the respective modified traceroute packets on any of outbound links 92 toward the corresponding paths to the next-hops.
  • Forwarding engine 36 of router 18 may receive one or more responses to the modified traceroute packet on any of inbound links 90 ( 720 ). Forwarding engine 36 of router 18 may identify from the response packet header that the responses are to be forward to source network device 12 on any of outbound links 92 toward source network device 12 ( 722 ).
  • FIG. 8 is a flowchart illustrating an example operation of source network device 12 , in accordance with the techniques described in this disclosure.
  • source network device 12 represents source network device 12 of FIGS. 1 and 3 .
  • Source network device 12 may configure a traceroute packet including a network identifier for a path available to source network device 12 to reach the destination network device ( 804 ). For example, source network device 12 may configure a payload of a traceroute packet with a “session-stack” comprising the network address of source network device 12 and/or a respective session identifier associated with the next-hop path from source network device 12 . Source network device 12 may also configure a TTL value to indicate a maximum number of hops the packet can traverse on the way to the packet's destination prior to expiration.
  • Source network device 12 sends the traceroute packet and TTL value via any of outbound links 328 towards destination network device 14 ( 806 ).
  • source network device 12 may use the UDP protocol to communicate the traceroute packet as described herein to illicit responses from a target network device, e.g., router 18 , along the path to the destination network device.
  • source network device 12 may receive an indicator from an intermediary router including a number of paths available to the router for reaching the destination network device ( 808 ).
  • the indicator may also include one or more network addresses of next-hop routers on those paths.
  • Source network device 12 may receive one or more responses to the traceroute packet on any of inbound links 326 ( 810 ).
  • Traceroute 336 of source network device 12 may determine based on the indicator received from the intermediary router whether source network device 12 has received a response from each of the plurality of paths of the intermediary router ( 812 ). If source network device 12 has not received a response for each of the paths of the intermediary router, source network device 12 may not configure a new traceroute packet with an incremented TTL value and may wait to receive one or more additional responses to the traceroute packet ( 810 ).
  • source network device 12 may configure a traceroute tree based on the received one or more responses for each path of the intermediary router ( 814 ), and may also increment the TTL value ( 814 ) and configure another traceroute packet ( 804 ).
  • the techniques described herein may be implemented in hardware, software, firmware, or any combination thereof.
  • Various features described as modules, units or components may be implemented together in an integrated logic device or separately as discrete but interoperable logic devices or other hardware devices.
  • various features of electronic circuitry may be implemented as one or more integrated circuit devices, such as an integrated circuit chip or chipset.
  • this disclosure may be directed to an apparatus such a processor or an integrated circuit device, such as an integrated circuit chip or chipset.
  • the techniques may be realized at least in part by a computer-readable data storage medium comprising instructions that, when executed, cause a processor to perform one or more of the methods described above.
  • the computer-readable data storage medium may store such instructions for execution by a processor.
  • a computer-readable medium may form part of a computer program product, which may include packaging materials.
  • a computer-readable medium may comprise a computer data storage medium such as random access memory (RAM), read-only memory (ROM), non-volatile random access memory (NVRAM), electrically erasable programmable read-only memory (EEPROM), Flash memory, magnetic or optical data storage media, and the like.
  • RAM random access memory
  • ROM read-only memory
  • NVRAM non-volatile random access memory
  • EEPROM electrically erasable programmable read-only memory
  • Flash memory magnetic or optical data storage media, and the like.
  • an article of manufacture may comprise one or more computer-readable storage media.
  • the computer-readable storage media may comprise non-transitory media.
  • the term “non-transitory” may indicate that the storage medium is not embodied in a carrier wave or a propagated signal.
  • a non-transitory storage medium may store data that can, over time, change (e.g., in RAM or cache).
  • the code or instructions may be software and/or firmware executed by processing circuitry including one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuitry.
  • DSPs digital signal processors
  • ASICs application-specific integrated circuits
  • FPGAs field-programmable gate arrays
  • processors may refer to any of the foregoing structure or any other structure suitable for implementation of the techniques described herein.
  • functionality described in this disclosure may be provided within software modules or hardware modules.

Abstract

In general, techniques are described for extending network connectivity software utilities, such as traceroute, to provide complete visibility into a network topology between a source device and a destination device, even when an intermediate network device may be actively utilizing multiple network links when forwarding packets toward the destination. In one example, a network device coupled to a plurality of paths and positioned between a source network device and destination network device may receive a traceroute packet. The network device may also, for each of the plurality of paths, modify a payload of the traceroute packet to include a respective identifier for a corresponding path of the plurality of paths to construct a respective modified traceroute packet for the corresponding path. The network device may also forward the respective modified traceroute packets on the corresponding paths.

Description

    TECHNICAL FIELD
  • The invention relates to computer networks and, more particularly, to software utilities for determining the status of computer network connections.
  • BACKGROUND
  • A computer network is a collection of interconnected computing devices that can exchange data and share resources. In a packet-based network, such as the Internet, the computing devices communicate data by dividing the data into small blocks called packets, which are individually routed across the network from a source device to a destination device. The destination device extracts the data from the packets and assembles the data into its original form.
  • Certain devices, referred to as routers, maintain routing information that describes routes through the network. A “route” can generally be defined as a path between two locations on the network. Upon receiving an incoming packet, the router examines information within the packet to identify the destination for the packet. Based on the destination, the router forwards the packet in accordance with the routing information.
  • Various software utilities exist for identifying failed connectivity between two nodes of a network and for exploring network topology. One such utility, referred to as traceroute, allows a source network device to identify a network path from the source network device to a destination network device. The traceroute utility determines the network path to a target network device by recording an Internet Control Message Protocol (ICMP) echo request packet's path from the source device to a specified network destination. As output, the traceroute typically displays how many hops the packet traveled to reach the network destination, identifies each hop along the path by its network address, and shows the round-trip time for reaching each hop.
  • SUMMARY
  • In general, this disclosure describes techniques for extending network connectivity software utilities, such as traceroute, to provide complete visibility into a network topology between a source device and a destination device, even when an intermediate network device may be actively utilizing multiple network links when forwarding packets toward the destination. For example, a network device in the network path, such as an intermediate router, may be configured to actively utilize multiple paths, i.e., links, when forwarding traffic to reach a destination network device. As one example, the intermediate device may be configured to generally apply equal cost multi-path for forwarding packets on any of a set of active links based on a hashing operation. As described herein, to facilitate exploration of the network topology of each of the multiple paths, the intermediate network device may utilize respective sessions to track forwarding of a corresponding traceroute packet along each of the active multiple paths. For example, in response to receiving a traceroute packet specifying the network destination, the intermediate network device may configure and output a respective modified traceroute packet on each of the corresponding paths leading from the network device toward the destination. The respective modified traceroute packets may each include a respective identifier associated with the corresponding path of the multiple paths. The network device forwards the respective modified traceroute packets along the corresponding paths such that each path may be traced by its respective traceroute packet. A subsequent network device along each of the paths, such as a next hop router or the destination device, receives the modified traceroute packet for a given path and configures a response to include an identifier associated with the corresponding path. In this way, the network device may associate the response with the particular path along which the modified traceroute packet was forwarded to the network device. When the source network device has received a response for each of the multiple active paths, the source network device updates the results of the traceroute utility to reflect each of the multiple paths within the network and configures a new traceroute packet with an incremented Time-to-Live (TTL) value and sends the traceroute packet towards the destination network device. The source network device continues this process until a response is received from the destination network device. In this way, the traceroute packets and the responses may provide source network device with complete visibility even when a given intermediate device may be actively forwarding packets destined for the destination, even for the same packet flow, along multiple network paths.
  • In one example, a method may include receiving, by a network device coupled to a plurality of paths for reaching a destination network device and positioned between a source network device and the destination network device, a traceroute packet. The method may also include, for each of the plurality of paths, modifying, by the network device, a payload of the traceroute packet to include a respective identifier for a corresponding path of the plurality of paths to construct a respective modified traceroute packet for the corresponding path. The method may also include forwarding, by the network device, the respective modified traceroute packets on the corresponding paths.
  • In another example, a method may include sending, by a source network device, a traceroute packet to an intermediate network device coupled to a plurality of paths for reaching a destination network device, wherein the intermediate network device is positioned between the source network device and the destination network device. The method may also include receiving, by the source network device and from the intermediate network device, one or more respective responses, wherein each of the one or more respective responses comprises a payload including a respective identifier for a corresponding path of the plurality of paths.
  • In another example, a network device may include a plurality of network interfaces, each of the network interfaces coupled to a different one of a plurality of paths for reaching a destination network device, wherein the network device is positioned between a source network device and the destination network device. The network device may also include one or more hardware-based processors configured to: receive a traceroute packet destined for the destination device; for each of the plurality of paths, modify a payload of the traceroute packet to include a respective identifier for a corresponding path of the plurality of paths to construct a respective modified traceroute packet for the corresponding path; and forward the respective modified traceroute packets on the corresponding paths.
  • In another example, a source network device may include one or more hardware-based processors configured to: send a traceroute packet toward a destination network device; and receive one or more respective responses, wherein each of the one or more respective responses comprises a payload including a respective identifier for a corresponding path of a plurality of paths of an intermediate network device, wherein the intermediate network device is positioned between the source network device and the destination network device.
  • The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description and drawings, and from the claims.
  • BRIEF DESCRIPTION OF DRAWINGS
  • FIG. 1 is a block diagram illustrating an example network system in which intermediate network devices have been enhanced so as to enable a software utility, such as traceroute, to trace and report on connectivity information from a source destination to a destination device, even when one or more of the intermediate network device utilize multiple, active links when forwarding packets of the utility toward the destination.
  • FIG. 2 is a block diagram illustrating an example of a router, in accordance with the techniques of described in this disclosure.
  • FIG. 3 is a block diagram illustrating an example of a network device, such as source network device of FIG. 1, that allows administrator to implement traceroute of a plurality of paths, in accordance with the techniques described herein.
  • FIG. 4 is a block diagram illustrating an example format of a traceroute packet for use in tracing multiple paths, in accordance with the techniques described herein.
  • FIG. 5 is a block diagram illustrating an example format of a response packet for use in tracing multiple paths, in accordance with the techniques described herein.
  • FIG. 6 is a flowchart illustrating an example operation of network system, in accordance with the techniques described in this disclosure.
  • FIG. 7 is a flowchart illustrating an example operation of network device, in accordance with the techniques described in this disclosure.
  • FIG. 8 is a flowchart illustrating an example operation of source network device, in accordance with the techniques described in this disclosure.
  • DETAILED DESCRIPTION
  • FIG. 1 is a block diagram illustrating an example network system in which intermediate network devices have been enhanced so as to enable a software utility, such as traceroute, to trace and report on connectivity information from a source destination to a destination device, even when one or more of the intermediate network device utilize multiple, active links when forwarding packets of the utility toward the destination. In the example of FIG. 1, source network device 12 and network device 18A-18E (collectively, “network devices 18” or “routers 18”) support use of the extended traceroute that has been extended to facilitate exploration of a network topology of each of the multiple paths when forwarding traffic to reach a destination network device.
  • In this example, network system 10 includes source network device 12 and destination network device 14 connected across network 8 via intermediate routers, switches, and other network devices, shown for purposes of examples as routers 18. Network 8 may comprise a public network such as the Internet, a private network, such as those owned and operated by an enterprise or service provider or a combination of both public and private networks. As a result, network 8 may be alternatively referred to herein as a Service Provider (SP) network. Network 8 may include one or more Wide Area Networks (WANs), Local Area Networks (LANs), Virtual Local Area Networks (VLANs), Virtual Private Networks (VPNs), and/or another type of network.
  • In some examples, network 8 may be an Internet Protocol (IP) network in which routers 18 use IP forwarding for transporting network packets. In other instances, network 8 may be a label switching network in which network devices such as routers 18, often referred to as Label Switching Routers or LSRs, use Multi-Protocol Label Switching (MPLS) signaling protocols to establish Label Switched Paths (LSPs) for transporting the network packets received from source devices 12. The MPLS data-carrying mechanism of network 8 may be viewed as lying between layer 2 and layer 3 of the Open Systems Interconnection (OSI) model and is often referred to as a layer 2.5 protocol. Reference to layers followed by a numeral may refer to a particular layer of the OSI model. More information concerning the OSI model can be found in a IEEE publication entitled “OSI Reference Model—the ISO Model of Architecture for Open Systems Interconnection,” by Hubert Zimmermann, published in IEEE Transactions on Communications, vol. 28, no. 4, dated April 1980, which is hereby incorporated by reference as if fully set forth herein. Further information regarding MPLS and the various features of MPLS, as well as, general architectural information regarding MPLS can be found in Request for Comments (RFC) 3031, titled “Multiprotocol Label Switching Architecture,” prepared by the Network Working Group of the Internet Engineering Task Force (IETF), dated January 2001, incorporated by reference herein.
  • Although shown as a single network in FIG. 1, network 8 may comprise any number of interconnected networks, either public or private, in which the various networks interconnect to form various virtual networks. In addition, network 8 may include a variety of other network devices for forwarding network traffic, such as additional routers, switches, or bridges. The particular configuration of network system 10 is merely an example, and routers 18 may reside in a single network or within multiple networks. Although described with respect to routers, aspects of the techniques are applicable to other network devices, such as bridges, switches, gateways, network caches, and network acceleration devices.
  • In the example of FIG. 1, source network device 12 and destination network device 14 may each be a personal computer, a laptop computer, a mobile telephone, a network telephone, a television set-top box, a network device integrated into a vehicle, a video game system, a point-of-sale device, a personal digital assistant, an intermediate network device, a network appliance, a supercomputer, a mainframe computer, or another type of device capable of interfacing with and communicating over network 8.
  • A number of physical and/or virtual communication links 15A-15H (collectively, “links 15”) of network 8 interconnect routers 18 to facilitate control and data communication between the routers. Physical links of network 8 may include, for example, Ethernet PHY, Synchronous Optical Networking (SONET)/Synchronous Digital Hierarchy (SDH), Lambda, or other Layer 2 data links that include packet transport capability. Logical links of network 8 may include, for example, an Ethernet Virtual LAN, an MPLS LSP, or an MPLS-TE LSP.
  • In this example, source network device 12 connects to network 8 via access link 15A, destination network device 14 connects to network 8 via access links 15G and/or 15H, and routers 18 communicate via access links 15B-15F. Access links 15 may comprise wired and/or wireless communication links. The term “communication link,” as used herein, comprises any form of transport medium, wired or wireless, and can include intermediate nodes such as network devices. Each of access links 15 may comprise, for instance, aspects of an asymmetric DSL network, WiMAX, a T-1 line, an Integrated Service Digital Network (ISDN), or wired Ethernet.
  • Routers 18 maintain routing information that describes available routes through network 8. Upon receiving an incoming packet, the receiving router examines information within the packet and forwards the packet in accordance with the routing information. In order to maintain an accurate representation of network 8, the routers exchange routing information, e.g., bandwidth availability of links, in accordance with a defined routing protocol, such as an Interior Gateway Protocol (IGP), Open Shortest Path First (OSPF), Intermediate System-Intermediate System (IS-IS) or Routing Information Protocol (RIP).
  • Various routing protocols allow for “Equal-Cost Multipath” (ECMP) routing. ECMP provides a routing technique by which a router may forward packets destined for a particular destination device along any of a plurality of paths (links) of equal cost, in this example. A router implementing ECMP may identify, when forwarding a packet, which next-hop (path) of a plurality of next-hops to use, and may output the packet on a given link based on the selection. For example, the router may determine the next-hop using hash-threshold, Modulo-N, and/or Highest random weight (HRW) techniques. Further information regarding ECMP can be found in Request for Comments (RFC) 2991, titled “Multipath Issues in Unicast and Multicast Next-Hop Selection,” prepared by the Network Working Group of the Internet Engineering Task Force (IETF), dated November 2000, and RFC 2992, titled “Analysis of an Equal-Cost Multi-Path Algorithm,” IETF, dated November 2000, both incorporated by reference herein. Although the paths in FIG. 1 are illustrated with respect to Equal-Cost Multi-Path (ECMP) paths, network system 10 may include other types of multipath routing. The techniques described herein are not limited to ECMP topologies and may be advantageous in any network where an intermediate device is actively forward packets destined for a destination device, even traceroute packets targeting the destination device, along any of a plurality of paths toward the destination. Other examples include weighted ECMP.
  • For example, various software utilities, such as traceroute, are useful tools for identifying failed connectivity and for exploring network topology between two nodes of a network. Source network device 12 may typically use traceroute to identify a network path from source network device 12 to destination network device 14. Using traceroute, source network device 12 sends a traceroute packet towards destination network device 14.
  • Source network device 12 may implement traceroute and send a traceroute packet toward destination network device 14 with an initial hop count, e.g., a Time-to-Live (TTL) value. At each hop, a receiving router (e.g., “intermediary router”) processes the traceroute packet and decrements the hop count. When the hop count is zero, the router typically sends a response, e.g., TTL expired message, port-unreachable, and Error/TimeOut packets, back to source network device 12 informing the source network device that the packet was received and the hop count has expired. Source network device 12 receives the response and configures a traceroute tree based on the response. Source network device 12 proceeds to send another traceroute packet with an incremented TTL value such that the traceroute packet reaches the next device in the path, and continues this process until the destination device is reached.
  • However, when a router, e.g., router 18A, is configured to forward packets toward a destination network using any of a plurality of active paths, each time a traceroute packet is sent with an incremented TTL value, the traceroute packet may use a different port number from previous traceroute packets. As such, router 18 A may forward the traceroute packet toward the destination network device along a different one of 15B, 15C since the port-number is often considered when calculating the next-hop hash, e.g., part of a 5-tuple. The 5-tuple within a header of a packet, such as the traceroute packet being forwarded, may include: <source network address, destination network address, source port, destination port, protocol>, for example. As such, the trace of a network path of a network device (e.g., router 18A) applying ECMP or other technique to actively forward packets destined for the same destination along multiple paths often results in tracing different branches of the multiple paths. As a result, the traceroute responses do not provide source network device 12 a complete picture of each path of router 18A's multiple paths, and the conventional traceroute utility provides incomplete or inaccurate results, if any.
  • In accordance with the techniques of this disclosure, intermediate devices, such as routers 18, are configured to enhance the traceroute packets to provide complete visibility of multiple paths of a network device. For example, responsive to receiving a traceroute packet to be forwarded toward the destination, any of routers 18 currently applying ECMP or other technique to actively utilize multiple paths toward the destination may generate, configure and output a respective modified traceroute packet along each of the multiple paths such that each of the paths may be individually identified.
  • In operation, administrator 16 accesses source network device 12 and invokes a diagnostic software utility, such as traceroute, to initiate a traceroute request. In response, the software utility executing on source device 12 may configure a traceroute packet, e.g., protocol data unit (PDU) packet, with an identifier associated with a network path for which the traceroute packet is to be forwarded on. For example, source network device 12 may initially configure a traceroute packet with a TTL value of one and may include a “session-stack” in the traceroute payload comprising a network address of source network device 12 and a session identifier representing the path to router 18A. That is, the session-stack may indicate the forwarding network device and the path that the packet was forwarded. For illustration purposes, source network device 12 may configure the session-stack as 10.1.1.1:1, which includes the IP address of source network device 12 (e.g., 10.1.1.1) and a session number of one that is associated with the single next-hop path from source device 12.
  • Source network device 12 may send the traceroute packet upstream towards destination network device 14. Router 18A may receive the traceroute packet. In this example, router 18A may process the traceroute packet by decrementing the TTL value and determining whether the TTL value is zero. In this example, router 18A may determine that the TTL value is zero and may configure a response packet, e.g., a TTL expired packet, to include a payload having a “reverse-session-stack” with values copied from the received session-stack (e.g., 10.1.1.1:1). Router 18A sends the response packet back toward source network device 12. Source network device 12 receives the response packet and may determine, based on the reverse-session-stack of the response packet, that router 18A is the next-hop for source device 12 along a single path via access link 15A.
  • Continuing the traceroute process, source device 12 may configure and send a new traceroute packet with an incremented TTL value toward destination network device 14 to identify the one or more next-hops in the path. For example, source network device 12 may send another traceroute packet as described above (e.g., 10.1.1.1:1) with an incremented TTL value of two. When router 18A receives the traceroute packet, router 18A decrements the TTL value and determines that the TTL value is greater than one. In response, router 18A may forward the traceroute packet to a next-hop.
  • Prior to forwarding the traceroute packet, router 18A may output a message to inform source network device 12 as to the number of active forwarding paths ( links 15B, 15C) available to router 18A for reaching destination network device 14. Because router 18A is configured to select between any of the active multiple paths for the traceroute packet, router 18A may configure respective modified traceroute packets for each of the multiple paths. In the example of FIG. 1, router 18A may perform a destination lookup on the received traceroute packet and determine, based on its internal routing information, that it is configured to forward packets destined for the destination along any of two active paths, i.e., the paths leading to routers 18B, 18C, respectively. Router 18A may inform source network device 12 as to the existence of the two viable paths for the traceroute packet. In some examples, router 18A may inform source network device 12 of the number of paths by configuring an indicator 13 such as a new utility PDU packet to include a tally of the next-hop paths and/or network addresses of next-hop routers on the next-hop paths. In the example of FIG. 1, routers 18B, 18C are each a next-hop router to router 18A via links 15B, 15C, respectively. For illustration purposes, router 18B may have an IP address of 10.39.1.1 and router 18C may have an IP address of 10.100.1.1. Router 18A may configure a new utility PDU packet as a list of strings, e.g., {2, 10.39.1.1, 10.100.1.1}, to inform source network device 12 that router 18A has two next-hop paths to routers 18B and 18C, for example. Router 18A may send indicator 13 to source network device 12.
  • Source network device 12 may receive indicator 13 and may delay constructing a new traceroute packet with an incremented TTL value until it determines, based on indicator 13, that it has received a response to the corresponding traceroute packets generated by router 18A and output along each of the multiple paths leading from router 18A toward the destination.
  • Router 18A may configure a respective modified traceroute packet to be forwarded to each of the paths to routers 18B and 18C. For example, router 18A may modify the received traceroute packet to include a respective identifier associated with a path to router 18B. In another example, router 18A may modify the received traceroute packet to include a respective identifier associated with a path to router 18C.
  • In particular, router 18A may configure respective identifiers representing sessions 16, 17 for each path to router 18B and router 18C, respectively. For example, router 18A may configure one modified traceroute packet to include an identifier representing the path to router 18B, which is denoted by session 16. Router 18A may send the modified traceroute packet to router 18B via access link 15B.
  • In another example, router 18A may also configure another modified traceroute packet to include an identifier representing the path to router 18C, which is denoted by session 17. Router 18A may send this modified traceroute packet to router 18C via access link 15C. In some examples, router 18A may send the respective modified traceroute packets to the corresponding paths in parallel. In other examples, router 18A may send the respective modified traceroute packets to the corresponding paths sequentially. In any event, router 18A may send a respective modified traceroute packet on the corresponding paths to trace the next-hop along each of the paths to routers 18B and 18C.
  • For session 16, router 18A may, for example, modify a payload of the traceroute packet to include a session-stack that comprises at least its network address (e.g., 192, 168.0.2) and a session identifier (e.g., 1) that associates router 18A with the path to router 18B via link 15B. Router 18A may send the modified traceroute packet on access link 15B toward router 18B. Router 18B receives the modified traceroute packet, decrements the TTL value, and may determine that the TTL value is zero for which router 18B is to construct response 20A. In this example, router 18B may configure a TTL expired packet with a reverse-session-stack that may include the session-stack value received from router 18A (e.g., 10.1.1.1:1, 192.168.0.2:1).
  • For session 17, router 18A may, for example, modify a payload of the traceroute packet to include a session-stack that comprises at least its network address (e.g., 192. 168.0.2) and a session number (e.g., 2) that associates router 18A with the path to router 18C via link 15C (e.g., session 17). Router 18A may send the modified traceroute packet on access link 15C toward router 18C. Router 18C receives the modified traceroute packet, decrements the TTL value, and determines that the TTL value is zero for which router 18C is to construct response 20B. In this example, router 18C may configure a TTL expired packet with a reverse-session-stack that includes the session-stack value received from router 18A (e.g., 10.1.1.1:1, 192.168.0.2:2).
  • Routers 18B and 18C may each send their response (e.g., 20A, 20B) downstream toward router 18A. Source network device 12 may receive responses 20A, 20B with their respective reverse-session stacks, and may determine, from the respective identifiers, that router 18B is a next-hop for one path of router 18A, and router 18C is a next-hop for another path of router 18A. For example, source network device 12 may receive from router 18B a response including a reverse-session-stack of “10.1.1.1:1, 192.168.0.2:1” for which source network device 12 may determine that router 18B is associated with session identifier “1,” which represents the trace for session 16. Source network device 12 may also receive from router 18C a response including a reverse-session-stack of “10.1.1.1:1, 192,168.0.2:2” for which source network device 12 may determine that router 18C is associated with session identifier “2,” which represents the trace for session 17.
  • As described above, source network device 12 may determine from indicator 13 that router 18A has two paths. Based on the information from indicator 13, source network device 12 may configure a new traceroute packet with an incremented TTL value when a response is received for all paths of router 18A. For example, when source network device 12 receives a response from router 18B with an identifier of a path from router 18A to router 18B and a response from router 18C with an identifier of a path from router 18A to router 18C, source network device 12 may determine, based on indicator 13, that a response was received for all paths of router 18A. In response, router 18A may configure a traceroute tree of the paths of router 18A and may configure a new traceroute packet with an incremented TTL value. Source network device 12 may send the new traceroute packet towards destination network device 14 to identify the next-hop in the path.
  • Continuing the above example, source network device 12 may increment the TTL value to three and send a new traceroute packet (e.g., 10.1.1.1:1) toward destination network device 14. Since the TTL value is greater than one, router 18A may forward the traceroute packet after modifying the traceroute packet to include its network address and a respective session identifier associated with a corresponding next-hop path connected to the router.
  • For session 16, router 18A decrements the TTL value to two and modifies the received traceroute packet having a current session-stack (e.g., 10.1.1.1:1) to include the network address of router 18A (e.g., 192.168.0.2) and a session number (e.g., 1) to construct a modified traceroute packet with an updated session-stack (e.g., 10.1.1.1:1, 192.168.0.2:1) that represents the path from source network device 12 to router 18B.
  • When router 18B receives the modified traceroute packet from router 18A, router 18B decrements the TTL value and determines that the TTL value is not zero for which router 18B is to forward the modified traceroute to its next-hop. Router 18B may perform a destination lookup and determine that router 18B has a single path to router 18D. Router 18B configures an indicator (not shown) to inform source network device 12 of the number of paths available to router 18B. For example, router 18B may configure a new utility PDU packet as {1, 10.168.1.224}, which may include a tally of available next-hop paths (e.g., 1) to router 18B and the network address of router 18D (e.g., 10.168.1.224) that is coupled to the path. Router 18B may send the new utility PDU packet to source network device 12 such that source network device 12 is informed of the number of paths for router 18B.
  • Prior to forwarding the modified traceroute packet, router 18B may further modify the modified traceroute packet to include an identifier representing the path to router 18D. In the example of FIG. 1, router 18B may further modify the modified traceroute packet that has a current session-stack (e.g., 10.1.1.1:1, 192.168.0.2:1) to include its network address (e.g., 10.39.1.1) and a session identifier (e.g., 1) to construct a modified traceroute packet having an updated session-stack (e.g., 10.1.1.1:1, 192.168.0.2:1, 10.39.1.1:1) to represent a path from source network device 12 to router 18D. Router 18B then sends the modified traceroute packet to router 18D.
  • Router 18D receives the modified traceroute packet, decrements the TTL value, and may determine that the TTL value is zero for which router 18D is to construct a response. In this example, router 18D may configure a TTL expired packet with a reverse-session-stack copied from the updated session-stack received from router 18B, and sends the response downstream toward source network device 12. Source network device 12 may receive the response with the reverse-session-stack, and may determine, from an identifier in the updated session-stack, that router 18D is a next-next-hop for one path of router 18A. As a response was received from all paths of router 18B, source network device 12 may update the traceroute tree to include routers 18B and 18D as the next-hop, and next-next-hop for session 16 of router 18A.
  • Similarly, for session 17, router 18A decrements the TTL value to two and modifies the received traceroute packet having a current session-stack (e.g., 10.1.1.1:1) to include the network address of router 18A (e.g., 192.168.0.2) and a session identifier (e.g., 2) to construct a modified traceroute packet with an updated session-stack (e.g., 10.1.1.1:1, 192.168.0.2:2) that represents the path from router 18A to router 18C. When router 18C receives the modified traceroute packet from router 18A, router 18C decrements the TTL value and determines that the TTL value not zero for which router 18C is to forward the modified traceroute packet to its next-hop. Router 18C may perform a destination lookup and determine that it has two paths to routers 18D, 18E, respectively. Router 18C may configure an indicator (not shown) to inform source network device 12 of the number of paths. For example, router 18D may configure a new utility PDU packet as {2, 10.168.1.224, 100.200.2.2}, which may include a tally of the available next-hops (e.g., 2) to routers 18D and 18E, respectively, and include the network addresses of router 18D (e.g., 10.168.1.224) and router 18E (e.g., 100.200.2.2) that is coupled to the paths. Router 18D may send the indicator to source network device 12 such that source network device 12 is informed of the number of paths for router 18D.
  • In one example, router 18C may configure respective identifiers representing sessions 18, 19 for each path to router 18D and router 18E, respectively. For example, router 18C may configure one modified traceroute packet to include an identifier representing the path to router 18D, which is denoted by session 18. Router 18C may send the modified traceroute packet to router 18D via access link 15E.
  • In another example, router 18C may also configure another modified traceroute packet to include an identifier representing the path to router 18E, which is denoted by session 19. Router 18C may send this modified traceroute packet to router 18E via access link 15F. In some examples, router 18C may send the respective modified traceroute packets to the corresponding paths in parallel, and in other examples, may send the respective modified traceroute packets to the corresponding paths sequentially. In any event, router 18C may send a respective modified traceroute packet on the corresponding paths to trace the next-hop along each of the paths to routers 18D and 18E.
  • For session 18, router 18C may, for example, further modify the payload of the modified traceroute packet to include a session-stack comprising at least its network address (e.g., 10.100.1.1) and a session identifier (e.g., 1) that associates router 18C with the path to router 18D via link 15E (e.g., session 18). That is, router 18C may modify the current session-stack (e.g., 10.1.1.1:1, 192.168.0.2:2) with the above information to construct an updated session-stack (e.g., 10.1.1.1:1, 192.168.0.2:2, 10.100.1.1:1) to represent the path to router 18D. Router 18C may send the modified traceroute packet on access link 15E toward router 18D.
  • Router 18D receives the modified traceroute packet, decrements the TTL value, and may determine that the TTL value is zero for which router 18D is to construct response 21A. In this example, router 18D may configure a TTL expired packet with a reverse-session-stack that includes the session-stack value received from router 18C. Router 18D sends the response with the reverse-session-stack downstream toward source network device 12.
  • For session 19, router 18C may, for example, further modify the payload of the modified traceroute packet to include a session-stack comprising at least its network address (e.g., 10.100.1.1) and a session identifier (e.g., 2) that associates router 18C with the path to router 18E via link 15F (e.g., session 19). That is, router 18 C may modify the current session-stack (e.g., 10.1.1.1:1, 192.168.0.2:2) with the above information to construct an updated session-stack (e.g., 10.1.1.1:1, 192.168.0.2:2, 10.100.1.1:2) to represent the path to router 18E. Router 18C may send the modified traceroute packet on access link 15F toward router 18E.
  • Router 18E receives the modified traceroute packet, decrements the TTL value, and may determine that the TTL value is zero for which router 18E is to construct response 21B. In this example, router 18E may configure a TTL expired packet with a reverse-session-stack that includes the session-stack received from router 18C, and send the response downstream toward source network device 12.
  • Source network device 12 may receive responses 21A, 21B with their respective reverse-session stacks, and may determine, from the respective identifiers, that router 18D is a next-hop for one path of router 18C and router 18E is a next-hop for another path of router 18C. In accordance with the techniques described herein, source device 12 may determine that one path to reach router 18D includes routers 18A, 18B, and another path to reach router 18D includes routers 18A, 18C. That is, source device 12 may trace the paths for each of the ECMP routes. For example, source network device 12 may receive from router 18D a response including a reverse-session-stack of “10.1.1.1:1, 192.168.0.2:2, 10.100.1.1:1” for which source network device 12 may determine that router 18D is associated with session identifier “1,” which represents the trace for session 18. Source network device 12 may also receive from router 18E a response including a reverse-session-stack of “10.1.1.1:1, 192,168.0.2:2, 10.100.1.1:2” for which source network device 12 may determine that router 18C is associated with session identifier “2,” which represents the trace for session 19.
  • When source network device 12 receives all responses for sessions 18, 19 of router 18C, source network device 12 may send a new traceroute packet with an incremented TTL value upstream towards destination network device 14. Source network device 12 continues this process until a response from destination network device 14 is received. As one example, source network device 12 may send a traceroute packet with a TTL value of four towards destination network device 14, such that destination device 14 receives the traceroute packet from either routers 18D or 18E and returns a port-unreachable message to signal the trace is complete. In response, source network device 12 may configure a final traceroute tree based on the responses, which is logically represented as:
  • 1. Router 18A-Router 18B-Router 18D-Destination
  • 2. Router 18A-Router 18C:
      • a. Router 18A-Router 18C-Router 18D-Destination
      • b. Router 18A-Router 18C-Router 18E-Destination
  • FIG. 2 is a block diagram illustrating an example of a router, in accordance with the techniques of described in this disclosure. In the example of FIG. 2, router 18 may represent any of routers 18 of FIG. 1. Router 18 includes a control unit 32 that includes a routing engine 34. Router 18 includes interface cards 88A-88N (collectively, “IFCs 88”) that send and receive packet flows via inbound network links 90A-90N (collectively, “inbound network links 90”) and outbound network links 92A-92N (collectively, “outbound network links 92”), respectively. IFCs 88 are typically coupled to links 90, 92 via a number of interface ports (not shown). Inbound links 90 and outbound links 92 may represent physical interfaces, logical interfaces, or some combination thereof.
  • Routing engine 34 provides an operating environment for various protocols 44 that execute at different layers of a network stack. Routing engine 34 is responsible for the maintenance of routing information 40 to reflect the current topology of a network and other network entities to which router 18 is connected. In particular, routing protocols periodically update routing information 40 to accurately reflect the topology of the network and other entities based on routing protocol messages received by router 18. The protocols may be software processes executing on one or more processors. For example, routing engine 34 includes network protocols that operate at a network layer of the network stack. In the example of FIG. 2, network protocols include TCP/IP 46.
  • Routing engine 34 may also include various messaging protocols, including Internet Control Message Protocol (ICMP) 48 and User Datagram Protocol (UDP) 49 to implement traceroute techniques described in this disclosure. ICMP 48 may include ICMP version 4, as illustrated in Request for Comments (RFC) 792, titled “Internet Control Message Protocol,” prepared by the Network Working Group of the Internet Engineering Task Force (IETF), dated September 1981, and ICMP version 6, as illustrated in Request for Comments (RFC) 4443, titled “Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6), both incorporated by reference herein. Router 18 may use ICMP 48 to convey control information, such as an ICMP traceroute request, to source network device 12. UDP 49 may also provide a procedure for which router 18A may send traceroute messages to other network devices, as illustrated in Request for Comments (RFC) 768, titled “User Datagram Protocol,” dated Aug. 28, 1980, incorporated by reference herein. Routing engine 34 may include other routing and/or messaging protocols not shown in FIG. 2.
  • Routing engine 34 may also include a traceroute module 42. In one example, traceroute module 42 may execute in the control plane of router 18. Although the examples of traceroute module 42 are described with respect to the control plane, traceroute module 42 may be configured to execute in either the control plane, the forwarding plane, or both.
  • In one example, router 18 may receive a traceroute packet including a TTL value from any of inbound links 90. In one example, forwarding engine 36 may decrement the TTL value and determine that the TTL value is not zero. In this example, traceroute module 42 may determine a number of paths from router 18 that are reachable to destination network device 14. Traceroute module 42 may configure an indicator to inform source network device 12 of the next-hop paths of the router. For example, traceroute module 42 may configure a new utility PDU packet to include a tally of the network paths available to router 18 that are reachable to the destination network device. In some examples, traceroute module 42 may include in the new utility PDU packet one or more network addresses of next-hop routers on those paths. Traceroute module 42 may forward the indicator to forwarding engine 36 such that the indicator is forwarded on any of outbound links 92 to source network device 12.
  • Traceroute module 42 may also modify the traceroute packet to include an identifier of a corresponding path of a plurality of paths of router 18. In some examples, router 18 may construct a new traceroute packet to include the identifier. In other examples, router 18 may modify an existing traceroute packet to include the identifier.
  • In any event, traceroute module 42 may modify a payload of the received traceroute packet to include a network address of router 18 and/or a session identifier to associate with a corresponding path for which the traceroute packet was forwarded to router 18. In some examples, the traceroute packet may, as described above, include a current session-stack that comprises one or more network addresses of network devices that forwarded the traceroute packet and one or more session identifiers of the path for which the traceroute packet was forwarded. That is, the traceroute packet may identify the path from source network device 12 to router 18. In this way, traceroute module 42 may construct, for a corresponding path, an updated session-stack to include one or more network addresses from source network device 12 to router 18.
  • In another example, router 18 may receive a traceroute packet including a TTL value from any of inbound links 90. Forwarding engine 36 may decrement the TTL value and determine that the TTL value is zero. In response, forwarding engine 36 may forward the traceroute packet to routing engine 34 such that traceroute module 42 may configure an extended traceroute response, in accordance with the techniques described herein. For example, traceroute module 42 may construct a TTL expired message to include a reverse-session-stack within a payload of the response that comprises an identifier associated with the corresponding path for which the traceroute packet was forwarded to router 18. In one example, traceroute module 42 may copy the session-stack received from the traceroute packet to the reverse-session-stack of the response. That is, the reverse-session-stack may comprise one or more network addresses leading up to router 18 and/or one or more session identifiers of the path for which the traceroute packet was forwarded to router 18.
  • Forwarding engine 36 represents hardware and logic functions that provide high-speed forwarding of network traffic. Forwarding engine 36 typically includes a set of one or more forwarding chips programmed with forwarding information that maps network destinations with specific next hops and the corresponding output interface ports. In the example of FIG. 2, forwarding engine 36 includes forwarding information 50. In accordance with routing information 40, forwarding engine 36 maintains forwarding information 50 that associates network destinations with specific next hops and corresponding interface ports. For example, routing engine 34 analyzes routing information 40 and generates forwarding information 50 in accordance with routing information 40. Forwarding information 50 may be maintained in the form of one or more tables, link lists, radix trees, databases, flat files, or any other data structures.
  • The architecture of router 18 illustrated in FIG. 2 is shown for exemplary purposes only. The disclosure is not limited to this architecture. In other examples, router 18 may be configured in a variety of ways. In one example, some of the functionality of routing engine 34 and forwarding engine 36 may be distributed within IFCs 88.
  • Elements of control unit 32 may be implemented solely in software, or hardware, or may be implemented as combinations of software, hardware, or firmware. For example, control unit 32 may include one or more processors, one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or any other equivalent integrated or discrete logic circuitry, or any combination thereof, which execute software instructions. In that case, the various software modules of control unit 32 may comprise executable instructions stored, embodied, or encoded in a computer-readable medium, such as a computer-readable storage medium, containing instructions. Instructions embedded or encoded in a computer-readable medium may cause a programmable processor, or other processor, to perform the method, e.g., when the instructions are executed. Computer-readable storage media may include random access memory (RAM), read only memory (ROM), programmable read only memory (PROM), erasable programmable read only memory (EPROM), electronically erasable programmable read only memory (EEPROM), non-volatile random access memory (NVRAM), flash memory, a hard disk, a CD-ROM, a floppy disk, a cassette, a solid state drive, magnetic media, optical media, or other computer-readable media. Computer-readable media may be encoded with instructions corresponding to various aspects of router 18, e.g., protocols. Control unit 32, in some examples, retrieves and executes the instructions from memory for these aspects.
  • FIG. 3 is a block diagram illustrating an example of a network device, such as source network device 12 of FIG. 1, that allows administrator 16 to implement an extended traceroute utility to identify network paths of a network device with a plurality of paths, in accordance with the techniques described herein.
  • In this example, source network device 12 includes interface cards 324A-324N (collectively, “IFCs 324”) that send and receive packet flows via inbound network links 326A-326N (collectively, “inbound network links 326”) and outbound network links 328A-328N (collectively, “outbound network links 328”), respectively. IFCs 324 are coupled to control unit 320 by an input/output bus 330. In general, control unit 320 provides an operating environment of executing software instructions stored within storage device 333.
  • For example, control unit 320 may include one or more programmable processors 334 capable of executing software instructions. Operating system 335, when executed by processor 334, provides an execution environment for software components, including diagnostic protocols such as traceroute 336. Traceroute 336 allows source network device 12 to output traceroute request packets, and receive traceroute response packets, as described herein. For example, traceroute 336 may construct a traceroute packet comprising an identifier for one or more paths from source network device 12 that are reachable to destination network device 14. In some examples, traceroute 336 may also construct the traceroute packet to include a network address of source network device 12.
  • Traceroute 336 may also determine from one or more indicators received from routers 18 the number of paths a router has to reach destination network device 14. Based on the indicator, traceroute 336 may determine whether source network device 12 has received a response from each of the plurality of paths of the router. If source network device 12 has not received a response for each of the paths of the router, traceroute 336 may prevent source network device 12 from configuring a new traceroute packet with an incremented TTL value and may wait until source network device 12 receives a response for all paths of the router. If source network device 12 has received a response for all paths of the router, traceroute 336 may configure a traceroute tree based on the responses, and may also increment the TTL value and configure another traceroute packet.
  • Although described with respect to a computer, the source network device or the target network device may be any form of network device, and either or both of the devices may have one or more unnumbered interfaces. Examples of other devices include servers, laptops, desktops, mobile devices, intrusion detection devices, virtual private network (VPN) appliances, routers, hubs, switches, gateways, firewalls, security devices and other network devices and appliances.
  • FIG. 4 is a block diagram illustrating an example format of a traceroute packet 400 for use in tracing multiple paths of a network device, in accordance with the techniques described herein. In the example of FIG. 4, traceroute packet 400 merely illustrated as an example and may include more or fewer data fields.
  • Traceroute packet 400 includes a header 401 including at least a source port field 402, a destination port field 404, and a TTL value field 406. Source port field 402 may include source information for purposes of routing. For example, source port field 402 may contain a source IP address of source network device 12. Destination port field 404 contains destination information. For example, destination port field 404 may contain a destination IP address of destination network device 14. The TTL field 410 may include a value that indicates a maximum number of hops the packet can traverse on the way to the packet's destination prior to expiration. Length field 408 may include the length of traceroute packet 400. Checksum field 410 may be calculated taking into account the entire traceroute packet 400. Further information regarding UDP and the packet format of UDP can be found in Request for Comments (RFC) 768, titled “User Datagram Protocol,” dated Aug. 28, 1980, incorporated by reference herein.
  • Payload 412 may include a “session-stack” as described in this disclosure. For example, payload 412 may comprise a network device identifier (“DEV ID”) field 414 and a session identifier (“SESSION ID”) field 416. For example, when traceroute is initiated at a source network device, a network device may enter a network device identifier (e.g., an IP address) of the source network device into network device identifier field 412, and may enter a session number into session identifier field 414 to associate a particular path of the source network device that is reachable to the destination network device. As the packet traverses the network, an intermediate network device, e.g., router 18A, that receives traceroute packet 400 with TTL value field 406 having a TTL value greater than one may modify payload 412 to include its network address in network device identifier field 414 and a session number associated with a particular path of the intermediate network device in session identifier field 416. For example, router 18A may add to payload 412 its network address to device identifier field 412 and a respective session identifier associating with one of the paths to routers 18B and 18C in session identifier field 416. In this way, payload 410 may include a list of network addresses for source network device 12 and router 18A, and a respective session identifier to associate with the path to router 18B, for example.
  • FIG. 5 is a block diagram illustrating an example format of a response 500 for use in tracing multiple paths of a network device, in accordance with the techniques described herein. Response 500 may, for example, be structured similar to an ICMP time exceeded packet and is configured by traceroute module 42 of FIG. 2. Response 500 may include an IP header 502 that contains destination information for purposes of routing. For example, IP header 502 may contain a source IP address, a destination IP address, and a Time to Live (TTL) value that indicates a maximum number of hops the packet can traverse on the way to the packet's destination prior to expiration.
  • In addition, response 500 may include a header 503 having a type field 504, a code field 506, and a checksum 508. Type field 504 is used to identify the type of message. For example, a type value of “11” indicates that the packet is a time exceeded message. This type of packet is used by a traceroute utility to respond when a TTL value is zero. Code field 506 varies depending on the particular type of message, as specified by type field 504. For example, for a traceroute reply packet having type 11 (“time exceeded”), a code value of “0” indicates that the time to live expired while the packet was in transit. Checksum 508 may be calculated taking into account the entire packet. Further information regarding ICMP and the various packet formats of ICMP can be found in Request for Comments (RFC) 792, titled “Internet Control Message Protocol,” prepared by the Network Working Group of the Internet Engineering Task Force (IETF), dated September 1981, incorporated by reference herein.
  • Payload 510 is extended to include a reverse-session-stack” as described in this disclosure. For example, payload 510 may comprise a network device identifier (“DEV ID”) field 512 and a session identifier (“SESSION ID”) field 514. When a target network device receives a traceroute packet with an IP header having a TTL value of one, the target network device may configure a traceroute response packet 500 with payload 510 copied from the payload of a traceroute packet (as described in FIG. 4) received from a previous-hop. That is, the one or more device identifiers and one or more session identifiers included in the received traceroute packet is included in a payload 510 of response 500.
  • FIG. 6 is a flowchart illustrating an example operation of network system 10, in accordance with the techniques described in this disclosure. For illustration purposes, FIG. 6 is explained with reference to source network device 12 of FIGS. 1 and 3, and routers 18A-18C of FIGS. 1 and 2. Although the examples described below are illustrated with respect to routers 18A-18C of FIGS. 1 and 2, any of routers 18 may perform the described examples.
  • Source network device 12 may configure a traceroute packet including an identifier associated with one or more paths from source network device 12 to destination network device and a TTL value (602). For example, an administrator may invoke the traceroute utility 336 of source network device 12 to configure a traceroute packet to include an identifier having a session-stack comprising a network address of source network device 12 and a session identifier to associate the one or more paths from the source network device to the destination network device. Source network device 12 may send the traceroute packet upstream towards destination network device 14 (604).
  • An intermediate network device, e.g., router 18A, may receive the traceroute packet (606). As further described in FIG. 6, router 18A may determine, based on the TTL value included with the traceroute packet, whether to forward the traceroute packet or to construct a response to the traceroute packet. In this example, router 18A may be illustrated to forward the traceroute packet.
  • Prior to forwarding the traceroute packet, router 18A may determine a number of paths of router 18A that may reach the destination (608). In one example, router 18A may configure an indicator that includes the number of the paths for router 18A. In this example, router 18A may include an indicator representing the number of paths to routers 18B and 18C. In some examples, the indicator may further include one or more network addresses of next-hop devices on the paths, such as network addresses of routers 18B and 18C.
  • Router 18A may send the indicator to source network device 12 (610). Source network device 12 may receive the indicator (612). Source network device 12 may determine based on the indicator the number of paths of router 18A.
  • Router 18A may modify a payload of the traceroute packet to include a respective identifier associated with a corresponding path of router 18A (614). For example, router 18A may configure one respective modified traceroute packet including a session-stack comprising a network address of router 18A and a respective session identifier to associate a corresponding path to router 18B. Router 18A may also configure another respective modified traceroute packet including a session-stack comprising the network address of router 18A and a respective session identifier to associate a corresponding path to router 18C. That is, router 18A may construct respective modified traceroute packets for corresponding paths of router 18A. Router 18A may send the respective modified traceroute packets to their corresponding paths to target routers 18B and 18C (616).
  • Target routers 18B and 18C may each receive a respective modified traceroute packet (618, 620). Each of routers 18B and 18C may, when the TTL value is one, configure a response to the modified traceroute packet (622, 624). As further described in FIG. 6, the received modified traceroute packet is forwarded to a control plane of the target network device such that the target network device may configure a response. In one example, the response may include a reverse-session-stack copied from the session-stack received from router 18A. That is, the response for router 18B may include network addresses for source network device 12 and intermediate router 18A, and a session identifier associating the path from intermediate router 18A to target router 18B. Similarly, the response for router 18C may include network addresses for source network device 12 and intermediate router 18A, and a session identifier associating the path from intermediate router 18A to target router 18C.
  • Routers 18B and 18C may each send its response toward source network device 12 (626, 628). For example, in response to configuring the response, each of routers 18B and 18C may forward the response to its forwarding engine to forward the response on an outbound interface link to router 18A.
  • Intermediate router 18A may receive the responses (630). Router 18A may receive the responses in parallel or sequentially. In any event, router 18A may send the responses from routers 18B and 18C toward source network device 12 (632).
  • Source network device 12 may receive the responses on any of inbound interface links 328 and may determine whether source network device 12 has received a response for each of the plurality of network paths of a network device based on the received indicator (634). For example, based on the received indicator, the traceroute utility 336 of source network device 12 may determine that source network device 12 expects to receive a response for the path from router 18A to router 18B and another response for the path from router 18A to router 18C. In response to receiving a response for each of the network paths of router 18A, source network device 12 may then configure a traceroute tree based on the received responses (636), and configure a new traceroute packet with an incremented TTL value for which source network device 12 may send toward destination network device 14 (638). Source network device 12 may continue the process until receiving a response from a destination network device.
  • FIG. 7 is a flowchart illustrating an example operation of router 18, in accordance with the techniques described in this disclosure. Router 18 of FIG. 7 may represent any of routers 18 of FIGS. 1 and 2.
  • Router 18 may receive a traceroute packet including a TTL value from one of inbound network links 90 (702). The forwarding engine 36 of router 18 may decrement the TTL value and determine whether the TTL value is zero (704). If the TTL value is zero, router 18 may forward the traceroute packet to routing engine 34 such that traceroute module 42 may construct a response to the traceroute packet.
  • Traceroute module 42 of router 18 may construct a response including a respective identifier received from the traceroute packet (706). For example, router 18 may receive a traceroute packet that includes in its payload a session-stack comprising one or more network addresses of network devices that forwarded the traceroute packet and/or one or more session identifiers associated with paths for which the traceroute packet was forwarded on. In one example, router 18 may construct an extended TTL expired message including in a payload of the message a reverse-session-stack that copies the session-stack of the received traceroute packet. That is, the response may include the one or more network addresses of network devices that forwarded the traceroute packet and the one or more session identifiers associated with paths for which the traceroute packet was forwarded. Router 18 may forward the response to forwarding engine 36 to send the response on any of outbound links 92 toward source network device 12 (708).
  • If the TTL value is not zero, then router 18 may determine a number of paths it has for reaching destination network device 14 (710). For example, traceroute module 42 of router 18 may perform a destination lookup to determine the paths reachable to destination network device 14. Traceroute module 42 may configure an indicator comprising the number of paths (712). In one example, router 18 may use traceroute module 42 to configure the indicator as a new utility PDU including the number of paths of router 18. In some examples, the new utility PDU may include one or more network addresses of next-hop network devices on the paths of router 18. Router 18 may send the indicator on any of outbound links 92 toward source network device 12 (714).
  • Traceroute module 42 of router 18 may modify a payload of the traceroute packet to include a respective identifier for a corresponding path of router 18 (716). In one example, traceroute module 42 may modify the payload to include a session-stack comprising at least a network address of router 18 and a session identifier associated with a corresponding path of router 18 that may reach destination network device 14.
  • Router 18 may forward the respective modified traceroute packet on the corresponding paths (718). For example, traceroute module 42 may forward the respective modified traceroute packets to forwarding engine 36 to forward the respective modified traceroute packets on any of outbound links 92 toward the corresponding paths to the next-hops.
  • Forwarding engine 36 of router 18 may receive one or more responses to the modified traceroute packet on any of inbound links 90 (720). Forwarding engine 36 of router 18 may identify from the response packet header that the responses are to be forward to source network device 12 on any of outbound links 92 toward source network device 12 (722).
  • FIG. 8 is a flowchart illustrating an example operation of source network device 12, in accordance with the techniques described in this disclosure. In the example of FIG. 8, source network device 12 represents source network device 12 of FIGS. 1 and 3.
  • An administrator may use source network device 12 to initiate a traceroute utility 336 (802). Source network device 12 may configure a traceroute packet including a network identifier for a path available to source network device 12 to reach the destination network device (804). For example, source network device 12 may configure a payload of a traceroute packet with a “session-stack” comprising the network address of source network device 12 and/or a respective session identifier associated with the next-hop path from source network device 12. Source network device 12 may also configure a TTL value to indicate a maximum number of hops the packet can traverse on the way to the packet's destination prior to expiration.
  • Source network device 12 sends the traceroute packet and TTL value via any of outbound links 328 towards destination network device 14 (806). For example, source network device 12 may use the UDP protocol to communicate the traceroute packet as described herein to illicit responses from a target network device, e.g., router 18, along the path to the destination network device.
  • As the traceroute packet traverses through the network, source network device 12 may receive an indicator from an intermediary router including a number of paths available to the router for reaching the destination network device (808). In some examples, the indicator may also include one or more network addresses of next-hop routers on those paths.
  • Source network device 12 may receive one or more responses to the traceroute packet on any of inbound links 326 (810). Traceroute 336 of source network device 12 may determine based on the indicator received from the intermediary router whether source network device 12 has received a response from each of the plurality of paths of the intermediary router (812). If source network device 12 has not received a response for each of the paths of the intermediary router, source network device 12 may not configure a new traceroute packet with an incremented TTL value and may wait to receive one or more additional responses to the traceroute packet (810). If source network device 12 has received a response for each of the plurality of paths of the intermediary router, source network device 12 may configure a traceroute tree based on the received one or more responses for each path of the intermediary router (814), and may also increment the TTL value (814) and configure another traceroute packet (804).
  • The techniques described herein may be implemented in hardware, software, firmware, or any combination thereof. Various features described as modules, units or components may be implemented together in an integrated logic device or separately as discrete but interoperable logic devices or other hardware devices. In some cases, various features of electronic circuitry may be implemented as one or more integrated circuit devices, such as an integrated circuit chip or chipset.
  • If implemented in hardware, this disclosure may be directed to an apparatus such a processor or an integrated circuit device, such as an integrated circuit chip or chipset. Alternatively or additionally, if implemented in software or firmware, the techniques may be realized at least in part by a computer-readable data storage medium comprising instructions that, when executed, cause a processor to perform one or more of the methods described above. For example, the computer-readable data storage medium may store such instructions for execution by a processor.
  • A computer-readable medium may form part of a computer program product, which may include packaging materials. A computer-readable medium may comprise a computer data storage medium such as random access memory (RAM), read-only memory (ROM), non-volatile random access memory (NVRAM), electrically erasable programmable read-only memory (EEPROM), Flash memory, magnetic or optical data storage media, and the like. In some examples, an article of manufacture may comprise one or more computer-readable storage media.
  • In some examples, the computer-readable storage media may comprise non-transitory media. The term “non-transitory” may indicate that the storage medium is not embodied in a carrier wave or a propagated signal. In certain examples, a non-transitory storage medium may store data that can, over time, change (e.g., in RAM or cache).
  • The code or instructions may be software and/or firmware executed by processing circuitry including one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term “processor,” as used herein may refer to any of the foregoing structure or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, functionality described in this disclosure may be provided within software modules or hardware modules.
  • Various examples of the invention have been described. These and other examples are within the scope of the following claims.

Claims (21)

What is claimed is:
1. A method comprising:
receiving, by a network device coupled to a plurality of paths for reaching a destination network device and positioned between a source network device and the destination network device, a traceroute packet;
for each of the plurality of paths, modifying, by the network device, a payload of the traceroute packet to include a respective identifier for a corresponding path of the plurality of paths to construct a respective modified traceroute packet for the corresponding path;
forwarding, by the network device, the respective modified traceroute packets on the corresponding paths.
2. The method of claim 1, wherein receiving the traceroute packet comprises:
receiving one or more network addresses of one or more intermediate network devices that forwarded the traceroute packet on a path to the network device, wherein the one or more intermediate network devices are positioned between the network device and the source network device; and
receiving one or more session identifiers associated with the path to the network device for which the one or more intermediate network devices forwarded the traceroute packet.
3. The method of claim 1, wherein modifying the payload of the traceroute packet to include the respective identifier further comprises modifying the payload of the traceroute packet to include a network address of the network device.
4. The method of claim 1, further comprising:
configuring, by the network device, an indicator representing a number of the plurality of paths of the network device; and
sending, by the network device, the indicator to the source network device.
5. The method of claim 4, wherein configuring the indicator further comprises configuring the indicator to include one or more network addresses of one or more next-hops on the plurality of paths of the network device.
6. The method of claim 1, further comprising:
determining, by the network device, whether the traceroute packet includes a TTL value of zero; and
in response to determining the TTL value is zero, constructing, by the network device, a response comprising a respective identifier included with traceroute packet.
7. The method of claim 6, wherein constructing the response comprising the respective identifier further comprises:
constructing the response to include one or more network addresses of one or more intermediate network devices that forwarded the traceroute packet to the network device, wherein the one or more intermediate network devices are positioned between the network device and the source network device; and
sending, by the network device, the response towards the source network device.
8. The method of claim 6, wherein configuring the response to the traceroute packet comprises configuring an Internet Control Message Protocol (ICMP) packet.
9. The method of claim 1, wherein the plurality of paths comprises a plurality of Equal Cost Multi-Path (ECMP) paths.
10. A method comprising:
sending, by a source network device, a traceroute packet to an intermediate network device coupled to a plurality of paths for reaching a destination network device, wherein the intermediate network device is positioned between the source network device and the destination network device; and
receiving, by the source network device and from the intermediate network device, one or more respective responses, wherein each of the one or more respective responses comprises a payload including a respective identifier for a corresponding path of the plurality of paths.
11. The method of claim 10, wherein receiving the one or more respective responses comprises:
receiving one or more network addresses of one or more network devices that forwarded the traceroute packet on the corresponding path.
12. The method of claim 10, further comprising:
receiving, by the source network device and from the intermediate network device, an indicator representing a number of the plurality of paths of the intermediate network device;
determining, by the source network device and based on the indicator, whether the source network device has received a respective response for each of a plurality of traceroute packets generated by the intermediate network device and output on respective ones of the plurality of paths toward the destination network device; and
in response to determining the source network device has received the respective response for each of the plurality of paths, configuring, by the source network device, another traceroute packet with an incremented TTL value.
13. The method of claim 12, further comprising:
in response to determining the source network device has received the respective response for each of the plurality of paths, constructing, by the source network device and based on the responses, a traceroute tree for each of the plurality of paths.
14. The method of claim 10, wherein sending the traceroute packet comprises sending an identifier for one or more paths from the source network device to the destination network device.
15. The method of claim 14, wherein sending the traceroute packet further comprises sending a network address of the source network device.
16. The method of claim 10, wherein the respective identifier of the corresponding path further comprises:
one or more network addresses of the one or more network devices that forwarded the traceroute packet on the corresponding path.
17. A network device comprising:
a plurality of network interfaces, each of the network interfaces coupled to a different one of a plurality of paths for reaching a destination network device, wherein the network device is positioned between a source network device and the destination network device;
one or more hardware-based processors configured to:
receive a traceroute packet destined for the destination device;
for each of the plurality of paths, modify a payload of the traceroute packet to include a respective identifier for a corresponding path of the plurality of paths to construct a respective modified traceroute packet for the corresponding path; and
forward the respective modified traceroute packets on the corresponding paths.
18. The network device of claim 17, wherein the one or more hardware-based processors are further configured to:
determine whether the traceroute packet includes a TTL value of zero; and
in response to determining the TTL value is zero, construct a response comprising a respective identifier included with traceroute packet.
19. The network device of claim 17, wherein the one or more hardware-based processors are further configured to:
configure an indicator representing a number of the plurality of paths; and
send the indicator to the source network device.
20. A source network device comprising:
one or more hardware-based processors configured to:
send a traceroute packet toward a destination network device; and
receive one or more respective responses, wherein each of the one or more respective responses comprises a payload including a respective identifier for a corresponding path of a plurality of paths of an intermediate network device, wherein the intermediate network device is positioned between the source network device and the destination network device.
21. The source network device of claim 20, wherein the one or more hardware-based processors are further configured to:
receive, from the intermediate network device, an indicator representing a number of the plurality of paths of the intermediate network device;
determine, based on the indicator, whether the source network device has received a respective response for each of the plurality of paths; and
in response to determining the source network device has received the respective response for each of the plurality of paths, configure another traceroute packet with an incremented TTL value.
US15/470,427 2017-03-27 2017-03-27 Traceroute for multi-path routing Abandoned US20180278514A1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US15/470,427 US20180278514A1 (en) 2017-03-27 2017-03-27 Traceroute for multi-path routing
CN201711465522.9A CN108667681B (en) 2017-03-27 2017-12-28 Route tracing for multipath routing
EP18152156.8A EP3382954B1 (en) 2017-03-27 2018-01-17 Traceroute for multi-path routing
US17/821,998 US20220407800A1 (en) 2017-03-27 2022-08-24 Traceroute for multi-path routing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US15/470,427 US20180278514A1 (en) 2017-03-27 2017-03-27 Traceroute for multi-path routing

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/821,998 Continuation US20220407800A1 (en) 2017-03-27 2022-08-24 Traceroute for multi-path routing

Publications (1)

Publication Number Publication Date
US20180278514A1 true US20180278514A1 (en) 2018-09-27

Family

ID=61002917

Family Applications (2)

Application Number Title Priority Date Filing Date
US15/470,427 Abandoned US20180278514A1 (en) 2017-03-27 2017-03-27 Traceroute for multi-path routing
US17/821,998 Pending US20220407800A1 (en) 2017-03-27 2022-08-24 Traceroute for multi-path routing

Family Applications After (1)

Application Number Title Priority Date Filing Date
US17/821,998 Pending US20220407800A1 (en) 2017-03-27 2022-08-24 Traceroute for multi-path routing

Country Status (3)

Country Link
US (2) US20180278514A1 (en)
EP (1) EP3382954B1 (en)
CN (1) CN108667681B (en)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10326681B2 (en) * 2016-12-02 2019-06-18 Fujitsu Limited System and method to analyze route information in a network
CN110336716A (en) * 2019-07-15 2019-10-15 哈尔滨工业大学 A kind of efficient destination host end hop router detection method
US20200162589A1 (en) * 2018-11-16 2020-05-21 Cisco Technology, Inc. Intent based network data path tracing and instant diagnostics
US10904123B2 (en) * 2019-05-31 2021-01-26 Microsoft Technology Licensing, Llc Trace routing in virtual networks
US11170776B1 (en) * 2019-09-16 2021-11-09 Amazon Technologies, Inc. Speech-processing system
US20210409323A1 (en) * 2020-06-24 2021-12-30 Juniper Networks, Inc. Layer -2 network extension over layer-3 network using layer-2 metadata
US20220029900A1 (en) * 2017-11-10 2022-01-27 Twitter, Inc. Detecting sources of computer network failures
US20220053407A1 (en) * 2020-04-02 2022-02-17 Shenzhen Chuangwei-Rgb Electronics Co., Ltd. Data transmission method, device, gateway and storage medium for mesh network
US20230370370A1 (en) * 2020-04-20 2023-11-16 Cisco Technology, Inc. Initiator-based data-plane validation for segment routed, multiprotocol label switched (mpls) networks
US11922938B1 (en) 2021-11-22 2024-03-05 Amazon Technologies, Inc. Access to multiple virtual assistants

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11290365B2 (en) 2019-07-31 2022-03-29 Microsoft Technology Licensing, Llc Optimizing how test packets are sent during continuous network monitoring
CN110677319B (en) * 2019-08-23 2021-03-23 北京邮电大学 End-to-end time delay measuring method and device
US11165681B2 (en) * 2019-09-27 2021-11-02 Juniper Networks, Inc. Inter-autonomous system trace route message
WO2021146879A1 (en) * 2020-01-21 2021-07-29 深圳市汇顶科技股份有限公司 Method for transmitting message, ble device and ble chip
US11418428B2 (en) * 2020-09-30 2022-08-16 Juniper Networks, Inc. Recomputation of multipaths in a segment routing-enabled network
US11405320B2 (en) * 2020-12-04 2022-08-02 Cisco Technology, Inc. Systems and methods for scalable validation of multiple paths in a network using segment routing
CN114978942A (en) * 2022-05-13 2022-08-30 深信服科技股份有限公司 Router detection method and device, electronic equipment and storage medium
CN115865796B (en) * 2023-03-03 2023-04-21 深圳市欣博跃电子有限公司 Path planning method for router label switching

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040073641A1 (en) * 2002-09-30 2004-04-15 Muneyb Minhazuddin Instantaneous user initiation voice quality feedback
US20060182034A1 (en) * 2002-12-13 2006-08-17 Eric Klinker Topology aware route control
US20090073924A1 (en) * 2006-05-01 2009-03-19 Koninklijke Philips Electronics, N.V. Method of discovering an ad-hoc on-demand distance vector route having at least a minimum set of available resources in a distributed wireless communications network
US7706278B2 (en) * 2007-01-24 2010-04-27 Cisco Technology, Inc. Triggering flow analysis at intermediary devices
US20110206035A1 (en) * 2010-02-23 2011-08-25 Lg Electronics Inc. Method and an apparatus for session routing in home network system
US20110299406A1 (en) * 2010-06-02 2011-12-08 Brocade Communications Systems, Inc. Path detection in trill networks
US20110317696A1 (en) * 2010-06-29 2011-12-29 Cisco Technology In-band multicast trace in ip and mpls networks
US20120066165A1 (en) * 2010-09-14 2012-03-15 Verizon Patent And Licensing Inc. Traceroute diagnosis
US20120099443A1 (en) * 2010-10-22 2012-04-26 Brocade Communications Systems, Inc. Path diagnosis in communication networks
US20120207039A1 (en) * 2011-02-16 2012-08-16 Oracle International Corporation Method and system for validating network traffic classification in a blade server
US20130163446A1 (en) * 2011-12-22 2013-06-27 Voipfuture Gmbh Correlation of Media Plane and Signaling Plane of Media Services in a Packet-Switched Network
US20130286859A1 (en) * 2011-04-21 2013-10-31 Huawei Technologies Co., Ltd. Fault detection method and system
US20140043962A1 (en) * 2012-08-07 2014-02-13 Qualcomm Incorporated STATISTICS AND FAILURE DETECTION IN A NETWORK ON A CHIP (NoC) NETWORK
US20150016298A1 (en) * 2013-07-12 2015-01-15 Nicira, Inc. Tracing Logical Network Packets Through Physical Network
US8953460B1 (en) * 2012-12-31 2015-02-10 Juniper Networks, Inc. Network liveliness detection using session-external communications
US20150124629A1 (en) * 2013-11-05 2015-05-07 Cisco Technology, Inc. Traceroute in a dense vxlan network

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5675741A (en) * 1994-10-25 1997-10-07 Cabletron Systems, Inc. Method and apparatus for determining a communications path between two nodes in an Internet Protocol (IP) network
US7596097B1 (en) * 2006-03-09 2009-09-29 Cisco Technology, Inc. Methods and apparatus to prevent network mapping
CN101335689B (en) * 2007-06-26 2011-11-02 华为技术有限公司 Traceroute implementing method and equipment
US8130663B2 (en) * 2007-09-14 2012-03-06 At&T Intellectual Property I, L.P. Methods and apparatus to route emergency communication sessions
US8880724B2 (en) * 2008-01-31 2014-11-04 Cisco Technology, Inc. Event triggered traceroute for optimized routing in a computer network
US8959245B2 (en) * 2008-11-25 2015-02-17 Broadcom Corporation Multiple pathway session setup to support QoS services
US8724494B2 (en) * 2009-10-07 2014-05-13 Riverbed Technology, Inc. Network multi-path discovery
US8483069B1 (en) * 2010-01-13 2013-07-09 Juniper Networks, Inc. Tracing Ethernet frame delay between network devices
US9049140B2 (en) * 2010-11-18 2015-06-02 Microsoft Technology Licensing, Llc Backbone network with policy driven routing
US8670326B1 (en) * 2011-03-31 2014-03-11 Cisco Technology, Inc. System and method for probing multiple paths in a network environment
US9064216B2 (en) * 2012-06-06 2015-06-23 Juniper Networks, Inc. Identifying likely faulty components in a distributed system
WO2014179533A1 (en) * 2013-05-01 2014-11-06 Adc Telecommunications, Inc. Enhanced route tracing
US9985861B2 (en) * 2014-10-13 2018-05-29 Cisco Technology, Inc. SGT feature trace using netflow
CN105634776B (en) * 2014-10-31 2020-01-31 华为技术有限公司 method and device for determining message forwarding interface
US20170117978A1 (en) * 2015-10-27 2017-04-27 Mediatek Inc. Method for selecting ttl for a mesh network
US10158556B2 (en) * 2017-03-24 2018-12-18 Cisco Technology, Inc. Application-aware equal cost multipath discovery mechanism

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040073641A1 (en) * 2002-09-30 2004-04-15 Muneyb Minhazuddin Instantaneous user initiation voice quality feedback
US20060182034A1 (en) * 2002-12-13 2006-08-17 Eric Klinker Topology aware route control
US20090073924A1 (en) * 2006-05-01 2009-03-19 Koninklijke Philips Electronics, N.V. Method of discovering an ad-hoc on-demand distance vector route having at least a minimum set of available resources in a distributed wireless communications network
US7706278B2 (en) * 2007-01-24 2010-04-27 Cisco Technology, Inc. Triggering flow analysis at intermediary devices
US20110206035A1 (en) * 2010-02-23 2011-08-25 Lg Electronics Inc. Method and an apparatus for session routing in home network system
US20110299406A1 (en) * 2010-06-02 2011-12-08 Brocade Communications Systems, Inc. Path detection in trill networks
US20110317696A1 (en) * 2010-06-29 2011-12-29 Cisco Technology In-band multicast trace in ip and mpls networks
US20120066165A1 (en) * 2010-09-14 2012-03-15 Verizon Patent And Licensing Inc. Traceroute diagnosis
US20120099443A1 (en) * 2010-10-22 2012-04-26 Brocade Communications Systems, Inc. Path diagnosis in communication networks
US20120207039A1 (en) * 2011-02-16 2012-08-16 Oracle International Corporation Method and system for validating network traffic classification in a blade server
US20130286859A1 (en) * 2011-04-21 2013-10-31 Huawei Technologies Co., Ltd. Fault detection method and system
US20130163446A1 (en) * 2011-12-22 2013-06-27 Voipfuture Gmbh Correlation of Media Plane and Signaling Plane of Media Services in a Packet-Switched Network
US20140043962A1 (en) * 2012-08-07 2014-02-13 Qualcomm Incorporated STATISTICS AND FAILURE DETECTION IN A NETWORK ON A CHIP (NoC) NETWORK
US8953460B1 (en) * 2012-12-31 2015-02-10 Juniper Networks, Inc. Network liveliness detection using session-external communications
US20150016298A1 (en) * 2013-07-12 2015-01-15 Nicira, Inc. Tracing Logical Network Packets Through Physical Network
US20150124629A1 (en) * 2013-11-05 2015-05-07 Cisco Technology, Inc. Traceroute in a dense vxlan network

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10326681B2 (en) * 2016-12-02 2019-06-18 Fujitsu Limited System and method to analyze route information in a network
US20220029900A1 (en) * 2017-11-10 2022-01-27 Twitter, Inc. Detecting sources of computer network failures
US20200162589A1 (en) * 2018-11-16 2020-05-21 Cisco Technology, Inc. Intent based network data path tracing and instant diagnostics
US11882202B2 (en) * 2018-11-16 2024-01-23 Cisco Technology, Inc. Intent based network data path tracing and instant diagnostics
US10904123B2 (en) * 2019-05-31 2021-01-26 Microsoft Technology Licensing, Llc Trace routing in virtual networks
CN110336716A (en) * 2019-07-15 2019-10-15 哈尔滨工业大学 A kind of efficient destination host end hop router detection method
US11170776B1 (en) * 2019-09-16 2021-11-09 Amazon Technologies, Inc. Speech-processing system
US11716672B2 (en) * 2020-04-02 2023-08-01 Shenzhen Chuangwei-Rgb Electronics Co., Ltd. Data transmission method, device, gateway and storage medium for mesh network
US20220053407A1 (en) * 2020-04-02 2022-02-17 Shenzhen Chuangwei-Rgb Electronics Co., Ltd. Data transmission method, device, gateway and storage medium for mesh network
US20230370370A1 (en) * 2020-04-20 2023-11-16 Cisco Technology, Inc. Initiator-based data-plane validation for segment routed, multiprotocol label switched (mpls) networks
US11477115B2 (en) * 2020-06-24 2022-10-18 Juniper Networks, Inc. Layer-2 network extension over layer-3 network using encapsulation
US20230008913A1 (en) * 2020-06-24 2023-01-12 Juniper Networks, Inc. Layer-2 network extension over layer-3 network using encapsulation
US11784917B2 (en) * 2020-06-24 2023-10-10 Juniper Networks, Inc. Layer-2 network extension over Layer-3 network using encapsulation
US11799762B2 (en) 2020-06-24 2023-10-24 Juniper Networks, Inc. Layer-2 network extension over layer-3 network using layer-2 metadata
US11546249B2 (en) * 2020-06-24 2023-01-03 Juniper Networks, Inc. Layer-2 network extension over layer-3 network using layer-2 metadata
US20210409323A1 (en) * 2020-06-24 2021-12-30 Juniper Networks, Inc. Layer -2 network extension over layer-3 network using layer-2 metadata
US11922938B1 (en) 2021-11-22 2024-03-05 Amazon Technologies, Inc. Access to multiple virtual assistants

Also Published As

Publication number Publication date
CN108667681B (en) 2022-03-18
US20220407800A1 (en) 2022-12-22
CN108667681A (en) 2018-10-16
EP3382954B1 (en) 2021-09-01
EP3382954A1 (en) 2018-10-03

Similar Documents

Publication Publication Date Title
US20220407800A1 (en) Traceroute for multi-path routing
US11438254B2 (en) Apparatus and method to trace packets in a packet processing pipeline of a software defined networking switch
EP3879759B1 (en) Optimized datapath troubleshooting with trace policy engine
US11115328B2 (en) Efficient troubleshooting in openflow switches
CN108702326B (en) Method, device and non-transitory machine-readable medium for detecting SDN control plane loops
US10097372B2 (en) Method for resource optimized network virtualization overlay transport in virtualized data center environments
US8634428B2 (en) Method and system for symmetric routing
EP3437269B1 (en) Efficient method to aggregate changes and to produce border gateway protocol link-state (bgp-ls) content from intermediate system to intermediate system (is-is) link-state database
US20210258249A1 (en) FLEXIBLE ALGORITHM AWARE BORDER GATEWAY PROTOCOL (BGP) PREFIX SEGMENT ROUTING IDENTIFIERS (SIDs)
US11329845B2 (en) Port mirroring over EVPN VXLAN
US9397913B1 (en) Packet loss measurement in a distributed data plane
WO2019239189A1 (en) Robust node failure detection mechanism for sdn controller cluster
US11323371B1 (en) Micro SID packet processing with operations, administration, and management
WO2020165627A1 (en) Limited flooding in dense graphs
US10721157B2 (en) Mechanism to detect data plane loops in an openflow network
WO2017144947A1 (en) Method and apparatus for spanning trees for computed spring multicast
US20220247679A1 (en) Method and apparatus for layer 2 route calculation in a route reflector network device
WO2020100150A1 (en) Routing protocol blobs for efficient route computations and route downloads
US11218406B2 (en) Optimized datapath troubleshooting
Ellis et al. CCIE Routing and Switching V4. 0 Quick Reference

Legal Events

Date Code Title Description
AS Assignment

Owner name: JUNIPER NETWORKS, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:CHADHA, ANKIT;REEL/FRAME:041754/0912

Effective date: 20170327

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: ADVISORY ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: ADVISORY ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION