UDP/IP Stub  Design
(last updated 04/16/99)

The UDP/IP stub will primarily consist of two user level daemons, one which sends UDP messages to desired destination and the other which receives UDP messages.  A user-level implementation of UDP/IP stub seems the best for the following reasons



Receive daemon
This daemon receives datagrams over a UDP socket. In the actual myrinet driver implementation, the driver queues the packet from within interrupt service routine and marks the appropriate CSKM/SSKM's bottom half to execute. To emulate this behaviour, after receiving a packet over UDP socket, the receive daemon makes a system call
process_packet( received_packet, source_of_packet).
received_packet is assumed to be a fully formed myrinet packet. This system call does the following


Send daemon
This daemon's job is to send the messages handed over by CSKM/SSKM. The send daemon is a process which loops at the user level calling  pick_packet_to_send(packet, destination_of_packet) system call in every iteration.
myri_send_datagram(int receiver_id, int receiver_module, MSG *payload)


Message Queues
There are three queues in this design