Packets in Open vSwitch flow through two main components - the vswitchd daemon in userspace which configures connections to controllers, and the datapath module in the kernel which performs packet forwarding based on flows. The datapath first receives packets from a NIC or VM's virtual NIC. It either follows instructions from vswitchd on how to handle the packet, or passes it to vswitchd if no instructions exist. Vswitchd then determines how to handle the packet and passes it back with actions for the datapath to cache and apply to similar future packets.