lkml.org 
[lkml]   [2020]   [Jul]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH net-next 00/12] bridge: mrp: Add support for interconnect ring
    Date
    This patch series extends existing MRP to add support for interconnect ring.  An
    interconnect ring is a ring that connects 2 rings. In this way is possible to
    connect multiple rings. Each interconnect ring is form of 4 nodes, in which 3
    have the role MIC(Media Redundancy Interconnect Client) and one has the role
    MIM(Media Redundancy Interconnect Manager). All these nodes need to have the
    same ID and the ID needs to be unique between multiple interconnect rings. And 2
    nodes needs to be part of one ring and the other 2 nodes needs to be part of the
    other ring that is connected.

    +---------+
    | |
    +----------| MRM |---------------+
    | | | |
    | +---------+ |
    | |
    | |
    | |
    +--------------+ +-----------------+
    | | | |
    | MRC/MIC |------------------| MRC/MIM |
    | | | |
    +--------------+ +-----------------+
    | |
    |Interconnect port |Interconnect port
    | |
    | |
    +--------------+ +-----------------+
    | | | |
    | MRC/MIC |----------------- | MRC/MIC |
    | | | |
    +--------------+ +-----------------+
    | |
    | |
    | +---------+ |
    | | | |
    +----------| MRM |----------------+
    | |
    +---------+

    Each node in a ring needs to have one of the following ring roles, MRM or MRC.
    And it can also have an interconnect role like MIM or MIC if it is part of an
    interconnect ring. In the figure above the MRM doesn't have any interconnect
    role but the MRC from the top ring have the interconnect roles MIC respectively
    MIM. Therefore it is not possible for a node to have only an interconnect role.

    There are 2 ways for interconnect ring to detect when is open or closed:
    1. To use CCM frames on the interconnect port to detect when the interconnect
    link goes down/up. This mode is called LC-mode.
    2. To send InTest frames on all 3 ports(2 ring ports and 1 interconnect port)
    and detect when these frames are received back. This mode is called RC-mode.

    This patch series adds support only for RC-mode. Where MIM sends InTest frames
    on all 3 ports and detects when it receives back the InTest. When it receives
    the InTest it means that the ring is closed so it would set the interconnect
    port in blocking state. If it stops receiving the InTest frames then it would
    set the port in forwarding state and it would send InTopo frames. These InTopo
    frames will be received by MRM nodes and process them. And then the MRM will
    send Topo frames in the rings so each client will clear its FDB.

    Horatiu Vultur (12):
    switchdev: mrp: Extend switchdev API for MRP Interconnect
    bridge: uapi: mrp: Extend MRP attributes for MRP interconnect
    bridge: mrp: Extend bridge interface
    bridge: mrp: Extend br_mrp for MRP interconnect
    bridge: mrp: Rename br_mrp_port_open to br_mrp_ring_port_open
    bridge: mrp: Add br_mrp_in_port_open function
    bridge: switchdev: mrp: Extend MRP API for switchdev for MRP
    Interconnect
    bridge: mrp: Implement the MRP Interconnect API
    bridge: mrp: Extend MRP netlink interface for configuring MRP
    interconnect
    bridge: uapi: mrp: Extend MRP_INFO attributes for interconnect status
    bridge: mrp: Extend br_mrp_fill_info
    net: bridge: Add port attribute IFLA_BRPORT_MRP_IN_OPEN

    include/linux/if_bridge.h | 1 +
    include/net/switchdev.h | 38 +++
    include/uapi/linux/if_bridge.h | 58 ++++
    include/uapi/linux/if_link.h | 1 +
    include/uapi/linux/mrp_bridge.h | 38 +++
    net/bridge/br_mrp.c | 531 +++++++++++++++++++++++++++--
    net/bridge/br_mrp_netlink.c | 182 +++++++++-
    net/bridge/br_mrp_switchdev.c | 62 ++++
    net/bridge/br_netlink.c | 3 +
    net/bridge/br_private_mrp.h | 27 +-
    tools/include/uapi/linux/if_link.h | 1 +
    11 files changed, 906 insertions(+), 36 deletions(-)

    --
    2.27.0

    \
     
     \ /
      Last update: 2020-07-06 11:29    [W:3.858 / U:1.292 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site