Path Daemon
Path Daemon
is a path-paving application that listens for all ARP and IPv4 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 IPv4 address and incoming port for IPv4 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 IPv4
address and destination MAC or IPv4 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 Path Daemon flowchart 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 or 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