Nevertheless, they severely limit the bandwidth of faster networking hardware. Receiving a message requires copying the data into buffers in the operating system kernel and then copying the data into the address space of the application. During this process, the processor is consumed doing networking rather than the intended computation. The high-performance cluster computing community solved these problems with a completely new approach to networking. It involved changes to both the hardware and software layers using techniques developed for supercomputers.
Packets contain headers that are used by simple, extremely fast switches to perform routing.
The switching hardware also provides flow control. Each computation node has a processor dedicated to handling messages with direct access to main memory. The processor on the Myrinet interface card shields the main processor from interruptions generated by the Myrinet, and the direct memory access hardware can transfer data directly into physical memory. If the operating system has set up virtual memory so that this physical memory maps into the address space of the application receiving a message, then there is no need to copy the message within main memory. Message passing without a context switch into the kernel is the essence of user-level networking.