From: Hannes Laimer <h.laimer@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [PATCH access-control/cluster/container/docs/manager/network/proxmox{-ebpf,-ve-rs,-perl-rs}/qemu-server v3 00/45] sdn: add microsegmentation support
Date: Tue, 27 Oct 2026 09:54:42 +0100 [thread overview]
Message-ID: <20261027085527.702738-1-h.laimer@proxmox.com> (raw)
This series adds group-based microsegmentation to SDN, enforced by eBPF
programs on the guest interfaces. Assignments put guest interfaces into
groups, and rules between groups decide which traffic passes. Sets that
every rule treats the same share one identity, a 16-bit value that
travels with the frame in the low bits of the packet mark. The host
stamps it where a frame comes off the guest interface, so a guest cannot
forge its own. A new zone option turns on VXLAN-GBP[2] for VXLAN and
EVPN zones, which carries the identity across nodes. On a zone without
it, traffic from another node arrives without an identity. An identity
whose sets are gone after a config change is retired. Its value is
reused only after a quarantine, since a frame stamped under the old
config can still be in flight.
The config in /etc/pve/sdn/microseg.cfg, with its API under
/cluster/sdn/microseg and the ACL path /sdn/microseg, holds groups,
rules and assignments and takes effect with an SDN apply. Groups can
nest, and a member of a subgroup is in every group above it. A rule
allows or denies traffic from a source predicate to a destination
predicate at a priority. A predicate of the kind `any`, `all` or
`exact` lists groups and matches an interface that has one of them, all
of them, or those and no others. An `every` predicate lists none and
matches each interface that has a group. Beyond the pair, a rule can be
narrowed to a protocol and ports, an ICMP type, a firewall macro or
non-first fragments. Which groups an interface has is determined by the
assignments, an ordered list that matches interfaces by guest, tag or
name regex. An interface takes the groups of the first one that covers
it.
Default is deny. Only interfaces that have at least one group assigned
are enforced. Enforcement happens when a frame arrives at an enforced
interface, so nothing is dropped on the way out of a guest's interface.
Traffic from interfaces that are not enforced is untagged, which
includes guests without groups on their NICs, the host and the outside.
Such traffic has to be allowed explicitly with the built-in untagged
group. Rules are stateless and directional, so a reply needs its own
allow, or the rule is marked bidirectional. Stateless also means no
reassembly, so fragments after the first carry no transport header. A
narrowed rule matches them only when it is narrowed to fragments.
The highest priority wins. At the same priority the rule with the more
specific `all` or `exact` predicate decides, so a rule on a subgroup
outranks the same rule on its parent. Equally specific rules deny if one
of them denies. Narrowed rules are checked before the rules that decide
the whole pair at the same priority.
A guest interface gets its groups the moment it comes up, from the
assignment that matches the guest at that moment. Changing the tags or
the name of a running guest takes effect right after the config is
written. The NICs get the groups the assignments now give them. Once no
assignment matches the guest, their enforcement stops. A change that
reaches the config another way, such as a restore or a migration, takes
effect the next time the NIC comes up or at the next SDN apply. A tag
or name the assignments match moves a guest between groups. So adding
or removing such a tag, or renaming into or out of such a name, needs
SDN.Use on /sdn/microseg besides the right to change the option.
Putting a NIC on a vnet needs SDN.Use on the vnet the same way.
As long as the policy has an assignment, every node keeps the programs
and maps loaded, about 20 MiB plus what the pairs take. Without one, the
nodes drop them. The BPF state does not survive a reboot, so a node
applies the policy again at boot, before any guest starts. The programs
are compiled into libpve-rs-perl, so an upgrade of that package applies
the policy again as well.
The SDN apply checks the policy against what a node can hold before it
writes the running config, and refuses one that exceeds it. A node that
cannot apply the policy fails its network reload task and keeps its
previous enforcement. A node without loaded programs, as after a failed
load at boot, starts no guest with an assigned interface until an apply
or a reload succeeds there. A guest also does not start when its node
cannot read or parse the running config, or cannot set up the
enforcement of its assigned interface.
ARP and neighbor solicitations/advertisements pass wherever either
direction of a pair allows anything, so the two ends of a one-way allow
can resolve each other's addresses. They also pass when the host itself
sends them without an identity. That is how the suppression replies of
an EVPN zone reach the guest. A frame the host turns around on the
interface it came in on passes as a whole, since only the host can make
one. Behind a firewall bridge the host's frames cannot be told from
other unstamped ones, so an interface there takes these frames from
every unstamped sender. The narrowed rules of a pair run first, so a
narrowed rule that denies neighbor discovery still holds.
In patch order, the series adds
- proxmox-ebpf, the policy subsystem with the tc programs that stamp
and check the identities
- proxmox-ve-rs, the types, the identity engine and the desired state
in proxmox-ve-config, and the new proxmox-microseg crate that hands
the desired state to the subsystem
- pve-cluster, microseg.cfg as an observed file
- pve-access-control, the /sdn/microseg ACL path
- proxmox-perl-rs, the config binding and the data plane binding in
pve-rs
- pve-network, the config, the API, the dry-run view, the zone option
and the enforcement on interface plug and after a library upgrade
- pve-manager, the panel, the dry-run view and the apply on network
reload and at boot
- qemu-server and pve-container, the immediate update of a running
guest's NICs on a tag or name change, and SDN.Use for a tag or name
the policy matches
- pve-docs, documentation
- pve-network needs pve-cluster, pve-access-control, pve-rs,
pve-guest-common and ifupdown2 with the vxlan-gbp attribute
- pve-manager needs pve-docs to build and pve-network and
pve-access-control at runtime
- pve-rs needs proxmox-microseg and proxmox-ve-config
- qemu-server and pve-container need pve-network
- proxmox-microseg needs proxmox-ebpf[1] and proxmox-ve-config
The ifupdown2 vxlan-gbp attribute[2] is sent separately, and so is the
pve-network patch that writes a VXLAN zone's local tunnel address[3].
This series needs both. A GBP device that ifupdown2 changes in place
drops every GBP frame afterward[4], and without[3] that happens when a
VXLAN zone with GBP exists next to an EVPN zone. ifupdown2 gives the
local tunnel address of the EVPN zone's interfaces to every VXLAN
interface without one of its own, and on a reload sets that address on
the VXLAN zone's live device.
[1] https://lore.proxmox.com/pve-devel/20261019142413.2255644-1-h.laimer@proxmox.com/
[2] https://lore.proxmox.com/pve-devel/20260828134708.692354-1-h.laimer@proxmox.com/
[3] https://lore.proxmox.com/pve-devel/20260925134050.754528-1-h.laimer@proxmox.com/
[4] https://lore.kernel.org/netdev/20261023-b4-vxlan-changelink-gbp-v1-0-f0d13951c09b@proxmox.com/
note: I did also have this implemented with nft instead of ebpf as a
dataplane. Without narrowing, packets per second (small UDP packets) was
about the same, with multiple checks nft's rate went down, nothing super
dramatic but about a 1.5-2x compared to eBPF (~140k vs ~250k). eBPF is
also more flexible, in case we want to expand possible actions in the
future, but replacing the dataplane is pretty simple which also allowed
me to do the side-by-side testing.
changelog
v3:
- the data plane is a library crate in the proxmox-ve-rs workspace that
pve-rs binds, on a policy subsystem in proxmox-ebpf, no agent binary
and no boot unit. A node loads the programs while the policy has an
assignment and takes new programs on a package upgrade
- the model changed in five places:
* groups have no numeric mark and can form a hierarchy
* assignments are an ordered list and an interface takes the groups
of the first that covers it instead of the union of all
* rules can be narrowed similar to how firewall rules work,
additionally non-first fragments can be matched and an explicit
bidirectional flag exists
* at a priority tie the more specific rule decides
* new `every` predicate that matches everything that has at least
one group assigned
- interface group (re)assignment happens whenever an interface comes
up, sdn apply runs or the tags or name of a running guest change.
Adding or removing a tag covered by an assignment, or renaming into
or out of a name a regex assignment matches, now also needs SDN.Use
on the policy, similar to how we check if a user is allowed to assign
a vnet
- if a node cannot apply the policy, its network reload task fails.
while a node has no loaded programs, as after a failed load at boot,
guests with an assigned NIC do not start on it. a nic with groups
only comes up enforced
- ARP and NS/NA are automatically allowed if there exists a (src,dst)
-> [checks ->] allow in either direction, this is so address
resolution for allowed connections is possible. Also host-generated
ARP and NS/NA frames are allowed, this is specifically needed for
EVPN suppression to work, and a frame the host turns around on the
interface it came in on passes
- api: section types and property keys are kebab-case, the endpoints
check /sdn/microseg (a pve-access-control patch adds the ACL path),
and the overview reports members, evaluation order and specificity
instead of a realized state, plus the id space usage
- rule and assignment ids are derived from their identifying fields,
so those cannot change on an existing object
- ui: a panel with the rule grid by priority, the assignments in match
order, the dry-run view, the rule editor on the firewall's selectors,
and a guest tab with its groups and rules
- the SRv6 carrier and its bridge object are out, the ifupdown2
vxlan-gbp attribute is a standalone patch, the zone option stays,
docs rewritten
v2:
- core model reworked: each interface now holds a *set* of groups
compiled into a per-NIC wire identity, replacing the single-group
parent/child tree
- rules gained explicit `src`/`dst` predicates (any/all/exact) and a
`prio`, replacing the implicit tree-distance ordering
- `untagged` is now a nameable built-in group (mark 0)
- assignments are additive: a NIC's set is the union of all that
resolve to it
- added tag-matcher and name-regex assignments
- rule and dynamic-assignment ids are now generated
- identity allocation is fresh-first with quarantined reclamation, so
churn cannot exhaust the id space
- split the SRv6 carrier support into droppable tail patches
- updated docs
- updated cover-letter
proxmox-ebpf:
Hannes Laimer (3):
build: keep the build directory out of the BPF objects
policy: add the enforcement subsystem for guest interfaces
policy: add a check for non-first fragments
Cargo.toml | 1 +
build.rs | 4 +
debian/control | 6 +-
src/bpf-shim/bpf/bpf_helpers.h | 1 +
src/bpf-shim/vmlinux.h | 1 +
src/lib.rs | 3 +
src/policy/bpf/mark.h | 27 +
src/policy/bpf/policy.bpf.c | 385 ++++++++++++
src/policy/bpf/types.h | 75 +++
src/policy/mod.rs | 1005 ++++++++++++++++++++++++++++++++
src/policy/types.rs | 159 +++++
src/subsystem.rs | 35 +-
tests/common/mod.rs | 40 ++
tests/policy.rs | 837 ++++++++++++++++++++++++++
14 files changed, 2573 insertions(+), 6 deletions(-)
create mode 100644 src/policy/bpf/mark.h
create mode 100644 src/policy/bpf/policy.bpf.c
create mode 100644 src/policy/bpf/types.h
create mode 100644 src/policy/mod.rs
create mode 100644 src/policy/types.rs
create mode 100644 tests/policy.rs
proxmox-ve-rs:
Hannes Laimer (11):
ve-config: firewall: add a constructor for sctp matches
ve-config: sdn: microseg: add identity allocation for group sets
ve-config: sdn: microseg: add config types
ve-config: sdn: microseg: add tag matcher
ve-config: sdn: microseg: add name regex matcher
ve-config: sdn: microseg: narrow rules by protocol and ports
ve-config: sdn: microseg: add group hierarchy
ve-config: firewall: expose protocol, icmp type and code numbers
ve-config: sdn: microseg: add the desired state
microseg: add a crate that applies the policy to a node's guest NICs
microseg: add a rule option that matches non-first fragments
Cargo.toml | 2 +
proxmox-microseg/Cargo.toml | 20 +
proxmox-microseg/debian/changelog | 5 +
proxmox-microseg/debian/control | 46 +
proxmox-microseg/debian/copyright | 18 +
proxmox-microseg/debian/debcargo.toml | 7 +
proxmox-microseg/debian/source/format | 1 +
proxmox-microseg/src/ebpf.rs | 247 +++
proxmox-microseg/src/lib.rs | 66 +
proxmox-microseg/src/nic.rs | 120 ++
proxmox-microseg/src/running_config.rs | 26 +
proxmox-ve-config/src/firewall/fw_macros.rs | 7 +
proxmox-ve-config/src/firewall/ports.rs | 65 +
.../src/firewall/types/rule_match.rs | 63 +
proxmox-ve-config/src/sdn/microseg/api.rs | 710 +++++++++
.../src/sdn/microseg/identity.rs | 475 ++++++
proxmox-ve-config/src/sdn/microseg/mod.rs | 1394 +++++++++++++++++
proxmox-ve-config/src/sdn/microseg/state.rs | 616 ++++++++
proxmox-ve-config/src/sdn/microseg/types.rs | 549 +++++++
proxmox-ve-config/src/sdn/mod.rs | 1 +
20 files changed, 4438 insertions(+)
create mode 100644 proxmox-microseg/Cargo.toml
create mode 100644 proxmox-microseg/debian/changelog
create mode 100644 proxmox-microseg/debian/control
create mode 100644 proxmox-microseg/debian/copyright
create mode 100644 proxmox-microseg/debian/debcargo.toml
create mode 100644 proxmox-microseg/debian/source/format
create mode 100644 proxmox-microseg/src/ebpf.rs
create mode 100644 proxmox-microseg/src/lib.rs
create mode 100644 proxmox-microseg/src/nic.rs
create mode 100644 proxmox-microseg/src/running_config.rs
create mode 100644 proxmox-ve-config/src/sdn/microseg/api.rs
create mode 100644 proxmox-ve-config/src/sdn/microseg/identity.rs
create mode 100644 proxmox-ve-config/src/sdn/microseg/mod.rs
create mode 100644 proxmox-ve-config/src/sdn/microseg/state.rs
create mode 100644 proxmox-ve-config/src/sdn/microseg/types.rs
pve-cluster:
Hannes Laimer (1):
cfs: add 'sdn/microseg.cfg' to observed files
src/PVE/Cluster.pm | 1 +
src/pmxcfs/status.c | 1 +
2 files changed, 2 insertions(+)
pve-access-control:
Hannes Laimer (1):
permissions: add ACL path for SDN microsegmentation
src/PVE/AccessControl.pm | 1 +
1 file changed, 1 insertion(+)
proxmox-perl-rs:
Hannes Laimer (4):
pve-rs: sdn: add microseg config binding
pve-rs: sdn: microseg: bind the data plane
pve-rs: sdn: microseg: check the data plane limits on render
pve-rs: debian: fire the pve-microseg-update trigger on upgrade
pve-rs/Cargo.toml | 2 +
pve-rs/Makefile | 3 +
pve-rs/debian/control | 1 +
pve-rs/debian/triggers | 1 +
pve-rs/src/bindings/sdn/microseg.rs | 350 ++++++++++++++++++++++++++++
pve-rs/src/bindings/sdn/mod.rs | 1 +
6 files changed, 358 insertions(+)
create mode 100644 pve-rs/src/bindings/sdn/microseg.rs
pve-network:
Hannes Laimer (10):
sdn: zones: add vxlan-gbp option to vxlan and evpn zones
sdn: microseg: add config, API and guest inventory
sdn: dry-run: show pending microseg changes
sdn: microseg: enforce the policy on guest NICs
sdn: microseg: add tag matcher
sdn: microseg: add name regex matcher
sdn: microseg: add an update for a running NIC
sdn: microseg: expose protocol, port and macro rule options
sdn: microseg: allow nesting groups under a parent
sdn: microseg: expose the fragments rule option
debian/control | 1 +
debian/libpve-network-perl.postinst | 21 +
debian/triggers | 1 +
src/PVE/API2/Network/SDN.pm | 47 +-
src/PVE/API2/Network/SDN/Makefile | 2 +
src/PVE/API2/Network/SDN/Microseg.pm | 236 +++++++++
.../API2/Network/SDN/Microseg/Assignment.pm | 23 +
src/PVE/API2/Network/SDN/Microseg/Base.pm | 382 ++++++++++++++
src/PVE/API2/Network/SDN/Microseg/Group.pm | 17 +
src/PVE/API2/Network/SDN/Microseg/Makefile | 11 +
src/PVE/API2/Network/SDN/Microseg/Rule.pm | 22 +
src/PVE/API2/Network/SDN/Zones.pm | 8 +
src/PVE/Network/SDN.pm | 25 +
src/PVE/Network/SDN/Makefile | 1 +
src/PVE/Network/SDN/Microseg.pm | 494 ++++++++++++++++++
src/PVE/Network/SDN/Zones.pm | 32 ++
src/PVE/Network/SDN/Zones/EvpnPlugin.pm | 8 +
src/PVE/Network/SDN/Zones/VxlanPlugin.pm | 12 +
.../zones/evpn/gbp/expected_controller_config | 77 +++
.../zones/evpn/gbp/expected_sdn_interfaces | 45 ++
src/test/zones/evpn/gbp/interfaces | 7 +
src/test/zones/evpn/gbp/sdn_config | 26 +
.../zones/vxlan/gbp/expected_sdn_interfaces | 17 +
src/test/zones/vxlan/gbp/interfaces | 7 +
src/test/zones/vxlan/gbp/sdn_config | 11 +
25 files changed, 1531 insertions(+), 2 deletions(-)
create mode 100644 src/PVE/API2/Network/SDN/Microseg.pm
create mode 100644 src/PVE/API2/Network/SDN/Microseg/Assignment.pm
create mode 100644 src/PVE/API2/Network/SDN/Microseg/Base.pm
create mode 100644 src/PVE/API2/Network/SDN/Microseg/Group.pm
create mode 100644 src/PVE/API2/Network/SDN/Microseg/Makefile
create mode 100644 src/PVE/API2/Network/SDN/Microseg/Rule.pm
create mode 100644 src/PVE/Network/SDN/Microseg.pm
create mode 100644 src/test/zones/evpn/gbp/expected_controller_config
create mode 100644 src/test/zones/evpn/gbp/expected_sdn_interfaces
create mode 100644 src/test/zones/evpn/gbp/interfaces
create mode 100644 src/test/zones/evpn/gbp/sdn_config
create mode 100644 src/test/zones/vxlan/gbp/expected_sdn_interfaces
create mode 100644 src/test/zones/vxlan/gbp/interfaces
create mode 100644 src/test/zones/vxlan/gbp/sdn_config
pve-manager:
Hannes Laimer (11):
network: apply the microseg policy on reload
pve-sdn-commit: apply the microseg policy at boot
ui: sdn: zones: add vxlan-gbp checkbox to vxlan and evpn
ui: sdn: add microsegmentation panel
ui: sdn: dry-run: show pending microseg diff
ui: sdn: microseg: add tag matcher
ui: sdn: microseg: add name regex matcher
ui: sdn: microseg: add narrowing to the rule form
ui: sdn: microseg: show and edit the group hierarchy
ui: sdn: microseg: add fragments option to the rule form
ui: sdn: microseg: add a guest tab with its groups and rules
PVE/API2/Network.pm | 31 +-
bin/pve-sdn-commit | 47 ++-
services/pve-sdn-commit.service | 1 +
www/css/ext6-pve.css | 23 ++
www/manager6/Makefile | 10 +
www/manager6/Utils.js | 98 +++++
www/manager6/data/PermPathStore.js | 1 +
www/manager6/dc/Config.js | 8 +
www/manager6/form/SDNMicrosegGroupSelector.js | 105 ++++++
www/manager6/grid/FirewallRules.js | 2 +
www/manager6/lxc/Config.js | 10 +
www/manager6/qemu/Config.js | 10 +
www/manager6/sdn/MicrosegView.js | 98 +++++
www/manager6/sdn/SdnDiffView.js | 29 ++
www/manager6/sdn/microseg/AssignmentEdit.js | 148 ++++++++
www/manager6/sdn/microseg/AssignmentView.js | 195 ++++++++++
www/manager6/sdn/microseg/Base.js | 262 ++++++++++++++
www/manager6/sdn/microseg/GroupEdit.js | 40 +++
www/manager6/sdn/microseg/GuestPanel.js | 117 ++++++
www/manager6/sdn/microseg/RuleEdit.js | 285 +++++++++++++++
www/manager6/sdn/microseg/RuleView.js | 338 ++++++++++++++++++
www/manager6/sdn/microseg/Tree.js | 278 ++++++++++++++
www/manager6/sdn/zones/EvpnEdit.js | 8 +
www/manager6/sdn/zones/VxlanEdit.js | 11 +
24 files changed, 2126 insertions(+), 29 deletions(-)
create mode 100644 www/manager6/form/SDNMicrosegGroupSelector.js
create mode 100644 www/manager6/sdn/MicrosegView.js
create mode 100644 www/manager6/sdn/microseg/AssignmentEdit.js
create mode 100644 www/manager6/sdn/microseg/AssignmentView.js
create mode 100644 www/manager6/sdn/microseg/Base.js
create mode 100644 www/manager6/sdn/microseg/GroupEdit.js
create mode 100644 www/manager6/sdn/microseg/GuestPanel.js
create mode 100644 www/manager6/sdn/microseg/RuleEdit.js
create mode 100644 www/manager6/sdn/microseg/RuleView.js
create mode 100644 www/manager6/sdn/microseg/Tree.js
qemu-server:
Hannes Laimer (1):
network: update the microseg enforcement on a tag or name change
src/PVE/API2/Qemu.pm | 26 ++++++++++++++++++++++++++
src/PVE/QemuServer.pm | 12 +++++++++++-
src/PVE/QemuServer/Network.pm | 14 ++++++++++++++
3 files changed, 51 insertions(+), 1 deletion(-)
pve-container:
Hannes Laimer (1):
lxc: update the microseg enforcement on a tag or hostname change
src/PVE/API2/LXC/Config.pm | 3 +++
src/PVE/LXC.pm | 28 ++++++++++++++++++++++++++++
2 files changed, 31 insertions(+)
pve-docs:
Hannes Laimer (2):
sdn: zones: document the VXLAN-GBP option
sdn: add microsegmentation section
pvesdn.adoc | 403 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 403 insertions(+)
Summary over all repositories:
98 files changed, 11514 insertions(+), 38 deletions(-)
--
Generated by murpp 0.12.0
next reply other threads:[~2026-10-27 8:56 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-27 8:54 Hannes Laimer [this message]
2026-10-27 8:54 ` [PATCH proxmox-ebpf v3 01/45] build: keep the build directory out of the BPF objects Hannes Laimer
2026-10-27 8:54 ` [PATCH proxmox-ebpf v3 02/45] policy: add the enforcement subsystem for guest interfaces Hannes Laimer
2026-10-27 8:54 ` [PATCH proxmox-ebpf v3 03/45] policy: add a check for non-first fragments Hannes Laimer
2026-10-27 8:54 ` [PATCH proxmox-ve-rs v3 04/45] ve-config: firewall: add a constructor for sctp matches Hannes Laimer
2026-10-27 8:54 ` [PATCH proxmox-ve-rs v3 05/45] ve-config: sdn: microseg: add identity allocation for group sets Hannes Laimer
2026-10-27 8:54 ` [PATCH proxmox-ve-rs v3 06/45] ve-config: sdn: microseg: add config types Hannes Laimer
2026-10-27 8:54 ` [PATCH proxmox-ve-rs v3 07/45] ve-config: sdn: microseg: add tag matcher Hannes Laimer
2026-10-27 8:54 ` [PATCH proxmox-ve-rs v3 08/45] ve-config: sdn: microseg: add name regex matcher Hannes Laimer
2026-10-27 8:54 ` [PATCH proxmox-ve-rs v3 09/45] ve-config: sdn: microseg: narrow rules by protocol and ports Hannes Laimer
2026-10-27 8:54 ` [PATCH proxmox-ve-rs v3 10/45] ve-config: sdn: microseg: add group hierarchy Hannes Laimer
2026-10-27 8:54 ` [PATCH proxmox-ve-rs v3 11/45] ve-config: firewall: expose protocol, icmp type and code numbers Hannes Laimer
2026-10-27 8:54 ` [PATCH proxmox-ve-rs v3 12/45] ve-config: sdn: microseg: add the desired state Hannes Laimer
2026-10-27 8:54 ` [PATCH proxmox-ve-rs v3 13/45] microseg: add a crate that applies the policy to a node's guest NICs Hannes Laimer
2026-10-27 8:54 ` [PATCH proxmox-ve-rs v3 14/45] microseg: add a rule option that matches non-first fragments Hannes Laimer
2026-10-27 8:54 ` [PATCH pve-cluster v3 15/45] cfs: add 'sdn/microseg.cfg' to observed files Hannes Laimer
2026-10-27 8:54 ` [PATCH pve-access-control v3 16/45] permissions: add ACL path for SDN microsegmentation Hannes Laimer
2026-10-27 8:54 ` [PATCH proxmox-perl-rs v3 17/45] pve-rs: sdn: add microseg config binding Hannes Laimer
2026-10-27 8:55 ` [PATCH proxmox-perl-rs v3 18/45] pve-rs: sdn: microseg: bind the data plane Hannes Laimer
2026-10-27 8:55 ` [PATCH proxmox-perl-rs v3 19/45] pve-rs: sdn: microseg: check the data plane limits on render Hannes Laimer
2026-10-27 8:55 ` [PATCH proxmox-perl-rs v3 20/45] pve-rs: debian: fire the pve-microseg-update trigger on upgrade Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-network v3 21/45] sdn: zones: add vxlan-gbp option to vxlan and evpn zones Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-network v3 22/45] sdn: microseg: add config, API and guest inventory Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-network v3 23/45] sdn: dry-run: show pending microseg changes Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-network v3 24/45] sdn: microseg: enforce the policy on guest NICs Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-network v3 25/45] sdn: microseg: add tag matcher Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-network v3 26/45] sdn: microseg: add name regex matcher Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-network v3 27/45] sdn: microseg: add an update for a running NIC Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-network v3 28/45] sdn: microseg: expose protocol, port and macro rule options Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-network v3 29/45] sdn: microseg: allow nesting groups under a parent Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-network v3 30/45] sdn: microseg: expose the fragments rule option Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-manager v3 31/45] network: apply the microseg policy on reload Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-manager v3 32/45] pve-sdn-commit: apply the microseg policy at boot Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-manager v3 33/45] ui: sdn: zones: add vxlan-gbp checkbox to vxlan and evpn Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-manager v3 34/45] ui: sdn: add microsegmentation panel Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-manager v3 35/45] ui: sdn: dry-run: show pending microseg diff Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-manager v3 36/45] ui: sdn: microseg: add tag matcher Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-manager v3 37/45] ui: sdn: microseg: add name regex matcher Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-manager v3 38/45] ui: sdn: microseg: add narrowing to the rule form Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-manager v3 39/45] ui: sdn: microseg: show and edit the group hierarchy Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-manager v3 40/45] ui: sdn: microseg: add fragments option to the rule form Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-manager v3 41/45] ui: sdn: microseg: add a guest tab with its groups and rules Hannes Laimer
2026-10-27 8:55 ` [PATCH qemu-server v3 42/45] network: update the microseg enforcement on a tag or name change Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-container v3 43/45] lxc: update the microseg enforcement on a tag or hostname change Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-docs v3 44/45] sdn: zones: document the VXLAN-GBP option Hannes Laimer
2026-10-27 8:55 ` [PATCH pve-docs v3 45/45] sdn: add microsegmentation section Hannes Laimer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261027085527.702738-1-h.laimer@proxmox.com \
--to=h.laimer@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox