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.

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:
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
|