NetBind Source Code

The source code for the NetBind is now available. Click here to download the source code distribution

Table of contents
1. Hardware and software requirements (Summary)
2. Hardware Requirements for NetBind
3. Software Requirements for NetBind
4. Features
5. NetBind Software Distribution 1.0
6. Installing and Running NetBind
7. How to Compile Applications for Arm-Linux
8. Download Area

1. Hardware and software requirements (Summary)

  • An IXP1200 Evaluation Kit (B0 or C0 version) running Arm-Linux on the StrongArm core.

  • A PC running Redhat Linux 6.2 (or a greater version) and the cross development environment.

  • A PC running Windows 2000 or Windows NT and the IXP1200 Developer Workbench for microcode development.

2. Hardware requirements for NetBind

NetBind runs on IXP1200 Evaluation Kits (B0 or C0 release). In addition, the user needs a PC running Windows NT (with Service Pack 5 or greater) or Windows 2000. The IXP1200 Developer Workbench needs to run on this PC for microcode development. In addition a PC running RedHat Linux 6.2 (or greater) needs to be used for interacting with the IXP1200 Evaluation platform through a through serial port. The Arm-Linux operating system is booted remotely remotely through the serial port. The Linux PC should suppport a network file server, and a cross compilation development envornment for applications running on Arm Linux. An illustration of the IXP/NetBind development environment is shown in Figure 1.

If you do not have IXP1200 Evaluation Kits, you can experiment with NetBind by obtaining an account to Columbia's Virtual Network Testbed. The Virtual Network Testbed consists of twelve 1200 Evaluation Kits interconnecting Redhat Linux end-systems. Evaluation Kits of the Virtual Network Testbed operate as open programmable routers, and can be used for conducting experiments on the development of new network services and architectures. To find more about how to obtain remote access to Columbia's Virtual Network Testbed, read the information posted in this web site.

IXP1200 Development Environment

Figure 1: Hardware Environment for running NetBind

3. Software requirements for NetBind

NetBind binaries run on the IXP1200 Arm-Linux. The Linux development environment does not come with the IXP1200 Evaluation Platform by default. Detailed instructions on where to download and how to set up the IX1200 Linux development environment can be found on the IXP1200 "how to" link created by Intel. The development environment includes an Arm-Linux boot loader, an Arm-Linux kernel image, a tftp server, an NFS server, and a cross-development tool chain.

IXP1200 needs Cygmon, the Arm-Linux loader to be installed on the flash ROM. Since the IXP1200 evaluation system does not come with a hard disk, Cygmon allows the system to bring up Arm-Linux through a remote tftp server. Intel provides a flash utility to set up Cygmon on the flash ROM. The utility runs on a PC running Microsoft Windows.

The Linux PC serves as the tftp server, the NFS server, and the console to access the Arm-Linux operating system. The Linux PC should also support the cross development tool chain. The tftp server supplies both the Arm-Linux kernel and a compressed root file system image for the Arm-Linux operating system. The NFS server supports a file system which is shared between the Linux PC running the cross development environment and the Arm-Linux. In addition, the NFS server provides extra disk space for the evaluation platform. The cross development tool chain is a set of big endian cross compilation tools including gcc, glibc and binutils. Cross compilation tools run on Linux and generate binaries that can run on the StrongArm core of IXP1200. The binaries and source code of the IXP1200 tool chain and the Linux kernel can be obtained from the Intel ftp site.

A Windows 2000/NT PC is used primarily for microcode development. The IXA SDK includes a reference design, documentation, and the IXP1200 Developer Workbench, which is a front-end to a cycle-accurate simulator of the IXP1200 network processor. The IXP1200 Developer Workbench provides a visual studio-like development environment, a debugger and a microengine simulator. The IXP1200 Developer Workbench can be ordered online free of cost.

4. NetBind Features

Datapath

  • IPpath: a modular IPv4 protocol stack;
  • Trie-based routing lookup;
  • Dynamic scheduling of transmit threads;

Libraries

  • NetBind tool libraries for constructing data paths and virtual routers in network processor-based routers;
  • Reference design IX libraries for ARM-Linux (binaries only);

Tools and Utilities

  • ni: a programming language and interpeter for profiling modular data paths;
  • uof2tmd: microassembler extensions for creating transport module (.tmd) files;

Applications

  • a suite of sample programs written in ni that create modular IPv4 data paths;

5. NetBind Software Distribution 1.0

The NetBind Software release includes the NetBind tool libraries and their source code, the binaries of the reference IX libraries (and their associated header files), microcode describing the transport modules of an IPv4 modular data path, and a suite of ni sample programs.

NetBind Tool Libraries

library name  
description 
library file 
ni
NetBind interpreter library
libni.a
dconstructor
data path constructor library
libdconstructor.a
uac
microengine admission controller library
libuac.a
binder
binder library
libbinder.a
ustore
microstore library
libustore.a
ixpconfig
configures the IXBus, microengines and MAC ports
libixpconfig.a
tmd
microassembler extensions library
libtmd.a
cmo
code morphing library
libcmo.a
verifier
verifies data path components before binding
libverifier.a
structures
data structure management library
libstructures.a

IX Libraries

library name  
description 
library file 
uclo
microcode loader library
libuclo.a
ueng
microengine control library
libueng.a
octalmac_21440
octal Mac driver library
liboctalmac_21440.a
hal_1200
hardware abstracton layer library
libhal_1200.a
core_utils
miscelleous functions
libcore_utils.a
osApi
miscelleous functions
libosApi.a
utils
miscelleous functions
libutils.a

Applications

application name  
description 
ni
NetBind interpreter
uof2tmd
UOF to TMD conversion utility

Transport Modules

microcode file 
description 
mpr.uc
receives packets from the network
ipv4_verifier.uc
verifies the total length, version and TTL fields of an IP header
ipv4_checksum_verifier.uc
verifies the checksum field
ipv4_header_modifier.uc
decrements the TTL field of an IP header and recomputes the checksum
ipv4_trie_lookup.uc
performs IP routing lookup
packet_queue.uc
enqueues packets
scheduler.uc
schedules the transmission of packets to the network

 

6. Installing and Running NetBind

Two packages are included with this release: the NetBind libraries (source code and binaries) and the Intel IX libraries for Arm-Linux (binaries).

Download and uncompress the netbind.tar.gz file and extract it to a directory. Type "make all" from the datapath directory to compile and link the ni and uof2tmd utilies. The executable files for these utilities are placed in the bin directory once the code is successfully compiled. The make file assumes that the Arm-Linux tool chain has been installed in the /usr/local/armbe directory.

Copy the ni and uof2tmd executable files to a directory that is accessible from your IXP1200 Evaluation Kit. Complile the transport module microcode files on the Windows NT/2000 PC. Create a separate project for each microcode file as described in the NetBind Software Developer's Guide. Once you have compiled the transport module files, copy their associated images (.uof files) to the directory where the ni and uof2tmd utilities are located. When compiling the transport modules it is preferable not to use the "optimize" option.

To run netbind you need to login to your IXP1200 evaluation board and go to the directory where the ni and uof2tmd utilities are located. Use the uof2tmd utility to convert the UOF files to the TMD format. Before running ni make sure that the ni sample programs, which are included with this release, are also copied into the same directory. The ni sample programs are located in the examples directory.

Edit the ni sample programs to replace the routing entries declared in these files with those of your own testbed. Read the NetBind Software Programmer's Guide to find out how to use the "route" command of ni. Finally, type "./ni" to execute the NetBind intepreter. To load and execute a sample program type "load[program file name]" on the ni prompt. You should see packets being forwarded by your IXP1200 Evaluation Kit.

7. How to Compile Applications for Arm-Linux

A shell script (ixpenv) is provided for setting up the compilation environment. The script makes some assumptions about the environment. It assumes that the Arm-Linux tool chain has been installed in the /usr/local/armbe directory. The compilation environment script has to be changed if the software setup is different.

To compile a program with armv4b-unknown-linux-gcc or armv4b-unknown-linux-g++, set following flags:

  • -mbig-endian
  • -fwritable-strings
  • -DIOSTYLE=HARDWARE -DLINUX -DMAC_21440 -D__unix

To enable the printing of debugging information in the standard output during the execution of the ni and uof2tmd utilities, compile these utilities and the NetBind tool libraries using the following flags:

  • -DDEBUG
  • -DVERBOSE

8. Download Area

Before downloading NetBind Software, please read the following:

This is unpublished proprietary software developed as part of the Genesis Project by the COMET Group, Columbia University; it may not be disclosed to third parties, copied or duplicated in any form, in whole or in part without the prior written permission of the COMET Group at Columbia University.

All advertising materials mentioning features or use of this software must display the following acknowledgment: This product includes software developed by the COMET Group at Columbia University. It is distributed as is, with absolutely no warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of merchantability or fitness for a particular purpose. The entire risk as to the quality and performance of the programs is with you. Should the programs prove defective, or cause any damage, you assume the cost of all necessary servicing, repair or correction.

netbind.tar.gz