BPE(4) | Device Drivers Manual | BPE(4)

# NAME

`bpe` — Backbone Provider Edge pseudo-device

# SYNOPSIS

`pseudo-device bpe`

# DESCRIPTION

The `bpe` driver creates IEEE 802.1Q Provider Backbone Bridge (PBB) networks by acting as a Backbone Edge Bridge (BEB). PBB, also known as mac-in-mac, was originally specified in IEEE 802.1ah-2008 and became part of IEEE 802.1Q-2011.

A Provider Backbone Bridge Network (PBBN) consists of BEBs interconnected by Backbone Core Bridges (BCBs) to form an Ethernet network for the transport of encapsulated Ethernet packets. Where VLAN and SVLAN protocols add a shim to differentiate Ethernet packets for different networks but retain the Ethernet addresses of encapsulated traffic, PBB completely encapsulates Ethernet packets for transmission between BEBs on a PBBN. This removes the need for intermediate BCB devices on the backbone network to learn the Ethernet addresses of devices on the encapsulated network, but requires each BEB to maintain a mapping of addresses on the encapsulated network to peer BEBs.

A PBB packet consists of another Ethernet frame containing Ethernet addresses for BEBs and the PBB Ethernet protocol type (0x88e7), a 32-bit Backbone Service Instance Tag (I-TAG), followed by the encapsulated Ethernet frame. The I-TAG contains a 24-bit Backbone Service Instance Identifier (I-SID) to differentiate different PBBNs on the same backbone network

IEEE 802.1Q describes customer VLANs being encapsulated by PBB, which in turn uses an S-VLAN service. This can be implemented with vlan(4) using a `bpe` interface as the parent, and with the `bpe` interface using svlan(4) as the parent. `bpe` itself does not require this topology, therefore allowing flexible deployment and network topologies.

The `bpe` driver implements a learning bridge on each interface. The driver will learn the mapping of BEPs to encapsulated Ethernet address based on traffic received from other devices on the backbone network. Traffic sent to broadcast, multicast, or unknown unicast Ethernet addresses will be flooded to a multicast address on the backbone network. The multicast address used for each PBB Service Instance will begin with 01:1e:83 as the first three octets, with the I-SID as the last three octets. For example, a `bpe` interface with a vnetid of 1024 (0x400 in hex) will have a multicast group address of 01:1e:83:00:04:00. The address learning in `bpe` only uses the Ethernet addresses of encapsulated traffic for its forwarding decisions; it does not use VLAN or S-VLAN tags to differentiate services.

`bpe` interfaces can be created at runtime using the `ifconfig bpe` 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); see its manual page for more information.

`bpe` interfaces must be configured with a parent Ethernet interface to operate, and a virtual network identifier for use as the I-SID.

The I-TAG includes a priority field. By default, the value of the priority field in a transmitted packet is based on the priority of packets sent over the interface, which may be altered via pf.conf(5); see the `prio` option for more information. Alternatively, `txprio` can set a specific priority for transmitted packets.

`bpe` interfaces support the following ioctl(2)s:

`SIOCSIFPARENT` struct if_parent *
  Set the parent interface. The parent may only be configured while the virtual interface is administratively down.
`SIOCGIFPARENT` struct if_parent *
  Get the currently configured parent interface.
`SIOCDIFPARENT` struct ifreq *
  Delete the parent interface configuration. The parent may only be removed while the virtual interface is administratively down.
`SIOCSVNETID` struct ifreq *
  Set the virtual network identifier. Valid identifiers are 24-bit values in the range 0 to 16777215.
`SIOCGVNETID` struct ifreq *
  Get the currently configured virtual network identifier.

# SEE ALSO

bridge(4), inet(4), ip(4), netintro(4), vlan(4), hostname.if(5), pf.conf(5), ifconfig(8), netstart(8)

IEEE 802.1Q standard, https://standards.ieee.org/standard/802_1Q-2018.html.

IEEE 802.1ah standard, Provider Backbone Bridges.

# HISTORY

The `bpe` driver first appeared in OpenBSD 6.5.

# AUTHORS

David Gwynne <dlg@openbsd.org>.

September 12, 2022 | Debian