We identify that compuation quality (such as latency, throughput, and energy consumption) can not be guaranteed for emerging applications including Extended Reality (XR), Auto-driving (AD), etc. A mechanism should be designed to address this problem. This repo is a work-in-progress (WIP) proof-of-concept (PoC) implementation of the extension-base forwarder over ICN.
This interest project was evolved from course project for Advanced Networked Systems lectured by Prof. Dirk Kutscher. This project is inspired by a previous project [Named Tree]. The Named Tree reduces recursive computation by multiple fetching, like iterate over a tree. This project aims to extend the Named Tree to support computation offloading in Information-Centric Networking (ICN). This project is written by Python for fast prototype. Most importantly, the current code focuses on the expresion definition and the decentralized scheduling algorithm. The code is not optimized for performance and not practical for real-world NFN networks. It's easy to be integrated into the NFN project though, if it performs well.🙏
This project has the following goals:
- ⏳ Quality of Computation (QoC): Guarantee the computation completion time by QoC aware meta-data.
- 🪢 Decentralized Scheduling by Routing: Leverage powerful ICN routing to implement decentralization scheduling.
- 📡 Extension-based Forwarder: Extend the forwarder to support computation offloading.
At current stage, this project focuses on implementing a minimal proof-of-concept (PoC) program to demonstrate the feasibility of the design. So there are several hypotheses and assumptions:
- The network is reliable and stable.
- The data security is not considered.
- All nodes know the routing information.
- No reward mechanism is considered.
- 🧮 Redesign the routing algorithm to support decentralized scheduling.
- 🧪 A simulation to evaluate the decentralized scheduling algorithm.
- 🚝 Refactor the Priority Queue
- 🚦 Add a scheduler to manage the computation task.
- resume the project (it's been a long time since the last update 😂)
- DDL time as the QoC metric
- Update README introduction.
- update forwarder architecture design: a diagram
- remove redundant test code
- add test cases
C1───────────F1-cs-nf────────────F3-cs-nf────────────F5-cs
│ │ │
│ │ │
│ │ │
│ │ │
│ │ │
│ │ │
F2-cs───────────────F4-cs-nf────────────┘
- Content Store implemented as an extension and its test case
- Interest datastructure: (name) -> (name, data_name, func_name)
- nfn-extension: computing NFN interest and its test case
- Simulator abstraction
- Test loading from yaml config file
- extension mechanism for forwarder
- Routing center, mocked routing and test case
- Node generator and initializer (generate a network and distribute tasks)
C2
│
│
│
C1────F4─────F1──────F2─────P1
│
│
F3
│
│
│
P2
- add Class Provider
- add more test cases
- consumer-to-forwarder
- consumer-to-forwarder-to-provider
- line-shape: 2 forwarders
test cases:
1.
Interest
┌──────────┬ ──────────►┌───────────┐
│ Consumer │ │ Forwarder │
└──────────┘◄────────── ┴───────────┘
Data
2.
Interest Interest
┌──────────┬ ──────────►┌───────────┬ ─────►┌──────────┐
│ Consumer1│ │ Forwarder1│ │ Provider1│
└──────────┘◄────────── ┴───────────┘◄───── ┴──────────┘
Data Data
3.
Interest Interest Interest
┌──────────┐ ─────────► ┌──────────┐ ─────────► ┌───────────┐ ─────────► ┌──────────┐
│ Consumer │ │ Forarder │ │ Forwarder │ │ Provider │
└──────────┘ ◄───────── └──────────┘ ◄───────── └───────────┘ ◄───────── └──────────┘
Data Data Data
- add Forwarder class
- add Consumer class
- add consumer-to-forwarder test case: test_forwarder.py
- a python class to abstract
Named Data (ND)
- simple recursive execution
- implement the tree as a multiway tree for performance, because the depth determines the performance of the whole system
- init project
- write simple shell for concept demo
This repo is mainly an implementation of a forwarder, the architecture of this forwarder please refer to this file
NamedData class consists of two parts: FUNC
and DATA
.
FUNC is a function, and DATA is list.