MPW(4) | Device Drivers Manual | MPW(4) |
mpw
— MPLS
pseudowire
pseudo-device mpw
#include <sys/types.h>
#include <netmpls/mpls.h>
The mpw
interface is used to create an
MPLS layer 2 tunnel between two points.
A mpw
interface can be
created at runtime using the
ifconfig
mpw
N
create
command or by setting up a
hostname.if(5)
configuration file for
netstart(8). The interface
itself can be configured with
ifconfig(8).
The supported pseudowire operation modes are
‘ethernet
’ and
‘ethernet-tagged
’. The
‘ethernet
’ operating mode passes all
Ethernet packets transparently through the interface, meanwhile the
‘ethernet-tagged
’ requires that the
client uses at least one VLAN to pass the traffic. The
mpw
interface labels, neighbor, encapsulation and
administrative state are normally configured by
ldpd(8), but it is also
possible to configure them manually. The configuration information that will
be used by the ioctl are defined below:
#define IMR_TYPE_NONE 0 #define IMR_TYPE_ETHERNET 1 #define IMR_TYPE_ETHERNET_TAGGED 2 #define IMR_FLAG_CONTROLWORD 0x1 struct ifmpwreq { uint32_t imr_flags; uint32_t imr_type; /* pseudowire type */ struct shim_hdr imr_lshim; /* local label */ struct shim_hdr imr_rshim; /* remote label */ struct sockaddr_storage imr_nexthop; };
mpw
interfaces support the following
unique ioctls:
SIOCSETMPWCFG
SIOCGETMPWCFG
Create a pseudowire to neighbor 10.254.0.1 using Ethernet encapsulation with local label 20 and encapsulate MPLS packets with label 21:
# ifconfig mpw5 neighbor 10.254.0.1 encap ethernet mpwlabel 20 21 up
Create a pseudowire to neighbor 10.254.0.3 using Ethernet encapsulation with local label 30 and encapsulate MPLS packets with label 31 and control-word:
# ifconfig mpw5 neighbor 10.254.0.3 encap ethernet mpwlabel 30 31 controlword
The mpw
kernel interface first appeared in
OpenBSD 5.8.
The mpw
driver was written by
Rafael Zalamena
<rzalamena@openbsd.org>.
July 21, 2015 | OpenBSD-6.1 |