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

📄 mfea_arch.tex

📁 xorp源码hg
💻 TEX
📖 第 1 页 / 共 2 页
字号:
%% $XORP: xorp/docs/mfea/mfea_arch.tex,v 1.25 2007/03/15 00:43:13 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 Multicast Forwarding Engine Abstraction \\\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}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{Overview}This document provides an overview of the XORP Multicast ForwardingEngine Abstraction (MFEA). It is intended to provide a starting pointfor software developers who wish to modify this software.The main purpose of the MFEA is to abstract the underlying system andthe multicast forwarding engine, and to provide a consistent interfaceto multicast-related modules such as PIM and MLD/IGMP. Thus, if we wantto use PIM and MLD/IGMP on different OS platform or hardware, wewould have to modify the MFEA only. In addition, all thecomplexity associated with network sockets, sending and receivingpackets, and so on are moved away from the protocol modules.This eliminates code duplication, and reduces greatly thedevelopment overhead associated with protocol-independentissues when implementing a new protocol. Finally, if we want to usePIM and MLD/IGMP in a simulation-like environment, it will be sufficientto add the simulation environment support only to the MFEA.Currently (March 2007), the MFEA supports abstraction forthe following systems:\begin{itemize}  \item DragonFlyBSD, FreeBSD, NetBSD, and OpenBSD  \item Linux\end{itemize}In the future, the MFEA will support simulation environment, andabstraction for Click~\cite{CLICK-PROJECT} forwardingpath~\footnote{Currently (March 2007) Click doesnot support multicast yet.}. Support for other systems will be addedon-demand if there are available resources.Note that typically the MFEA would be part of the unicast FEAprocess~\cite{xorp:fea}, though logically it is a separate entity.However, if someone wants to run the MFEA as a separate process, itrequires very small development effort to do this because of the logicalseparation between the FEA and the MFEA.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{Acronyms}Acronyms used in this document:\begin{itemize}  \item {\bf FEA}: {\bf F}orwarding {\bf E}ngine {\bf A}bstraction  \item {\bf MFC}: {\bf M}ulticast {\bf F}orwarding {\bf C}ache: another  name for an entry in the multicast forwarding engine (typically used  on UNIX systems).  \item {\bf MFEA}: {\bf M}ulticast {\bf F}orwarding {\bf E}ngine  {\bf A}bstraction  \item {\bf MLD/IGMP}: {\bf M}ulticast {\bf L}istener {\bf D}iscovery/{\bf  I}nternet {\bf G}roup {\bf M}anagement {\bf P}rotocol  \item {\bf PIM-SM}: {\bf P}rotocol {\bf I}ndependent {\bf M}ulticast--{\bf  S}parse {\bf M}ode  \item {\bf RIB}: {\bf R}outing {\bf I}nformation {\bf B}ase\end{itemize}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{MFEA Design Architecture Overview}\begin{figure}[htbp]  \begin{center}    \includegraphics[scale=0.5]{figs/mfea_design_overview}    \caption{MFEA design overview}    \label{fig:mfea_design_overview}  \end{center}\end{figure}Figure~\ref{fig:mfea_design_overview} provides a general overview of theMFEA components. For each component there is a C++ class with exactlythe same name. The main components are briefly described below:\begin{itemize}  \item {\bf MfeaNode:} a representation of a single MFEA unit  (\eg as part of a virtual multicast router).  Typically, there would be a single MfeaNode per multicast router.  \item {\bf MfeaVif:} MFEA-specific virtual (network) interface that is used  to keep state per network interface.  \item {\bf MfeaConfig:} contains MFEA-specific configuration.  \item {\bf MfeaDft:} table with dataflow-related information for  estimating the bandwidth per dataflow.  \item {\bf ProtoComm:} per-protocol UNIX-specific unit for  communication with the underlying system.  \item {\bf MfeaMrouter:} unit for multicast-related communication with  the underlying system.\end{itemize}Those components are described in details inSection~\ref{sec:components_description}.For information about the interaction between the MFEA and other modules see\cite{xorp:multicast_arch}.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\section{Components Description}\label{sec:components_description}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{MfeaNode Description}MfeaNode is a representation of a single MFEA unit (\eg as part of avirtual multicast router).Typically, there would be a single MfeaNode per multicast router.However, in some cases a multicast router may have more than oneMFEA units. For example, it could have one MfeaNode for IPv4, andanother one for IPv6 multicast routing. Further, if we want torun MFEA in a simulation environment, each multicast router within thatsimulation will have a single MfeaNode.From a developer's point of view, MfeaNode contains all the staterelated to the MFEA unit, and exports the front-end interfaceto interact with that unit.For example, MfeaNode contains the methods tostart/stop or configure the MFEA, or to send/receive protocol controlpackets (\eg PIM or MLD/IGMP) to/from the unit. Those methods aredescribed in the following files:\begin{itemize}  \item \verb=mfea/mfea_node.hh=  \item \verb=libproto/proto_node.hh=  \item \verb=libproto/proto_unit.hh=\end{itemize}MfeaNode provides the following abstraction to the multicast-relatedmodules such as PIM and MLD/IGMP:\begin{itemize}  \item Interface to add/delete/start/stop a protocol within the MFEA  and the underlying system.  \item Interface to send or receive protocol packets through the  underlying system.  \item Interface to receive (kernel) upcalls/signals from the  underlying system, and to forward those signals to the  multicast-related modules that are interested in receiving those  signals. Examples of such signals in case of UNIX kernel are NOCACHE or  WRONGVIF/WRONGMIF: the former one is sent when the underlying multicast  forwarding engine has no multicast forwarding entry for a multicast  packet; the latter one is sent when a multicast data packet has  arrived on an interface that is not the expected incoming interface to  forward that data packet.  \item Interface to add/delete dataflow monitors, to monitor network  bandwidth per dataflow, and to send the appropriate signals to the  interested multicast-related modules. For example, the PIM-SM module  might be interested to know when the bandwidth of a given dataflow becomes  zero, or is above a threshold.

⌨️ 快捷键说明

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