[PR #994] [MERGED] Optimize ACL performance #13212

Closed
opened 2026-08-05 02:07:47 -04:00 by saavagebueno · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/netbirdio/netbird/pull/994
Author: @gigovich
Created: 6/29/2023
Status: Merged
Merged: 7/18/2023
Merged by: @gigovich

Base: mainHead: feat-optimize-acl-performance


📝 Commits (10+)

  • 701fc91 Optimize rules with All groups
  • a403b13 Use IP sets in ACLs (nftables implementation)
  • d9614d4 Fix sqaush rule when we receive optimizsed rules list from management
  • c116b96 Fix tests
  • b602845 Fix management tests
  • 670f2c4 Fix linter and add tests for nftables manager ruleset manager
  • 9d9a500 Polish comments
  • 42b55b7 Handle correct remove of rules with sets
  • 83c4795 Flush with backoff
  • b8cee64 Use two connection to netlink to resolve nftables fail

📊 Changes

15 files changed (+725 additions, -112 deletions)

View changed files

📝 client/firewall/firewall.go (+4 -0)
📝 client/firewall/iptables/manager_linux.go (+4 -0)
📝 client/firewall/iptables/manager_linux_test.go (+5 -5)
📝 client/firewall/nftables/manager_linux.go (+303 -56)
📝 client/firewall/nftables/manager_linux_test.go (+18 -5)
📝 client/firewall/nftables/rule_linux.go (+6 -3)
client/firewall/nftables/ruleset_linux.go (+115 -0)
client/firewall/nftables/ruleset_linux_test.go (+122 -0)
📝 client/firewall/uspfilter/uspfilter.go (+4 -0)
📝 client/firewall/uspfilter/uspfilter_test.go (+7 -7)
📝 client/internal/acl/manager.go (+99 -19)
📝 client/internal/acl/manager_create.go (+1 -5)
📝 client/internal/acl/manager_create_linux.go (+1 -4)
📝 management/server/policy.go (+22 -8)
📝 management/server/policy_test.go (+14 -0)

📄 Description

Describe your changes

Reduce rules count generated on the management side. Use sets on the client side for firewalls in kernel implementation

Checklist

  • Is it a bug fix
  • Is a typo/documentation fix
  • Is a feature enhancement
  • It is a refactor
  • Created tests that fail without the change (if possible)
  • Extended the README / documentation, if necessary

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/netbirdio/netbird/pull/994 **Author:** [@gigovich](https://github.com/gigovich) **Created:** 6/29/2023 **Status:** ✅ Merged **Merged:** 7/18/2023 **Merged by:** [@gigovich](https://github.com/gigovich) **Base:** `main` ← **Head:** `feat-optimize-acl-performance` --- ### 📝 Commits (10+) - [`701fc91`](https://github.com/netbirdio/netbird/commit/701fc9143bd43af01ebb88698b77628215ead658) Optimize rules with All groups - [`a403b13`](https://github.com/netbirdio/netbird/commit/a403b13e83e01dab8c12e1a6945322e1f265b407) Use IP sets in ACLs (nftables implementation) - [`d9614d4`](https://github.com/netbirdio/netbird/commit/d9614d4c5538fa2552e708bd5bcc480825ee9cd3) Fix sqaush rule when we receive optimizsed rules list from management - [`c116b96`](https://github.com/netbirdio/netbird/commit/c116b96c4ef820e458eeaeeb17cf4348cf8e13c1) Fix tests - [`b602845`](https://github.com/netbirdio/netbird/commit/b602845aec1c4eff2a5d5d1c144237ad3a60aaac) Fix management tests - [`670f2c4`](https://github.com/netbirdio/netbird/commit/670f2c49e6ddd5b46191176903c83896ecfd3384) Fix linter and add tests for nftables manager ruleset manager - [`9d9a500`](https://github.com/netbirdio/netbird/commit/9d9a5004f4a1bcbb360b1ca3e9d7123e8f8935e9) Polish comments - [`42b55b7`](https://github.com/netbirdio/netbird/commit/42b55b73789c037d4eb1d6ae3f5fb6a0a03bceb2) Handle correct remove of rules with sets - [`83c4795`](https://github.com/netbirdio/netbird/commit/83c47957d38070c61e1d74e3f818b5e6d8da0cd6) Flush with backoff - [`b8cee64`](https://github.com/netbirdio/netbird/commit/b8cee64ad7201d09c6a72d20842637a3480718ee) Use two connection to netlink to resolve nftables fail ### 📊 Changes **15 files changed** (+725 additions, -112 deletions) <details> <summary>View changed files</summary> 📝 `client/firewall/firewall.go` (+4 -0) 📝 `client/firewall/iptables/manager_linux.go` (+4 -0) 📝 `client/firewall/iptables/manager_linux_test.go` (+5 -5) 📝 `client/firewall/nftables/manager_linux.go` (+303 -56) 📝 `client/firewall/nftables/manager_linux_test.go` (+18 -5) 📝 `client/firewall/nftables/rule_linux.go` (+6 -3) ➕ `client/firewall/nftables/ruleset_linux.go` (+115 -0) ➕ `client/firewall/nftables/ruleset_linux_test.go` (+122 -0) 📝 `client/firewall/uspfilter/uspfilter.go` (+4 -0) 📝 `client/firewall/uspfilter/uspfilter_test.go` (+7 -7) 📝 `client/internal/acl/manager.go` (+99 -19) 📝 `client/internal/acl/manager_create.go` (+1 -5) 📝 `client/internal/acl/manager_create_linux.go` (+1 -4) 📝 `management/server/policy.go` (+22 -8) 📝 `management/server/policy_test.go` (+14 -0) </details> ### 📄 Description ## Describe your changes Reduce rules count generated on the management side. Use sets on the client side for firewalls in kernel implementation ## Issue ticket number and link ### Checklist - [ ] Is it a bug fix - [ ] Is a typo/documentation fix - [x] Is a feature enhancement - [x] It is a refactor - [x] Created tests that fail without the change (if possible) - [ ] Extended the README / documentation, if necessary --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
saavagebueno added the pull-request label 2026-08-05 02:07:47 -04:00
Sign in to join this conversation.
No Label pull-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: DYNR/netbird#13212