ViGeng / qoc

Towards quality of in-network computation.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Quality of Computation (QoC)

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.

Update and RoadMap

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:

  1. The network is reliable and stable.
  2. The data security is not considered.
  3. All nodes know the routing information.
  4. No reward mechanism is considered.

Decentralized Scheduling

  • ๐Ÿงฎ Redesign the routing algorithm to support decentralized scheduling.
  • ๐Ÿงช A simulation to evaluate the decentralized scheduling algorithm.

Quality of Computation (QoC)

  • ๐Ÿš Refactor the Priority Queue
  • ๐Ÿšฆ Add a scheduler to manage the computation task.

2024-8-9

  • resume the project (it's been a long time since the last update ๐Ÿ˜‚)

meta-data

  • DDL time as the QoC metric

2023-08-16

  • Update README introduction.

2023-05-18

  • 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โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

2023-05-17

  • 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

2023-05-16

  • extension mechanism for forwarder

2023-05-15

  • 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

2023-05-14

  • 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

2023-05-12

  • add Forwarder class
  • add Consumer class
  • add consumer-to-forwarder test case: test_forwarder.py

2023/4/28

  • 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

Design

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.

img.png

About

Towards quality of in-network computation.


Languages

Language:Python 98.1%Language:Shell 1.9%