⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xorp.tex

📁 xorp源码hg
💻 TEX
📖 第 1 页 / 共 2 页
字号:
% -*- mode: latex; tex-main-file: "pospaper.tex" -*-\section{XORP Overview}XORP divides into two subsystems. The higher-level (so-called ``user-level'') subsystemconsists of the routing protocols themselves, along with routinginformation basesand support processes. The lower-level subsystem, which initially runs inside an OS kernel, manages theforwarding path---anything that needs to touch every packet---and providesAPIs for the higher level to access.The goal is for almost all ofthe higher-level code to be agnostic as to the details of theforwarding path.For user-level XORP, we've developed a multi-process architecture withone process per routing protocol, plus extra processes for management,configuration, and coordination.  To enable extensibility we designeda novel inter-process communication mechanism for communicationbetween these modules.  This mechanism is called XORP ResourceLocators (XRLs), and is conceptually similar to URLs.  URL mechanismssuch as redirection aid reliability and extensibility, and theirhuman-readable nature makes them easy to understand and embed inscripting languages.The lower level uses the Click modular router~\cite{click}, amodular, extensible toolkit for packet processing on conventional PCs.Further work will help this architecture span alarge range of hardware forwarding platforms, from commodityPC hardware, through mid-range PC-based platformsenhanced with intelligent network interfaces (such as Intel'sIXP1200~\cite{ixp1200,scoutixp}), to high-end hardware-based forwarding engines.We may also support alternative forwarding paths, such as theFreeBSD forwarding path with AltQ queuing extensions~\cite{altq}or an alternative extensible forwarding path such asScout~\cite{pathrouter}.Some forwarding path choices may influence the functionality availablefor end users to extend or change.  But for many aspects of research, suchas routing protocol experiments that don'trequire access to the forwarding path, a conventional FreeBSDlower level would suffice.\begin{figure}[h]\centerline{\psfig{figure=processes3.ps,width=3.0in}}\caption{XORP High-level Processes}\label{fig:processes}\vspace{-0.1in}\end{figure}Figure~\ref{fig:processes} shows how a XORP router's user-level processesand Click forwarding path fit together.The shared user-level processes are the XORP architecture's most innovativefeature. Four core processes are particularly worthy of comment: the\emph{router manager},the \emph{finder}, the \emph{routing information base}, and the \emph{forwarding engine abstraction}.  The \emph{router manager}process manages the router as a whole.  It maintainsconfiguration information; starts other processes, such as routingprotocols, as required by the configuration; and restarts failedprocesses as necessary.The \emph{finder} process stores mappings between abstracted applicationrequests, such as ``How many interfaces does this router have?'', and theparticular IPC calls necessary to answer those requests.Think of it as an IPC redirector:when an application wishes to make an IPCcall, it consults the finder to discover how to do it.  Theapplication typically caches this information so future callscircumvent the finder.  Furthermore, the finder can instructapplications to update contact information.  Thus it is easy to changehow application requests are handled at run-time.  Wecan trace XORP's communication pattern by asking the finder to mapabstract requests to sequences of IPCs, some for tracing and some fordoing the work.  XORP processes can communicate withoutbootstrapping using the finder, but since XRLs are relatively low cost wehave not found this necessary to date.%% XXX This is duptext from Eddie and Orion editing at the same time.%% Either this or the next paragraph should go.%The \emph{forwarding engine abstraction} process, or FEA, abstracts the%details of how the router's forwarding path is implemented.%Routing protocols talk to the FEA to install routes and discover properties%of interfaces, for example. %Interfaces to the FEA remain the same regardless of whether the forwarding%path is implemented in Click, in a conventional kernel, or even in external%hardware.%Again, XORP processes can bypass the FEA when required.The \emph{routing information base} process (RIB) receives routes fromthe routing processes, and arbitrates which routes should bepropagated into the forwarding path, or redistributed to other routingprocesses.  The forwarding path is managedby the \emph{forwarding engine abstraction} process (FEA).  The FEAabstracts the details of how the forwarding path of the router isimplemented and as a result, the routing processes are agnostic towhether the forwarding plane is Click based, a conventional UNIXkernel, or an alternative method.  The FEA manages the networkinginterfaces and forwarding table in the router, and provides information to routing processesabout the interface properties and events occurring on interfaces, such as aninterface being taken down.  As with the finder, XORP processes can bypass theFEA when required.\section{Solving Design Challenges}This section shows how we address the four design challenges of traditionalrouter features, extensibility, robustness, and performance.Space constraints prevent inclusion of much detail, but we dodescribe our IPC mechanism, XORP Resource Locators (XRLs), at length.%Routing protocol processes speak with the router manager to get their configurations, with the finder to redirect XRL-based%IPCs, and with the FEA (via the finder) to query interface state and%to open routing connections.  The unicast and multicast routing%information bases are stored in still other processes.  Thus, the%routing tables themselves survive protocol crashes---only those routes%added by a protocol will be affected.  The RIB processes speak with%the FEA to install and uninstall particular routes.\subsection{Features}To be successful, a router platform needs to be have good supportfor the routing and management protocols that are in widespread usetoday.  The minimal list of routing and routing-support protocols is:\begin{itemize}\addtolength{\itemsep}{-0.5\baselineskip}\item{\bf BGP4+}%(Multi-protocol BGP) %for inter-domain routing.% of IPv4 and IPv6 unicast and multicast RIBs.\item{\bf OSPF}intra-domain routing.\item{\bf RIPv2/RIPng}intra-domain routing.\item{\bf Integrated IS-IS}intra-domain routing.\item{\bf PIM-SM/SSM}multicast routing.\item{\bf IGMPv3/MLD}local multicast membership.\item{\bf PPP}for point-to-point links (as per RFC 1812).\end{itemize}With the exception of IS-IS, all of these are currently being workedupon within XORP.  The aim is for both IPv4 andIPv6 support.  MPLS is deliberately omitted atthis stage.  The multi-process architecture helps us to leverage existing code whereappropriate;  our OSPF and RIP implementations are derived from JohnMoy's {\it OSPFd}~\cite{ospfd} and BSD's {\it routed} respectively.For management interfaces, we are pursuing a command line interfaceresembling that of Juniper and intend to support SNMP.\subsection{Extensibility}Open interfaces are the key to extensibility.Interfaces must exist at any point where an extension might plug in,and those interfaces must be relatively easy to use.XORP's design encourages the construction of usefulinterfaces through multi-process design.A routing protocol process, for example, must communicate with otherprocesses to install routes and discover information about the routeritself.Open inter-process interfaces, built in to the system from the beginning,form the basic source of user-level XORP's extensibility.\subsubsection{XRLs}\def\xrl#1{\textsf{\small #1}}Most inter-process communication within XORP takes place via XORPResource Locators, or XRLs.  XRLs resemble the Web's URLs. They specify inhuman-readable form the type of IPC transport desired (the``protocol''), the abstract name for the entity being communicatedwith, the method being invoked, and a list of named arguments.  UnlikeURLs, they can also specify the nature of the response expected.As an example, the general form of one of the XRLs for the forwardingengine abstraction (FEA) process might be rendered in human readableform as:%\begin{figure}[h]\vspace{-0.05in}\centerline{\psfig{figure=xrl.ps,width=3.5in}}\vspace{-0.1in}\end{figure}\noindent The initial `\xrl{finder:}' portion specifies the protocol;in this case the actual protocol has not yet been resolved.The first time this XRL is called, the client XRL librarycontacts the finder, which responds with a redirection to a new XRLcontaining the actual protocol to be used, together with all theparameters needed to contact the current FEA.Subsequent communication then goesdirectly between the client and the FEA process.If the FEA restarts, the client's XRL calls to the old FEA will fail, andit can consult the finder to update the redirection.The XRL library, which all of our processes link against, takes an XRLand performs argument marshaling, then it invokes the specified transportmechanism, and handles the response or anyfailure that might occur.  Unlike many RPC or remote method invocationmechanisms, XRLs don't try and hide from the programmer thatoff-process communication is taking place.  While this makes the

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -