% vim: set ft=context syn=tex:
% This is FPL 2003 poster
% $Id: fpl2003-poster.tex,v 1.6 2003/08/26 11:36:49 antos Exp $

% General setup

\setupoutput[pdftex]
\setuppapersize[A1][A1]
\mainlanguage[en]
\setupcolors[state=start]
\setuppagenumbering[location=]

% Layout, backgrounds, graphical elements
\setuplayout
  [grid=yes,
   backspace=4cm,
   width=middle,
   topspace=4cm,
   header=0cm,
   footer=1cm,
   footerdistance=23mm,
   bottom=0pt,
   bottomdistance=0pt,
   height=0.94\paperheight]

\setupbackgrounds
  [text]
  [frame=on,
   rulethickness=2mm,
   frameoffset=2cm,
   framecorner=round,
   frameradius=2cm,
   framecolor=darkblue]

\setupthinrules
  [rulethickness=2mm,
   color=darkblue]

% Other style settings
\setupwhitespace[big]

\setupbodyfont[sans,21pt]

\setupitemize
  [each]
  [packed,joinedup]

\setuphead
  [chapter]
  [number=no,
   style=\tfa\bf,
   page=no,
   after=,
   color=darkblue]

\widowpenalty=10000
\clubpenalty=10000

\setupfootertexts[\hfill\x Typeset with \ConTeXt\quad\quad
Designed by David Anto\v s, 2003]

%\showframe
%\showgrid

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\starttext

\startalignment[middle]
\startlinecorrection
{\tfd\bf Project of IPv6 Router with FPGA Hardware Accelerator}
\stoplinecorrection

\startcolumns[n=3]

{\bf Ji\v r\'{\i} Novotn\'y}\crlf
Institute of Computer Science\crlf
Masaryk University Brno\crlf
Botanick\'a~68a, Brno 602\thinspace00\crlf
Czech Republic\crlf
\type{novotny@liberouter.org}
\column

{\bf Otto Fu\v c\'{\i}k}\crlf
Faculty of Information Technology\crlf
Brno University of Technology\crlf
Bo\v{z}et\v{e}chova~2, Brno 612\thinspace66\crlf
Czech Republic\crlf
\type{fucik@liberouter.org}
\column

{\bf David Anto\v{s}}\crlf
Faculty of Informatics\crlf
Masaryk University Brno\crlf
Botanick\'a~68a, Brno 602\thinspace00\crlf
Czech Republic\crlf 
\type{antos@liberouter.org}

\stopcolumns

\stopalignment

% Logos and rule

\noindent
\thinrule
\kern0.03\textwidth
\lower0.039\textwidth\hbox{\externalfigure[cesnet-logo][width=0.16\textwidth]}
\kern0.03\textwidth
\thinrule
\kern0.03\textwidth
\lower0.01\textwidth\hbox{\externalfigure[liberouter][width=0.2\textwidth]}
\kern0.03\textwidth
\thinrule

% Text itself starts here

\startcolumns[n=2]

\chapter{Introduction}

Personal Computer (PC) as a router is
\startitemize
\item Reliable and highly functional
\item Comparable to middle-class routers (e.g., CISCO~7500)
\stopitemize
But\dots
\startitemize
\item Configurable with difficulties (via \type{/etc} files)
\item Limited mainly by PCI system bus (up to 2~Gbps with 64bit/66MHz bus)
\stopitemize

The goal of the \externalfigure[liberouter][height=0.5\baselineskip]{}
project: IPv6 router solving
those limitations. How?
\startitemize
\item Hardware accelerator {\em Combo6}
\item XML based configuration system {\em Netopeer}
\stopitemize

\chapter{Router Architecture}

Combo6 is a PCI card containing FPGA, memories (SSRAMs and DRAM), expansion
connectors, and supporting logic. Network interfaces are mounted on an
expansion daughter card for interfaces to be changed easily.

\startlinecorrection
\midaligned{\externalfigure[combo6][height=12\baselineskip]}
\stoplinecorrection

Design rules (just pure instance of {\em hardware/software codesign}
principles):
\startitemize
\item Packet switching and filtering will be performed by Combo6
\item PC can do the rest; routing path calculations, configuration,
statistics computation
\item Communication through PCI is limited to configuration, routing table
updates, statistics collection, and exception handling
\item Usual Operating System tools can be used, like \type{ifconfig} and
routing daemons
\stopitemize

\chapter{Packet Processing in Hardware}

Key idea: Packet processing in FPGA is done by a chain of dedicated
processors with simple, specialized instruction sets designed for their
particular purposes. We call them {\em nanoprocessors}---they are
interpreted by FPGA's microcode. Instruction sets are \quotation{between
FSMs and RISC processors.}

\startitemize
\item Changing nanoprograms in runtime is possible (with no need of VHDL
compilation)---this differs from Partial Reconfiguration
\item VHDL tools are not needed to change nanoprograms, our free
development environment can be employed
\item New features can be added step-by-step
\item On the contrary, Partial Reconfiguration may produce more efficient
designs
\stopitemize

Packet processing is pipelined. A packet flows through the FPGA and
memories. An incoming packet is received by the Input Packet Buffer and
passed to the Header Field Extractor. The HFE pushes the body of the packet
into the dynamic memory. Meanwhile, it parses its headers and creates a
{\em Unified-header} and a structure reflecting actual arrangement of the
headers. The Unified-header is a fixed structure containing information
relevant for routing and filtering decisions.

The Lookup Processor (LUP) processes the Unified-header performing a lookup
nanoprogram. The lookup nanoprogram is kept in CAM and SRAM. Using CAM is
fast, unfortunately, IPv6 requires nearly 600~bits to check. Widest
available CAMs have less than 300~bits, therefore a combination of CAM
search and lookup instructions (conditional jumps) is used.

\startlinecorrection
\midaligned{\externalfigure[combo.1][height=8\baselineskip]}
\stoplinecorrection

Packet Replicator and Block of Output Queues (RQU) replicates the packet ID
to queues computed by LUP. Output Packet Editor modifies headers of the
packet before it is sent out. Operating system is one of the output
interfaces. It allows to deliver packets to the host computer as well as
handling packets hardware is not able to process.

\chapter{Software Support}

Software drivers are developed for NetBSD (and FreeBSD) and ported to
Linux. Driver operations include FPGA chip configuration, accessing
memories in the card, and hardware/software interface operations.

Other part of router software {\em hides presence of Combo6 in the host
computer}. The card should perform the same routing and filtering
functionality as the host computer itself, only faster. Host computer uses
routing table, configuration of interfaces, and firewall setting, Combo6
has to run the LUP nanoprocessor just once to make a decision how to handle
a packet.

To be able to combine routing table and firewall setting into one lookup
operation, we developed a concept of {\em routing/firewalling
table}---firewall rules are applied on routing table rows a-priori.

\chapter{Netopeer Configuration System}

PC based routers are running under various operating systems with various
configuration files causing problems to network administrators. To
overcome this we are working on a unified configuration environment {\em
Netopeer}. The primary configuration is kept in an XML repository. User
interfaces implement Command Line Interface, web interface, and SNMP.
Configurations for several operating systems and commercial routers can be
generated from the XML, also allowing to convert among the representations.

\startlinecorrection
\midaligned{\externalfigure[xmlconf-david][height=11\baselineskip]}
\stoplinecorrection

\chapter{Acknowledgements}

This research is supported by the FP5 project {\em 6NET} (IST-2001-32603)
and CESNET project {\em IPv6 implementation in the CESNET2 network}
(02/2003).

\stopcolumns

\stoptext

