close Warning: Can't synchronize with repository "(default)" ("(default)" is not readable or not a Git repository.). Look in the Trac log for more information.

Changes between Version 21 and Version 22 of Internal/SystemPrototyping/Projects/ClickRouter


Ignore:
Timestamp:
Nov 6, 2013, 5:43:11 PM (11 years ago)
Author:
nkiran
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Internal/SystemPrototyping/Projects/ClickRouter

    v21 v22  
    7878==== Hop Block Transfer ====
    7979
    80 Routeable data blocks (complete with an Layer 3 header) are progressed towards the destination in a hop by hop manner. This Hop block transfer is achieved through a Segmentor module that fragments and transmits the block as MTU-sized packets, and a corresponding Aggregator module for reassembly. A simple bit-array based ACK mechanism (a bit for each fragment of the block) ensures reliable transmission. For back pressure, downstream nodes omit ACKs to initial SYN sent by upstream node. Hop by hop transport is ideal for wireless links esp. under variable link quality and packet loss conditions. For reliable segments of the network, MF proposes a Layer 3 bypass that allows a hop to be a consolidation of two or more physical links (to be implemented).
     80In MF, data blocks (or "chunks" as we call them) are delivered in a hop by hop manner to the destination, with the option of temporarily storing the block at each hop. A simple link-level data transport protocol (called "Hop") achieves reliable transfer at each hop. Such a transport has been shown to perform significantly better than end-to-end reliable transports (e.g., TCP) for paths with wireless segments with variable link conditions and where end-hosts may get temporarily disconnected. The implementation at each hop uses two complementary elements, a Segmentor at the upstream node and an Aggregator at the downstream node. The Segmentor fragments and transmits the block as MTU-sized packets, and the Aggregator reassembles the chunk for routing. A bit-array based ACK response(a bit for each fragment of the block) to a CSYN (chunk SYN) from the upstream node implements reliable transmission. To exercise back pressure, the downstream node can skip acknowledging the CSYN that precedes transmission of a chunk. 
     81
     82To minimize the delays due to fragmentation and reassembly, cut-through processing of the chunk is employed (to be implemented) wherein the chunk is available for routing soon as the first fragment with the routing header has been received by the Aggregator. Also, for reliable segments of the network, we propose a layer-3 bypass that will allow fragments of a chunk to bypass routing decisions and be forwarded to downstream node using a layer-2 label set up on per flow basis(to be implemented). The bypass solution effectively consolidates multiple physical links into a single 'virtual hop'.
    8183
    8284==== Name Resolution ====
     
    137139{{{
    138140sudo apt-get update
    139 sudo apt-get -y install git-core subversion curl
     141sudo apt-get -y install git-core subversion curl libpcap-dev
    140142}}}
    141143
     
    315317where MF_BasicRouter.click defines the packet processing pipeline, topology file defines the GUID-based connectivity graph with other routers, and the interface is the network interface to operate on (e.g., eth0 or wlan0)
    316318
    317 The suggested value for the variable $MF_CLICK_OPTIONS is '-j 4 -p xxxx', where option '-j' is for number of threads, and option '-p' sets the port number for Click's control interface - to query the read handlers of named elements (see the monitoring section for example usage).
     319The Click options variable $MF_CLICK_OPTIONS can be '-j 4 -p xxxx', where option '-j' defines number of task threads, and option '-p' sets the port number for Click's control interface - to query the read handlers of named elements for current state, traffic statistics, etc.
    318320
    319321
     
    394396{{{
    395397
    396 /usr/local/bin/click -j 4 $MF_SRC/eval/conf/click/MF_FileSender.click \
     398/usr/local/bin/click $MF_CLICK_OPTIONS $MF_SRC/eval/conf/click/test/MF_FileSender.click \
    397399                     my_GUID=<router GUID> topo_file=<topology file> \
    398400                     core_dev=<interface> \
     
    406408}}}
    407409
    408 Note the the router GUID and sender GUID above can be the same. The chunk or block is the hop-by-hop reliable data transfer granularity. A typical chunk size ranges between a few MB to a few hundred MB.
     410Note the the router GUID and sender GUID above can be the same. The chunk or block is the hop-by-hop reliable data transfer granularity. We expect chunk sizes to be between a few MB to a few hundred MB for large data transfers, but they can also have small payloads corresponding to short messages.
    409411
    410412The following brings up a file receiver instance:
    411413
    412414{{{
    413 /usr/local/bin/click $MF_CLICK_OPTIONS $MF_SRC/eval/conf/click/MF_FileReceiver.click \
     415/usr/local/bin/click $MF_CLICK_OPTIONS $MF_SRC/eval/conf/click/test/MF_FileReceiver.click \
    414416                     my_GUID=<router GUID> topo_file=<topology file> \
    415417                     core_dev=<interface>
     
    446448=== 3.3 Logging Configuration
    447449
    448 Set environment variable 'MF_CLICK_LOG_LEVEL' to integer between 1 and 7, corresponding to the following debug levels:
     450Set environment variable 'MF_CLICK_LOG_LEVEL' to integer between 0 and 7, corresponding to the following debug levels:
    449451
    450452|| Value || Log Level || Description ||
     453|| 0 || TRACE || ||
    451454|| 1 || DEBUG || ||
    452455|| 2 || INFO || ||
    453 || 3 || TIME || Same as INFO, but in addition, the message string is prefixed with current timestamp ||
     456|| 3 || TIME || Same as INFO. In addition, the message is prefixed with a micro-second precision timestamp ||
    454457|| 4 || WARN || ||
    455458|| 5 || ERROR || ||