DeviceManagerImpl (Dev)

Description

DeviceManagerImpl tracks devices as they move around a network and defines the destination device for a new flow.

Services Provided

  • IDeviceService

Service Dependencies

  • IStorageSourceService
  • IRestApiService
  • IDebugCounterService
  • IDebugEventService
  • IEntityClassifierService
  • ITopologyService
  • IOFSwitchService
  • IThreadPoolService
  • IFloodlightProviderService

Java File

The module is implemented in net.floodlightcontroller.devicemanager.internal.DeviceManagerImpl.

How it works

The Device Manager learns about devices through PacketIn requests. It takes information from the PacketIn and classifies the device according to how the entity classifier is setup. By default the entity classifier uses MAC address and VLAN to identify a device. These two properties will define what is unique as a device. The Device Manager will learn about other properties such as IP addresses as well. One important piece of information is the device attachment points. If a PacketIn is received on a switch an attachment point will be created for that device. A device can have as many as one attachment point per OpenFlow island, where an island is defined as a strongly connected set of OpenFlow switches talking to the same Floodlight controller. The Device Manager will also age out attachment points, IPs, and devices themselves. Last seen timestamps are used to keep control of the aging process.

Limitations

  • Devices are immutable. This means you can not hold references to a device. They must be queried for using the IDeviceService APIs.

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/device/

List of all devices tracked by the controller. This includes MACs, IPs, and attachment points.

Passed as GET parameters: mac (colon-separated hex-encoded), ipv4 (dotted decimal),vlandpid attachment point DPID (colon-separated hex-encoded) and port the attachment point port.

Sample REST calls with curl

Getting all devices

curl -s http://localhost:8080/wm/device/

Getting a device with the IP of 1.1.1.1

curl -s http://localhost:8080/wm/device/?ipv4=1.1.1.1