{"id":15282539,"url":"https://github.com/jklaiber/ebpf-bridge","last_synced_at":"2025-09-05T19:42:00.500Z","repository":{"id":222309754,"uuid":"728707627","full_name":"jklaiber/ebpf-bridge","owner":"jklaiber","description":"Linux bridge management with ebpf made simple","archived":false,"fork":false,"pushed_at":"2025-05-06T08:57:16.000Z","size":183,"stargazers_count":4,"open_issues_count":2,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-06T09:49:56.440Z","etag":null,"topics":["ebpf","golang","grpc","linux"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jklaiber.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-12-07T14:18:15.000Z","updated_at":"2025-05-06T08:57:16.000Z","dependencies_parsed_at":"2024-02-13T15:32:42.629Z","dependency_job_id":"5014bdc2-8c55-4da1-bc04-2e5115b57e12","html_url":"https://github.com/jklaiber/ebpf-bridge","commit_stats":null,"previous_names":["jklaiber/ebpf-bridge"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jklaiber%2Febpf-bridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jklaiber%2Febpf-bridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jklaiber%2Febpf-bridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jklaiber%2Febpf-bridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jklaiber","download_url":"https://codeload.github.com/jklaiber/ebpf-bridge/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252804790,"owners_count":21806878,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ebpf","golang","grpc","linux"],"created_at":"2024-09-30T14:26:46.655Z","updated_at":"2025-05-07T03:21:44.150Z","avatar_url":"https://github.com/jklaiber.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eeBPF-Bridge\u003c/h1\u003e\n\u003cp align=\"center\"\u003e\n    \u003cbr\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/tag/jklaiber/ebpf-bridge.svg?label=release\u0026logo=github\u0026style=flat-square\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/go%20report-A+-brightgreen.svg?style=flat-square\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/jklaiber/ebpf-bridge/test-go.yaml?branch=main\u0026logo=github\u0026style=flat-square\u0026label=tests\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/jklaiber/ebpf-bridge/lint-go.yaml?branch=main\u0026logo=github\u0026style=flat-square\u0026label=checks\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003c/p\u003e\n\n---\n## 🌟 Features\n\n- **Dynamic Bridge Management:** Effortlessly add or remove network bridges to the `eBPF-Bridge` service. This flexibility allows for quick adjustments to network configurations as needs evolve.\n\n- **Multi-Interface Bridging:** Create bridges that span multiple network interfaces, enabling complex networking setups and facilitating advanced network monitoring and manipulation tasks.\n\n- **Live Network Monitoring:** Designate specific interfaces for monitoring by the `eBPF-Bridge` service, allowing for real-time network traffic analysis and insights.\n\n- **Comprehensive Bridge Listing:** Easily list all bridges currently managed by the `eBPF-Bridge` service, providing administrators with a clear overview of the network's bridge topology.\n\n- **Seamless Packet Forwarding:** Utilizing eBPF technology, `eBPF-Bridge` forwards packets without filtering, overcoming traditional limitations of Linux bridges in handling LLDP and other multicast packets essential for network discovery and management.\n\n## 🔧 Requirements\n\n* Linux kernel 5.0 or later\n* Systemd for managing the service\n* Docker for containerized deployments (optional)\n\n## 📦 Installation\n\n### Using Package Manager\nFor Debian-based systems, you can install the package using `apt`:\n\n```\nsudo apt install ./ebpf-bridge_{version}_amd64.deb\n```\n\n### Using Docker\n\n```\ndocker run -d --name ebpf-bridge --privileged --network host jklaiber/ebpf-bridge:latest\n```\n\n## 🚀 Getting Started\nAfter installation, `ebpf-bridge` is available as a system service. You can start the service using the following command:\n\n```\nsudo systemctl start ebpf-bridge.service\n```\nTo enable the service to start on boot, use the following command:\n\n```\nsudo systemctl enable ebpf-bridge.service\n```\n\nCheck the status of the service using the following command:\n\n```\nsudo systemctl status ebpf-bridge.service\n```\n\nFor Docker deployments, follow the standard Docker commands to manager the container.\n\n## ⚙️ Usage\n\nAdd a bridge to the `ebpf-bridge` service using the following command:\n\n```\nebpf-bridge add --name test-bridge --iface1 eth0 --iface2 eth1 --monitor eth2\n```\n\nTo remove a bridge from the `ebpf-bridge` service, use the following command:\n\n```\nebpf-bridge remove --name test-bridge\n```\n\nTo list all bridges managed by the `ebpf-bridge` service, use the following command:\n\n```\nebpf-bridge list\n```\n\n\n## 💡 Design Rationale\nThe `ebpf-bridge` project addresses critical limitations in standard Linux bridges, particularly their inability to forward LLDP and certain multicast packets critical for network discovery and management. This issue stems from default bridge configurations that drop specific types of network traffic, including essential protocols like STP, LACP, and 802.1X, which are crucial for network operations. By utilizing eBPF technology, `ebpf-bridge` overcomes these limitations, as it forwards packets as they are, without any filtering or alterations. This approach ensures that all necessary network traffic, regardless of type, can be transmitted seamlessly across network segments, thus maintaining the integrity and functionality of network discovery and management protocols without the traditional constraints imposed by Linux bridge configurations.\n\n## 🤝 Contributing\nWe welcome contributions to the ebpf-bridge project. If you'd like to contribute, please follow these steps:\n\n1. Fork the repository\n2. Create a new branch with your changes\n3. Submit a pull request\n4. Please ensure your changes are well-documented and tested.\n\n## 📄 License\nebpf-bridge is released under the Apache-2.0 license. See [LICENSE](./LICENSE) for more information.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjklaiber%2Febpf-bridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjklaiber%2Febpf-bridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjklaiber%2Febpf-bridge/lists"}