Path Daemon

Path Daemon

Path Daemon is a path-paving application that listens for all ARP and IP PACKET_IN messages and attempts to push flow-mods to datapaths along the forwarding path to ensure that such packets get forwarded at line-rate. Path Daemon operates only when the entire network is controlled by the controller (ControllerManager configuration has hybrid.mode=false and there are no uncontrolled devices). Each PACKET_IN message processed by Path Daemon results in a PACKET_OUT message and possibly a flow-mod getting pushed to one or more controlled devices.

By default, the Path Daemon application pushes flow-mods that attempt to forward traffic using MAC address and incoming port for ARP PACKET_IN messages, and using IP address and incoming port for IP PACKET_IN messages. These flow-mods are only pushed when the ControllerManager configuration has hybrid.mode=false. Specifically, the flow-mods will match all packets that enter a specific switch on a specific port and they will match only packets with the source MAC or IP address and destination MAC or IP address from the PACKET_IN message. Any packets that match the flow-mod will be forwarded by the switch to the most optimal destination port—determined by Path Daemon—for the packet to reach its intended destination.

The Path Daemon application is responsible for pushing end-to-end flows for all ARP and IPv4 flow misses that arrive at the controller. By default, Path Daemon is responsible for Layer-2 forwarding only. This component depends on other network service components like the Node manager and the Path Selection manager.

Path Daemon does the following:

  • Registers with the controller as a Director. Directors are allowed to send a packet out.

  • Registers for ARP packets and IPv4 packets.

  • Uses the Node Manager to get the end hosts corresponding to the source and destination MAC addresses and the datapaths to which these hosts are connected. It makes use of the Path Selection manager to get the end-to-end shortest path between the source and destination hosts. It makes use of the controller to push flows to the datapaths. The flowchart in Figure 1 provides more details of its operation.

  • Path Daemon uses the following match fields when pushing a flow-mod. These match fields have been chosen so that the flow modules are pushed on hardware tables in both ProVision-based and Comware-based switches.

    • Ether type: OFPXMT_OFB_ETH_TYPE

    • Source MAC or IP address: OFPXMT_OFB_ETH_SRC or OFPXMT_OFB_IPV4_SRC

    • Destination MAC or IP address: OFPXMT_OFB_ETH_DST or OFPXMT_OFB_IPV4_DST

    • Input port: OFPXMT_OFB_IN_PORT

  • Path Daemon also registers for Port Status Down messages. When such messages are received, Path Daemon removes all flows configured for the impacted port, thereby causing the PACKET_IN messages to again come to the controller.

Operational notes 

The Path Daemon:

  • Does not handle multicast and broadcast traffic

  • Does not configure the reverse path along with the forward path

  • Drops packets from sources that the controller has not learned

  • Floods packets when their destinations are not known

  • Does not support fast-failover

  • Performance is topology-dependent, recommended for 100-200 node environments, and can degrade when there is a larger number of nodes

Path Daemon flowchart

Path Daemon flowchart

Path Daemon configurable components

Each flow-mod is assigned an idle timeout value, which specifies how long the flow-mod will remain in the device if the flow-mod is not actively being used. Each flow-mod is also assigned a hard timeout value, which specifies how long the flow-mod will remain in the datapath (regardless of usage). The com.hp.sdn.ctl.path.impl.PathDaemon configurable component of the controller enables the controller administrator to configure each of these parameters using the idle.timeout (default 60 seconds) and hard.timeout (default 0, which implies infinite timeout) keys.