Version 2 (modified by 11 years ago) ( diff ) | ,
---|
Click-based MobilityFirst Router
Contents
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:
- Aggregator: click/elements/gstar/MF_Aggregator.cc
- Segmentor: click/elements/gstar/MF_Segmentor.cc
Name Resolution
Relevant Elements:
- Network Binder: click/elements/gstar/MF_NetworkBinder.cc
- GNRS Message Handler: click/elements/gnrs/GNRS_ReqRespHandler.cc
(Unified) Buffer Management
Relevant Elements:
- Chunk Store: click/elements/gstar/MF_CacheManager.cc
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:
- Neighbor Table: prototype/click/elements/gstar/mf_neighbours.cc
- Routing and Forwarding Table: click/elements/gstar/mf_routing.cc
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:
- Basic router startup script: eval/scripts/click/init_rtr.sh
- Click-based file sender: eval/scripts/click/init_filesend_rtr.sh
- Click-based file receiver: eval/scripts/click/init_filerecv_rtr.sh
3.2. Router Configurations
Relevant Files:
- eval/conf/click - default Click configurations for MobilityFirst router
3.3. Topology Control
Relevant Elements:
- Topology: click/elements/gstar/topology.cc
Relevant Files:
- eval/topology - directory with sample topologies
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 |