MPW(4)
π 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
- Copyright (C) 2015 Rafael Zalamena <rzalamena@openbsd.org>
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms