📄 design_arch.tex
字号:
%% $XORP: xorp/docs/design_arch/design_arch.tex,v 1.26 2007/03/15 00:43:12 pavlin Exp $%\documentclass[11pt]{article}%\usepackage[dvips]{changebar}\usepackage{subfigure}\usepackage{fullpage}\usepackage{setspace}\usepackage{times}\usepackage{latexsym}\usepackage{epsfig}\usepackage{graphicx}\usepackage{xspace}\usepackage{color}\usepackage{amsmath}\usepackage{rotating}\usepackage{moreverb}\usepackage{listings}\usepackage{alltt}\usepackage{stmaryrd}%\usepackage[dvipdf]{graphics}%\usepackage[dvips]{graphicx}%\usepackage{xorp}\definecolor{gray}{rgb}{0.5,0.5,0.5}\newcommand{\etc}{\emph{etc.}\xspace}\newcommand{\ie}{\emph{i.e.,}\xspace}\newcommand{\eg}{\emph{e.g.,}\xspace}%\newcommand{\comment}[1]{{\color{gray}[\textsf{#1}]}}%\newcommand{\comment}[1]{}% Changebar stuff% \newenvironment{colorcode}{\color{blue}}{}% \renewcommand{\cbstart}{\begin{colorcode}}% \renewcommand{\cbend}{\end{colorcode}}% \pagestyle{empty}\begin{document}\title{XORP Design Overview \\\vspace{1ex}Version 1.4}\author{ XORP Project \\ International Computer Science Institute \\ Berkeley, CA 94704, USA \\ {\it http://www.xorp.org/} \\ {\it feedback@xorp.org}}\date{March 20, 2007}\maketitle%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\section{Introduction}This document provides a brief overview of the XORP (eXtensible OpenRouter Platform) architecture. It is intended both for people who areinterested in the architecture itself, and as a starting point for developerswho wish to modify the software. People who are interested in the XORPmulticast routing architecture should read also\cite{xorp:multicast_arch}.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{XORP Motivation}A gap exists between network research and Internet practice due to thenature of the Internet router software business. It is really hardfor researchers to introduce new protocols and mechanisms intooperational networks, and to study existing protocols in the wild.The primary goal of XORP is to fill this gap. To succeed it must be botha research tool and a stable deployment platform that can be used inproduction networks. It must also place a strong emphasis onextensibility, while coping with the impact of this on robustness,security and performance.For more details about the XORP design {\it philosophy}, see\cite{handley:hotnets2002:xorp}.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\section{Target}The goal for XORP is to become a suitable software platform that canbe used as the core of practically any router. However, the {\itinitial} focus is on an edge router running on commodity PC hardwarewith relatively low port density and moderate size routingtables~\footnote{A comparable production router might be a Cisco7206VXR (or pretty much anything smaller than this).}.However, given the flexibility of the XORP architecture, in the futurewe should not be limited to edge-router scenarios or PC hardware. Forexample:\begin{itemize} \item We can easily imagine using multiple PCs as forwarding engines, with a single control element. This would allow greater port density. \item Another useful target would be a PC with a number of network processors (\eg Intel IXP1200) doing the bulk of the forwarding. \item Finally, in the long run, the code base might be run the control processor of high-performance ASIC-based routers.\end{itemize}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\section{Functionality}XORP is designed to support both IPv4 and IPv6.Below is our initial target list of protocols and features to besupported by XORP. Those in bold are already implemented or supportedto some degree. Not all of the implemented features have been testedyet.%%%%%%%%%%%%%%%%%%%%%\subsubsection*{Unicast Routing Protocols}\begin{itemize} \item {\bf BGP4+} ({\bf IPv4} and {\bf IPv6}) \item {\bf OSPFv2 (IPv4)}, {\bf OSPFv3 (IPv6)} \item {\bf RIPv2 (IPv4)}, {\bf RIPng (IPv6)} \item IS-IS\end{itemize}%%%%%%%%%%%%%%%%%%%%%\subsubsection*{Multicast Routing Protocols}\begin{itemize} \item {\bf PIM-SM, PIM-SSM}, Bidir-PIM ({\bf IPv4} and {\bf IPv6}) \item {\bf IGMPv1, v2, v3} ({\bf IPv4}) \item {\bf MLDv1, v2} ({\bf IPv6})\end{itemize}%%%%%%%%%%%%%%%%%%%%%\subsubsection*{Network Management}\begin{itemize} \item {\bf Command Line Interface} (similar to Juniper) \item {\bf SNMP} \item WWW\end{itemize}%%%%%%%%%%%%%%%%%%%%%\subsubsection*{Forwarding Path}\begin{itemize} \item {\bf Traditional UNIX forwarding path} \item {\bf Click forwarding path} \item {\bf Windows Server 2003 forwarding path} \item User-level simulation-like environment\end{itemize}%%%%%%%%%%%%%%%%%%%%%\subsubsection*{Miscellaneous}\begin{itemize} \item {\bf Routing policies} ({\bf unicast} and multicast)\end{itemize}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\section{Architecture}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{Design Philosophy}The XORP design philosophy stresses {\em extensibility},{\em performance} and {\em robustness}.For routing and management modules, the primary goals areextensibility and robustness. These goals are achieved by carefullyseparating functionality into independent modules, running in separateUNIX processes, with well-defined APIs between them. Clearly, thereare performance penalties to pay for such an architecture, but webelieve that so long as careful attention is paid to computationalcomplexity, the costs associated with inter-process communication willbe acceptable given the obvious extensibility and robustness benefits.For the forwarding path, the primary goals are extensibility andperformance. Robustness here is primarily achieved throughsimplicity and a modular design that encourages re-use of well-testedcomponents.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{Design Overview}XORP can be divided into two subsystems. The higher-level(``user-space'') subsystem consists of the routing protocols andmanagement mechanisms. The lower-level (``kernel'') provides theforwarding path, and provides APIs for the higher-level to access.User-level XORP uses a multi-process architecture with one process perrouting protocol, and a novel inter-process communication mechanismknown as XORP Resource Locators (XRLs)~\cite{xorp:xrl}. XRLcommunication is not limited to a single host, and so XORP can inprinciple run in a distributed fashion. For example, we can have adistributed router, with the forwarding engine running on one machine,and each of the routing protocols that update that forwarding enginerunning on a separate control processor system.The lower-level subsystem can use traditional UNIX kernel forwarding,the Click modular router~\cite{CLICK-PROJECT} or Windows kernelforwarding (Windows Server 2003). The modularity and minimaldependencies between the lower-level and user-level subsystems allow formany future possibilities for forwarding engines. As standards such asthose being developed in the IETF ForCES Working Group emerge, we expectto support them to provide true forwarding engine interchangeability.\begin{figure}[htbp] \begin{center} \includegraphics[width=0.7\textwidth]{figs/processes3.ps} % \vspace{.05in} \caption{XORP Process Model} \label{fig:process_model} \end{center}\end{figure}Figure~\ref{fig:process_model} shows the processes in XORP, althoughit should be noted that some of these modules use separate processesto handle IPv4 and IPv6. For simplicity, the arrows show only themain communication flows used for routing information. Control flowsare not shown - for example, the FEA may need to inform the routingprocesses when an interface goes down. These processes are furtherdescribed in Section~\ref{sec:xorp_processes_description}.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -