wiki:Internal/SystemPrototyping/Projects/ClickRouter
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.

Version 2 (modified by nkiran, 11 years ago) ( diff )

--

Click-based MobilityFirst Router

0. Requirements

  • Software prototype with reference implementations of dynamic GNRS resolution, hop-by-hop block transfer, storage aware routing (GSTAR)
  • Reference implementation/handling of network layer header with service identifier, 160-bit src/dst GUID, src/dst NA(s) and extensible headers for service options processing
  • Multicast and anycast forwarding implemented using GNRS maintained membership and routing state from GSTAR
  • Configuration and parameter tuning for router roles: core, access

1. System architecture

Figure below outlines the packet-processing pipeline architecture. The pipeline shows two main paths: data and control. The control path implements GSTAR intra-domain routing control protocol including: neighbor discovery, link quality estimation, link-state flooding, and pair-wise DTN state exchange (TBC). The control path also computes the forwarding table entries using a hybrid periodic and on-demand basis. The data path handles the forwarding functions for MobilityFirst data packets, and includes transit buffers, network-address resolution, service classification, packet cloning (in multicast, for example), compute-plane hand off, and hold buffers for temporary storage of data blocks. Functions are implemented as modular Click elements for easy construction of custom router roles such as a that of a core router (or an access router. The architecture supports variable number of input and output ports/interfaces (as long as the processing hardware resources are scaled appropriately) that can be easily aggregated for data/control path processing through elements available with the core distribution of the Click modular router.

    PKT PROCESSING OVERVIEW
    +++++++++++++++++++++++
                                                     ___________
                                                    |           |
                                                 -->| Routing X |---
                                               /    |___________|    \
                                              /               |       \
                                             /       _________|_       \  
                                 ctrl. pkt  /       |         | |       \ ctrl. pkt   
                                   -------------- ->|  GSTAR  | |--------------
                                 /                  |_________|_|               \
    in                          /                          |  |                  \                            out
 _________      __________     /                  _________v__v__                 \      ___________      _________
|         |    |          |   /                  |               |                 \ -->|           |    |         |
|Device(s)| -> |Classifier| ->                   | Forward LUT   |                      | Scheduler | -> |Device(s)|
|_________|    |__________|   \                  |_______________|                 / -->|___________|    |_________|
                               \                        ^  |                      /        
                                \               ________|__v______               /
                                 \             |                  |             / 
                                   ----------> |  Data pkt proc.  | -----------
                                  data pkt     |__________________|      data pkt           
                                                     
                                                    

Separation of data and control paths simplifies resource allocation (threads, scheduling policy) and prioritization of packet flows. For example, a scheduler element currently prioritizes outbound control packets over data packets, to limit queuing delays in the control plane. The design can also easily accommodate control protocols implemented outside of Click. Such protocol implementations can currently use IP networking to build routing state, and utilize the API exported by the forwarding table module in Click (TBF) to install and manage forwarding entries. Future work may export a messaging API allowing applications to transmit payloads as MobilityFirst packets on the wire.

1.1 Data Path

    DATA PATH
    +++++++++

                                 _ _ _ _                                  
                               (         )     ______________       
                              (   GNRS    )   |              |      
                               ( _ _ _ _ )    | Forward  LUT |      
                                   ^ |        |______________|      
                       GUID lookup | |              ^  |               
           ____________        ____|_v__      ______|__v___         ___________    
          |            |      |         |    |             |forward|           |
 data pkt |    Hop     |chunk | Network |    |  Next-Hop   |-----> |    Hop    | data pkt
    ----->| Aggregator | -->  |  Binder | -> |   Lookup    |       | Segmentor | -----> to out port
          |____________|      |_________|    |_____________|----.  |___________|
                                  ^                             |
                                  |                             |store
                                  |                         ____v______
                                  | rebind after timeout   |           |
                                  . ---------------------- |Chunk Store|
                                                           |___________|


Hop Block Transfer

Relevant Elements:

Name Resolution

Relevant Elements:

(Unified) Buffer Management

Relevant Elements:

1.2 Control path (GSTAR)

                                                               
                                                               
    GSTAR CONTROL PATH
    ++++++++++++++++++   




                         lnk. prb  ____________   lnk prb
                          + ack   |            |   + ack
                          ------->|  Link Est. |------           
                        /         |____________|       \
                       /           ____________         \
      ctrl. pkt       /  lsa pkt  |            | lsa pkt \  ctrl. pkt   
    ----------------------------->|  LS Rtg.   |-----------------------> to out port
                      \           |____________|         /
                       \           ____________         /
                        \         |            |       /
                          ------->|  DTN Rtg.  |------ 
                       d-lsa pkts |____________| d-lsa pkts



                      ____________      ____________  Periodic  _____________
                     |            |    |            | Updates  |             |
                     |Neighbor Tbl|    | Routing Tbl|--------> | Forward LUT |
                     |____________|    |____________|          |_____________|


Figure 1: Main components of the Click-based MobilityFirst router

Relevant Elements:

2. Installation and Dependencies

3. Running the MobilityFirst Router

3.1. Scripts

To start up the basic router run the following:

> ./init_rtr.sh my_GUID topo_file oml_conf_file core_dev core_dev_IP resolve

where:
#parameters to this script
#1. my_GUID -  GUID of router
#2. topo_file - GUID-based topology file
#3. oml_conf_file - OML configuration for monitoring
#4. core_dev - name of interface towards backhaul/core
#5. core_dev_IP - IP assoc with core interface
#6. resolve - use gnrs resolution or not (true|false)

Relevant files:

3.2. Router Configurations

Relevant Files:

3.3. Topology Control

Relevant Elements:

Relevant Files:

3.4 Debug Logging

Set environment variable 'MF_CLICK_LOG_LEVEL' to integer between 1 and 7, corresponding to the following debug levels:

Value Log Level Description
1 DEBUG
2 INFO
3 TIME Used for timing analysis outputs
4 WARN
5 ERROR
6 CRITICAL Cases of out of memory, approaching resource limits, etc.
7 FATAL Unable to proceed, or when integrity may be compromised

4. Performance

5. Known Issues

6. Release Notes

Note: See TracWiki for help on using the wiki.