WO2015171329A1 - Network topology discovery - Google Patents

Network topology discovery Download PDF

Info

Publication number
WO2015171329A1
WO2015171329A1 PCT/US2015/027351 US2015027351W WO2015171329A1 WO 2015171329 A1 WO2015171329 A1 WO 2015171329A1 US 2015027351 W US2015027351 W US 2015027351W WO 2015171329 A1 WO2015171329 A1 WO 2015171329A1
Authority
WO
WIPO (PCT)
Prior art keywords
devices
announcement
packet
count value
announcing
Prior art date
Application number
PCT/US2015/027351
Other languages
French (fr)
Inventor
Taliaferro Smith
Sergey Yarygin
Original Assignee
Lattice Semiconductor Corporation
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 Lattice Semiconductor Corporation filed Critical Lattice Semiconductor Corporation
Publication of WO2015171329A1 publication Critical patent/WO2015171329A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/64Hybrid switching systems
    • H04L12/6418Hybrid transport
    • 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
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery

Definitions

  • Embodiments of the invention generally relate to the field of networks and, more particularly, to identification of network topology.
  • the transmission of data (such as media data) from a source device to a sink device involves the establishment of a data stream between the source device and the sink device, and possibly through one or more intermediary devices.
  • a data path through which the data stream is established can be selected based on information about topology of the network (i.e., arrangements of each device within the network and interconnections between devices).
  • topology of the network is subject to frequent changes. For example, a new connection may be established between two devices, or an existing connection may be interrupted in the network. Without identifying a current topology of the network, selecting a data path based on outdated information about the network topology may result in an inaccurate solution.
  • Embodiments relate to identifying a topology of a network based on information identifying adjacent devices one hop away from each of the devices in the network.
  • Each device identifies one or more adjacent devices within one hop and stores information identifying the one or more adjacent devices.
  • a requesting device aggregates information identifying one or more adjacent devices of each device and identifies the topology of the network based on the aggregated information.
  • the requesting device identifies the topology of the network through two phases: a first phase and a second phase.
  • the requesting device causes each device of the network to broadcast a first type of announcement packet comprising information identifying itself.
  • each device identifies an adjacent device connected within one hop.
  • the requesting device causes each of the other devices of the network to transmit a second type of announcement packet comprising information identifying adjacent devices.
  • the requesting device aggregates the second type of announcement packets from the other devices in the network to identify the topology of the network.
  • any device in the network can operate as a requesting device. Moreover, any device in the network can interchangeably operate as an announcing device that receives and responds to the request from the requesting device.
  • a first device comprises a plurality of ports communicating with second devices and a third device, each of the second devices one hop apart from the first device, the third device coupled to the first device through at least one of the second devices.
  • the topology identification module is coupled to the plurality of ports and receives an announcement packet generated by an announcing device among the third device and the second devices in response to receiving a request packet for requesting a transmission of the announcement packet, the request packet generated by a requesting device among the first device, the second devices and the third device.
  • the announcement packet comprises information identifying the announcing device.
  • the topology identification module is further determines whether the announcing device is one of the second devices or the third device based on the announcement packet.
  • the first device further comprises a storage module that performs the following operations: (i) responsive to determining the announcing device is one of the second devices, store the information identifying the announcing device, and (ii) responsive to determining the announcing device is one of the third device, bypass storing of the information identifying the announcing device.
  • the topology identification module receives the information identifying adjacent devices of each of the second devices and the third device, and determines arrangements of the second devices and the third device and connections of the second devices and the third device based on the information identifying adjacent devices of each of the second devices and the third device.
  • the topology identification module further compares a total number of permissible hops in the announcement packet and a current number of hops in the announcement packet to determine whether the announcing device is one of the second devices or the third device. The current number of hops is increased or decreased each time the announcement packet is transmitted between devices.
  • the storage module stores a global event count value indicating a number of changes in the network topology or a device capability of the first device or any device communicatively coupled to the first device.
  • the global event count value is shared with the second devices and the third device.
  • the global event count is incremented every time a device is connected to or disconnected from the network or advertised capabilities of a device change.
  • the announcement packet includes a local event count value corresponding to the global event count value at which the announcement packet is generated by the announcing device.
  • the topology identification module further (i) compares the stored global event count value and the local event count value of the announcement packet, and (ii) determines whether to discard the announcement packet based on the comparison.
  • the storage module further discards the
  • announcement packet responsive to the event count value being less than or equal to the stored global event count value.
  • the storage module stores a global event count value indicating a number of changes in the network topology or a device capability of the first device or any device communicatively coupled to the first device.
  • the global event count value is shared with the second devices and the third device.
  • the topology identification module further receives an additional request packet generated by an additional requesting device among the third device and the second devices to request a transmission of an announcement packet of the first device.
  • the additional request packet includes a local event count value corresponding to the global event count value at which the additional request packet is generated by the additional requesting device.
  • the topology identification module further discards the additional request packet having the local event count value equal to the stored global event count value.
  • the topology identification module further transmits the request for the transmission of the announcement packet to the second devices and the third device.
  • the topology identification module further generates a list of the second devices based at least in part on the information identifying the announcing device.
  • the requesting device is the first device
  • the topology identification module further transmits the request packet of the first device responsive to (i) detecting a change of a connection status of at least one port of the topology identification module, (ii) detecting a change of a device capability of one of the third device and the second devices or (iii) receiving an instruction to identify arrangements and connections of the first device, the second device, and the third device.
  • the topology identification module further transmits another request to each of the second devices and the third device for a transmission of information identifying adjacent devices.
  • the topology identification module also receives the information identifying adjacent devices of each of the second devices and the third device. Additionally, the topology identification module identifies arrangements of the second devices and the third device and connections of the second devices and the third device based on the information identifying adjacent devices of each of the second devices and the third device.
  • the first device communicates with one of the second devices through a point-to-point communication protocol complying with Mobile High-Definition Link (MHL) standard.
  • MHL Mobile High-Definition Link
  • FIG. 1 is a block diagram illustrating a network topology, according to one embodiment.
  • FIG. 2 is a block diagram illustrating a network device, according to one embodiment.
  • FIG. 3 is an interaction diagram illustrating a first phase of a topology discovery process of an example network, according to one embodiment.
  • Fig. 4 is an interaction diagram illustrating a second phase of the topology discovery process of the example network of Fig. 3, according to one embodiment.
  • FIGs. 5A and 5B are flow charts illustrating a process of a device responding to different types of request packets, according to one embodiment.
  • Figs. 6A and 6B are flow charts illustrating a process of a device responding to different types of announcement packets, according to one embodiment.
  • Figs. 7 and 8 are diagrams illustrating example payloads of different types of announcement packets, according to one embodiment.
  • Embodiments relate to identifying a topology of a network by compiling information identifying adjacent devices from each of the devices in the network. Each device determines and stores information identifying adjacent devices connected within one hop. A requesting device obtains information of adjacent devices of each device, and identifies the topology (i.e., arrangements of each device within the network and
  • a requesting device in the network may discover a topology of the network through two phases. In a first phase, the requesting device causes each device to identify adjacent devices within one hop. In a second phase, the requesting device collects information identifying one or more adjacent devices of each device and identifies the topology of the network.
  • An adjacent device of another device herein refers to a device that is within one hop distance away from the other device within a network.
  • a hop of a destination device refers to a number of physical devices away from a source device to reach the destination device. For example, two devices directly connected to each other without any intermediary device in between are one hop away from each other. For another example, two devices connected through one
  • intermediary device in between are two hops away from each other.
  • FIG. 1 is a block diagram illustrating a network topology, according to one embodiment.
  • a network can include a personal entertainment network, such as a network in a household, a network in a business setting, or any other network of devices and/or components. Examples of networks include a Local Area Network (LAN), Wide Area Network (WAN), Metropolitan Area Network (MAN), intranet, the Internet, etc.
  • LAN Local Area Network
  • WAN Wide Area Network
  • MAN Metropolitan Area Network
  • intranet the Internet
  • the devices 1 10 are communicatively coupled.
  • a device 1 10A is communicatively coupled to a device HOB through a connection 115AB.
  • a device 110B is additionally communicatively coupled to a device 1 IOC through a connection 115BC and a device HOD through a connection 1 15BD, respectively.
  • the device 110D is also communicatively coupled to a device 110E through a connection 115DE, and a device 1 10F through a connection 115DF, respectively.
  • Each of the devices 1 10A through 11 OF in Fig. 1 can be the same type or configuration of computing device, or can be a different type or configuration of computing device than one or more other devices.
  • the type of each connection 115 within the network 100 can be the same, or can be different from one or more other device connections.
  • Each of the devices 1 10 within the network can transmit and receive data through a connection 115 using any suitable technology, such as Serial ATA ("SAT A"), Frame Information Structure (“FIS”), High-Definition Multimedia Interface (“HDMI”), Mobile High-Definition Link (“MHL”), Category-5 or Catogory-6 cable, co-axial cable, or any other suitable networking technology.
  • SAT A Serial ATA
  • FIS Frame Information Structure
  • HDMI High-Definition Multimedia Interface
  • MHL Mobile High-Definition Link
  • Category-5 or Catogory-6 cable co-axial cable
  • co-axial cable co-axial cable
  • any other suitable networking technology such as Serial ATA (“SAT A”), Frame Information Structure (“FIS”), High-Definition Multimedia Interface (“HDMI”), Mobile High-Definition Link (“MHL”), Category-5 or Catogory-6 cable, co-axial cable, or any other suitable networking technology.
  • devices within a network can be wireless, utilizing technologies such as Wi-Fi, Wi-Max, Bluetooth, LTE, and
  • Each of the devices 1 10 is a computing device configured to transmit or receive data from one or more other devices within the network 100.
  • devices include computers (such as specially configured desktop computers, laptop computers, table computers, and the like), servers (such as specially configured web servers, internet media streaming services, databases, etc.), mobile devices (such as specially configured mobile phones, and the like), media devices (such as specially configured media servers, televisions and other displays, speakers, theater equipment, cable boxes, tuner devices, video game consoles, DVD- and Blu-Ray players, and the like), storage devices (such as specially configured hard drives, cloud storage devices, video and audio storage devices, and the like), or any other suitable computing device specially configured to communicate with other network devices to establish data streams and receive/transmit data as described herein.
  • computers such as specially configured desktop computers, laptop computers, table computers, and the like
  • servers such as specially configured web servers, internet media streaming services, databases, etc.
  • mobile devices such as specially configured mobile phones, and the like
  • media devices such as specially configured media servers, televisions and other displays, speakers, theater
  • the data can include digital media content (including music data, audio/video data, gaming data, digital images, and the like), but can also include any other suitable type of data, including but not limited to text data, social networking system data, mobile phone or device data, communications data, spreadsheet data, and the like.
  • certain devices may be a source of data, such as a digital television tuner, cable set-top box, a mobile device (such as a smart phone), video storage server, and the like. Such devices are referred to herein as "source devices”. Other devices may receive, display, use, or store media content, such as a digital television, home theater system, audio system, gaming system, video and audio storage server, and the like. Such devices are referred to herein as "sink devices”. In one embodiment, any device can operate as a source device or a sink device.
  • a source device transmits data stream to a sink device through a data path.
  • a data path refers to an ordered set of devices and associated device connections through which data corresponding to a data stream is transmitted and/or received.
  • a data path can include the ordered set ⁇ 1 10A, 110B, lOOC ⁇ , through which data is transmitted by the source device 110A, received and re-transmitted at the intermediary device 110B, and received at the sink device 1 IOC.
  • a topology of the network 100 is considered for selecting a data path. Specifically, a number of hops, type, bandwidth, or latency of available connections, capability of devices can be considered for selecting a data path.
  • one or more requesting devices identify a network topology.
  • a requesting device broadcasts a request to other devices in the network to broadcast information identifying the other devices or adjacent devices of each of the other devices.
  • other devices in the network broadcasts requested information.
  • the requesting device may also broadcast information identifying itself.
  • a device that transmits information identifying the device or its adjacent device to another device is herein referred to as an "announcing device.”
  • any device can operate as a requesting device or an announcing device.
  • device 1 10A is a mobile device (e.g., a smart phone)
  • a device 1 10B is an audio video receiver (AVR)
  • device 1 IOC is a cable set top box
  • device 1 10D is a display television (TV)
  • device 1 10E is a gaming console
  • device 110F is a cable set top box.
  • the display television 110D receives a request from a user to identify the network topology, and may operate as a requesting device.
  • the mobile device 1 10A establishes a new connection 115AB to the AVR HOB and joins the network 100, and may operate as a requesting device to identify the topology of the network 100 or may operate as an announcing device to broadcast information identifying itself (1 10A).
  • the AVR 1 10B detects a new connection 1 15AB with the mobile device 1 10A and operates as a requesting device. Other devices in the network 100 responding to the request of the requesting device operate as announcing devices.
  • a requesting device e.g., a source device or a sink device
  • a first phase herein also referred to as "a discovery 1 phase”
  • each device identifies adjacent devices within one hop based on information broadcasted from other devices.
  • a discovery 2 phase the requesting device assembles, from each device, information identifying adjacent devices, and identifies a topology of the network 100 based on the information identifying adjacent devices aggregated from different devices 1 10.
  • the requesting device broadcasts a first type of request packet to request each device to identify itself.
  • each device forwards the first type of request packet to devices connected to available ports except to the device connected to a port from which the request packet was received, and broadcasts the first type of announcement packet identifying itself to other devices.
  • Each device receiving a first type of announcement packet analyzes the distance the announcement packet has traveled to determine whether the announcing device generating the announcement packet is an adjacent device. Additionally, each device receiving the first type of announcement packet forwards the first type of announcement packet to devices connected to available ports except to a device connected to a port from which the announcement packet was received.
  • the requesting device may also operate as an announcing device after broadcasting the requests in the first phase.
  • the requesting device identifies a complete topology of the network by analyzing adjacent devices of each device identified in the first phase.
  • the requesting device may initiate the second phase of the network topology discovery process after a predetermined time.
  • the requesting device may initiate the second phase of the network topology discovery process any time after all adjacent devices are known.
  • the requesting device generates and unicasts (or broadcasts) a second type of request packet for requesting one or more announcing devices in the network to transmit a second type of announcement packet identifying adjacent devices within one hop.
  • An announcing device may be a destination device of the second type of request packet.
  • announcing devices may be any intermediary devices between the requesting device and the destination device en route.
  • the announcing device transmits to the requesting device (or broadcasts) the second type of announcement packet.
  • the requesting device collects the second type of announcement packets and identifies the topology of the network by analyzing connection relationships.
  • the request packet, announcement packet, or both may be unicasted instead of being broadcasted.
  • Fig. 2 is a block diagram illustrating a network device 110, according to one embodiment.
  • the device 110 includes one or more ports 210A through 210N, a topology identification module 220, a processor 230, and storage 240.
  • a device 1 10 can include additional components, for example, a route selection module for selecting an optimal data path, a content communication module for transmitting and receiving contents, and a display for providing images to a user, and etc.
  • Each port 210 is a physical interface that enables connection between the device 110 and other devices in the network 100.
  • a port 210 with a valid connection to another device 110 is communicatively coupled to another port of the other device. Through the port 210, the device 1 10 exchanges data with other devices.
  • the port manager 204 can identify which ports are communicatively coupled to other devices, and which ports are disconnected to other devices. For example, if a device has five communicative ports, two of which are communicatively connected to two other devices one hop away respectively, the port manager 204 can identify the two ports with established connections to the other two devices. In case a new connection is established using a port 210, the port manager 204 detects which port has established a new connection. Similarly, in case an existing connection to a port 210 is disabled, the port manager 204 detects which port has lost a connection. In one embodiment, the port manager 204 detects a change in a connection status of one or more ports 210 and causes the device 110 to operate as the requesting device or an announcing device according to the detected connection status.
  • the topology identification module 220 discovers the topology of a network.
  • the topology identification module 220 is employed by either a requesting device or an announcing device.
  • the topology identification module 220 of a requesting device initiates a first phase or a second phase of the network topology discovery process by generating a request packet corresponding to the phase.
  • the topology identification module 220 of an announcing device receives the request packets and responds according to request packets received.
  • the topology identification module 220 of the requesting device gathers the announcement packets and identifies the network topology.
  • the topology identification module 220 of a requesting device generates request packets (either a first type or a second type) and broadcasts (or unicasts) the request packets to other devices.
  • the first type of request packet comprises a header with the opcode that causes each device receiving the first type of request packet to broadcast information identifying itself.
  • the second type of request packet comprises a header with the opcode that causes each device receiving the second type of request packet to broadcast (or unicast) information identifying adjacent devices.
  • the topology identification module 220 of an announcing device in the first phase broadcasts a first type of announcement packet.
  • the first type of announcement packet of a device includes, for example, a device ID (a unique number identifying the device), and a description of each network interface on the device including a type, address, available bandwidth into the interface, available bandwidth out of the interface, a bitmap describing basic device capabilities (e.g. SOURCE, SINK), initial value of the TTL field (TTLMAX), a current value of the TTL field, and a generation count (herein also referred to as "an event count").
  • the topology identification module 220 receives a first type of announcement packets generated by other devices in the network, and identifies an adjacent device one hop away in the first phase of the network topology discovery process. In one embodiment, the topology identification module 220 compares the maximum TTL value and the current TTL value in the received announcement packet to determine whether the announcing device is an adjacent device.
  • the maximum TTL value is a fixed total number of permissible hops generated by an announcing device, whereas the current TTL value is a current number of hops reflecting the number of hops the announcement packet has traveled.
  • the topology identification module 220 can determine the number of hops that the announcement packet has traveled, and also can determine whether the announcing device is one hop away or not. After determining whether the announcing device is the adjacent device or not, the topology identification module 220 forwards the announcement packet to other devices connected to available ports 210 other than a device connected to a port from which the announcement packet was received.
  • An example of a first type of announcement packet is described in detail with respect to Fig. 7.
  • the topology identification module 220 of the announcing devices generates a second type of announcing packet identifying adjacent devices identified in the first phase in response to the receiving the second request packet.
  • the second type of announcement packet includes a device ID of the device generating the announcement packet, a description of each connection attached to the device including a lowest device ID of one of the announcing device and an adjacent device, and TTL field (TTL).
  • TTL TTL field
  • the second type of announcement packet contains minimal information that is sufficient to enable the requesting device to identify the topology of the network, when all the second type of announcement packets from the other devices in the network are collectively analyzed. An example of a second type of announcement packet is described in detail with respect to Fig. 8.
  • the topology identification module 220 of the requesting device receives the second type of announcement packets from other devices in the network, and determines the topology of the network in the second phase.
  • the topology identification module 220 derives the connection between each device based on the second type of announcement packets, and constructs the complete network topology.
  • a device may receive identical messages (e.g., an announcement packet or a request packet) more than once.
  • the device may receive duplicate messages (i.e., identical message received during a same time period) through difference communication routes.
  • the device may also receive a message at a time period, and at a later time period may receive an old message to which the message received earlier is identical.
  • the topology identification module 220 shares a global generation count (herein also referred to as "a global event count") with other devices, and compares the global generation count and the generation count of a message (e.g., the announcement packet or the request packet).
  • the global generation count represents a total number of changes in the network topology and/or advertised device capability among all the devices in the network.
  • the generation count represents the total number of changes in network topology or advertised device capability at the time the announcement packet was generated by the announcing device.
  • the topology identification module 220 can identify duplicate or old messages.
  • the topology identification module 220 discards the duplicate request, but not the old request. In another example, the topology identification module 220 discards the duplicate announcement and the old announcement. An old announcement is obsolete and may not carry useful information, therefore may be discarded. On the other hand, an old request is indicative of a device generating the old request does not have current information of other devices in the network, for example because the device with old generation count just became connected to the network. Therefore, a device receiving the old request responds to the old request to enable the requesting device to obtain current information of other devices in the network.
  • the topology identification module 220 and the port manager 204 can be implemented by fixed function hardware, reconfigurable circuitry, such as an FPGA, a processor configured with instructions, or a combination of these.
  • the topology identification module 220 and the port manager 204 can be implemented by a processor (e.g., 230) executing the actions associated therewith under software control, reconfigurable logic configured by configuration data, or circuitry that implements the actions recited.
  • topology identification module 220 can be implemented by circuitry that performs the actions disclosed with respect thereto.
  • the circuitry can be implemented as fixed function circuitry, or circuitry that is configured to perform the actions.
  • the processor 230 executes instructions to operate the port manager 204, and topology identification module 220.
  • the processor 230 may be hardware or a combination of hardware and software.
  • the processor 230 may receive instructions from the storage 240.
  • FIG. 3 is an interaction diagram illustrating a first phase of a topology discovery process of an example network, according to one embodiment.
  • a process of three devices A, B, and C performing network topology discovery is included.
  • the device A operates as a requesting device, and devices B and C operate as announcing devices.
  • devices A, B, and C are included in this example for the simplicity, in other embodiments, more number of devices may be included and operate under the same principle.
  • the device A causes devices B and C to identify adjacent devices in a discovery 1 phase.
  • the device A generates and broadcasts 310 a first type of request packet.
  • the device A operates as an announcing device and broadcasts 312 a first type of announcement packet (herein also referred to as a discovery 1 announcement) of the device A including information identifying the device A to the device B.
  • a discovery 1 announcement a first type of announcement packet
  • the device B operating as an announcing device receives 330 the first type of request packet from the device A. In response to receiving the first type of request packet, the device B broadcasts 332 a first type of announcement packet of the device B identifying the device B. In addition, the device B forwards the first type of requested packet generated by the device A to the device C.
  • the device B receives 334 the first type of announcement packet generated by the device A. Based on the announcement packet (e.g., by comparing the maximum TTL and the current TTL), the device B identifies 336 the device A as an adjacent device and stores information identifying the device A. In addition, the device B forwards the first type of announcement packet of the device A to the device C. [0059]
  • the device C operating as another announcing device receives 350 the first type of request packet generated by the device A through the device B. In response to receiving the first type of request packet, the device C broadcasts 352 a first type of announcement packet of the device C identifying the device C. If another device other than device B was attached to the device C, the device C forwards the first type of requested packet generated by the device A to the other device.
  • the device C receives 354 the first type of announcement packets generated by the devices A and B. Based on the first type of announcement packet of the device A, the device C identifies the device A is not an adjacent device. Responsive to determining that the device A is not an adjacent device, the device C may store information identifying the device A if enough storage space is available or may discard information related to the device A. On the other hand, based on the first type of announcement packet of the device B, the device C identifies 356 the device B as an adjacent device and stores information identifying the device B. If another device other than device B was attached to the device C, the device C forwards the first type of announcement packet generated by the devices A and B to the other device.
  • the device B receives 338 the first type of announcement packet generated by the device C. Based on the first type of announcement packet of the device C, the device B identifies 340 the device C as another adjacent device and stores information identifying the device C. In addition, the device B forwards the first type of announcement packet of the device C to the device A.
  • the device A receives 314 the first type of announcement packets generated by the devices B and C. Based on the first type of announcement packet of the device C, the device A identifies the device C is not an adjacent device and may store or discard information related to the device C depending on the availability of the storage. On the other hand, based on the first type of announcement packet of the device B, the device A identifies 316 the device B as an adjacent device and stores information identifying the device A.
  • Fig. 4 is an interaction diagram illustrating a second phase of the topology discovery process of the example network of Fig. 3, according to one embodiment.
  • the device A operates as the requesting device to identify the topology of the network.
  • the device A causes each of devices B and C to transmit (unicast or broadcast) information identifying adjacent devices.
  • the device A generates and transmits 410 a second type of request packet.
  • the device A transmits one second type of request packet without a specific destination.
  • the device A transmits a second type of request packet with the device B as a destination device and another second type of request packet with the device C as a destination device.
  • the device B operating as an announcing device receives 430 the second type of request packet from the device A.
  • the device B transmits 432 a second type of announcement packet of the device B identifying adjacent devices A and C.
  • the device B forwards to the device C the second type of requested packet broadcasted or unicasted with the device C as the destination.
  • the device C operating as another announcing device receives 450 the second type of request packet generated by the device A through the device B. In response to receiving the second type of request packet, the device C transmits 452 a second type of announcement packet of the device C identifying the adjacent device B. If another device other than the device B was attached to the device C, the device C forwards to the other device the second type of requested packet broadcasted or unicasted with the other device as the destination.
  • the device B receives 438 the second type of announcement packet generated by the device C, and forwards the second type of announcement packet of the device C to the device A.
  • the device A receives 414 the second type of announcement packets generated by the devices B and C.
  • the device A identifies 416 the network topology by compiling information identifying adjacent devices of each of the devices B and C.
  • Fig. 5 A is a flow chart illustrating a process of a device responding to a first type of request packet (herein also referred to as "a discovery 1 request"), according to one embodiment.
  • the device receives the discovery 1 request and operates as an announcing device in response to the request packet, according to steps illustrated in Fig. 5.
  • the device receives 510 a discovery 1 request generated by a requesting device.
  • the device determines 520 whether the discovery 1 request is a duplicate request packet.
  • the device compares the global generation count and the generation count of the discovery 1 request to determine whether the discovery 1 request is a duplicate request packet. Responsive to determining that the discovery 1 request is a duplicate request, the device discards 530 the discovery 1 request. Responsive to determining that the discovery 1 request is not a duplicate request packet, the device transmits 540 (e.g., broadcasts or unicasts) a first type of announcement packet (herein also referred to as "a discovery 1 announcement").
  • a discovery 1 announcement e.g., broadcasts or unicasts
  • the device determines 545 whether the discovery 1 request needs to be forwarded. In one example, if a TTL field of the discovery 1 request is a lower bound (e.g., ' ⁇ '), the device determines the discovery 1 request should not be forwarded. If the TTL field of the discovery 1 request is greater than the lower bound (e.g., ' ⁇ '), the device determines the discovery 1 request should be forwarded. Responsive to determining that the request packet should not be forwarded, the device discards 530 the discovery 1 request.
  • a TTL field of the discovery 1 request is a lower bound (e.g., ' ⁇ ')
  • the device determines the discovery 1 request should not be forwarded. If the TTL field of the discovery 1 request is greater than the lower bound (e.g., ' ⁇ '), the device determines the discovery 1 request should be forwarded. Responsive to determining that the request packet should not be forwarded, the device discards 530 the discovery 1 request.
  • the device Responsive to determining that the discovery 1 request should be forwarded, the device reduces 560 TTL value, then forwards 570 the discovery 1 request to other devices connected to available ports of the device other than a device connected to a port from which the discovery 1 request is received. After forwarding the discovery 1 request or after discarding the discovery 1 request, the device may wait for a discovery announcement or another discovery request.
  • the device maintains a routing table in the storage 240.
  • the routing table can be used to transmit or forward any requests or announcements. For every discovery 1 announcement received, the total distance the announcement has travelled from the announcing device to a port of the receiving device is noted. If it is the shortest route of any current discovery 1 announcement received from that device through that port, and there is sufficient space available, then the device stores that path length, the device ID, and the port. If a shorter path between one device and another device can be identified, the routing table in the storage 240 is updated. The routing table may be updated based on bandwidth, length, and latency of one or more connections through which the announcement packet has been transmitted.
  • Fig. 5B is a flow chart illustrating a process of a device responding to a second type of request packet (herein also referred to as "a discovery 2 request"), according to one embodiment.
  • the device receives 512 a discovery 2 request generated by the requesting device.
  • the device determines 522 whether the discovery 2 request is an old request packet. In one approach, the device compares the global generation count and the generation count of the discovery 2 request to determine whether the discovery 2 request is an old request packet. Responsive to determining that the discovery 2 request is an old request, the device discards 530 the discovery 2 request. Responsive to determining that the discovery 2 request is current (not old), the device determines 545 whether the discovery 2 request needs to be forwarded based on the TTL field as described in detail with respect to FIG. 5A. [0075] Responsive to determining that the request packet should not be forwarded, the device processes 542 the request.
  • the device determines the request is intended for the device, the device transmits (e.g., broadcasts or unicasts) the second type of announcement packet (herein also referred to as "a discovery 2 announcement") to the requesting device. If the device determines the request is not intended for the device, the device may discard the request.
  • a discovery 2 announcement the second type of announcement packet
  • the device Responsive to determining that the discovery 2 request should be forwarded, the device reduces 560 TTL value, then forwards 572 the discovery 2 request to another device connected to an available port of the device with the lowest hop counts to the destination device.
  • the device may process the discovery 2 request prior to reducing the TTL value. After forwarding the discovery 2 request, the device may wait for a discovery announcement or another discovery request.
  • Fig. 6A is a flow chart illustrating steps of processing a discovery 1
  • the device receives the discovery 1 announcement and processes the discovery announcement, according to steps illustrated in Fig. 6A.
  • the device receives 610 a discovery 1 announcement generated by an announcing device.
  • the device determines a type of the discovery announcement received.
  • the type of the discovery announcement may be indicated by the opcode field of the discovery announcement.
  • the discovery announcement is the second type of announcement packet, the device operates as described in detail with respect to FIG. 6B.
  • the device determines 630 whether the announcement packet is a duplicate or an old
  • the device compares the global generation count and the generation count of the discovery announcement to determine whether the discovery announcement is a duplicate. If the discovery 1 announcement is a duplicate announcement packet, the device discards 660 the announcement 1 packet. If the announcement 1 packet is not a duplicate announcement packet, the device identifies 640 whether the announcing device generating the announcement packet is an adjacent device.
  • the device stores 650 information identifying the announcing device in the storage 240. If the announcing device is not an adjacent device, the device determines 648 whether enough storage space is available. If not enough storage space is available, the device may bypass storing information of the announcing device that is not adjacent in the storage 240 and proceeds to step 645. Alternatively, the device may store information of the announcing device that is not adjacent, if enough storage space is provided.
  • step 645 the device determines whether the discovery 1 announcement needs to be forwarded.
  • the process of determining whether the discovery 1 announcement should be forwarded is similar to the process of determining whether the discovery request should be forwarded in Figs. 5A and 5B. Therefore, the detailed description thereof is omitted herein for the sake of brevity.
  • the device discards 660 the discovery 1 announcement.
  • the device reduces 670 the current TTL value of the discovery 1 announcement, and forwards 680 the discovery 1 announcement to devices connected to available ports except to the device connected to a port from which the request packet was received. After forwarding the discovery 1 announcement or after discarding the discovery 1 announcement, the device may wait for another discovery announcement or a discovery request.
  • Fig. 6B is a flow chart illustrating a process of responding to a discovery 2 announcement, according to one embodiment.
  • the device receives 612 a discovery 2 announcement generated by an announcing device. If the discovery announcement is the second type of announcement packet, the device determines 632 whether the announcement packet is an obsolete announcement packet or unrequested announcement generated in response to a request from another device. In one example, the device compares the global generation count and the generation count of the discovery announcement to determine whether the discovery announcement is an outdated announcement. If the discovery 2 announcement is an obsolete announcement packet, the device discards 660 the
  • the device determines 645 whether the announcement packet needs to be forwarded.
  • the process of determining whether the discovery 2 announcement should be forwarded is same as the process of determining whether the discovery request should be forwarded in Figs. 5A and 5B. Therefore, the detailed description thereof is omitted herein for the sake of brevity.
  • the device 652 processes the discovery 2 announcement. If the discovery 2 announcement is intended for the device, the device stores the discovery 2 announcement. The device aggregates information identifying adjacent devices for each device and determines the topology of the network. If the discovery 2 announcement is not intended for the device, the device may store or discard the received discovery 2 announcement. [0084] Responsive to determining the discovery 2 announcement should be forwarded, the device reduces 670 the current TTL value of the discovery 2 announcement, and forwards 682 the discovery 2 announcement to another device connected to an available port of the device with lowest hop counts to the requesting device.
  • the device may wait for another discovery announcement or a discovery request. If the discovery 2 announcement was broadcasted, the device reduces the current TTL and forwards the discovery 2 announcement through every port except the one through which it was received. If the discovery 2 announcement was unicasted, the device reduces the current TTL and forwards the discovery 2 announcement to another device connected to an available port of the device.
  • the other device may be a device with the lowest hop count to the destination device, or any intermediary device connected to an available port to the destination device.
  • identifying the type of announcement packet may be obviated.
  • the current TTL value is increased rather than being decreased by a predetermined number, prior to forwarding a discovery request in step 570 of Fig. 5A and in step 572 of Fig. 5B or forwarding a discovery announcement in step 680 of Fig. 6A and step 682 of Fig. 6B.
  • the device determines to forward the discovery request or the discovery announcement, when the current TTL value is less than the maximum TTL value instead of being greater than the lower bound.
  • Fig. 7 is an example payload of a first type of announcement packet, according to one embodiment.
  • the first type of announcement packet (herein also referred to as a discovery 1 payload”) includes information identifying a device generating the announcement packet.
  • the first type of announcement packet includes a generation count 720, a maximum TTL 730, a current TTL 740, a capability 750, a number of ports 760 and a port type 770A...770N (herein generally referred to as "a port type 770").
  • the generation count represents the total number of changes in network topology or advertised device capabilities at the time the message (announcement or request) is generated.
  • the generation count can be used to determine whether the announcement packet is an old announcement packet, duplicate announcement packet, or not.
  • the generation count can be also used to determine whether the request packet is an old request packet, duplicate request packet, or not.
  • the generation count is incremented every time the discovery information changes, or every time the device receives a new first type of request packet.
  • the generation count is represented in 32 bits.
  • the maximum TTL 730 is a TTL value generated by the announcing device generating the announcement packet. The maximum TTL 730 remains unchanged even if the announcement packet is forwarded through intermediary devices. In one example, the maximum TTL is represented in 8 bits.
  • the current TTL 740 represents a number of hops the announcement packet has traveled.
  • the current TTL 740 is initially set to a maximum TTL value when the announcement is generated by the announcing device, and is reduced by a predetermined number (e.g., T), each time the announcement packet is forwarded.
  • the current TTL 740 is initially set to a lower bound (e.g., ' ⁇ ') when the announcement packet is generated by the announcing device, and is increased by a predetermined number (e.g., ' 1 '), each time the announcement packet is forwarded.
  • the device can determine whether the announcing device by which the announcement packet is generated is an adjacent device or not. Additionally, the current TTL 740 indicates whether the announcement packet should be forwarded or not. In one example, the current TTL is represented in 8 bits.
  • the capability 750 indicates which functions the announcing device can perform. For example, the capability 750 indicates whether the announcing device can operate as a source device, a sink device, a requesting device or not. In one example, the capability is represented in different number of bits (e.g., at least 8 bits).
  • the number of ports 760 indicates a number of ports of the announcing device in ports list, and the port type 770 indicates available type of each port.
  • a port type can be HDMI, MHL1, MHL2, MHL3, superMHL, Ethernet, WiFi, and etc.
  • the number of ports 760 is represented in 8 bits, and each port type is represented in 8 bits.
  • Fig. 8 is an example payload of a second type of announcement packet, according to one embodiment.
  • the second type of announcement packet (herein also referred to as "a discovery 2 payload") includes information identifying each connection attached to the announcing device.
  • the second type of announcement packet includes, for example, a generation count 820, a current TTL 840, a number of ports 860, a network description 850, a port type 870, a port ID 880, and a network ID 890.
  • the generation count 820, the current TTL 840, the number of ports 860, and the port type 870 are the same as the generation count 720, the current TTL 740, the number of ports 760, and the port type 770 of the first type of announcement packet described with respect to Fig. 7. Therefore, the detailed description thereof is omitted herein for the sake of brevity.
  • the network description 850 indicates a version and type of negotiated protocol associated with each port. For example, if a device has a port that supports either HDMI, MHL1/2/3 or superMHL connected to a port on a different device that supports either MHL2 or superMHL, the two devices agree to support the best common protocol, in this example superMHL. In one implementation, the network description 850 is represented in 8 bits.
  • the port ID 880 indicates a unique identification number of each port of the announcing device.
  • the network ID 890 indicates a unique identification number of each connection between the announcing device and an adjacent device.
  • the network ID 890 includes (i) a lowest device ID of one of the announcing device and an adjacent device, and (ii) a port number connected to the adjacent device.
  • port ID 880 of each port is represented in 8 bits, and network ID 890 of each network is presented in 64 bits.
  • the example payloads as illustrated in Figs. 7 and 8 are merely illustrative.
  • the first type of announcement packet or the second type of announcement packet further includes an opcode, a destination ID, a source ID, a protocol, or a length of the packet.
  • the generation count or other information may be included in the second type of announcement packet.
  • each device storing and broadcasting information identifying adjacent devices connected within one hop, amount of information stored in each device and bandwidth of information exchanged can be reduced.
  • each device identifies adjacent devices one hop away, and stores information identifying only the adjacent devices.
  • each device broadcasts minimal information identifying the adjacent devices.
  • Collective information from each device is enough for the requesting device to identify the complete network topology and determine an optimal data path. Therefore, amount of information stored in each device as well as amount of information exchanged between the devices can be reduced to identify the network topology.

Abstract

Embodiments relate to identifying a topology of a network based on information identifying adjacent devices from each of the devices in the network. In one embodiment, each device identifies one or more adjacent devices within one hop and stores information identifying the one or more adjacent devices. A requesting device aggregates information identifying one or more adjacent devices of each device and identifies the topology of the network based on the aggregated information. By each device storing and transmitting information identifying adjacent devices connected within one hop, amount of information stored in each device and bandwidth of information exchanged can be reduced.

Description

NETWORK TOPOLOGY DISCOVERY
FIELD
[0001] Embodiments of the invention generally relate to the field of networks and, more particularly, to identification of network topology.
BACKGROUND
[0002] The transmission of data (such as media data) from a source device to a sink device involves the establishment of a data stream between the source device and the sink device, and possibly through one or more intermediary devices. Among multiple available connection paths via one or more devices, a data path through which the data stream is established can be selected based on information about topology of the network (i.e., arrangements of each device within the network and interconnections between devices). However, in certain network, topology of the network is subject to frequent changes. For example, a new connection may be established between two devices, or an existing connection may be interrupted in the network. Without identifying a current topology of the network, selecting a data path based on outdated information about the network topology may result in an inaccurate solution.
SUMMARY
[0003] Embodiments relate to identifying a topology of a network based on information identifying adjacent devices one hop away from each of the devices in the network. Each device identifies one or more adjacent devices within one hop and stores information identifying the one or more adjacent devices. A requesting device aggregates information identifying one or more adjacent devices of each device and identifies the topology of the network based on the aggregated information. By having each device store and transmit information identifying adjacent devices connected within one hop, the amount of information stored in each device and bandwidth of information exchanged can be reduced.
[0004] In one embodiment, the requesting device identifies the topology of the network through two phases: a first phase and a second phase. In the first phase, the requesting device causes each device of the network to broadcast a first type of announcement packet comprising information identifying itself. By analyzing the first type of announcement packets broadcasted from other devices, each device identifies an adjacent device connected within one hop. In the second phase, the requesting device causes each of the other devices of the network to transmit a second type of announcement packet comprising information identifying adjacent devices. The requesting device aggregates the second type of announcement packets from the other devices in the network to identify the topology of the network.
[0005] In one embodiment, any device in the network can operate as a requesting device. Moreover, any device in the network can interchangeably operate as an announcing device that receives and responds to the request from the requesting device.
[0006] In one embodiment, a first device comprises a plurality of ports communicating with second devices and a third device, each of the second devices one hop apart from the first device, the third device coupled to the first device through at least one of the second devices. The topology identification module is coupled to the plurality of ports and receives an announcement packet generated by an announcing device among the third device and the second devices in response to receiving a request packet for requesting a transmission of the announcement packet, the request packet generated by a requesting device among the first device, the second devices and the third device. The announcement packet comprises information identifying the announcing device. The topology identification module is further determines whether the announcing device is one of the second devices or the third device based on the announcement packet. The first device further comprises a storage module that performs the following operations: (i) responsive to determining the announcing device is one of the second devices, store the information identifying the announcing device, and (ii) responsive to determining the announcing device is one of the third device, bypass storing of the information identifying the announcing device.
[0007] In one or more embodiments, the topology identification module receives the information identifying adjacent devices of each of the second devices and the third device, and determines arrangements of the second devices and the third device and connections of the second devices and the third device based on the information identifying adjacent devices of each of the second devices and the third device.
[0008] In one or more embodiments, the topology identification module further compares a total number of permissible hops in the announcement packet and a current number of hops in the announcement packet to determine whether the announcing device is one of the second devices or the third device. The current number of hops is increased or decreased each time the announcement packet is transmitted between devices.
[0009] In one or more embodiments, the storage module stores a global event count value indicating a number of changes in the network topology or a device capability of the first device or any device communicatively coupled to the first device. The global event count value is shared with the second devices and the third device. The global event count is incremented every time a device is connected to or disconnected from the network or advertised capabilities of a device change. The announcement packet includes a local event count value corresponding to the global event count value at which the announcement packet is generated by the announcing device. The topology identification module further (i) compares the stored global event count value and the local event count value of the announcement packet, and (ii) determines whether to discard the announcement packet based on the comparison.
[0010] In one or more embodiments, the storage module further discards the
announcement packet responsive to the event count value being less than or equal to the stored global event count value.
[0011] In one or more embodiments, the storage module stores a global event count value indicating a number of changes in the network topology or a device capability of the first device or any device communicatively coupled to the first device. The global event count value is shared with the second devices and the third device. The topology identification module further receives an additional request packet generated by an additional requesting device among the third device and the second devices to request a transmission of an announcement packet of the first device. The additional request packet includes a local event count value corresponding to the global event count value at which the additional request packet is generated by the additional requesting device. The topology identification module further discards the additional request packet having the local event count value equal to the stored global event count value.
[0012] In one or more embodiments, the topology identification module further transmits the request for the transmission of the announcement packet to the second devices and the third device.
[0013] In one or more embodiments, the topology identification module further generates a list of the second devices based at least in part on the information identifying the announcing device.
[0014] In one or more embodiments, the requesting device is the first device, and the topology identification module further transmits the request packet of the first device responsive to (i) detecting a change of a connection status of at least one port of the topology identification module, (ii) detecting a change of a device capability of one of the third device and the second devices or (iii) receiving an instruction to identify arrangements and connections of the first device, the second device, and the third device. [0015] In one or more embodiments, the topology identification module further transmits another request to each of the second devices and the third device for a transmission of information identifying adjacent devices. The topology identification module also receives the information identifying adjacent devices of each of the second devices and the third device. Additionally, the topology identification module identifies arrangements of the second devices and the third device and connections of the second devices and the third device based on the information identifying adjacent devices of each of the second devices and the third device.
[0016] In one or more embodiments, the first device communicates with one of the second devices through a point-to-point communication protocol complying with Mobile High-Definition Link (MHL) standard.
BRIEF DESCRIPTION OF THE DRAWINGS
[0017] The teachings of the embodiments disclosed herein can be readily understood by considering the following detailed description in conjunction with the accompanying drawings.
[0018] Fig. 1 is a block diagram illustrating a network topology, according to one embodiment.
[0019] Fig. 2 is a block diagram illustrating a network device, according to one embodiment.
[0020] Fig. 3 is an interaction diagram illustrating a first phase of a topology discovery process of an example network, according to one embodiment.
[0021] Fig. 4 is an interaction diagram illustrating a second phase of the topology discovery process of the example network of Fig. 3, according to one embodiment.
[0022] Figs. 5A and 5B are flow charts illustrating a process of a device responding to different types of request packets, according to one embodiment.
[0023] Figs. 6A and 6B are flow charts illustrating a process of a device responding to different types of announcement packets, according to one embodiment.
[0024] Figs. 7 and 8 are diagrams illustrating example payloads of different types of announcement packets, according to one embodiment.
DETAILED DESCRIPTION
[0025] The Figures (FIG.) and the following description relate to various embodiments by way of illustration only. It should be noted that from the following discussion, alternative embodiments of the structures and methods disclosed herein will be readily recognized as viable alternatives that may be employed without departing from the principles discussed herein.
[0026] Reference will now be made in detail to several embodiments, examples of which are illustrated in the accompanying figures. It is noted that wherever practicable similar or like reference numbers may be used in the figures and may indicate similar or like functionality.
[0027] Embodiments relate to identifying a topology of a network by compiling information identifying adjacent devices from each of the devices in the network. Each device determines and stores information identifying adjacent devices connected within one hop. A requesting device obtains information of adjacent devices of each device, and identifies the topology (i.e., arrangements of each device within the network and
interconnections between devices) of the network by collectively analyzing the information obtained. A requesting device in the network may discover a topology of the network through two phases. In a first phase, the requesting device causes each device to identify adjacent devices within one hop. In a second phase, the requesting device collects information identifying one or more adjacent devices of each device and identifies the topology of the network.
[0028] An adjacent device of another device herein refers to a device that is within one hop distance away from the other device within a network.
[0029] A hop of a destination device as used herein refers to a number of physical devices away from a source device to reach the destination device. For example, two devices directly connected to each other without any intermediary device in between are one hop away from each other. For another example, two devices connected through one
intermediary device in between are two hops away from each other.
Example Network Topology
[0030] Fig. 1 is a block diagram illustrating a network topology, according to one embodiment. A network can include a personal entertainment network, such as a network in a household, a network in a business setting, or any other network of devices and/or components. Examples of networks include a Local Area Network (LAN), Wide Area Network (WAN), Metropolitan Area Network (MAN), intranet, the Internet, etc.
[0031] In the example network 100 of Fig. 1, six devices 110A through 1 10F (hereinafter collectively referred to as "the devices 1 10") are communicatively coupled. A device 1 10A is communicatively coupled to a device HOB through a connection 115AB. A device 110B is additionally communicatively coupled to a device 1 IOC through a connection 115BC and a device HOD through a connection 1 15BD, respectively. The device 110D is also communicatively coupled to a device 110E through a connection 115DE, and a device 1 10F through a connection 115DF, respectively. Each of the devices 1 10A through 11 OF in Fig. 1 can be the same type or configuration of computing device, or can be a different type or configuration of computing device than one or more other devices. Finally, the type of each connection 115 within the network 100 can be the same, or can be different from one or more other device connections.
[0032] Each of the devices 1 10 within the network can transmit and receive data through a connection 115 using any suitable technology, such as Serial ATA ("SAT A"), Frame Information Structure ("FIS"), High-Definition Multimedia Interface ("HDMI"), Mobile High-Definition Link ("MHL"), Category-5 or Catogory-6 cable, co-axial cable, or any other suitable networking technology. In addition to wired connections between devices, devices within a network can be wireless, utilizing technologies such as Wi-Fi, Wi-Max, Bluetooth, LTE, and the like.
[0033] Each of the devices 1 10 is a computing device configured to transmit or receive data from one or more other devices within the network 100. Examples of devices include computers (such as specially configured desktop computers, laptop computers, table computers, and the like), servers (such as specially configured web servers, internet media streaming services, databases, etc.), mobile devices (such as specially configured mobile phones, and the like), media devices (such as specially configured media servers, televisions and other displays, speakers, theater equipment, cable boxes, tuner devices, video game consoles, DVD- and Blu-Ray players, and the like), storage devices (such as specially configured hard drives, cloud storage devices, video and audio storage devices, and the like), or any other suitable computing device specially configured to communicate with other network devices to establish data streams and receive/transmit data as described herein. The data can include digital media content (including music data, audio/video data, gaming data, digital images, and the like), but can also include any other suitable type of data, including but not limited to text data, social networking system data, mobile phone or device data, communications data, spreadsheet data, and the like.
[0034] In the network 100, certain devices may be a source of data, such as a digital television tuner, cable set-top box, a mobile device (such as a smart phone), video storage server, and the like. Such devices are referred to herein as "source devices". Other devices may receive, display, use, or store media content, such as a digital television, home theater system, audio system, gaming system, video and audio storage server, and the like. Such devices are referred to herein as "sink devices". In one embodiment, any device can operate as a source device or a sink device.
[0035] A source device transmits data stream to a sink device through a data path. A data path refers to an ordered set of devices and associated device connections through which data corresponding to a data stream is transmitted and/or received. For example, a data path can include the ordered set { 1 10A, 110B, lOOC}, through which data is transmitted by the source device 110A, received and re-transmitted at the intermediary device 110B, and received at the sink device 1 IOC. For an optimal data transmission, a topology of the network 100 is considered for selecting a data path. Specifically, a number of hops, type, bandwidth, or latency of available connections, capability of devices can be considered for selecting a data path.
[0036] Among the devices 1 10 in the network 100, one or more requesting devices identify a network topology. A requesting device broadcasts a request to other devices in the network to broadcast information identifying the other devices or adjacent devices of each of the other devices. In response to the request from the requesting device, other devices in the network broadcasts requested information. The requesting device may also broadcast information identifying itself. A device that transmits information identifying the device or its adjacent device to another device is herein referred to as an "announcing device."
[0037] In one embodiment, any device can operate as a requesting device or an announcing device. Assuming, for an example, that device 1 10A is a mobile device (e.g., a smart phone), a device 1 10B is an audio video receiver (AVR), device 1 IOC is a cable set top box, device 1 10D is a display television (TV), device 1 10E is a gaming console, and device 110F is a cable set top box. The display television 110D receives a request from a user to identify the network topology, and may operate as a requesting device. In another example, the mobile device 1 10A establishes a new connection 115AB to the AVR HOB and joins the network 100, and may operate as a requesting device to identify the topology of the network 100 or may operate as an announcing device to broadcast information identifying itself (1 10A). In yet another example, the AVR 1 10B detects a new connection 1 15AB with the mobile device 1 10A and operates as a requesting device. Other devices in the network 100 responding to the request of the requesting device operate as announcing devices.
[0038] For identifying a topology of the network 100, a requesting device (e.g., a source device or a sink device) in the network 100 collects information of each device and connecting relationship through two phases. In a first phase (herein also referred to as "a discovery 1 phase"), each device identifies adjacent devices within one hop based on information broadcasted from other devices. In a second phase (herein also referred to as "a discovery 2 phase"), the requesting device assembles, from each device, information identifying adjacent devices, and identifies a topology of the network 100 based on the information identifying adjacent devices aggregated from different devices 1 10.
[0039] In the first phase, the requesting device broadcasts a first type of request packet to request each device to identify itself. In response to receiving the request packet from the requesting device, each device forwards the first type of request packet to devices connected to available ports except to the device connected to a port from which the request packet was received, and broadcasts the first type of announcement packet identifying itself to other devices. Each device receiving a first type of announcement packet analyzes the distance the announcement packet has traveled to determine whether the announcing device generating the announcement packet is an adjacent device. Additionally, each device receiving the first type of announcement packet forwards the first type of announcement packet to devices connected to available ports except to a device connected to a port from which the announcement packet was received. The requesting device may also operate as an announcing device after broadcasting the requests in the first phase.
[0040] In the second phase, the requesting device identifies a complete topology of the network by analyzing adjacent devices of each device identified in the first phase. The requesting device may initiate the second phase of the network topology discovery process after a predetermined time. Alternatively, the requesting device may initiate the second phase of the network topology discovery process any time after all adjacent devices are known. The requesting device generates and unicasts (or broadcasts) a second type of request packet for requesting one or more announcing devices in the network to transmit a second type of announcement packet identifying adjacent devices within one hop. An announcing device may be a destination device of the second type of request packet.
Additionally, announcing devices may be any intermediary devices between the requesting device and the destination device en route. In response to receiving the second type of announcement packet, the announcing device transmits to the requesting device (or broadcasts) the second type of announcement packet. The requesting device collects the second type of announcement packets and identifies the topology of the network by analyzing connection relationships.
[0041] In one embodiment, the request packet, announcement packet, or both may be unicasted instead of being broadcasted. Example Device
[0042] Fig. 2 is a block diagram illustrating a network device 110, according to one embodiment. In the embodiment of Fig. 2, the device 110 includes one or more ports 210A through 210N, a topology identification module 220, a processor 230, and storage 240. In other embodiments, a device 1 10 can include additional components, for example, a route selection module for selecting an optimal data path, a content communication module for transmitting and receiving contents, and a display for providing images to a user, and etc.
[0043] Each port 210 is a physical interface that enables connection between the device 110 and other devices in the network 100. A port 210 with a valid connection to another device 110 is communicatively coupled to another port of the other device. Through the port 210, the device 1 10 exchanges data with other devices.
[0044] The port manager 204 can identify which ports are communicatively coupled to other devices, and which ports are disconnected to other devices. For example, if a device has five communicative ports, two of which are communicatively connected to two other devices one hop away respectively, the port manager 204 can identify the two ports with established connections to the other two devices. In case a new connection is established using a port 210, the port manager 204 detects which port has established a new connection. Similarly, in case an existing connection to a port 210 is disabled, the port manager 204 detects which port has lost a connection. In one embodiment, the port manager 204 detects a change in a connection status of one or more ports 210 and causes the device 110 to operate as the requesting device or an announcing device according to the detected connection status.
[0045] The topology identification module 220 discovers the topology of a network. The topology identification module 220 is employed by either a requesting device or an announcing device. The topology identification module 220 of a requesting device initiates a first phase or a second phase of the network topology discovery process by generating a request packet corresponding to the phase. The topology identification module 220 of an announcing device receives the request packets and responds according to request packets received. The topology identification module 220 of the requesting device gathers the announcement packets and identifies the network topology.
[0046] The topology identification module 220 of a requesting device generates request packets (either a first type or a second type) and broadcasts (or unicasts) the request packets to other devices. The first type of request packet comprises a header with the opcode that causes each device receiving the first type of request packet to broadcast information identifying itself. Similarly, the second type of request packet comprises a header with the opcode that causes each device receiving the second type of request packet to broadcast (or unicast) information identifying adjacent devices.
[0047] The topology identification module 220 of an announcing device in the first phase broadcasts a first type of announcement packet. The first type of announcement packet of a device includes, for example, a device ID (a unique number identifying the device), and a description of each network interface on the device including a type, address, available bandwidth into the interface, available bandwidth out of the interface, a bitmap describing basic device capabilities (e.g. SOURCE, SINK), initial value of the TTL field (TTLMAX), a current value of the TTL field, and a generation count (herein also referred to as "an event count").
[0048] The topology identification module 220 receives a first type of announcement packets generated by other devices in the network, and identifies an adjacent device one hop away in the first phase of the network topology discovery process. In one embodiment, the topology identification module 220 compares the maximum TTL value and the current TTL value in the received announcement packet to determine whether the announcing device is an adjacent device. The maximum TTL value is a fixed total number of permissible hops generated by an announcing device, whereas the current TTL value is a current number of hops reflecting the number of hops the announcement packet has traveled. By comparing the maximum TTL and the current TTL, the topology identification module 220 can determine the number of hops that the announcement packet has traveled, and also can determine whether the announcing device is one hop away or not. After determining whether the announcing device is the adjacent device or not, the topology identification module 220 forwards the announcement packet to other devices connected to available ports 210 other than a device connected to a port from which the announcement packet was received. An example of a first type of announcement packet is described in detail with respect to Fig. 7.
[0049] The topology identification module 220 of the announcing devices generates a second type of announcing packet identifying adjacent devices identified in the first phase in response to the receiving the second request packet. In one example, the second type of announcement packet includes a device ID of the device generating the announcement packet, a description of each connection attached to the device including a lowest device ID of one of the announcing device and an adjacent device, and TTL field (TTL). The second type of announcement packet contains minimal information that is sufficient to enable the requesting device to identify the topology of the network, when all the second type of announcement packets from the other devices in the network are collectively analyzed. An example of a second type of announcement packet is described in detail with respect to Fig. 8.
[0050] The topology identification module 220 of the requesting device receives the second type of announcement packets from other devices in the network, and determines the topology of the network in the second phase. The topology identification module 220 derives the connection between each device based on the second type of announcement packets, and constructs the complete network topology.
[0051] In certain cases when two or more communication paths exist between two devices, a device may receive identical messages (e.g., an announcement packet or a request packet) more than once. The device may receive duplicate messages (i.e., identical message received during a same time period) through difference communication routes. The device may also receive a message at a time period, and at a later time period may receive an old message to which the message received earlier is identical.
[0052] To eschew processing an old announcement, a duplicate announcement or a duplicate request, the topology identification module 220 shares a global generation count (herein also referred to as "a global event count") with other devices, and compares the global generation count and the generation count of a message (e.g., the announcement packet or the request packet). The global generation count represents a total number of changes in the network topology and/or advertised device capability among all the devices in the network. The generation count represents the total number of changes in network topology or advertised device capability at the time the announcement packet was generated by the announcing device. By comparing the global generation count and the generation count of the received message, the topology identification module 220 can identify duplicate or old messages. In one example, the topology identification module 220 discards the duplicate request, but not the old request. In another example, the topology identification module 220 discards the duplicate announcement and the old announcement. An old announcement is obsolete and may not carry useful information, therefore may be discarded. On the other hand, an old request is indicative of a device generating the old request does not have current information of other devices in the network, for example because the device with old generation count just became connected to the network. Therefore, a device receiving the old request responds to the old request to enable the requesting device to obtain current information of other devices in the network. [0053] In one embodiment, the topology identification module 220 and the port manager 204 can be implemented by fixed function hardware, reconfigurable circuitry, such as an FPGA, a processor configured with instructions, or a combination of these. The topology identification module 220 and the port manager 204 can be implemented by a processor (e.g., 230) executing the actions associated therewith under software control, reconfigurable logic configured by configuration data, or circuitry that implements the actions recited. For example, in an embodiment, topology identification module 220 can be implemented by circuitry that performs the actions disclosed with respect thereto. The circuitry can be implemented as fixed function circuitry, or circuitry that is configured to perform the actions.
[0054] The processor 230 executes instructions to operate the port manager 204, and topology identification module 220. The processor 230 may be hardware or a combination of hardware and software. The processor 230 may receive instructions from the storage 240.
[0055] Fig. 3 is an interaction diagram illustrating a first phase of a topology discovery process of an example network, according to one embodiment. In Fig. 3, a process of three devices A, B, and C performing network topology discovery is included. In this example, the device A operates as a requesting device, and devices B and C operate as announcing devices. Although only three devices A, B, and C are included in this example for the simplicity, in other embodiments, more number of devices may be included and operate under the same principle.
[0056] The device A causes devices B and C to identify adjacent devices in a discovery 1 phase. The device A generates and broadcasts 310 a first type of request packet.
Additionally, the device A operates as an announcing device and broadcasts 312 a first type of announcement packet (herein also referred to as a discovery 1 announcement) of the device A including information identifying the device A to the device B.
[0057] The device B operating as an announcing device receives 330 the first type of request packet from the device A. In response to receiving the first type of request packet, the device B broadcasts 332 a first type of announcement packet of the device B identifying the device B. In addition, the device B forwards the first type of requested packet generated by the device A to the device C.
[0058] The device B receives 334 the first type of announcement packet generated by the device A. Based on the announcement packet (e.g., by comparing the maximum TTL and the current TTL), the device B identifies 336 the device A as an adjacent device and stores information identifying the device A. In addition, the device B forwards the first type of announcement packet of the device A to the device C. [0059] The device C operating as another announcing device receives 350 the first type of request packet generated by the device A through the device B. In response to receiving the first type of request packet, the device C broadcasts 352 a first type of announcement packet of the device C identifying the device C. If another device other than device B was attached to the device C, the device C forwards the first type of requested packet generated by the device A to the other device.
[0060] The device C receives 354 the first type of announcement packets generated by the devices A and B. Based on the first type of announcement packet of the device A, the device C identifies the device A is not an adjacent device. Responsive to determining that the device A is not an adjacent device, the device C may store information identifying the device A if enough storage space is available or may discard information related to the device A. On the other hand, based on the first type of announcement packet of the device B, the device C identifies 356 the device B as an adjacent device and stores information identifying the device B. If another device other than device B was attached to the device C, the device C forwards the first type of announcement packet generated by the devices A and B to the other device.
[0061] The device B receives 338 the first type of announcement packet generated by the device C. Based on the first type of announcement packet of the device C, the device B identifies 340 the device C as another adjacent device and stores information identifying the device C. In addition, the device B forwards the first type of announcement packet of the device C to the device A.
[0062] The device A receives 314 the first type of announcement packets generated by the devices B and C. Based on the first type of announcement packet of the device C, the device A identifies the device C is not an adjacent device and may store or discard information related to the device C depending on the availability of the storage. On the other hand, based on the first type of announcement packet of the device B, the device A identifies 316 the device B as an adjacent device and stores information identifying the device A.
[0063] Fig. 4 is an interaction diagram illustrating a second phase of the topology discovery process of the example network of Fig. 3, according to one embodiment. In Fig. 4, the device A operates as the requesting device to identify the topology of the network.
[0064] The device A causes each of devices B and C to transmit (unicast or broadcast) information identifying adjacent devices. The device A generates and transmits 410 a second type of request packet. In case of broadcast, the device A transmits one second type of request packet without a specific destination. In case of unicast, the device A transmits a second type of request packet with the device B as a destination device and another second type of request packet with the device C as a destination device.
[0065] The device B operating as an announcing device receives 430 the second type of request packet from the device A. In response to receiving the second type of request packet broadcasted or unicasted for the device B, the device B transmits 432 a second type of announcement packet of the device B identifying adjacent devices A and C. In addition, the device B forwards to the device C the second type of requested packet broadcasted or unicasted with the device C as the destination.
[0066] The device C operating as another announcing device receives 450 the second type of request packet generated by the device A through the device B. In response to receiving the second type of request packet, the device C transmits 452 a second type of announcement packet of the device C identifying the adjacent device B. If another device other than the device B was attached to the device C, the device C forwards to the other device the second type of requested packet broadcasted or unicasted with the other device as the destination.
[0067] The device B receives 438 the second type of announcement packet generated by the device C, and forwards the second type of announcement packet of the device C to the device A.
[0068] The device A receives 414 the second type of announcement packets generated by the devices B and C. The device A identifies 416 the network topology by compiling information identifying adjacent devices of each of the devices B and C.
[0069] Fig. 5 A is a flow chart illustrating a process of a device responding to a first type of request packet (herein also referred to as "a discovery 1 request"), according to one embodiment. The device receives the discovery 1 request and operates as an announcing device in response to the request packet, according to steps illustrated in Fig. 5.
[0070] The device receives 510 a discovery 1 request generated by a requesting device. The device determines 520 whether the discovery 1 request is a duplicate request packet. In one approach, the device compares the global generation count and the generation count of the discovery 1 request to determine whether the discovery 1 request is a duplicate request packet. Responsive to determining that the discovery 1 request is a duplicate request, the device discards 530 the discovery 1 request. Responsive to determining that the discovery 1 request is not a duplicate request packet, the device transmits 540 (e.g., broadcasts or unicasts) a first type of announcement packet (herein also referred to as "a discovery 1 announcement"). [0071] Subsequent to broadcasting the discovery 1 announcement, the device determines 545 whether the discovery 1 request needs to be forwarded. In one example, if a TTL field of the discovery 1 request is a lower bound (e.g., 'Ο'), the device determines the discovery 1 request should not be forwarded. If the TTL field of the discovery 1 request is greater than the lower bound (e.g., 'Ο'), the device determines the discovery 1 request should be forwarded. Responsive to determining that the request packet should not be forwarded, the device discards 530 the discovery 1 request. Responsive to determining that the discovery 1 request should be forwarded, the device reduces 560 TTL value, then forwards 570 the discovery 1 request to other devices connected to available ports of the device other than a device connected to a port from which the discovery 1 request is received. After forwarding the discovery 1 request or after discarding the discovery 1 request, the device may wait for a discovery announcement or another discovery request.
[0072] In one embodiment, the device maintains a routing table in the storage 240. The routing table can be used to transmit or forward any requests or announcements. For every discovery 1 announcement received, the total distance the announcement has travelled from the announcing device to a port of the receiving device is noted. If it is the shortest route of any current discovery 1 announcement received from that device through that port, and there is sufficient space available, then the device stores that path length, the device ID, and the port. If a shorter path between one device and another device can be identified, the routing table in the storage 240 is updated. The routing table may be updated based on bandwidth, length, and latency of one or more connections through which the announcement packet has been transmitted.
[0073] Fig. 5B is a flow chart illustrating a process of a device responding to a second type of request packet (herein also referred to as "a discovery 2 request"), according to one embodiment.
[0074] The device receives 512 a discovery 2 request generated by the requesting device. The device determines 522 whether the discovery 2 request is an old request packet. In one approach, the device compares the global generation count and the generation count of the discovery 2 request to determine whether the discovery 2 request is an old request packet. Responsive to determining that the discovery 2 request is an old request, the device discards 530 the discovery 2 request. Responsive to determining that the discovery 2 request is current (not old), the device determines 545 whether the discovery 2 request needs to be forwarded based on the TTL field as described in detail with respect to FIG. 5A. [0075] Responsive to determining that the request packet should not be forwarded, the device processes 542 the request. If the device determines the request is intended for the device, the device transmits (e.g., broadcasts or unicasts) the second type of announcement packet (herein also referred to as "a discovery 2 announcement") to the requesting device. If the device determines the request is not intended for the device, the device may discard the request.
[0076] Responsive to determining that the discovery 2 request should be forwarded, the device reduces 560 TTL value, then forwards 572 the discovery 2 request to another device connected to an available port of the device with the lowest hop counts to the destination device. The device may process the discovery 2 request prior to reducing the TTL value. After forwarding the discovery 2 request, the device may wait for a discovery announcement or another discovery request.
[0077] Fig. 6A is a flow chart illustrating steps of processing a discovery 1
announcement, according to one embodiment. The device receives the discovery 1 announcement and processes the discovery announcement, according to steps illustrated in Fig. 6A.
[0078] The device receives 610 a discovery 1 announcement generated by an announcing device. The device determines a type of the discovery announcement received. The type of the discovery announcement may be indicated by the opcode field of the discovery announcement. In case the discovery announcement is the second type of announcement packet, the device operates as described in detail with respect to FIG. 6B.
[0079] If the discovery announcement is the first type of announcement packet, the device determines 630 whether the announcement packet is a duplicate or an old
announcement packet. In one example, the device compares the global generation count and the generation count of the discovery announcement to determine whether the discovery announcement is a duplicate. If the discovery 1 announcement is a duplicate announcement packet, the device discards 660 the announcement 1 packet. If the announcement 1 packet is not a duplicate announcement packet, the device identifies 640 whether the announcing device generating the announcement packet is an adjacent device.
[0080] If the announcing device is an adjacent device, the device stores 650 information identifying the announcing device in the storage 240. If the announcing device is not an adjacent device, the device determines 648 whether enough storage space is available. If not enough storage space is available, the device may bypass storing information of the announcing device that is not adjacent in the storage 240 and proceeds to step 645. Alternatively, the device may store information of the announcing device that is not adjacent, if enough storage space is provided.
[0081] In step 645, the device determines whether the discovery 1 announcement needs to be forwarded. The process of determining whether the discovery 1 announcement should be forwarded is similar to the process of determining whether the discovery request should be forwarded in Figs. 5A and 5B. Therefore, the detailed description thereof is omitted herein for the sake of brevity. Responsive to determining the discovery 1 announcement should not be forwarded, the device discards 660 the discovery 1 announcement. Responsive to determining the discovery 1 announcement should be forwarded, the device reduces 670 the current TTL value of the discovery 1 announcement, and forwards 680 the discovery 1 announcement to devices connected to available ports except to the device connected to a port from which the request packet was received. After forwarding the discovery 1 announcement or after discarding the discovery 1 announcement, the device may wait for another discovery announcement or a discovery request.
[0082] Fig. 6B is a flow chart illustrating a process of responding to a discovery 2 announcement, according to one embodiment. The device receives 612 a discovery 2 announcement generated by an announcing device. If the discovery announcement is the second type of announcement packet, the device determines 632 whether the announcement packet is an obsolete announcement packet or unrequested announcement generated in response to a request from another device. In one example, the device compares the global generation count and the generation count of the discovery announcement to determine whether the discovery announcement is an outdated announcement. If the discovery 2 announcement is an obsolete announcement packet, the device discards 660 the
announcement packet. If the discovery 2 announcement is a current announcement packet, the device determines 645 whether the announcement packet needs to be forwarded. The process of determining whether the discovery 2 announcement should be forwarded is same as the process of determining whether the discovery request should be forwarded in Figs. 5A and 5B. Therefore, the detailed description thereof is omitted herein for the sake of brevity.
[0083] Responsive to determining the discovery 2 announcement should not be forwarded, the device 652 processes the discovery 2 announcement. If the discovery 2 announcement is intended for the device, the device stores the discovery 2 announcement. The device aggregates information identifying adjacent devices for each device and determines the topology of the network. If the discovery 2 announcement is not intended for the device, the device may store or discard the received discovery 2 announcement. [0084] Responsive to determining the discovery 2 announcement should be forwarded, the device reduces 670 the current TTL value of the discovery 2 announcement, and forwards 682 the discovery 2 announcement to another device connected to an available port of the device with lowest hop counts to the requesting device. After forwarding the discovery 2 announcement or after discarding the discovery 2 announcement, the device may wait for another discovery announcement or a discovery request. If the discovery 2 announcement was broadcasted, the device reduces the current TTL and forwards the discovery 2 announcement through every port except the one through which it was received. If the discovery 2 announcement was unicasted, the device reduces the current TTL and forwards the discovery 2 announcement to another device connected to an available port of the device. The other device may be a device with the lowest hop count to the destination device, or any intermediary device connected to an available port to the destination device.
[0085] The steps and sequences as illustrated in Figs. 5 and 6 are merely illustrative. For example, identifying the type of announcement packet may be obviated. In one embodiment, the current TTL value is increased rather than being decreased by a predetermined number, prior to forwarding a discovery request in step 570 of Fig. 5A and in step 572 of Fig. 5B or forwarding a discovery announcement in step 680 of Fig. 6A and step 682 of Fig. 6B. In this embodiment, the device determines to forward the discovery request or the discovery announcement, when the current TTL value is less than the maximum TTL value instead of being greater than the lower bound.
[0086] Fig. 7 is an example payload of a first type of announcement packet, according to one embodiment. The first type of announcement packet (herein also referred to as a discovery 1 payload") includes information identifying a device generating the announcement packet. In one embodiment, the first type of announcement packet includes a generation count 720, a maximum TTL 730, a current TTL 740, a capability 750, a number of ports 760 and a port type 770A...770N (herein generally referred to as "a port type 770").
[0087] The generation count represents the total number of changes in network topology or advertised device capabilities at the time the message (announcement or request) is generated. The generation count can be used to determine whether the announcement packet is an old announcement packet, duplicate announcement packet, or not. The generation count can be also used to determine whether the request packet is an old request packet, duplicate request packet, or not. In one embodiment, the generation count is incremented every time the discovery information changes, or every time the device receives a new first type of request packet. In one example, the generation count is represented in 32 bits. [0088] The maximum TTL 730 is a TTL value generated by the announcing device generating the announcement packet. The maximum TTL 730 remains unchanged even if the announcement packet is forwarded through intermediary devices. In one example, the maximum TTL is represented in 8 bits.
[0089] The current TTL 740 represents a number of hops the announcement packet has traveled. In one example, the current TTL 740 is initially set to a maximum TTL value when the announcement is generated by the announcing device, and is reduced by a predetermined number (e.g., T), each time the announcement packet is forwarded. Alternatively, the current TTL 740 is initially set to a lower bound (e.g., 'Ο') when the announcement packet is generated by the announcing device, and is increased by a predetermined number (e.g., ' 1 '), each time the announcement packet is forwarded. By comparing the maximum TTL 730 and the current TTL 740, the device can determine whether the announcing device by which the announcement packet is generated is an adjacent device or not. Additionally, the current TTL 740 indicates whether the announcement packet should be forwarded or not. In one example, the current TTL is represented in 8 bits.
[0090] The capability 750 indicates which functions the announcing device can perform. For example, the capability 750 indicates whether the announcing device can operate as a source device, a sink device, a requesting device or not. In one example, the capability is represented in different number of bits (e.g., at least 8 bits).
[0091] The number of ports 760 indicates a number of ports of the announcing device in ports list, and the port type 770 indicates available type of each port. For example, a port type can be HDMI, MHL1, MHL2, MHL3, superMHL, Ethernet, WiFi, and etc. In one example, the number of ports 760 is represented in 8 bits, and each port type is represented in 8 bits.
[0092] Fig. 8 is an example payload of a second type of announcement packet, according to one embodiment. The second type of announcement packet (herein also referred to as "a discovery 2 payload") includes information identifying each connection attached to the announcing device. In one embodiment, the second type of announcement packet includes, for example, a generation count 820, a current TTL 840, a number of ports 860, a network description 850, a port type 870, a port ID 880, and a network ID 890. The generation count 820, the current TTL 840, the number of ports 860, and the port type 870 are the same as the generation count 720, the current TTL 740, the number of ports 760, and the port type 770 of the first type of announcement packet described with respect to Fig. 7. Therefore, the detailed description thereof is omitted herein for the sake of brevity. [0093] The network description 850 indicates a version and type of negotiated protocol associated with each port. For example, if a device has a port that supports either HDMI, MHL1/2/3 or superMHL connected to a port on a different device that supports either MHL2 or superMHL, the two devices agree to support the best common protocol, in this example superMHL. In one implementation, the network description 850 is represented in 8 bits.
[0094] The port ID 880 indicates a unique identification number of each port of the announcing device. The network ID 890 indicates a unique identification number of each connection between the announcing device and an adjacent device. In one embodiment, the network ID 890 includes (i) a lowest device ID of one of the announcing device and an adjacent device, and (ii) a port number connected to the adjacent device. In one
implementation, port ID 880 of each port is represented in 8 bits, and network ID 890 of each network is presented in 64 bits.
[0095] The example payloads as illustrated in Figs. 7 and 8 are merely illustrative. In other embodiment, the first type of announcement packet or the second type of announcement packet further includes an opcode, a destination ID, a source ID, a protocol, or a length of the packet. In another embodiment, the generation count or other information may be included in the second type of announcement packet.
[0096] Advantageously, by each device storing and broadcasting information identifying adjacent devices connected within one hop, amount of information stored in each device and bandwidth of information exchanged can be reduced. In the first phase of the network topology discovery process, each device identifies adjacent devices one hop away, and stores information identifying only the adjacent devices. In the second phase, each device broadcasts minimal information identifying the adjacent devices. Collective information from each device is enough for the requesting device to identify the complete network topology and determine an optimal data path. Therefore, amount of information stored in each device as well as amount of information exchanged between the devices can be reduced to identify the network topology.
[0097] While particular embodiments and applications of the present disclosure have been illustrated and described, it is to be understood that the embodiments are not limited to the precise construction and components disclosed herein.

Claims

CLAIMS What is claimed is:
1. A first device comprising:
a plurality of ports configured to communicate with second devices and a third device, each of the second devices one hop apart from the first device, the third device connected to the first device through at least one of the second devices;
a topology identification module coupled to the plurality of ports and configured to: receive an announcement packet generated by an announcing device among the third device and the second devices in response to receiving a request packet for requesting a transmission of the announcement packet, the request packet generated by a requesting device among the first device, the second devices and the third device, the announcement packet comprising information identifying the announcing device, and determine whether the announcing device is one of the second devices or the third device based on the announcement packet; and a storage module configured to:
responsive to determining that the announcing device is one of the second devices, store the information identifying the announcing device, and responsive to determining that the announcing device is one of the third
device, bypass storing of the information identifying the announcing device.
2. The first device of claim 1, wherein the topology identification module is further configured to:
receive the information identifying adjacent devices of each of the second devices and the third device, and
determine arrangements of the second devices and the third device and connections of the second devices and the third device based on the information identifying adjacent devices of each of the second devices and the third device.
3. The first device of claim 1, wherein the topology identification module is further configured to compare a total number of permissible hops in the announcement packet and a current number of hops in the announcement packet to determine whether the announcing device is one of the second devices or the third device, the current number of hops increased or decreased each time the announcement packet is transmitted between devices.
4. The first device of claim 1 , wherein the storage module stores a global event count value indicating a number of changes in a connection status or a device capability of the first device or any device communicatively coupled to the first device, the global event count value shared with the second devices and the third device, the announcement packet including a local event count value corresponding to the global event count value at which the announcement packet is generated by the announcing device, and the topology identification module is further configured to (i) compare the stored global event count value and the local event count value of the announcement packet, and (ii) determine whether to discard the announcement packet based on the comparison.
5. The first device of claim 4, wherein the storage module is further configured to
discard the announcement packet responsive to the event count value being less than or equal to the stored global event count value.
6. The first device of claim 1 , wherein the storage module stores a global event count value indicating a number of changes in a connection status or a device capability of the first device or any device communicatively coupled to the first device, the global event count value shared with the second devices and the third device, the topology identification module is further configured to receive an additional request packet generated by an additional requesting device among the third device and the second devices to request a transmission of an announcement packet of the first device, the additional request packet including a local event count value corresponding to the global event count value at which the additional request packet is generated by the additional requesting device, and the topology identification module is further configured to discard the additional request packet having the local event count value equal to the stored global event count value.
7. The first device of claim 1, wherein the topology identification module is further configured to transmit the request for the transmission of the announcement packet to the second devices and the third device.
8. The first device of claim 7, wherein the topology identification module is further configured to generate a list of the second devices based at least in part on the information identifying the announcing device.
9. The first device of claim 1, wherein the requesting device is the first device, the
topology identification module is further configured to transmit the request packet of the first device responsive to (i) detecting a change of a connection status of at least one port of the topology identification module, (ii) detecting a change of a device capability of one of the third device and the second devices, or (ii) receiving an instruction to identify arrangements and connections of the first device, the second device, and the third device.
10. The first device of claim 1, wherein the first device communicates with one of the second devices through a point-to-point communication protocol complying with Mobile High-Definition Link (MHL) standard.
11. A method comprising:
receiving, at a first device, an announcement packet generated by an announcing device among second devices and a third device in response to receiving a request packet for a transmission of the announcement packet, the request packet generated by a requesting device among the first device, the second devices and the third device, the announcement packet comprising information identifying the announcing device, each of the second devices one hop apart from the first device, the third device connected to the first device through at least one of the second devices;
determining whether the announcing device is one of the second devices or the third device based on the announcement packet;
responsive to determining the announcing device is one of the second devices, storing the information identifying the announcing device; and
responsive to determining the announcing device is one of the third device, bypassing storing of the information identifying the announcing device.
12. The method of claim 11, further comprising:
receiving the information identifying adjacent devices of each of the second devices and the third device; and
determining arrangements of the second devices and the third device and connections of the second devices and the third device based on the information identifying adjacent devices of each of the second devices and the third device.
13. The method of claim 11 , further comprising:
comparing a total number of permissible hops in the announcement packet and a current number of hops in the announcement packet to determine whether the announcing device is one of the second devices or the third device, the current number of hops increased or decreased each time the announcement packet is transmitted between devices.
14. The method of claim 11, further comprising:
storing a global event count value indicating a number of events representing changes in a connection status or a device capability of the first device or any device communicatively coupled to the first device, the global event count value shared with the second devices and the third device;
comparing the stored global event count value and a local event count value of the announcement packet, the announcement packet including the local event count value corresponding to the global event count value at which the announcement packet is generated by the announcing device; and determining whether to discard the announcement packet based on the comparison.
15. The method of claim 14, further comprising:
discarding the announcement packet responsive to the event count value being less than or equal to the stored global event count value.
16. The method of claim 11, further comprising:
storing a global event count value indicating a number of events representing changes in a connection status or a device capability of the first device or any device communicatively coupled to the first device shared with the second devices and the third device;
receiving an additional request packet generated by an additional requesting device among the third device and the second devices to request a transmission of an announcement packet of the first device, the additional request packet including a local event count value corresponding to the global event count value at which the additional request packet is generated by the additional requesting device; and
discarding the additional request packet having the local event count value equal to the stored global event count value.
17. The method of claim 1 1, further comprising:
transmitting the request for the transmission of the announcement packet to the
second devices and the third device.
18. The method of claim 17, further comprising:
generating a list of the second devices based at least in part on the information
identifying the announcing device.
19. The method of claim 11, further comprising: transmitting another request packet of the first device responsive to (i) detecting a change of a connection status of the first device, (ii) detecting a change of a device capability of one of the third device and the second devices, or (iii) receiving an instruction to identify arrangements and connections of the first device, the second device, and the third device.
The method of claim 11, wherein the first device communicates with one of the second devices through a point-to-point communication protocol complying with
Mobile High-Definition Link (MHL) standard.
PCT/US2015/027351 2014-05-06 2015-04-23 Network topology discovery WO2015171329A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201461989411P 2014-05-06 2014-05-06
US61/989,411 2014-05-06
US14/693,802 2015-04-22
US14/693,802 US9660836B2 (en) 2014-05-06 2015-04-22 Network topology discovery

Publications (1)

Publication Number Publication Date
WO2015171329A1 true WO2015171329A1 (en) 2015-11-12

Family

ID=54368792

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2015/027351 WO2015171329A1 (en) 2014-05-06 2015-04-23 Network topology discovery

Country Status (3)

Country Link
US (1) US9660836B2 (en)
TW (1) TWI641250B (en)
WO (1) WO2015171329A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107104824A (en) * 2017-03-31 2017-08-29 紫光华山信息技术有限公司 A kind of network topology determines method and apparatus

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2515853B (en) 2014-02-25 2015-08-19 Cambridge Silicon Radio Ltd Latency mitigation
GB2512746B (en) 2014-02-25 2015-03-11 Cambridge Silicon Radio Ltd Thwarting traffic analysis
US20170093705A1 (en) * 2015-09-27 2017-03-30 Infinera Corporation Systems and methods for latency based routing
US10548069B2 (en) * 2016-08-19 2020-01-28 Harman International Industries, Incorporated Wireless audio device provisioning
TWI692221B (en) * 2018-12-11 2020-04-21 中華電信股份有限公司 Network service providing system and network service providing method
CN112019801B (en) * 2019-05-31 2022-10-25 星宸科技股份有限公司 Image monitoring system and its local network system and construction method
US20210304904A1 (en) * 2020-03-27 2021-09-30 Samsung Electronics Co., Ltd. Method and system for managing queries of user in iot network

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060168320A1 (en) * 2004-12-30 2006-07-27 Kidd Nelson F Network topology discovery service
US20080232262A1 (en) * 2007-03-19 2008-09-25 Alina Beygelzimer Method and apparatus for network topology discovery using closure approach
US20100124176A1 (en) * 2000-03-03 2010-05-20 Adtran, Inc. Automatic network topology identification by nodes in the network
US20100208621A1 (en) * 2009-02-13 2010-08-19 Nokia Siemens Networks Oy Method, System and Nodes for Network Topology Detection in Communication Networks
US20130250810A1 (en) * 2011-08-30 2013-09-26 Qualcomm Incorporated Topology discovery in a hybrid network

Family Cites Families (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6047330A (en) * 1998-01-20 2000-04-04 Netscape Communications Corporation Virtual router discovery system
US6304556B1 (en) * 1998-08-24 2001-10-16 Cornell Research Foundation, Inc. Routing and mobility management protocols for ad-hoc networks
US6487170B1 (en) 1998-11-18 2002-11-26 Nortel Networks Limited Providing admission control and network quality of service with a distributed bandwidth broker
US7012892B1 (en) 1999-04-16 2006-03-14 Alcatel Canada Inc. Method and apparatus for supporting connection type partitioning in a communications network
US6614764B1 (en) * 1999-05-03 2003-09-02 Hewlett-Packard Development Company, L.P. Bridged network topology acquisition
US7046691B1 (en) 1999-10-04 2006-05-16 Microsoft Corporation Methods and systems for dynamic conversion of objects from one format type to another format type by selectively using an intermediary format type
US8429296B2 (en) 2001-03-06 2013-04-23 Pluris, Inc. Method and apparatus for distributing routing instructions over multiple interfaces of a data router
JP2002281060A (en) 2001-03-19 2002-09-27 Toshiba Corp Network node device and multi-packet transfer method and its program
US20020176359A1 (en) 2001-05-08 2002-11-28 Sanja Durinovic-Johri Apparatus for load balancing in routers of a network using overflow paths
US20100305943A1 (en) 2001-08-27 2010-12-02 Andreas Witzel Method and node for the control of a connection in a communication network
US6968374B2 (en) 2002-07-03 2005-11-22 Telefonaktiebolaget Lm Ericsson (Publ) Quality of service (QOS) mechanism in an internet protocol (IP) network
US7209976B2 (en) 2002-07-16 2007-04-24 Jeremy Benjamin Protocol communication and transit packet forwarding routed between multiple virtual routers within a single physical router
US7313090B2 (en) 2002-09-26 2007-12-25 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for providing data packet flow control
US7219300B2 (en) * 2002-09-30 2007-05-15 Sanavigator, Inc. Method and system for generating a network monitoring display with animated utilization information
US7660255B2 (en) 2002-11-13 2010-02-09 International Business Machines Corporation System and method for routing IP datagrams
ATE313896T1 (en) 2003-02-03 2006-01-15 Cit Alcatel BANDWIDTH BROKER FOR A TELECOMMUNICATIONS SYSTEM
US20040247317A1 (en) * 2003-06-06 2004-12-09 Sadananda Santosh Kumar Method and apparatus for a network database in an optical network
JP2005045675A (en) 2003-07-24 2005-02-17 Fujitsu Ltd Method and device for transferring frame
US7394769B2 (en) 2003-08-14 2008-07-01 International Business Machines Corporation Method, system and article for rapid detection and avoidance of high data corrupting routes within a network
US7876757B2 (en) 2003-11-06 2011-01-25 International Business Machines Corporation Router-assisted fast processing of packet termination in host
TW200518526A (en) 2003-11-17 2005-06-01 Nec Corp Communication system and communication method
EP2549829A3 (en) 2004-03-04 2014-10-15 Telefonaktiebolaget L M Ericsson (publ) Method for transmitting data in a telecommunications network and device utilising that method
US7995489B2 (en) * 2004-06-14 2011-08-09 The Boeing Company Topology and quality of service management apparatus and methods for communication networks
US20060056424A1 (en) 2004-09-15 2006-03-16 Yolin Lih Packet transmission using output buffer
KR100636271B1 (en) 2005-01-07 2006-10-19 삼성전자주식회사 Network Routing Controlling Method and Apparatus
KR100644690B1 (en) 2005-04-15 2006-11-10 삼성전자주식회사 Method and apparatus for transmitting frame efficiently in wireless mesh network
US8879511B2 (en) 2005-10-27 2014-11-04 Qualcomm Incorporated Assignment acknowledgement for a wireless communication system
ES2433475T3 (en) 2005-08-16 2013-12-11 Telefonaktiebolaget Lm Ericsson (Publ) Individual codec path degradation indicator for use in a communication system
US20070043558A1 (en) 2005-08-22 2007-02-22 Uwe Schwarz Priority-Based Resource Allocation
US8498297B2 (en) 2005-08-26 2013-07-30 Rockstar Consortium Us Lp Forwarding table minimisation in ethernet switches
WO2007073602A1 (en) 2005-12-28 2007-07-05 Vantrix Corporation Multi-users real-time transcoding system and method for multimedia sessions
US20070153707A1 (en) 2006-01-04 2007-07-05 Pascal Thubert Ad hoc network formation and management based on aggregation of ad hoc nodes according to an aggregation hierarchy
JP2007221564A (en) 2006-02-17 2007-08-30 Nec Corp Communication device, communication system, and method
US8451846B1 (en) 2006-04-19 2013-05-28 Juniper Networks, Inc. LSP hierarchy for MPLS networks
TWI462530B (en) 2006-05-01 2014-11-21 Koninkl Philips Electronics Nv 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
JP4652285B2 (en) 2006-06-12 2011-03-16 株式会社日立製作所 Packet transfer device with gateway selection function
JP4855162B2 (en) 2006-07-14 2012-01-18 株式会社日立製作所 Packet transfer apparatus and communication system
US7760735B1 (en) * 2007-02-06 2010-07-20 Google Inc. Method and system for discovering network paths
US7769806B2 (en) 2007-10-24 2010-08-03 Social Communications Company Automated real-time data stream switching in a shared virtual area communication environment
US20090116404A1 (en) * 2007-11-01 2009-05-07 Telefonaktiebolaget Lm Ericsson (Publ) Topology discovery in heterogeneous networks
JP5359230B2 (en) 2008-02-04 2013-12-04 ソニー株式会社 Transmission apparatus and transmission data format determination method
CN101605091B (en) 2009-02-13 2012-02-22 华为技术有限公司 Method, device and network system for multi-port load sharing
CN102598619B (en) 2009-08-25 2015-06-17 诺基亚通信公司 Control of codec negotiation for communication connection
US8358651B1 (en) 2009-09-21 2013-01-22 Marvell International Ltd. Switch device having a plurality of processing cores
EP2493128A1 (en) 2009-10-19 2012-08-29 Nec Corporation Communication system, flow control apparatus, flow table updating method and program
US8391289B1 (en) 2010-10-29 2013-03-05 Hewlett-Packard Development Company, L.P. Managing a forwarding table in a switch
TWI446753B (en) 2010-12-29 2014-07-21 Ind Tech Res Inst Bandwidth allocation method and network transmission device using the same
WO2012124924A2 (en) 2011-03-11 2012-09-20 엘지전자 주식회사 Method and device for terminal to transmit/receive signal in wireless communication system having carrier aggregation technique applied thereto
US8792369B2 (en) 2011-05-02 2014-07-29 Broadcom Corporation Method for setting a mobile node specific cyclic prefix in a mobile communication
GB2494153B (en) 2011-08-31 2018-11-28 Metaswitch Networks Ltd Selection of codecs
CN102448135A (en) 2011-11-17 2012-05-09 中兴通讯股份有限公司 Method and system for continuously switching single wireless voice
DE112012005907B4 (en) * 2012-02-20 2019-12-12 Mitsubishi Electric Corporation Communication system, communication terminal and communication method
US9264249B2 (en) 2012-03-28 2016-02-16 Qualcomm Incorporated Extending cyclic prefix length in wireless communication network having mixed carrier
US9143984B2 (en) 2012-04-13 2015-09-22 Intel Corporation Mapping of enhanced physical downlink control channels in a wireless communication network
US9100941B2 (en) 2012-05-24 2015-08-04 Nokia Solutions And Networks Oy Using unique preambles for D2D communications in LTE
US8859348B2 (en) * 2012-07-09 2014-10-14 International Business Machines Corporation Strained silicon and strained silicon germanium on insulator
US9356987B2 (en) 2012-10-09 2016-05-31 Vantrix Corporation System and method for optimizing a communication session between multiple terminals involving transcoding operations
US9979595B2 (en) * 2012-12-18 2018-05-22 Juniper Networks, Inc. Subscriber management and network service integration for software-defined networks having centralized control
US9270618B2 (en) 2013-02-28 2016-02-23 International Business Machines Corporation Source routing with fabric switches in an ethernet fabric network

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100124176A1 (en) * 2000-03-03 2010-05-20 Adtran, Inc. Automatic network topology identification by nodes in the network
US20060168320A1 (en) * 2004-12-30 2006-07-27 Kidd Nelson F Network topology discovery service
US20080232262A1 (en) * 2007-03-19 2008-09-25 Alina Beygelzimer Method and apparatus for network topology discovery using closure approach
US20100208621A1 (en) * 2009-02-13 2010-08-19 Nokia Siemens Networks Oy Method, System and Nodes for Network Topology Detection in Communication Networks
US20130250810A1 (en) * 2011-08-30 2013-09-26 Qualcomm Incorporated Topology discovery in a hybrid network

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107104824A (en) * 2017-03-31 2017-08-29 紫光华山信息技术有限公司 A kind of network topology determines method and apparatus
CN107104824B (en) * 2017-03-31 2019-12-06 新华三信息技术有限公司 Network topology determination method and device

Also Published As

Publication number Publication date
TW201543847A (en) 2015-11-16
US20150326444A1 (en) 2015-11-12
TWI641250B (en) 2018-11-11
US9660836B2 (en) 2017-05-23

Similar Documents

Publication Publication Date Title
US9660836B2 (en) Network topology discovery
US10158557B2 (en) Stream creation with limited topology information
US8830998B2 (en) Separation of edge and routing/control information for multicast over shortest path bridging
US10742697B2 (en) Packet forwarding apparatus for handling multicast packet
WO2017114153A1 (en) Service function chaining (sfc) communication method and device
US9172550B2 (en) Management of a multicast system in a software-defined network
JP7058270B2 (en) Routing within a hybrid network
WO2014047784A1 (en) Method for determining packet forwarding path, network device and control device
KR20170038124A (en) Method operating in a fixed access network and ues
US10075354B2 (en) Identification of servers by common wide area network addresses
KR101882727B1 (en) Terminal apparatus and Method for controlling terminal apparatus
US10749702B2 (en) Multicast service translation in internet protocol television systems
US20140301226A1 (en) Apparatus and method for network monitoring and packet inspection
WO2015014197A1 (en) Method for selecting route in scenario of multicast load, and router
US20180213278A1 (en) Video processing device, method for driving video processing device, video relaying device, method for driving video relaying device, and computer-readable recording medium
JP6237357B2 (en) Packet transfer system and packet transfer method
WO2016141884A1 (en) Software defined network (sdn) control signaling for traffic engineering to enable multi-type transport in data plane
US20170187763A1 (en) Streaming service system, streaming service method and controller thereof
US20150195360A1 (en) Streaming system and node device used in streaming system
JP6824027B2 (en) Communication equipment, its control method, and programs
WO2014162828A1 (en) Relay management device, relay management method, program, and relay management system
KR20190091595A (en) Cable modem device and control method thereof
KR101496554B1 (en) Method for receiving content in the content centric network
KR102015806B1 (en) Electronic apparatus, network system and method for establishing private network

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15788720

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15788720

Country of ref document: EP

Kind code of ref document: A1