Giter Club home page Giter Club logo

netvrm's Introduction

0. Introduction

This repository contains one version of the source code for our NSDI'22 paper "NetVRM: Virtual Register Memory for Programmable Networks".

1. Content

  • switch_code/
    • p4/: p4 code for NetVRM in the Wide Area Network (WAN) scenario.
      • includes/: packet header and parser.
      • netvrm_wan.p4: the main ingress and egress pipeline.
      • utils.p4: the page table and counter record.
      • shared_ht.p4: the virtualized register memory of the first four stages.
      • shared_ht_ext1.p4: the virtualized register memory of the last four stages.
    • netvrm_c/
      • src/
        • application.hpp describes the class Application, which represents an app instance. The class also contains a method to generate the application workload given the corresponding parameters.
        • options.hpp describes all the runtime arguments.
        • switch.hpp describes the class Switch.
      • tests/
        • test.hpp is the parent class Test and contains methods to commit updates to the data plane.
        • equal-active-test.hpp is the class EqualActiveTest inheriting from Test, and realizes the Equal-Active approach.
        • equal-all-test.hpp is the class EqualAllTest inheriting from Test, and realizes the Equal-All approach.
        • netvrm-test.hpp is the class NetVRMTest inheriting from Test, and realizes the NetVRM approach.
  • config.py: some parameters to configure.
  • console.py: the python script to help run the experiments.
  • README.md: This file.

2. Environment requirement

  • Hardware
    • Intel Tofino switch
    • Servers with a DPDK-compatible NIC (we used an Intel XL710 for 40GbE QSFP+)
  • Software
    • Intel P4 Studio (8.9.1)
  • Datasets

3. How to run

  • Configure the parameters in the files based on your environment
    • config.py: provide the information of your servers (passwd, dir, etc.).
  • Environment setup
    • Setup the switch
      • Copy the files to the switch with python console.py sync_switch
      • Setup the necessary environment variables to point to the appropriate locations.
      • Compile netvrm_wan.p4 in your P4 Studio.
    • Setup the clients
  • Compile and run the switch program
    • python console.py run_switch
  • Other commands
    • python console.py replay_caida: replay the CAIDA traces on the end-hosts.
    • python console.py kill_replay: terminate the CAIDA trace replay.
  • Reproduce the results
    • python console.py run_hh: run heavy hitter detection apps in WAN scenario.
    • python console.py run_opentcp: run newly opened TCP connection detection apps in WAN scenario.
    • python console.py run_ss: run superspreader detection apps in WAN scenario.
    • python console.py run_slo: study the impact of the utility target.
    • python console.py run_ar: study the impact of the number of application instances.
    • python console.py run_alloc_epoch: study the impact of the allocation epoch.

5. Contact

For any question, please contact hzhu at jhu dot edu.

netvrm's People

Contributors

hzhu1 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.