16b335f82STobin C. Harding.. SPDX-License-Identifier: GPL-2.0 26b335f82STobin C. Harding 36b335f82STobin C. Harding================= 46b335f82STobin C. HardingEthernet Bridging 56b335f82STobin C. Harding================= 66b335f82STobin C. Harding 7e8a4195dSHangbin LiuIntroduction 8e8a4195dSHangbin Liu============ 96b335f82STobin C. Harding 10e8a4195dSHangbin LiuThe IEEE 802.1Q-2022 (Bridges and Bridged Networks) standard defines the 11e8a4195dSHangbin Liuoperation of bridges in computer networks. A bridge, in the context of this 12e8a4195dSHangbin Liustandard, is a device that connects two or more network segments and operates 13e8a4195dSHangbin Liuat the data link layer (Layer 2) of the OSI (Open Systems Interconnection) 14e8a4195dSHangbin Liumodel. The purpose of a bridge is to filter and forward frames between 15e8a4195dSHangbin Liudifferent segments based on the destination MAC (Media Access Control) address. 16e8a4195dSHangbin Liu 17bcc1f84eSHangbin LiuBridge kAPI 18bcc1f84eSHangbin Liu=========== 19bcc1f84eSHangbin Liu 20bcc1f84eSHangbin LiuHere are some core structures of bridge code. Note that the kAPI is *unstable*, 21bcc1f84eSHangbin Liuand can be changed at any time. 22bcc1f84eSHangbin Liu 23bcc1f84eSHangbin Liu.. kernel-doc:: net/bridge/br_private.h 24bcc1f84eSHangbin Liu :identifiers: net_bridge_vlan 25bcc1f84eSHangbin Liu 26bcc1f84eSHangbin LiuBridge uAPI 27bcc1f84eSHangbin Liu=========== 28bcc1f84eSHangbin Liu 29bcc1f84eSHangbin LiuModern Linux bridge uAPI is accessed via Netlink interface. You can find 30bcc1f84eSHangbin Liubelow files where the bridge and bridge port netlink attributes are defined. 31bcc1f84eSHangbin Liu 32bcc1f84eSHangbin LiuBridge netlink attributes 33bcc1f84eSHangbin Liu------------------------- 34bcc1f84eSHangbin Liu 35bcc1f84eSHangbin Liu.. kernel-doc:: include/uapi/linux/if_link.h 36bcc1f84eSHangbin Liu :doc: Bridge enum definition 37bcc1f84eSHangbin Liu 38bcc1f84eSHangbin LiuBridge port netlink attributes 39bcc1f84eSHangbin Liu------------------------------ 40bcc1f84eSHangbin Liu 41bcc1f84eSHangbin Liu.. kernel-doc:: include/uapi/linux/if_link.h 42bcc1f84eSHangbin Liu :doc: Bridge port enum definition 43bcc1f84eSHangbin Liu 44bcc1f84eSHangbin LiuBridge sysfs 45bcc1f84eSHangbin Liu------------ 46bcc1f84eSHangbin Liu 47bcc1f84eSHangbin LiuThe sysfs interface is deprecated and should not be extended if new 48bcc1f84eSHangbin Liuoptions are added. 49bcc1f84eSHangbin Liu 50567d2608SHangbin LiuSTP 51567d2608SHangbin Liu=== 52567d2608SHangbin Liu 53567d2608SHangbin LiuThe STP (Spanning Tree Protocol) implementation in the Linux bridge driver 54567d2608SHangbin Liuis a critical feature that helps prevent loops and broadcast storms in 55567d2608SHangbin LiuEthernet networks by identifying and disabling redundant links. In a Linux 56567d2608SHangbin Liubridge context, STP is crucial for network stability and availability. 57567d2608SHangbin Liu 58567d2608SHangbin LiuSTP is a Layer 2 protocol that operates at the Data Link Layer of the OSI 59567d2608SHangbin Liumodel. It was originally developed as IEEE 802.1D and has since evolved into 60567d2608SHangbin Liumultiple versions, including Rapid Spanning Tree Protocol (RSTP) and 61567d2608SHangbin Liu`Multiple Spanning Tree Protocol (MSTP) 62567d2608SHangbin Liu<https://lore.kernel.org/netdev/20220316150857.2442916-1-tobias@waldekranz.com/>`_. 63567d2608SHangbin Liu 64567d2608SHangbin LiuThe 802.1D-2004 removed the original Spanning Tree Protocol, instead 65567d2608SHangbin Liuincorporating the Rapid Spanning Tree Protocol (RSTP). By 2014, all the 66567d2608SHangbin Liufunctionality defined by IEEE 802.1D has been incorporated into either 67567d2608SHangbin LiuIEEE 802.1Q (Bridges and Bridged Networks) or IEEE 802.1AC (MAC Service 68567d2608SHangbin LiuDefinition). 802.1D has been officially withdrawn in 2022. 69567d2608SHangbin Liu 70567d2608SHangbin LiuBridge Ports and STP States 71567d2608SHangbin Liu--------------------------- 72567d2608SHangbin Liu 73567d2608SHangbin LiuIn the context of STP, bridge ports can be in one of the following states: 74567d2608SHangbin Liu * Blocking: The port is disabled for data traffic and only listens for 75567d2608SHangbin Liu BPDUs (Bridge Protocol Data Units) from other devices to determine the 76567d2608SHangbin Liu network topology. 77567d2608SHangbin Liu * Listening: The port begins to participate in the STP process and listens 78567d2608SHangbin Liu for BPDUs. 79567d2608SHangbin Liu * Learning: The port continues to listen for BPDUs and begins to learn MAC 80567d2608SHangbin Liu addresses from incoming frames but does not forward data frames. 81567d2608SHangbin Liu * Forwarding: The port is fully operational and forwards both BPDUs and 82567d2608SHangbin Liu data frames. 83567d2608SHangbin Liu * Disabled: The port is administratively disabled and does not participate 84567d2608SHangbin Liu in the STP process. The data frames forwarding are also disabled. 85567d2608SHangbin Liu 86567d2608SHangbin LiuRoot Bridge and Convergence 87567d2608SHangbin Liu--------------------------- 88567d2608SHangbin Liu 89567d2608SHangbin LiuIn the context of networking and Ethernet bridging in Linux, the root bridge 90567d2608SHangbin Liuis a designated switch in a bridged network that serves as a reference point 91567d2608SHangbin Liufor the spanning tree algorithm to create a loop-free topology. 92567d2608SHangbin Liu 93567d2608SHangbin LiuHere's how the STP works and root bridge is chosen: 94567d2608SHangbin Liu 1. Bridge Priority: Each bridge running a spanning tree protocol, has a 95567d2608SHangbin Liu configurable Bridge Priority value. The lower the value, the higher the 96567d2608SHangbin Liu priority. By default, the Bridge Priority is set to a standard value 97567d2608SHangbin Liu (e.g., 32768). 98567d2608SHangbin Liu 2. Bridge ID: The Bridge ID is composed of two components: Bridge Priority 99567d2608SHangbin Liu and the MAC address of the bridge. It uniquely identifies each bridge 100567d2608SHangbin Liu in the network. The Bridge ID is used to compare the priorities of 101567d2608SHangbin Liu different bridges. 102567d2608SHangbin Liu 3. Bridge Election: When the network starts, all bridges initially assume 103567d2608SHangbin Liu that they are the root bridge. They start advertising Bridge Protocol 104567d2608SHangbin Liu Data Units (BPDU) to their neighbors, containing their Bridge ID and 105567d2608SHangbin Liu other information. 106567d2608SHangbin Liu 4. BPDU Comparison: Bridges exchange BPDUs to determine the root bridge. 107567d2608SHangbin Liu Each bridge examines the received BPDUs, including the Bridge Priority 108567d2608SHangbin Liu and Bridge ID, to determine if it should adjust its own priorities. 109567d2608SHangbin Liu The bridge with the lowest Bridge ID will become the root bridge. 110567d2608SHangbin Liu 5. Root Bridge Announcement: Once the root bridge is determined, it sends 111567d2608SHangbin Liu BPDUs with information about the root bridge to all other bridges in the 112567d2608SHangbin Liu network. This information is used by other bridges to calculate the 113567d2608SHangbin Liu shortest path to the root bridge and, in doing so, create a loop-free 114567d2608SHangbin Liu topology. 115567d2608SHangbin Liu 6. Forwarding Ports: After the root bridge is selected and the spanning tree 116567d2608SHangbin Liu topology is established, each bridge determines which of its ports should 117567d2608SHangbin Liu be in the forwarding state (used for data traffic) and which should be in 118567d2608SHangbin Liu the blocking state (used to prevent loops). The root bridge's ports are 119567d2608SHangbin Liu all in the forwarding state. while other bridges have some ports in the 120567d2608SHangbin Liu blocking state to avoid loops. 121567d2608SHangbin Liu 7. Root Ports: After the root bridge is selected and the spanning tree 122567d2608SHangbin Liu topology is established, each non-root bridge processes incoming 123567d2608SHangbin Liu BPDUs and determines which of its ports provides the shortest path to the 124567d2608SHangbin Liu root bridge based on the information in the received BPDUs. This port is 125567d2608SHangbin Liu designated as the root port. And it is in the Forwarding state, allowing 126567d2608SHangbin Liu it to actively forward network traffic. 127567d2608SHangbin Liu 8. Designated ports: A designated port is the port through which the non-root 128567d2608SHangbin Liu bridge will forward traffic towards the designated segment. Designated ports 129567d2608SHangbin Liu are placed in the Forwarding state. All other ports on the non-root 130567d2608SHangbin Liu bridge that are not designated for specific segments are placed in the 131567d2608SHangbin Liu Blocking state to prevent network loops. 132567d2608SHangbin Liu 133567d2608SHangbin LiuSTP ensures network convergence by calculating the shortest path and disabling 134567d2608SHangbin Liuredundant links. When network topology changes occur (e.g., a link failure), 135567d2608SHangbin LiuSTP recalculates the network topology to restore connectivity while avoiding loops. 136567d2608SHangbin Liu 137567d2608SHangbin LiuProper configuration of STP parameters, such as the bridge priority, can 138567d2608SHangbin Liuinfluence network performance, path selection and which bridge becomes the 139567d2608SHangbin LiuRoot Bridge. 140567d2608SHangbin Liu 141567d2608SHangbin LiuUser space STP helper 142567d2608SHangbin Liu--------------------- 143567d2608SHangbin Liu 144567d2608SHangbin LiuThe user space STP helper *bridge-stp* is a program to control whether to use 145567d2608SHangbin Liuuser mode spanning tree. The ``/sbin/bridge-stp <bridge> <start|stop>`` is 146567d2608SHangbin Liucalled by the kernel when STP is enabled/disabled on a bridge 147567d2608SHangbin Liu(via ``brctl stp <bridge> <on|off>`` or ``ip link set <bridge> type bridge 148567d2608SHangbin Liustp_state <0|1>``). The kernel enables user_stp mode if that command returns 149567d2608SHangbin Liu0, or enables kernel_stp mode if that command returns any other value. 150567d2608SHangbin Liu 151041a6ac4SHangbin LiuVLAN 152041a6ac4SHangbin Liu==== 153041a6ac4SHangbin Liu 154041a6ac4SHangbin LiuA LAN (Local Area Network) is a network that covers a small geographic area, 155041a6ac4SHangbin Liutypically within a single building or a campus. LANs are used to connect 156041a6ac4SHangbin Liucomputers, servers, printers, and other networked devices within a localized 157041a6ac4SHangbin Liuarea. LANs can be wired (using Ethernet cables) or wireless (using Wi-Fi). 158041a6ac4SHangbin Liu 159041a6ac4SHangbin LiuA VLAN (Virtual Local Area Network) is a logical segmentation of a physical 160041a6ac4SHangbin Liunetwork into multiple isolated broadcast domains. VLANs are used to divide 161041a6ac4SHangbin Liua single physical LAN into multiple virtual LANs, allowing different groups of 162041a6ac4SHangbin Liudevices to communicate as if they were on separate physical networks. 163041a6ac4SHangbin Liu 164041a6ac4SHangbin LiuTypically there are two VLAN implementations, IEEE 802.1Q and IEEE 802.1ad 165041a6ac4SHangbin Liu(also known as QinQ). IEEE 802.1Q is a standard for VLAN tagging in Ethernet 166041a6ac4SHangbin Liunetworks. It allows network administrators to create logical VLANs on a 167041a6ac4SHangbin Liuphysical network and tag Ethernet frames with VLAN information, which is 168041a6ac4SHangbin Liucalled *VLAN-tagged frames*. IEEE 802.1ad, commonly known as QinQ or Double 169041a6ac4SHangbin LiuVLAN, is an extension of the IEEE 802.1Q standard. QinQ allows for the 170041a6ac4SHangbin Liustacking of multiple VLAN tags within a single Ethernet frame. The Linux 171041a6ac4SHangbin Liubridge supports both the IEEE 802.1Q and `802.1AD 172041a6ac4SHangbin Liu<https://lore.kernel.org/netdev/1402401565-15423-1-git-send-email-makita.toshiaki@lab.ntt.co.jp/>`_ 173041a6ac4SHangbin Liuprotocol for VLAN tagging. 174041a6ac4SHangbin Liu 175041a6ac4SHangbin Liu`VLAN filtering <https://lore.kernel.org/netdev/1360792820-14116-1-git-send-email-vyasevic@redhat.com/>`_ 176041a6ac4SHangbin Liuon a bridge is disabled by default. After enabling VLAN filtering on a bridge, 177041a6ac4SHangbin Liuit will start forwarding frames to appropriate destinations based on their 178041a6ac4SHangbin Liudestination MAC address and VLAN tag (both must match). 179041a6ac4SHangbin Liu 18075ceac88SHangbin LiuMulticast 18175ceac88SHangbin Liu========= 18275ceac88SHangbin Liu 18375ceac88SHangbin LiuThe Linux bridge driver has multicast support allowing it to process Internet 18475ceac88SHangbin LiuGroup Management Protocol (IGMP) or Multicast Listener Discovery (MLD) 18575ceac88SHangbin Liumessages, and to efficiently forward multicast data packets. The bridge 18675ceac88SHangbin Liudriver supports IGMPv2/IGMPv3 and MLDv1/MLDv2. 18775ceac88SHangbin Liu 18875ceac88SHangbin LiuMulticast snooping 18975ceac88SHangbin Liu------------------ 19075ceac88SHangbin Liu 19175ceac88SHangbin LiuMulticast snooping is a networking technology that allows network switches 19275ceac88SHangbin Liuto intelligently manage multicast traffic within a local area network (LAN). 19375ceac88SHangbin Liu 19475ceac88SHangbin LiuThe switch maintains a multicast group table, which records the association 19575ceac88SHangbin Liubetween multicast group addresses and the ports where hosts have joined these 19675ceac88SHangbin Liugroups. The group table is dynamically updated based on the IGMP/MLD messages 19775ceac88SHangbin Liureceived. With the multicast group information gathered through snooping, the 19875ceac88SHangbin Liuswitch optimizes the forwarding of multicast traffic. Instead of blindly 19975ceac88SHangbin Liubroadcasting the multicast traffic to all ports, it sends the multicast 20075ceac88SHangbin Liutraffic based on the destination MAC address only to ports which have 20175ceac88SHangbin Liusubscribed the respective destination multicast group. 20275ceac88SHangbin Liu 20375ceac88SHangbin LiuWhen created, the Linux bridge devices have multicast snooping enabled by 20475ceac88SHangbin Liudefault. It maintains a Multicast forwarding database (MDB) which keeps track 20575ceac88SHangbin Liuof port and group relationships. 20675ceac88SHangbin Liu 20775ceac88SHangbin LiuIGMPv3/MLDv2 EHT support 20875ceac88SHangbin Liu------------------------ 20975ceac88SHangbin Liu 21075ceac88SHangbin LiuThe Linux bridge supports IGMPv3/MLDv2 EHT (Explicit Host Tracking), which 21175ceac88SHangbin Liuwas added by `474ddb37fa3a ("net: bridge: multicast: add EHT allow/block handling") 21275ceac88SHangbin Liu<https://lore.kernel.org/netdev/20210120145203.1109140-1-razor@blackwall.org/>`_ 21375ceac88SHangbin Liu 21475ceac88SHangbin LiuThe explicit host tracking enables the device to keep track of each 21575ceac88SHangbin Liuindividual host that is joined to a particular group or channel. The main 21675ceac88SHangbin Liubenefit of the explicit host tracking in IGMP is to allow minimal leave 21775ceac88SHangbin Liulatencies when a host leaves a multicast group or channel. 21875ceac88SHangbin Liu 21975ceac88SHangbin LiuThe length of time between a host wanting to leave and a device stopping 22075ceac88SHangbin Liutraffic forwarding is called the IGMP leave latency. A device configured 22175ceac88SHangbin Liuwith IGMPv3 or MLDv2 and explicit tracking can immediately stop forwarding 22275ceac88SHangbin Liutraffic if the last host to request to receive traffic from the device 22375ceac88SHangbin Liuindicates that it no longer wants to receive traffic. The leave latency 22475ceac88SHangbin Liuis thus bound only by the packet transmission latencies in the multiaccess 22575ceac88SHangbin Liunetwork and the processing time in the device. 22675ceac88SHangbin Liu 22775ceac88SHangbin LiuOther multicast features 22875ceac88SHangbin Liu------------------------ 22975ceac88SHangbin Liu 23075ceac88SHangbin LiuThe Linux bridge also supports `per-VLAN multicast snooping 23175ceac88SHangbin Liu<https://lore.kernel.org/netdev/20210719170637.435541-1-razor@blackwall.org/>`_, 23275ceac88SHangbin Liuwhich is disabled by default but can be enabled. And `Multicast Router Discovery 23375ceac88SHangbin Liu<https://lore.kernel.org/netdev/20190121062628.2710-1-linus.luessing@c0d3.blue/>`_, 23475ceac88SHangbin Liuwhich help identify the location of multicast routers. 23575ceac88SHangbin Liu 2363c37f17dSHangbin LiuSwitchdev 2373c37f17dSHangbin Liu========= 2383c37f17dSHangbin Liu 2393c37f17dSHangbin LiuLinux Bridge Switchdev is a feature in the Linux kernel that extends the 2403c37f17dSHangbin Liucapabilities of the traditional Linux bridge to work more efficiently with 2413c37f17dSHangbin Liuhardware switches that support switchdev. With Linux Bridge Switchdev, certain 2423c37f17dSHangbin Liunetworking functions like forwarding, filtering, and learning of Ethernet 2433c37f17dSHangbin Liuframes can be offloaded to a hardware switch. This offloading reduces the 2443c37f17dSHangbin Liuburden on the Linux kernel and CPU, leading to improved network performance 2453c37f17dSHangbin Liuand lower latency. 2463c37f17dSHangbin Liu 2473c37f17dSHangbin LiuTo use Linux Bridge Switchdev, you need hardware switches that support the 2483c37f17dSHangbin Liuswitchdev interface. This means that the switch hardware needs to have the 2493c37f17dSHangbin Liunecessary drivers and functionality to work in conjunction with the Linux 2503c37f17dSHangbin Liukernel. 2513c37f17dSHangbin Liu 2523c37f17dSHangbin LiuPlease see the :ref:`switchdev` document for more details. 2533c37f17dSHangbin Liu 2541b1a4c7eSHangbin LiuNetfilter 2551b1a4c7eSHangbin Liu========= 2561b1a4c7eSHangbin Liu 2571b1a4c7eSHangbin LiuThe bridge netfilter module is a legacy feature that allows to filter bridged 2581b1a4c7eSHangbin Liupackets with iptables and ip6tables. Its use is discouraged. Users should 2591b1a4c7eSHangbin Liuconsider using nftables for packet filtering. 2601b1a4c7eSHangbin Liu 2611b1a4c7eSHangbin LiuThe older ebtables tool is more feature-limited compared to nftables, but 2621b1a4c7eSHangbin Liujust like nftables it doesn't need this module either to function. 2631b1a4c7eSHangbin Liu 2641b1a4c7eSHangbin LiuThe br_netfilter module intercepts packets entering the bridge, performs 2651b1a4c7eSHangbin Liuminimal sanity tests on ipv4 and ipv6 packets and then pretends that 2661b1a4c7eSHangbin Liuthese packets are being routed, not bridged. br_netfilter then calls 2671b1a4c7eSHangbin Liuthe ip and ipv6 netfilter hooks from the bridge layer, i.e. ip(6)tables 2681b1a4c7eSHangbin Liurulesets will also see these packets. 2691b1a4c7eSHangbin Liu 2701b1a4c7eSHangbin Liubr_netfilter is also the reason for the iptables *physdev* match: 2711b1a4c7eSHangbin LiuThis match is the only way to reliably tell routed and bridged packets 2721b1a4c7eSHangbin Liuapart in an iptables ruleset. 2731b1a4c7eSHangbin Liu 2741b1a4c7eSHangbin LiuNote that ebtables and nftables will work fine without the br_netfilter module. 2751b1a4c7eSHangbin Liuiptables/ip6tables/arptables do not work for bridged traffic because they 2761b1a4c7eSHangbin Liuplug in the routing stack. nftables rules in ip/ip6/inet/arp families won't 2771b1a4c7eSHangbin Liusee traffic that is forwarded by a bridge either, but that's very much how it 2781b1a4c7eSHangbin Liushould be. 2791b1a4c7eSHangbin Liu 2801b1a4c7eSHangbin LiuHistorically the feature set of ebtables was very limited (it still is), 2811b1a4c7eSHangbin Liuthis module was added to pretend packets are routed and invoke the ipv4/ipv6 2821b1a4c7eSHangbin Liunetfilter hooks from the bridge so users had access to the more feature-rich 2831b1a4c7eSHangbin Liuiptables matching capabilities (including conntrack). nftables doesn't have 2841b1a4c7eSHangbin Liuthis limitation, pretty much all features work regardless of the protocol family. 2851b1a4c7eSHangbin Liu 2861b1a4c7eSHangbin LiuSo, br_netfilter is only needed if users, for some reason, need to use 2871b1a4c7eSHangbin Liuip(6)tables to filter packets forwarded by the bridge, or NAT bridged 2881b1a4c7eSHangbin Liutraffic. For pure link layer filtering, this module isn't needed. 2891b1a4c7eSHangbin Liu 290d2afc2cdSHangbin LiuOther Features 291d2afc2cdSHangbin Liu============== 292d2afc2cdSHangbin Liu 293d2afc2cdSHangbin LiuThe Linux bridge also supports `IEEE 802.11 Proxy ARP 294d2afc2cdSHangbin Liu<https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=958501163ddd6ea22a98f94fa0e7ce6d4734e5c4>`_, 295d2afc2cdSHangbin Liu`Media Redundancy Protocol (MRP) 296d2afc2cdSHangbin Liu<https://lore.kernel.org/netdev/20200426132208.3232-1-horatiu.vultur@microchip.com/>`_, 297d2afc2cdSHangbin Liu`Media Redundancy Protocol (MRP) LC mode 298d2afc2cdSHangbin Liu<https://lore.kernel.org/r/20201124082525.273820-1-horatiu.vultur@microchip.com>`_, 299d2afc2cdSHangbin Liu`IEEE 802.1X port authentication 300d2afc2cdSHangbin Liu<https://lore.kernel.org/netdev/20220218155148.2329797-1-schultz.hans+netdev@gmail.com/>`_, 301d2afc2cdSHangbin Liuand `MAC Authentication Bypass (MAB) 302d2afc2cdSHangbin Liu<https://lore.kernel.org/netdev/20221101193922.2125323-2-idosch@nvidia.com/>`_. 303d2afc2cdSHangbin Liu 304e8a4195dSHangbin LiuFAQ 305e8a4195dSHangbin Liu=== 306e8a4195dSHangbin Liu 307e8a4195dSHangbin LiuWhat does a bridge do? 308e8a4195dSHangbin Liu---------------------- 309e8a4195dSHangbin Liu 310e8a4195dSHangbin LiuA bridge transparently forwards traffic between multiple network interfaces. 311e8a4195dSHangbin LiuIn plain English this means that a bridge connects two or more physical 312e8a4195dSHangbin LiuEthernet networks, to form one larger (logical) Ethernet network. 313e8a4195dSHangbin Liu 314e8a4195dSHangbin LiuIs it L3 protocol independent? 315e8a4195dSHangbin Liu------------------------------ 316e8a4195dSHangbin Liu 317e8a4195dSHangbin LiuYes. The bridge sees all frames, but it *uses* only L2 headers/information. 318e8a4195dSHangbin LiuAs such, the bridging functionality is protocol independent, and there should 319e8a4195dSHangbin Liube no trouble forwarding IPX, NetBEUI, IP, IPv6, etc. 320e8a4195dSHangbin Liu 321e8a4195dSHangbin LiuContact Info 322e8a4195dSHangbin Liu============ 323e8a4195dSHangbin Liu 324e8a4195dSHangbin LiuThe code is currently maintained by Roopa Prabhu <roopa@nvidia.com> and 325e8a4195dSHangbin LiuNikolay Aleksandrov <razor@blackwall.org>. Bridge bugs and enhancements 326e8a4195dSHangbin Liuare discussed on the linux-netdev mailing list netdev@vger.kernel.org and 327*27103dddSKonstantin Ryabitsevbridge@lists.linux.dev. 328e8a4195dSHangbin Liu 329e8a4195dSHangbin LiuThe list is open to anyone interested: http://vger.kernel.org/vger-lists.html#netdev 330e8a4195dSHangbin Liu 331e8a4195dSHangbin LiuExternal Links 332e8a4195dSHangbin Liu============== 333e8a4195dSHangbin Liu 334e8a4195dSHangbin LiuThe old Documentation for Linux bridging is on: 335aee2770dSIvan Vecerahttps://wiki.linuxfoundation.org/networking/bridge 336