RIDS is a hardware-friendly Recurrent Neural Network (RNN) model that is co-designed with programmable switches. It includes: (i) rLearner focuses on implementing the model inference process which only depends on bitwise operations or integer additions/subtractions; (ii) rEnforcer is the specially designed pipeline enforcing rLearner-generated models inside the switches. This anonymous repository displays the corresponding source code for model implementation.
pip install scipy
pip install numpy
pip install pandas
pip install tqdm
pip install pyecharts
pip install joblib
pip install pickle
pip install torch
Hardware:
- 100 GbE NIC: DPDK-supported hardwares
- e.g., 100 Gbps Mellanox ConnectX-5
- Tofino switch Tofino.
- e.g., Wedge 100BF-32X
Software:
- Ubuntu 20.04.1 LTS
- Python 3.7
- DPDK 20.11
- MoonGen/Pktgen
- Install DPDK 20.11 following Getting Started Guide for Linux.
- Compile DPDK applications.
- For the packet generator, can reference MoonGen.
The P4 implementation is stored in ./rEnforcer/.
The codes for the model construction are stored in ./rLearner/ folder. Among them, there are a series of binarization operations, such as activation functions, linear layers, etc.
- Mousika: Enable General In-Network Intelligence in Programmable Switches by Knowledge Distillation, Guorui Xie, Qing Li, Yutao Dong, Guanglin Duan, Yong Jiang, Jingpu Duan - INFOCOM 2022
- Kitsune: An Ensemble of Autoencoders for Online Network Intrusion Detection, Yisroel Mirsky, Tomer Doitshman, Yuval Elovici, and Asaf Shabtai - NDSS 2018
- Detecting Unknown Encrypted Malicious Traffic in Real Time via Flow Interaction Graph Analysis, Chuanpu Fu, Qi Li, Ke Xu - NDSS 2023