The OpenFlow Link Discovery application is the default OpenFlow link supplier application that is installed with the controller. This application implements the
com.hp.sdn.supplier.LinkSuppliersBroker interface and uses
LinkService APIs to create and maintain link information for OpenFlow datapaths that register with the controller.
The OpenFlow Link Discovery application pushes flow-mods to steal discovery packets, injects discovery packets to all ports on all datapaths, and discovers links on the controlled network by listening for PACKET_IN messages.
If the ControllerManager configuration has
hybrid.mode=true, the OpenFlow Link Discovery application pushes a flow-mod to controlled devices that steals all controller-generated link discovery packets to the controller. If the ControllerManager configuration has
hybrid.mode=false,all packets are stolen to the controller by default, so the OpenFlow Link Discovery application does not push flow-mods to devices.
The OpenFlow Link Discovery application listens for PACKET_IN messages that contain the BDDP protocol. Each discovery packet has the source device ID embedded within its payload, and the destination device can be derived from the PACKET_IN message. This design enables the OpenFlow Link Discovery application to populate the link table with information it learns from such received packets.
NOTE: Because PACKET_IN messages that contain the BDDP protocol are for controller-generated link discovery packets, no corresponding PACKET_OUT is sent back to the device that sent the PACKET_IN.
If the OpenFlowLinkDiscoveryComponent configuration has
age.multihop.links=true, the OpenFlow Link Discovery application periodically injects discovery packets into the controlled network to refresh the multihop links. Any multihop links that are not refreshed at the interval configured for the
multihop.poll.interval key are considered to be invalid and are removed from the link table. Additionally, network events such as a port going down or a device status change causes relevant links to be removed from the link table, and causes discovery packets to be sent to all datapaths that are in a ready state.