MPW(4)

πŸ“¦ in nixpkgs unstable

πŸ’œ mpw(4) β€” or as the header calls it, MPW(4) from the Kernel Interfaces Manual ✨

okay so first things first bestie, we're in the Kernel Interfaces Manual section, entry MPW(4) β€” that's mpw, the MPLS Ethernet pseudowire πŸŽ€ and honestly? she's iconic.

πŸ¦‹ NAME πŸ¦‹

mpw β€” MPLS Ethernet pseudowire. that's it, that's the whole name, no notes πŸ’…

🌸 SYNOPSIS 🌸

pseudo-device mpw

like yes, that's literally the entire synopsis and she ate πŸ’–

✨ DESCRIPTION ✨

kay so the mpw interface is used to create an MPLS Ethernet layer 2 tunnel between two points. that's the whole vibe β€” two points, one tunnel, sealed with a kiss 🫢

here's the tea on how you bring one into existence: an mpw interface can be created at runtime using the ifconfig mpwN create command, OR by setting up a hostname.if(5) configuration file for netstart(8). pick your fighter πŸ’€ and the interface itself can be configured with ifconfig(8) β€” she's flexible like that.

now, the important bits: the local MPLS label, the remote MPLS label and neighbor, use of pseudowire control words, or flow-aware transport β€” these are normally configured after negotiation with a remote system using ldpd(8). but ngl, it is also possible to configure them manually using ifconfig(8). main character energy: you can do it yourself if you want to ✨

πŸ”₯ EXAMPLES πŸ”₯

creating a pseudowire with local label 20 and remote label 21 on neighbor 10.254.0.1

look at her go:

# ifconfig mpw5 create
# ifconfig mpw5 mplslabel 20 pweneighbor 21 10.254.0.1
# ifconfig mpw5 up

periodt. that's the whole glow-up from nothing to a live tunnel πŸ’…

enabling the use of the Pseudowire Emulation Edge-to-Edge (PWE3) Control Word, and disabling the use of a Flow label for Flow-Aware Transport of Pseudowires

yes, both in one line, she's efficient:

# ifconfig mpw5 pwecw -pwefat

the VPLS situation πŸ‘‘

mpw interfaces may be used to build a Virtual Private LAN Service (VPLS) with veb(4) or bridge(4). a VPLS is constructed with a full mesh of MPLS pseudowire tunnels bridged between all peers β€” but 😭 this introduces loops in the topology. not the vibe.

so here's the fix, and it matters: to prevent broadcast, unknown unicast, and multicast packets received from the VPLS being forwarded to its peers, all the pseudowire interfaces can be configured to enforce the split-horizon forwarding rule by adding them to the same protected bridge domain. basically: same protected domain = no loops, no chaos, no yelling 🫢

Different VPLS meshes can be joined together on the same bridge using different identifiers for their protected domains:

# ifconfig mpw10 create up
# ifconfig mpw11 create up
# ifconfig mpw12 create up
# ifconfig veb0 create
# ifconfig veb0 add em2
# ifconfig veb0 add mpw10 add mpw11 add mpw12
# ifconfig veb0 protected mpw10 1
# ifconfig veb0 protected mpw11 1
# ifconfig veb0 protected mpw12 1
# ifconfig veb0 up

see how mpw10, mpw11 and mpw12 all got protected … 1? that's the split-horizon enforcement, and it's giving organized πŸ’–

πŸ‘‘ SEE ALSO πŸ‘‘

and the reading list, aka the receipts πŸ“š:

  • S. Bryant and P. Pate, Pseudo Wire Emulation Edge-to-Edge (PWE3) Architecture, RFC 3985, March 2005.
  • S. Bryant, G. Swallow, and L. Martini, Pseudowire Emulation Edge-to-Edge (PWE3) Control Word for Use over an MPLS PSN, RFC 4385, February 2005.
  • S. Bryant, C. Filsfils, U. Drafz, V. Kompella, J. Regan, and S. Amante, Flow-Aware Transport of Pseudowires over an MPLS Packet Switched Network, RFC 6391, November 2011.

⭐ HISTORY ⭐

The mpw kernel interface first appeared in OpenBSD 5.8. a true legend from the jump πŸ’€βœ¨

πŸŽ€ AUTHORS πŸŽ€

The mpw driver was written by Rafael Zalamena <rzalamena@openbsd.org>. thank you for your service king 🫢


okay that's the whole page bestie, no cap 🌈 and for the credits at the bottom: this one came from Debian, dated November 20, 2025, filed under MPW(4) β€” so go forth, build your tunnels, respect the split-horizon rule, and slay πŸ’…πŸ’–πŸ¦‹

πŸ“¦ where this page comes from
  • nixpkgs unstable: cvs-export
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms