├── .gitignore ├── Docs ├── Planter_User_Document_v0.1.0.pdf └── Projects.md ├── README.md ├── RELEASE_NOTES.txt └── src └── images └── logo.png /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Byte-compiled / optimized / DLL files 3 | __pycache__/ 4 | *.py[cod] 5 | *$py.class 6 | # C extensions 7 | *.so 8 | # Distribution / packaging 9 | .Python 10 | build/ 11 | develop-eggs/ 12 | dist/ 13 | downloads/ 14 | eggs/ 15 | .eggs/ 16 | lib/ 17 | lib64/ 18 | parts/ 19 | sdist/ 20 | var/ 21 | wheels/ 22 | share/python-wheels/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | MANIFEST 27 | # PyInstaller 28 | # Usually these files are written by a python script from a template 29 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 30 | *.manifest 31 | *.spec 32 | # Installer logs 33 | pip-log.txt 34 | pip-delete-this-directory.txt 35 | # Unit test / coverage reports 36 | htmlcov/ 37 | .tox/ 38 | .nox/ 39 | .coverage 40 | .coverage.* 41 | .cache 42 | nosetests.xml 43 | coverage.xml 44 | *.cover 45 | *.py,cover 46 | .hypothesis/ 47 | .pytest_cache/ 48 | cover/ 49 | # Translations 50 | *.mo 51 | *.pot 52 | # Django stuff: 53 | *.log 54 | local_settings.py 55 | db.sqlite3 56 | db.sqlite3-journal 57 | # Flask stuff: 58 | instance/ 59 | .webassets-cache 60 | # Scrapy stuff: 61 | .scrapy 62 | # Sphinx documentation 63 | docs/_build/ 64 | # PyBuilder 65 | .pybuilder/ 66 | target/ 67 | # Jupyter Notebook 68 | .ipynb_checkpoints 69 | # IPython 70 | profile_default/ 71 | ipython_config.py 72 | # pyenv 73 | # For a library or package, you might want to ignore these files since the code is 74 | # intended to run in multiple environments; otherwise, check them in: 75 | # .python-version 76 | # pipenv 77 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 78 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 79 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 80 | # install all needed dependencies. 81 | #Pipfile.lock 82 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 83 | __pypackages__/ 84 | # Celery stuff 85 | celerybeat-schedule 86 | celerybeat.pid 87 | # SageMath parsed files 88 | *.sage.py 89 | # Environments 90 | .env 91 | .venv 92 | env/ 93 | venv/ 94 | ENV/ 95 | env.bak/ 96 | venv.bak/ 97 | # Spyder project settings 98 | .spyderproject 99 | .spyproject 100 | # Rope project settings 101 | .ropeproject 102 | # mkdocs documentation 103 | /site 104 | # mypy 105 | .mypy_cache/ 106 | .dmypy.json 107 | dmypy.json 108 | # Pyre type checker 109 | .pyre/ 110 | # pytype static type analyzer 111 | .pytype/ 112 | # Cython debug symbols 113 | cython_debug/ 114 | # OSX 115 | .DS_Store 116 | .idea/ 117 | .ide 118 | 119 | -------------------------------------------------------------------------------- /Docs/Planter_User_Document_v0.1.0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Changgang-Zheng/Planter/4d1a3f59bde28e7c41b9d4b0600623219e4ae733/Docs/Planter_User_Document_v0.1.0.pdf -------------------------------------------------------------------------------- /Docs/Projects.md: -------------------------------------------------------------------------------- 1 | # Planter's Applications 2 | ![Planter Logo](../src/images/logo.png) 3 | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) 4 | ![GitHub release](https://img.shields.io/badge/pre--release%20tag-v0.2.0-orange) 5 | 6 | ## Planter Project's History 7 | The poster, arXiv, and SIGCOMM CCR version of Planter: 8 | 9 | **Planter: Rapid Prototyping of In-Network Machine Learning Inference**, ACM SIGCOMM Computer Communication Review, 2024. 10 | ``` 11 | @article{zheng2024automating, 12 | title={{Planter: Rapid Prototyping of In-Network Machine Learning Inference}}, 13 | author={Zheng, Changgang and Zang, Mingyuan and Hong, Xinpeng and Perreault, Liam and Bensoussane, Riyad and Vargaftik, Shay and Ben-Itzhak, Yaniv and Zilberman, Noa}, 14 | journal={ACM SIGCOMM Computer Communication Review}, 15 | year={2024} 16 | } 17 | ``` 18 | **Automating In-Network Machine Learning**, arXiv, 2022. 19 | ``` 20 | @misc{zheng2022automating, 21 | title={Automating In-Network Machine Learning}, 22 | author={Changgang Zheng and Mingyuan Zang and Xinpeng Hong and Riyad Bensoussane and Shay Vargaftik and Yaniv Ben-Itzhak and Noa Zilberman}, 23 | year={2022}, 24 | eprint={2205.08824}, 25 | archivePrefix={arXiv}, 26 | primaryClass={cs.NI} 27 | } 28 | ``` 29 | **Planter: seeding trees within switches**, SIGCOMM'21 Poster and Demo Sessions, 2021. 30 | ``` 31 | @incollection{zheng2021planter, 32 | title={Planter: seeding trees within switches}, 33 | author={Zheng, Changgang and Zilberman, Noa}, 34 | booktitle={Proceedings of the SIGCOMM'21 Poster and Demo Sessions}, 35 | pages={12--14}, 36 | year={2021} 37 | } 38 | ``` 39 | 40 | ## Planter-Based Projects 41 | **IIsy: Hybrid In-Network Classification Using Programmable Switches**, IEEE/ACM Transactions on Networking, 2024. 42 | ``` 43 | @article{zheng2024iisy, 44 | title={{IIsy: Hybrid In-Network Classification Using Programmable Switches}}, 45 | author={Zheng, Changgang and Xiong, Zhaoqi and Bui, Thanh T and Kaupmees, Siim and Bensoussane, Riyad and Bernabeu, Antoine and Vargaftik, Shay and Ben-Itzhak, Yaniv and Zilberman, Noa}, 46 | journal={IEEE/ACM Transactions on Networking}, 47 | year={2024} 48 | } 49 | ``` 50 | **DINC: Toward Distributed In-Network Computing**, ACM CoNEXT'23 & Proceedings of the ACM on Networking, 2023. 51 | ``` 52 | @article{zheng2023dinc, 53 | title={{DINC: Toward Distributed In-Network Computing}}, 54 | author={Zheng, Changgang and Tang, Haoyue and Zang, Mingyuan and Hong, Xinpeng and Feng, Aosong and Tassiulas, Leandros and Zilberman, Noa}, 55 | journal={Proceedings of the ACM on Networking}, 56 | volume={1}, 57 | number={CoNEXT3}, 58 | pages={1--25}, 59 | year={2023}, 60 | publisher={ACM New York, NY, USA} 61 | } 62 | ``` 63 | **QCMP: Load Balancing via In-Network Reinforcement Learning**, ACM SIGCOMM Workshop on Future of Internet Routing & Addressing, 2023. 64 | ``` 65 | @inproceedings{zheng2023qcmp, 66 | title={{QCMP: Load Balancing via In-Network Reinforcement Learning}}, 67 | author={Zheng, Changgang and Rienecker, Benjamin and Zilberman, Noa}, 68 | booktitle={Proceedings of the 2nd ACM SIGCOMM Workshop on Future of Internet Routing \& Addressing}, 69 | pages={35--40}, 70 | year={2023} 71 | } 72 | ``` 73 | 74 | ## Planter-Applications 75 | We are also excited to introduce several works that apply Planter. **If your work uses Planter, please kindly email us (changgangzheng@qq.com) if possible. We will include your latest publication or project in the Planter's applications list.** 76 | 77 | **SmartEdge - Design of Dynamic and Secure Swarm Networking**, D4.1 Design of Dynamic & Secure Swarm Networking, EU Semantic Low-code Programming Tools for Edge Intelligence (SmartEdge) horizon project, 2024. 78 | ``` 79 | @article{eu2024smartedge, 80 | title={{SmartEdge}}, 81 | author={Chen, Hongyi and Ding, Damu and Zheng, Changgang and Bakar, Rana Abu and Cugini, Filippo and others}, 82 | note = {D4.1 Design of Dynamic \& Secure Swarm Networking, GA 101092908}, 83 | pages={1--57}, 84 | year={2024} 85 | } 86 | ``` 87 | **E-Commerce Bot Traffic: In-Network Impact, Detection, and Mitigation**, 27th Conference on Innovation in Clouds, Internet and Networks (ICIN), 2024. 88 | ``` 89 | @incollection{hemmatpour2024ecommerce, 90 | title={{E-Commerce Bot Traffic: In-Network Impact, Detection, and Mitigation}}, 91 | author={Hemmatpour, Masoud and Zheng, Changgang and Zilberman, Noa}, 92 | booktitle={7th Conference on Innovation in Clouds, Internet and Networks (ICIN)}, 93 | year={2024} 94 | } 95 | ``` 96 | **In-Network Machine Learning Using Programmable Network Devices: A Survey**, IEEE Communications Surveys and Tutorials, 2023. 97 | ``` 98 | @article{zheng2023network, 99 | title={{In-Network Machine Learning Using Programmable Network Devices: A Survey}}, 100 | author={Zheng, Changgang and Hong, Xinpeng and Ding, Damu and Vargaftik, Shay and Ben-Itzhak, Yaniv and Zilberman, Noa}, 101 | journal={IEEE Communications Surveys \& Tutorials}, 102 | year={2023}, 103 | doi={10.1109/COMST.2023.3344351}, 104 | publisher={IEEE} 105 | } 106 | ``` 107 | **Towards Continuous Threat Defense: In-Network Traffic Analysis for IoT Gateways**, IEEE Internet of Things Journal, 2023. 108 | ``` 109 | @article{zang2023towards, 110 | title={{Towards Continuous Threat Defense: In-Network Traffic Analysis for IoT Gateways}}, 111 | author={Zang, Mingyuan and Zheng, Changgang and Dittmann, Lars and Zilberman, Noa}, 112 | journal={IEEE Internet of Things Journal}, 113 | year={2023}, 114 | publisher={IEEE} 115 | } 116 | ``` 117 | **Advanced Threat Defense with In-Network Traffic Analysis for IoT Gateways**, MobiUK, 2023. 118 | ``` 119 | @article{zangadvanced, 120 | title={Advanced Threat Defense with In-Network Traffic Analysis for IoT Gateways}, 121 | author={Zang, Mingyuan and Zheng, Changgang and Dittmann, Lars and Zilberman, Noa}, 122 | booktitle={MobiUK}, 123 | year={2023} 124 | } 125 | ``` 126 | **Federated learning-based in-network traffic analysis on IoT edge**, Security for IoT Networks and Devices in 6G (Sec4IoT), IFIP Networking 2023. 127 | ``` 128 | @article{zang2023federated, 129 | title={Federated learning-based in-network traffic analysis on IoT edge}, 130 | author={Zang, Mingyuan and Zheng, Changgang and Koziak, Tomasz and Zilberman, Noa and Dittmann, Lars}, 131 | year={2023} 132 | } 133 | ``` 134 | **LOBIN: In-Network Machine Learning for Limit Order Books**, IEEE 24rd International Conference on High Performance Switching and Routing (HPSR), 2023. 135 | ``` 136 | @inproceedings{hong2023lobin, 137 | title={{LOBIN: In-Network Machine Learning for Limit Order Books}}, 138 | author={{Hong}, Xinpeng and Zheng, Changgang and Zohren, Stefan and Zilberman, Noa}, 139 | booktitle={2023 IEEE 24th International Conference on High Performance Switching and Routing (HPSR)}, 140 | pages={159--166}, 141 | year={2023}, 142 | organization={IEEE} 143 | } 144 | ``` 145 | **Linnet: Limit Order Books Within Switches**, SIGCOMM'22 Poster and Demo Sessions, 2022. 146 | ``` 147 | @incollection{hong2022linnet, 148 | title={{Linnet: Limit Order Books Within Switches}}, 149 | author={Hong, Xinpeng and Zheng, Changgang and Zohren, Stefan and Zilberman, Noa}, 150 | booktitle={Proceedings of the SIGCOMM'22 Poster and Demo Sessions}, 151 | pages={37--39}, 152 | year={2022} 153 | } 154 | ``` 155 | **P4Pir: In-Network Analysis for Smart IoT Gateways**, SIGCOMM'22 Poster and Demo Sessions, 2022. 156 | ``` 157 | @incollection{zang2022p4pir, 158 | title={{P4Pir: In-Network Analysis for Smart IoT Gateways}}, 159 | author={Zang, Mingyuan and Zheng, Changgang and Stoyanov, Radostin and Dittmann, Lars and Zilberman, Noa}, 160 | booktitle={Proceedings of the SIGCOMM'22 Poster and Demo Sessions}, 161 | pages={46--48}, 162 | year={2022} 163 | } 164 | ``` 165 | 166 | 167 | 168 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Planter 2 | ![Planter Logo](src/images/logo.png) 3 | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) 4 | ![GitHub release](https://img.shields.io/badge/release%20tag-v0.1.0-orange) 5 | 6 | ## Access to Planter Code 7 | 8 | ### Planter 0.1.0 has been released via [Link](https://github.com/In-Network-Machine-Learning/Planter) under [In-Network-Machine-Learning](https://github.com/In-Network-Machine-Learning). 9 | 10 | ## Introducing Planter 11 | Planter is a modular framework for realizing one-click in-network machine learning algorithms. All you need to provide to Planter are a configuration file (```Name_data.py```) and a dataset. Planter will take it from there and offload your machine learning classification task into a programmable data plane. This is the artifact for the paper "Planter: Rapid Prototyping of In-Network Machine Learning Inference" in SIGCOMM CCR (with early [arXiv](https://arxiv.org/pdf/2205.08824.pdf) version named "Automating In-Network Machine Learning".) 12 | 13 | 💡 **Please check Planter's user document** [PDF](./Docs/Planter_User_Document_v0.1.0.pdf) (strongly recommended). 14 | 15 | ## Planter's Availability 16 | 17 | **Planter 0.1.0 has been released via [Link](https://github.com/In-Network-Machine-Learning/Planter) under [In-Network-Machine-Learning](https://github.com/In-Network-Machine-Learning).** Planter paper will appear in the next volume of CCR [[pdf](https://eng.ox.ac.uk/media/zetja3ek/zheng24planter.pdf)]. Meanwhile, if you're interested in this work and find anything unclear in the ArXiv paper, please feel free to contact me at ```changgang.zheng@eng.ox.ac.uk```. **We are welcoming collaborations.** It can be exciting to collaborate, if you think in-network machine learning is helpful to your research or use case. If there are any potential interests, please feel free to contact my supervisor ```noa.zilberman@eng.ox.ac.uk``` and me ```changgang.zheng@eng.ox.ac.uk```. 18 | 19 | ## License 20 | 21 | The files are licensed under Apache License: [LICENSE](./LICENSE). The text of the license can also be found in the LICENSE file. 22 | 23 | ## Applications 24 | Please access the Planter project's history and recent applications through the [link](./Docs/Projects.md). If your work uses Planter, please kindly email us if possible. We will include your latest publication or project in the application list. 25 | 26 | ## Citation 27 | If you use this code, please cite our [paper](https://eng.ox.ac.uk/media/zetja3ek/zheng24planter.pdf): 28 | 29 | ``` 30 | @article{zheng2024automating, 31 | title={{Planter: Rapid Prototyping of In-Network Machine Learning Inference}}, 32 | author={Zheng, Changgang and Zang, Mingyuan and Hong, Xinpeng and Perreault, Liam and Bensoussane, Riyad and Vargaftik, Shay and Ben-Itzhak, Yaniv and Zilberman, Noa}, 33 | journal={ACM SIGCOMM Computer Communication Review}, 34 | year={2024} 35 | } 36 | ``` 37 | 38 | 39 | ## Acknowledgments 40 | 41 | The following people contributed to this project: Changgang Zheng, Mingyuan Zang, Xinpeng Hong, Liam Perreault, Riyad Bensoussane, Shay Vargaftik, Yaniv Ben-Itzhak, and Noa Zilberman. In addition, Peng Qian contributed to this repository. This work was partly funded by VMware and the EU Horizon SMARTEDGE (101092908, UKRI 10056403). We acknowledge support from Intel and NVIDIA. 42 | -------------------------------------------------------------------------------- /RELEASE_NOTES.txt: -------------------------------------------------------------------------------- 1 | 0.1.0 - June 10th, 2024: The first release version of the Planter framework. Calls to commercial compilers are not included, subject to confidentiality agreements. Releasing these lines of code is pending approval. -------------------------------------------------------------------------------- /src/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Changgang-Zheng/Planter/4d1a3f59bde28e7c41b9d4b0600623219e4ae733/src/images/logo.png --------------------------------------------------------------------------------