31
Read()/Write() calls
Application
Process
Stream head
Stream head
Node
Node
Node
Control
Process
Kernel
Node
Kernel
Kernel
Active Messages
Socket module
TCP
module
IP module
Pseudo
Ethernet
Interrupt
Socket module
TCP module
IP module
Pseudo Ethernet
Kernel Active Messages
2
3
4
5
6
1
Read()/Write() calls
Application
Process
Figure 2.6:
TCP/IP Apparatus Architecture
This figure shows the software architecture of the TCP/IP emulation environment. Two Solaris kernel
modules are used. One simulates and Ethernet driver and the second runs Kernel-to-Kernel Active
Messages. The figure shows the path needed to send a message. After the application passes the
message to the kernel(1), it eventually ends up at the pseudo-ethernet driver (2) which calls the kernel
active message driver (3). After crossing the Myrinet, the receiving LANai interrupts the host (4),
which invokes the poll routine of the kernel active message driver. The driver then passes it through
the STREAMS sub-system (5) and eventually the message ends up at the receiving application (6).
of the operation. The put procedure is called directly by the preceding module, while the service
procedure is called via the STREAMS scheduler.
Tracing the path of a
write
system call in Figure 2.6, after the write call at (1), the Socket
layer calls the write-put procedure of the TCP module, which calls the write-put procedure of the
IP module, which calls the write-put procedure of the pseudo-Ethernet driver. Finally, at (2), the
pseudo-Ethernet driver calls
am request
with the IP packet as the data for the medium active mes-
sage. In the normal case, the service procedures are not called. The kernel Active Message module
copies the message into the LANai firmware queue at (3). The current implementation thus requires
2 copies on the send side.
When the receiving LANai sees a message in the receive queue, it generates an interrupt.
The kernel vectors control to the Active Message poll function,
am poll
, at (4).
Am poll
in turn