Packet Routing<A NAME=1369> </A>

next up previous contents index
Next: Refragmentation Up: Pvmd Previous: Message Routing

Packet Routing 

A graph of packet and message routing inside the pvmd is shown in Figure gif. Packets are received from the network by netinput() directly into buffers long enough to hold the largest packet the pvmd will receive (its MTU in the host table). Packets from local tasks are read by loclinput(), which creates a buffer large enough for each packet after it reads the header. To route a packet, the pvmd chains it onto the queue for its destination. If a packet is multicast (see Section gif), the descriptor is replicated, counting extra references on the underlying databuf. One copy is placed in each send queue. After the last copy of the packet is sent, the databuf is freed.

Figure: Packet and message routing in pvmd