OmniSketch is a C++ framework for designing, simulating and testing sketch, a telemetry technique that aims at collecting streaming statistics. It is designed to be efficient, consistent and easy to use. Currently it is supported on Windows, Linux and MacOS.
.pcap and .pcapng files to generate streaming data that interoperates with OmniSketch. Data format of a streaming data record is customizable.Download from GitHub release page:
The project is built with CMake. If an additional module of PcapParser, which is capable of parsing .pcap/.pcapng files in quite a versatile manner and is interoperable with OmniSketch, is requested, please define the BUILD_PCAP_PARSER macro by
Upon defining this macro, CMake automatically checks for dependencies on PcapPlusPlus and pcap libraries, so MAKE SURE you have installed these libraries in advance. The default included directory of the PcapPlusPlus header files is /usr/local/include/pcapplusplus (which is certainly not true on Windows). To change this default searching path, provide to CMake a new argument:
In the simplest case, if PcapParser is not requested, the PcapPlusPlus and pcap libraries are never needed, so you can just build with
Gee, it saves you a lot of work!
To verify that you indeed build a runnable copy of OmniSketch, in the same directory (build/) run
If you see the line
you can proceed to poke around OmniSketch and design your new sketches.
Here is an overview of how to design your own sketch in OmniSketch. For a detailed description, please check the docs.
src/sketch/. Suppose you add a file XXX.h to this directory.src/sketch_test/. You should name your testing file as XXXTest.h accordingly.CMakeLists.txt. This is done in a single line add_user_sketch(YYY XXX).src/sketch_config.toml. All the sketch configs are user-defined, but typically should contain (though not required)It is the user who controls what, where and how to parse in the config file. Omnisketch imposes no restrictions on how you organize the toml file and what you put in there. Fortunately, OmniSketch provides a rich set of tools to help you do it in just a couple of lines.
build/, cmake and make it. (CMake is needed since a new target has just been added) From the time on, if the code is modified, only make is needed../YYY -c config. If no -c option is provided, src/sketch_config.toml is assumed to be the default config file. A possible output of Count Min Sketch runs as follows: make a new driver.Please follow this link.
Here are a list of all the sketches implemented and tested. The last column indicates the name of generated executable drivers, which can be modified in lines starting with add_user_sketch in CMakeLists.txt. For example, suppose there is a line saying add_user_sketch(CM CMSketch). It means that one may run driver compiled from src/sketch/CMSketch.h and src/test/CMSketchTest.h by ./CM in the building directory after making it.
Status: **h**ave, **c**hecked, checked but with **d**oubt, **t**ested.
| Status | Name of the Executable | |
|---|---|---|
| CM Sketch | t | CM |
| CH-optimized CM Sketch | t | CHCM |
| Count Sketch | t | CS |
| CU Sketch | t | CU |
| Bloom Filter | t | BF |
| counting bloom filter | t | |
| LD-sketch | t | |
| MV-sketch | t | |
| HashPipe | t | HP |
| FM-sketch(PCSA) | t | |
| Linear Counting | ||
| Kmin(KMV) | ||
| Deltoid | t | |
| Flow Radar | t | FR |
| sketch learn | ||
| elastic sketch | t | |
| univmon | ||
| nitro sketch | t | |
| reversible sketch | ||
| Mrac | t | |
| k-ary sketch | t | |
| seqHash | ||
| TwoLevel | t | |
| multi-resolution bitmap | ||
| lossy count | t | |
| space saving | t | |
| HyperLogLog | t | |
| Misra-Gries | t | |
| Fast Sketch | t | |
| CounterBraids | t | |
| HeavyKeeper | d |