Skip to content

Latest commit

 

History

History
44 lines (32 loc) · 2.41 KB

README.md

File metadata and controls

44 lines (32 loc) · 2.41 KB

Source code for D2A: Operating a Service Function Chain Platform with Data-Driven Scheduling Policies

Disclaimer. The source code in this repository has been made publicly available for transparency and as contribution for the scientific community. The source code reflects in most parts the state in which the results for the referenced publications were obtained. The source code has mostly been left as is.

This repository contains the source code that was used to learn assignments for Containerized Network Functions (CNFs) to CPU cores and accompanies the publication

P. Krämer, P. Diederich, C. Krämer, R. Pries, W. Kellerer, and A. Blenk, “D2A: Operating a Service Function Chain Platform with Data-Driven Scheduling Policies,” IEEE TNSM, pp. 1–15, 2022, doi: 10.1109/TNSM.2022.3177694.

This repository further depends on OpenNetVM which was used to execute and run test-bed measurements, and MoonGen to generate traffic and record measurements.

The repository is organized as follows:

ccode. This folder contains code to evaluate the behavior of the Linux scheduler using varying settings.

cpu_assignment. This Python package contains the Reinforcement Learning (RL) setup. Specifically, this module contains the RL environment, reward functions, training facilities, and evaluation scripts for trained models, among others.

dataprep. This package contains utility code for the analysis of data. For example, this module contains code to load CNF statistics from result files, transform problem configurations into graphs.

environment. This package contains code related to experiments on OpenNetVM. Specifically, this package contains code to generate experiments, combine experiments with the results of assignment algorithms, etc. Further, the module tp_sim includes a simulation of the system.

evaluation. This package contains utility functions to make evaluations for experiments and trained RL algorithms.

layers. This package contains Neural Network (NN) components. The modules implement various attention layers. Specifically, the attn.py module implements a custom version for Graph attention, operating on edge lists and allowing the batching of arbitrary sized graphs.

notebooks. Contains a notebook exploring and visualizing results.

scripts. This folder contains scripts automating repititive tasks and evaluations.