| BPE(4) | Device Drivers Manual | BPE(4) |
bpe — Backbone
Provider Edge pseudo-device
pseudo-device bpe
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 bpeN
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 *SIOCGIFPARENT
struct if_parent *SIOCDIFPARENT
struct ifreq *SIOCSVNETID
struct ifreq *SIOCGVNETID
struct ifreq *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.
The bpe driver first appeared in
OpenBSD 6.5.
David Gwynne <dlg@openbsd.org>.
| September 12, 2022 | openbsd |