Move click module description out of doxygen
This commit is contained in:
@@ -1,105 +0,0 @@
|
||||
/* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
|
||||
/*
|
||||
* Copyright (c) 2010 Lalith Suresh
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation;
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Authors: Lalith Suresh <suresh.lalith@gmail.com>
|
||||
*/
|
||||
|
||||
/**
|
||||
* \defgroup click Click Routing
|
||||
*
|
||||
* \section model Model
|
||||
*
|
||||
* This model implements the interface to the Click Modular Router and
|
||||
* provides the Ipv4ClickRouting class to allow a node to use Click
|
||||
* for external routing. Unlike normal Ipv4RoutingProtocol sub types,
|
||||
* Ipv4ClickRouting doesn't use a RouteInput() method, but instead,
|
||||
* receives a packet on the appropriate interface and processes it
|
||||
* accordingly. Note that you need to have a routing table type element
|
||||
* in your Click graph to use Click for external routing. This is needed
|
||||
* by the RouteOutput() function inherited from Ipv4RoutingProtocol.
|
||||
* Furthermore, a Click based node uses a different kind of L3 in the
|
||||
* form of Ipv4L3ClickProtocol, which is a trimmed down version of
|
||||
* Ipv4L3Protocol. Ipv4L3ClickProtocol passes on packets passing through
|
||||
* the stack to Ipv4ClickRouting for processing.
|
||||
*
|
||||
* \section build Build Instructions
|
||||
*
|
||||
* The first step is to build Click. At the top of your Click source directory:
|
||||
*
|
||||
* $: ./configure --enable-userlevel --disable-linuxmodule --enable-nsclick --enable-wifi
|
||||
* $: make
|
||||
*
|
||||
* The --enable wifi flag can be skipped in case you don't intend on using
|
||||
* Click with Wifi.
|
||||
* *Note: You don't need to do a 'make install'.
|
||||
*
|
||||
* Once Click has been built successfully, we proceed to configure ns-3 with
|
||||
* Click Integration support:
|
||||
*
|
||||
* $: ./waf configure --with-nsclick=/path/to/click/source
|
||||
*
|
||||
* If it says 'enabled' beside 'NS-3 Click Integration Support', then you're
|
||||
* good to go.
|
||||
*
|
||||
* Next, try running one of the examples:
|
||||
*
|
||||
* $: ./waf --run nsclick-simple-lan
|
||||
*
|
||||
* You will find a lot of output being generated. This is because of the
|
||||
* IPPrint and Print elements present in the nsclick-simple-lan.click
|
||||
* configuration file that the example script uses.
|
||||
*
|
||||
* \section clickgraph Click Graph Instructions
|
||||
*
|
||||
* The following should be kept in mind when making your Click graph:
|
||||
* - Only userlevel elements can be used.
|
||||
* - You will need to replace FromDevice and ToDevice elements
|
||||
* with FromSimDevice and ToSimDevice elements.
|
||||
* - Packets to the kernel are sent up using ToSimDevice(tap0,IP).
|
||||
* - For any node, the 0th device will be tap0. The remaining devices
|
||||
* should be eth0, eth1 and so forth (even if you're using wifi).
|
||||
* Please note that the device numbering should begin from 0.
|
||||
* - A routing table element is a mandatory. The OUTports of the routing
|
||||
* table element should correspond to the interface number of the device
|
||||
* through which the packet will ultimately be sent out. Violating this
|
||||
* rule will lead to really weird packet traces. This routing table element's
|
||||
* name should then be passed to the Ipv4ClickRouting protocol object as
|
||||
* a simulation parameter. See the Click examples for details.
|
||||
* - When using Wifi with ns-3-click, do not use wifi specific elements like
|
||||
* WifiEncap, ExtraEncap, MadWifiRate etc. for outgoing packets. Incoming
|
||||
* packets should have their Wifi headers removed using WifiDecap + ExtraDecap
|
||||
* or Strip elements. See the nsclick-raw-wlan.click file for an idea of the same.
|
||||
* - The current implementation leaves Click with mainly L3 functionality,
|
||||
* with ns-3 handling L2. We will soon begin working to support the use of
|
||||
* MAC protocols on Click as well.
|
||||
*
|
||||
* \section usage Usage
|
||||
*
|
||||
* To have a node run Click, the easiest way would be to use the ClickInternetStackHelper
|
||||
* class in your simulation script. For instance:
|
||||
*
|
||||
* ClickInternetStackHelper click;
|
||||
* click.SetClickFile (myNodeContainer, "nsclick-simple-lan.click");
|
||||
* click.SetRoutingTableElement (myNodeContainer, "u/rt");
|
||||
* click.Install (myNodeContainer);
|
||||
*
|
||||
* The example scripts inside examples/click/ demonstrate the use of Click based
|
||||
* nodes in different scenarios.
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -5,8 +5,7 @@ Click is a software architecture for building configurable routers.
|
||||
By using different combinations of packet processing units called elements,
|
||||
a Click router can be made to perform a specific kind of functionality.
|
||||
This flexibility provides a good platform for testing and experimenting with
|
||||
different protocols. This project aims to integrate ns-3 with the Click
|
||||
Modular Router so as to enable rapid protocol development.
|
||||
different protocols.
|
||||
|
||||
Model Description
|
||||
*****************
|
||||
@@ -22,10 +21,24 @@ ns-3's design is well suited for an integration with Click due to the following
|
||||
* This also means that any kind of ns-3 traffic generator and transport should work easily on top of Click.
|
||||
* By striving to implement click as an Ipv4RoutingProtocol instance, we can avoid significant changes to the LL and MAC layer of the ns-3 code.
|
||||
|
||||
The design goal would be to make the ns-3-click public API simple enough such that the user needs to merely add an Ipv4ClickRouting instance to the node, and inform each Click node of the Click configuration file (.click file) that it is to use.
|
||||
The design goal was to make the ns-3-click public API simple enough such that the user needs to merely add an Ipv4ClickRouting instance to the node, and inform each Click node of the Click configuration file (.click file) that it is to use.
|
||||
|
||||
Developing a Simulator API which will allow ns-3 to talk with Click and vice versa
|
||||
##################################################################################
|
||||
This model implements the interface to the Click Modular Router and
|
||||
provides the Ipv4ClickRouting class to allow a node to use Click
|
||||
for external routing. Unlike normal Ipv4RoutingProtocol sub types,
|
||||
Ipv4ClickRouting doesn't use a RouteInput() method, but instead,
|
||||
receives a packet on the appropriate interface and processes it
|
||||
accordingly. Note that you need to have a routing table type element
|
||||
in your Click graph to use Click for external routing. This is needed
|
||||
by the RouteOutput() function inherited from Ipv4RoutingProtocol.
|
||||
Furthermore, a Click based node uses a different kind of L3 in the
|
||||
form of Ipv4L3ClickProtocol, which is a trimmed down version of
|
||||
Ipv4L3Protocol. Ipv4L3ClickProtocol passes on packets passing through
|
||||
the stack to Ipv4ClickRouting for processing.
|
||||
|
||||
|
||||
Developing a Simulator API to allow ns-3 to interact with Click
|
||||
###############################################################
|
||||
|
||||
Much of the API is already well defined, which allows Click to probe for information from the simulator (like a Node's ID, an Interface ID and so forth). By retaining most of the methods, it should be possible to write new implementations specific to ns-3 for the same functionality.
|
||||
|
||||
|
||||
@@ -39,6 +39,11 @@
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
/**
|
||||
* \defgroup click Click Routing
|
||||
* This section documents the API of the ns-3 click module. For a generic functional description, please refer to the ns-3 manual.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \ingroup click
|
||||
* \brief Class to allow a node to use Click for external routing
|
||||
|
||||
@@ -48,6 +48,7 @@ class Icmpv4L4Protocol;
|
||||
/**
|
||||
* \brief Implement the Ipv4 layer specifically for Click nodes
|
||||
* to allow a clean integration of Click.
|
||||
* \ingroup click
|
||||
*
|
||||
* This is code is mostly repeated from the Ipv4L3Protocol implementation.
|
||||
* Changes include:
|
||||
|
||||
Reference in New Issue
Block a user