The kernel implements two sets of interfaces: one for sending packets and the other for receiving packets. On the receiving side, packets are first demultiplexed to the proper owner and then buffered in user-supplied memory in packet rings.