Version 1 (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. Design
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, including: transit buffers, network-address resolution, service classification, packet cloning (multicast, for example), compute-plane handoffs, and hold buffers (for temp. storage). Each function is modularized as a Click element for easy construction of custom roles such as a that of a core 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 Table | | Scheduler | -> |Device(s)| |_________| |__________| \ |_______________| / -->|___________| |_________| \ ^ | / \ ________|__v______ / \ | | / ----------> | Data pkt proc. | ----------- data pkt |__________________| data pkt 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| |___________| 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
1.1. Hop-by-Hop
Relevant Elements:
- Aggregator: click/elements/gstar/MF_Aggregator.cc
- Segmentor: click/elements/gstar/MF_Segmentor.cc
1.2. Name Resolution
Relevant Elements:
- Network Binder: click/elements/gstar/MF_NetworkBinder.cc
- GNRS Message Handler: click/elements/gnrs/GNRS_ReqRespHandler.cc
1.3. Next-Hop Lookup & Store/Forward
Relevant Elements:
- Forward Table Lookup: click/elements/gstar/MF_IntraLookUp.cc
- Chunk Store: click/elements/gstar/MF_CacheManager.cc
1.4. GSTAR
Relevant Elements:
- Neighbor Table: prototype/click/elements/gstar/mf_neighbours.cc
- Routing and Forwarding Table: click/elements/gstar/mf_routing.cc
2. Message Types and Formats
Relevant Files:
3. Running the 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. Click Configurations
Relevant Files:
- eval/conf/click - default Click configurations for MobilityFirst router
3.3. In-Click Topology Control
Relevant Elements:
- Topology: click/elements/gstar/topology.cc
Relevant Files:
- eval/topology - directory with sample topologies