Giter Site home page Giter Site logo

opensketch's Introduction

opensketch

We release our simulator(simulation/) and prototype(controller/ and netfpga/) code here. This OpenSketch platform currently has heavy hitters and superspreaders implementation as examples built upon several sketch-based building blocks we discussed in the paper. Many other measurement tasks can be implemented on top of it with simple controller code and limited data plane resources, because it only need to configure existing building blocks and analyze the collected data to report the results. We will add more examples for future releases.

We are willing to hear your feedback. Please let us know if you'd like to build other measurement tasks on top of opensketch. We are really interested in getting feedbacks from you on the requirements on opensketch library and data plane, and providing support for your applications. It's also much appreciated if you'd like to contribute to the opensketch libarary and applications.

If you have further questions, feel free to contact us. [email protected], [email protected], [email protected]

simulation:

This is a packet-trace(CAIDA packet trace) driven simulator we built to compare with NetFlow and other streaming algorithms. From our evalution, it provides a better memory-accuracy tradeoff than NetFlow and achieves comparable accuracy to the streaming algorithms, while provindg generality.

controller:

This is control plane code for our prototype. Each sketch has two functions for the measurement program to use:

(1)configure : to specify the packet fields, the memory constraint, and the number of hash functions to use

(2)query : to periodically get the statistics

This two basic functions also defines two types of APIs, including set Hash function, constrain sram counter size, and dump sram counter, etc. The controller employs PCI interface to communicate with data plane, which reads or writes the hardware registers through IOCTL calls.

The measurement program in the controller can periodically query the sketches about the statistics. According to the received statistics, the measurement programs may install new sketches or change the accuracy requirements accordingly. The sketches automatically queries the data plane to get the counters in order to generate the right statistics to the measurement program.

netfpga:

This is opensketch data plane prototype in netfpga, including Header Parser, Hashing, Wildcard Lookup, and SRAM Counter in a pipeline. Since we simply pull packet headers to collect the statistics without changing the packet bus, there is no effect on packet forwarding latency and throughput. As a packet enters, the Header Parser pulls the related fields from the packet header, which are then hashed by hash functions in parallel. We then pass the packet header and hash values to the Wildcard Lookup, where we implement wildcard rule matching in parallel. For each matched rule, we update the corresponding counters in the SRAM Counter. We use the entire 4.5 MB on-board SRAM to store the counters.

This OpenSketch modules should be inserted into the reference switch pipeline and then compiled following NetFPGA developer guide (http://wiki.netfpga.org/foswiki/bin/view/NetFPGA/OneGig/DevelopersGuide).

opensketch's People

Contributors

rmiao avatar minlanyu avatar

Watchers

James Cloos avatar  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.