LinkDiscoveryManager (Dev)

Description

The link discovery service is responsible for discovering and maintaining the status of links in the OpenFlow network.

Services Provided

  • ILinkDiscoveryService

Service Dependencies

  • IStorageSourceService
  • IThreadPoolService
  • IFloodlightProviderService
  • IOFSwitchService
  • IRestAPIService
  • IShutdownService
  • IDebugCounterService
  • IDebugEventService

Java File

The module is implemented in net.floodlightcontroller.linkdiscovery.internal.LinkDiscoveryManager.

How it works

The link discovery services uses both LLDPs and broadcast packets (aka BDDPs) to detect links. The LLDP destination MAC is 01:80:c2:00:00:0e and the BDDP destination MAC is ff:ff:ff:ff:ff:ff (broadcast address). The ether type for LLDPs and BDDPs is 0x88cc and 0x8999. There are two assumptions made in order for the topology to be learned properly.

  • Any switch (including OpenFlow switches) will consume a link-local packet (LLDP).
  • Honors layer 2 broadcasts.

Links can either be "direct" or "broadcast". A direct link will be established if an LLDP is sent out one port and the same LLDP is received on another port. This implies that the ports are directly connected. A broadcast link is created if a BDDP is sent out a port and received on another. This implies that there is another layer 2 switch not under the control of the controller between these two ports.

Limitations

  • None.

Configuration

The module is enabled by default, no change to the configuration is required to load the module.

Configuration Options

  • None.

REST API

URI

Description

Arguments

/wm/topology/links/json

List of all links detected by the controller.

None.

Sample REST calls with curl

Getting all devices

curl -s http://localhost:8080/wm/topology/links/json