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

📄 mld6igmp_arch.tex

📁 xorp源码hg
💻 TEX
字号:
%% $XORP: xorp/docs/mld6igmp/mld6igmp_arch.tex,v 1.23 2007/03/15 00:43:14 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 MLD/IGMP Daemon \\\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 theXORP MLD/IGMP~\cite{MLD-V1,MLD-V2,IGMP-V1,IGMP-V2,IGMP-V3}Routing Daemon. It is intended to provide a starting point for softwaredevelopers who wish to modify this software.A router running MLD/IGMP interacts with other MLD/IGMP routers andmulticast group members, and keeps state with information about localmulticast membership.The chosen architecture for the XORP MLD/IGMP implementation emphasizes oncorrectness and extensibility rather than high performance or minimalmemory footprint. Typically, the amount of state kept by MLD/IGMP isrelatively small. Further, the multicast routing performance does notdepend on the MLD/IGMP performance, therefore it is not necessary tooptimize the implementation. Only if it turns out that there areperformance issues with MLD/IGMP, we would try to optimize those parts of theimplementation that should prove to be a bottleneck.The MLD and IGMP implementation is based on the specification in the following documents:\begin{itemize}  \item{\bf RFC 2236}: Internet Group Management Protocol, Version 2  \item{\bf RFC 3376}: Internet Group Management Protocol, Version 3  \item{\bf RFC 2710}: Multicast Listener Discovery (MLD) for IPv6  \item{\bf RFC 3810}: Multicast Listener Discovery Version 2 (MLDv2) for IPv6\end{itemize}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{Acronyms}Acronyms used in this document:\begin{itemize}  \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\end{itemize}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{MLD/IGMP Design Architecture Overview}\begin{figure}[htbp]  \begin{center}    \includegraphics[scale=0.7]{figs/mld6igmp_design_overview}    \caption{MLD/IGMP design overview}    \label{fig:mld6igmp_design_overview}  \end{center}\end{figure}Figure~\ref{fig:mld6igmp_design_overview} provides a general overview of theMLD/IGMP components. For each component there is a C++ class with exactlythe same name. The main components are briefly described below:\begin{itemize}  \item {\bf Mld6igmpNode:} a representation of a single MLD/IGMP routing unit  (\eg a virtual MLD/IGMP router).  Typically, there would be a single Mld6igmpNode per multicast router.  \item {\bf Mld6igmpVif:} MLD/IGMP-specific virtual (network) interface that  is used for sending and receiving MLD/IGMP control packets.  \item {\bf Mld6igmpConfig:} contains MLD/IGMP-specific configuration.\end{itemize}Those components are described in details inSection~\ref{sec:components_description}.For information about the interaction between the MLD/IGMP and other modulessee \cite{xorp:multicast_arch}.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\section{Components Description}\label{sec:components_description}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{Mld6igmpNode Description}Mld6igmpNode is a representation of a single MLD/IGMP routing unit (\eg avirtual MLD/IGMP router).Typically, there would be a single Mld6igmpNode per multicast router.However, in some cases a multicast router may have more than onerouting unit. For example, it could have one Mld6igmpNode for IPv4, andanother one for IPv6 multicast routing. Further, if we want torun MLD/IGMP in a simulation environment, each multicast router within thatsimulation will be represented by a single Mld6igmpNode.From a developer's point of view, Mld6igmpNode contains all the staterelated to the MLD/IGMP routing unit, and exports the front-end interfaceto interact with that unit.For example, Mld6igmpNode contains the methods tostart/stop or configure MLD/IGMP, or to send/receive MLD/IGMP control packetsto/from the routing unit. Those methods are described in the following files:\begin{itemize}  \item \verb=mld6igmp/mld6igmp_node.hh=  \item \verb=libproto/proto_node.hh=  \item \verb=libproto/proto_unit.hh=\end{itemize}Mld6igmpNode itself does not implement the mechanisms to communicate withother routing units (\eg to send or receive control packets to/from thenetwork), or to perform other MLD/IGMP-independent operations such asjoining a multicast routing group. Those mechanisms are outside the scope ofMld6igmpNode, and must be implemented separately.Mld6igmpNode contains several pure virtual methods (\eg\verb=join_multicast_group()= is used to join a multicast group onan interface) that must be implemented by a class that inherits Mld6igmpNode.For example, XrlMld6igmpNode is a class that uses Mld6igmpNode as a baseclass; XrlMld6igmpNode uses XRL-based communication mechanisms betweenMld6igmpNode and other XORP components such as the MFEA and PIM modules.By default, Mld6igmpNode is disabled; therefore, on startup it must beenabled explicitly.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{Mld6igmpVif Description}Mld6igmpVif is a MLD/IGMP-specific virtual (network) interface that isused for sending and receiving MLD/IGMP control packets. It includes themethods for processing and composing MLD/IGMP control messages, as wellas various state per interface (\eg the multicast group membership on aninterface). It contains various state per interface ((\eg the multicastgroup membership on an interface), as well as the methods for processingand composing MLD/IGMP control messages.Typically, there would be one Mld6igmpVif per network interfacesuch as physical interface, tunnel, or the loopbackinterface. Not all virtual interfaces areused by MLD/IGMP; for example, all interfaces that are not multicastcapable, and the loopback interface are ignored for multicastrouting.Typically, from developer's point of view, all interaction with Mld6igmpNodewould be through Mld6igmpNode~\footnote{For simplicity, currently(March 2007) there are few occasions when XrlMld6igmpNode usesdirect access to Mld6igmpVif.}.The public interface for Mld6igmpVif contains the methods to manipulate avirtual (network) interface. Those methods are to start/stop/enable/disable avirtual interface, and to configure it. The methods are described inthe following files:\begin{itemize}  \item \verb=mld6igmp/mld6igmp_vif.hh=  \item \verb=libxorp/vif.hh=  \item \verb=libproto/proto_unit.hh=\end{itemize}Mld6igmpVif contains state such as group membership information aboutlocal members (a set of objects of class Mld6igmpGroupRecord that containssets of objects of class Mld6igmpSourceRecord), and informationabout the current MLD/IGMP querier. Also, all the MLD/IGMP-specific methods for parsing or constructing MLD/IGMP controlmessages when a MLD/IGMP packet is received or sent are implemented asmethods in Mld6igmpVif. The parsing or construction of each message type isimplemented in file \verb=mld6igmp_proto.cc=.By default, each Mld6igmpVif is disabled; therefore, on startup it mustbe enabled explicitly.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\subsection{Mld6igmpConfig Description}Mld6igmpConfig handles the MLD/IGMP-specificconfiguration~\footnote{Currently (March 2007), Mld6igmpConfig is notimplemented; rather, all state is kept inside Mld6igmpNode instead.}. Thisconfiguration is used to configure the following units:\begin{itemize}  \item Mld6igmpVif: protocol version, membership query related options  and timer values, etc.\end{itemize}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     APPENDIX%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\appendix\section{Modification History}\begin{itemize}  \item December 11, 2002: Initial version 0.1 completed.  \item March 10, 2003: Updated to match XORP release 0.2.  \item June 9, 2003: Updated the version to 0.3, and the date.  \item August 28, 2003: Updated the version to 0.4, and the date.  \item November 6, 2003: Updated the version to 0.5, and the date.  \item July 8, 2004: Updated the version to 1.0, and the date.  \item April 13, 2005: Updated the version to 1.1, and the date.  \item March 8, 2006: Updated the version to 1.2, and the date.  \item July 4, 2006 Updated to include information about the IGMPv3/MLDv2  implementation.  \item August 2, 2006: Updated the version to 1.3, and the date.  \item March 20, 2007: Updated the version to 1.4, and the date.\end{itemize}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%     BIBLIOGRAPHY%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\bibliography{../tex/xorp}\bibliographystyle{plain}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\end{document}

⌨️ 快捷键说明

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