lkml.org 
[lkml]   [2020]   [Oct]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[net-next v2 00/11] net: bridge: cfm: Add support for Connectivity Fault Management(CFM)
    Date
    Connectivity Fault Management (CFM) is defined in 802.1Q section 12.14.

    Connectivity Fault Management (CFM) comprises capabilities for detecting, verifying,
    and isolating connectivity failures in Virtual Bridged Networks.
    These capabilities can be used in networks operated by multiple independent organizations,
    each with restricted management access to each other’s equipment.

    CFM functions are partitioned as follows:
    — Path discovery
    — Fault detection
    — Fault verification and isolation
    — Fault notification
    — Fault recovery

    The primary CFM protocol shims are called Maintenance Points (MPs).
    A MP can be either a MEP or a MHF.
    The MEP:
    -It is the Maintenance association End Point
    described in 802.1Q section 19.2.
    -It is created on a specific level (1-7) and is assuring
    that no CFM frames are passing through this MEP on lower levels.
    -It initiates and terminates/validates CFM frames on its level.
    -It can only exist on a port that is related to a bridge.
    The MHF:
    -It is the Maintenance Domain Intermediate Point
    (MIP) Half Function (MHF) described in 802.1Q section 19.3.
    -It is created on a specific level (1-7).
    -It is extracting/injecting certain CFM frame on this level.
    -It can only exist on a port that is related to a bridge.
    -Currently not supported.

    There are defined the following CFM protocol functions:
    -Continuity Check
    -Loopback. Currently not supported.
    -Linktrace. Currently not supported.

    This CFM component supports create/delete of MEP instances and configuration of
    the different CFM protocols. Also status information can be fetched and delivered
    through notification due to defect status change.

    The CFM component is trying to offload CFM functionality to HW by calling the
    switchdev interface.

    The user interacts with CFM using the 'cfm' user space client program,
    the client talks with the kernel using netlink. The kernel will try to
    offload the requests to the HW via switchdev API (not implemented yet).

    Any notification emitted by CFM from the kernel can be monitored in user space
    by starting 'cfm_server' program.

    Currently this 'cfm' and 'cfm_server' programs are standalone placed in a cfm
    repository https://github.com/microchip-ung/cfm but it is considered to integrate
    this into 'iproute2'.

    v1 -> v2
    Added the CFM switchdev interface and also added utilization by calling the
    interface from the kernel CFM implementation trying to offload CFM functionality
    to HW. This offload (CFM driver) is currently not implemented.

    Corrections based on RCF comments:
    -The single CFM kernel implementation Patch is broken up into three patches.
    -Changed the list of MEP instances from list_head to hlist_head.
    -Removed unnecessary RCU list traversing.
    -Solved RCU unlocking problem.
    -Removed unnecessary comments.
    -Added ASSERT_RTNL() where required.
    -Shaping up on error messages.
    -Correction NETLINK br_fill_ifinfo() to be able to handle 'filter_mask'
    with multiple flags asserted.

    Reviewed-by: Horatiu Vultur <horatiu.vultur@microchip.com>
    Signed-off-by: Henrik Bjoernlund <henrik.bjoernlund@microchip.com>

    Henrik Bjoernlund (11):
    net: bridge: extend the process of special frames
    bridge: cfm: Add BRIDGE_CFM to Kconfig.
    bridge: uapi: cfm: Added EtherType used by the CFM protocol.
    bridge: cfm: Kernel space implementation of CFM.
    bridge: cfm: Kernel space implementation of CFM.
    bridge: cfm: Kernel space implementation of CFM.
    bridge: cfm: Netlink Interface.
    bridge: cfm: Netlink Notifications.
    bridge: cfm: Bridge port remove.
    bridge: switchdev: cfm: switchdev interface implementation
    bridge: cfm: Added CFM switchdev utilization.

    include/linux/if_bridge.h | 13 +
    include/net/switchdev.h | 115 ++++
    include/uapi/linux/cfm_bridge.h | 70 ++
    include/uapi/linux/if_bridge.h | 125 ++++
    include/uapi/linux/if_ether.h | 1 +
    include/uapi/linux/rtnetlink.h | 2 +
    net/bridge/Kconfig | 11 +
    net/bridge/Makefile | 2 +
    net/bridge/br_cfm.c | 1092 +++++++++++++++++++++++++++++++
    net/bridge/br_cfm_netlink.c | 728 +++++++++++++++++++++
    net/bridge/br_cfm_switchdev.c | 203 ++++++
    net/bridge/br_device.c | 4 +
    net/bridge/br_if.c | 1 +
    net/bridge/br_input.c | 31 +-
    net/bridge/br_mrp.c | 19 +-
    net/bridge/br_netlink.c | 138 +++-
    net/bridge/br_private.h | 76 ++-
    net/bridge/br_private_cfm.h | 208 ++++++
    net/switchdev/switchdev.c | 54 ++
    19 files changed, 2858 insertions(+), 35 deletions(-)
    create mode 100644 include/uapi/linux/cfm_bridge.h
    create mode 100644 net/bridge/br_cfm.c
    create mode 100644 net/bridge/br_cfm_netlink.c
    create mode 100644 net/bridge/br_cfm_switchdev.c
    create mode 100644 net/bridge/br_private_cfm.h

    --
    2.28.0

    \
     
     \ /
      Last update: 2020-10-01 12:33    [W:4.122 / U:0.140 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site