Skip to content
Muhammad Shahbaz edited this page Jun 21, 2015 · 10 revisions

NetASM Homepage

www.netasm.org


NetASM-haskell

Overview

NetASM is a network assembler that takes high-level SDN languages (NetKAT, P4, etc.) and maps the primitives to device-specific directives in FPGAs and various chipsets. It's a nascent work on building a network assembly language for programmable network devices (e.g., FPGAs, RMT, Intel’s FlexPipe, NPUs). NetASM provides assembly instructions that directly reflect the capabilities of the underlying device, thus providing either a human programmer or compiler precise, fine-grained control over the device’s resources. It exposes the details in the language such as creating tables and defining layouts of the processing pipeline. It's a glimpse into the future of hardware support for software-defined networking (SDN), where the data plane is no longer a fixed-function device, but rather a fully programmable device whose behavior is dictated by the programmer, with the ability to reconfigure it on-demand.

NetASM is analogous to an x86 or MIPS-like instructions set. However, unlike updating main memory and registers, it defines the layout (i.e., topology and states) of the data plane. Topology defines how the packet is traversed through the data plane, and state refers to the type of memory element (i.e., register or table). These state elements have a well-defined data structure and type declaration in NetASM, which makes it easy to identify bugs early in the compilation process.

Tutorial

Additional Documentation

Contact Information

Visit here.


Learning Haskell: http://learnyouahaskell.com

Clone this wiki locally