M-VIA 2: Virtual Interface Architecture for Linux


M-VIA 2 is the second generation of the Modular VIA (M-VIA) implementation of Virtual Interface Architecture (VIA) for Linux. M-VIA is developed at Berkeley Lab and is distributed with an open source license.

What is VIA?

Virtual Interface Architecture (VIA) is an industry standard, high-performance communication interface for system area networks (SANs). VIA provides protected user-level zero-copy data transfer, enabling low latency and high bandwidth. The communication model includes both cooperative communication (send/recv) and remote memory access (get/put).

The design of VIA was strongly influenced by the academic on low-overhead communication research (e.g. U-Net, Active Messages, Fast Messages) as well as experience with MPPs. VIA can be accelerated by relatively inexpensive VIA-aware hardware, and such hardware will more naturally support VIA than competing communication software interfaces. Examples of VIA-aware hardware include Giganet, Synfinity, and ServerNet-II. Myrinet, because of its programmable processor and other features, can also be made VIA-aware.

The VIA API consists of a library of routines called the VI Provider Library (VIPL) and a descriptor format for descriptors that are shared by the user application and VIA-aware hardware. VIA communication routines are normally implemented entirely at user level, while other functionality (e.g. connection management and memory registration) are implemented in the operating system kernel.


Released in late 1998, M-VIA was the first implementation of VIA for Linux. Some of its main goals were:

  • Ease of portability to new network interfaces
  • High performance
  • Strict compliance to the VIA standard, as clarified by the Intel VI Architecture Developer’s Guide and verified by the Intel conformance test suite.
  • Support for legacy hardware as well as VIA-aware hardware.
  • Open source, to be able to serve as a reference implementation.

To support the goal of portability to new network interfaces, M-VIA was designed to be highly modular, hence the name M-VIA, for Modular VIA.

M-VIA is implemented as a set of loadable kernel modules for Linux and a user level library. It supports so-called VIA "doorbells" where they are provided by VIA-aware hardware, and implements software doorbells with a fast trap (a trap to privileged mode that does not incur the overhead of a system call) for legacy hardware. M-VIA achieves high bandwidth by eliminating the memory-to-memory copies necessary in a system call interface, incorporating memory management into its modular framework where not provided directly by hardware. Transfer of data occurs directly from an application’s address space, with no copy other than what is required by the network interface. M-VIA coexists with traditional networking, allowing a single network to be used for both VIA and IP traffic.


Our experience with M-VIA 1 revealed the need for further modularity, particular to support VIA-aware network interfaces – that is, network interfaces that have a doorbell abstraction, understand VIA descriptors, and support VIA protection mechanisms. Doorbell tokens were standardized in early drafts of the VIA standard, but the doorbell specification was later relaxed. This introduced the requirement for modularity in the user-level component of VIA.

M-VIA 2 is a complete redesign of the modular structure of M-VIA. It includes

  • A plugin architecture that allows developers to write network-specific plugins for the M-VIA 2 framework, replacing only hardware-specific functionality.
  • At the user level, ability to replace entire routines, or specific functionality (e.g. ringing a doorbell) inside the default implementations.
  • At the kernel level, ability to replace entire routines, or specific functionality (e.g. informing network hardware of address translations) inside the default implementations.

M-VIA 2 applications will be able to run on any network without recompilation or relinking. This makes software distribution and support significantly easier. Moreover, plugins are also dynamically loaded, so that adding support for additional networks does not require any reinstallation of M-VIA 2 itself.


M-VIA 1 is available for download at http://www.nersc.gov/research/ftg/via.

M-VIA 2 is under development. Our lead developer left for a startup company and development will resume as soon as we can hire someone to finish the work. See our job ad.


MVICH development is funded by the Department of Energy Office of Science Laboratory Technology Research (LTR) program (LBL-99M20). The LTR project is a collaboration between Berkeley Lab, Argonne National Laboratory, and the Intel Corporation.