Configuring CFM

Connectivity Fault Management (CFM) is an IEEE standard, 802.1ag, which specifies protocols, procedures, and managed objects to support transport fault management. CFM is used for detecting link connectivity fault, confirming the fault and locating the fault in the network.



 

The standard, 802.1ag defines:

  • Maintenance domains (MD), their constituent maintenance points (MIP, MEP), and the managed objects (MA) required to create and administer them.
  • The relationship between maintenance domains and the services offered by VLAN-aware bridges and provider bridges.
  • The description of protocols and procedures used by maintenance points to maintain and diagnose connectivity faults within a maintenance domain.
  • Means for future expansion of the capabilities of maintenance points and their protocols.

As illustrated in the above figure, each domain (operator, provider, customer) is allocated. Maintenance association Intermediate endPoint (MIP) and Maintenance domain End Point (MEP) essentially define the domain boundaries and the intermediate elements. Effectively, these end-points define a fault-domain which aids in building a flexible fault-management framework. Network and Service OAM shown above, are typically used to represent faults to a network operator and a service consumer.

 

IEEE 802.1ag Ethernet CFM (Connectivity Fault Management) protocols comprise three protocols that work together to help administrators debug Ethernet networks.They are:

 

Continuity Check Protocol (CCP) - Heartbeat messages for CFM. The Continuity Check Message (CCM) provides a means to detect connectivity failures in an MA. CCMs are multicast messages. CCMs are confined to a domain (MD). These messages are unidirectional and do not solicit a response. Each MEP transmits a periodic multicast Continuity Check Message inward towards the other MEPs.

 

Link Trace (LT) - Link Trace messages otherwise known as Mac Trace Route, are Multicast frames that a MEP transmits to track the path (hop-by-hop) to a destination MEP, which is similar in concept to User Datagram Protocol(UDP) Trace Route. Each receiving MEP sends a Trace Route Reply directly to the Originating MEP, and regenerates the Trace Route Message.

 

Loop-back (LB) - Loop-back messages otherwise known as MAC ping are Unicast frames that a MEP transmits, they are similar in concept to an Internet Control Message Protocol (ICMP) Echo (Ping) messages, sending Loopback to successive MIP's can determine the location of a fault. Sending a high volume of Loopback Messages can test bandwidth, reliability, or jitter of a service, which is similar to flood ping. An MEP can send a Loopback to any MEP or MIP in the service. Unlike CCMs, Loop back messages are administratively initiated and stopped.

Monitor connectivity to a remote maintenance point on ge-1/1/1

Set the MPID of CFM:

admin@PicOS-OVS$ ovs−vsctl set Interface ge-1/1/1 cfm_mpid=2333 

A Maintenance Point ID (MPID) uniquely identifies each endpoint within a Maintenance Association. According to the 802.1ag specification, MPIDs can only range between [1, 8191].

Set extended mode:

admin@PicOS-OVS$ovs−vsctl set Interface ge-1/1/1 other_config:cfm_extended=true

Extended mode increases the accuracy of the cfm_interval configuration parameter by breaking wire compatibility with 802.1ag compliant implementations.  An extended mode allows eight byte MPIDs.

Set demand mode:

admin@PicOS-OVS$ovs−vsctl set Interface ge-1/1/1 other_config:cfm_demand=true

When true, and cfm_extended is true, the CFM module operates in demand mode. By default it is set to false. When in demand mode, traffic received on the Interface is used to indicate liveness. CCMs are still transmitted and received. At least one CCM must be received every 100 * cfm_interval amount of time. Otherwise, even if traffic is received, the CFM module will trigger the connectivity fault. Demand mode disables itself when there are multiple remote maintenance points.

Set the requested transmission interval:

admin@PicOS-OVS$ovs−vsctl set Interface ge-1/1/1 other_config:cfm_interval=10000

In standard mode supports intervals of 3, 10, 100, 1000, 10000,60000, or 600000 ms are supported. Extended mode supports any interval up to 65535 ms and default is 1000 ms. However, we do not recommend intervals less than 100 ms.

Set CCM VLAN tag:

admin@PicOS-OVS$ovs−vsctl set Interface ge-1/1/1 other_config:cfm_ccm_vlan=2000
admin@PicOS-OVS$ovs−vsctl set Interface ge-1/1/1 other_config:cfm_ccm_vlan=random

When set, the CFM module will apply a VLAN tag to all CCMs it generates with the given value.

Set CCM Priority:

admin@PicOS-OVS$ovs−vsctl set Interface ge-1/1/1 other_config:cfm_ccm_pcp=7

When set, the CFM module will apply a VLAN tag to all CCM's, it generates with the given PCP value, the VLAN ID of the tag is governed by the value of "cfm_ccm_vlan". If "cfm_ccm_vlan" is unset, a VLAN ID of zero is used.

 CFM Example

Step 1:  Basic configuration

DUT1:

admin@PicOS-OVS$ovs-vsctl add-br br0 -- set bridge br0 datapath_type=pica8
admin@PicOS-OVS$ovs-vsctl add-port br0 ge-1/1/1 vlan_mode=trunk tag=1  -- set Interface ge-1/1/1 type=pica8
admin@PicOS-OVS$ovs-vsctl add-port br0 ge-1/1/2 vlan_mode=trunk tag=1  -- set Interface ge-1/1/2 type=pica8

DUT2:

admin@PicOS-OVS$ovs-vsctl add-br br0 -- set bridge br0 datapath_type=pica8
admin@PicOS-OVS$ovs-vsctl add-port br0 ge-1/1/1 vlan_mode=trunk tag=1  -- set Interface ge-1/1/1 type=pica8
admin@PicOS-OVS$ovs-vsctl add-port br0 ge-1/1/2 vlan_mode=trunk tag=1  -- set Interface ge-1/1/2 type=pica8

Step 2:  Configure cfm:

DUT1:

admin@PicOS-OVS$ovs-vsctl set interface ge-1/1/2 cfm-mpid=8999
admin@PicOS-OVS$ovs-vsctl set interface ge-1/1/2 other_config:cfm_extended=true

DUT2:

admin@PicOS-OVS$ovs-vsctl set interface ge-1/1/1 cfm-mpid=9000
admin@PicOS-OVS$ovs-vsctl set interface ge-1/1/1 other_config:cfm_extended=true

Step 3:  Check packets

DUT1:

Check list interface:

admin@PicOS-OVS$ovs-vsctl list interface ge-1/1/2
_uuid : 94942d57-d9a8-4030-ad3b-483dadbd7926
admin_state : up
bfd : {}
bfd_status : {}
cfm_fault : false
cfm_fault_status : []
cfm_flap_count : 2
cfm_health : []
cfm_mpid : 8999
cfm_remote_mpids : [9000]
cfm_remote_opstate : up
duplex : full
external_ids : {}
ifindex : 13
ingress_policing_burst: 0
ingress_policing_rate: 0
lacp_current : []
link_resets : 0
link_speed : 1000000000
link_state : up
mac : []
mac_in_use : "00:e0:ec:25:2d:5e"
mtu : 9212
name : "ge-1/1/2"
ofport : 13
ofport_request : []
options : {}
other_config : {cfm_extended="true"}
statistics : {collisions=0, rx_bytes=3255, rx_crc_err=0, rx_dropped=28, rx_errors=0, rx_frame_err=0, rx_over_err=0, rx_packets=35, tx_bytes=1395, tx_dropped=0, tx_errors=0, tx_packets=15}
status : {}
type : "pica8"
wred_queues : {}

Check cfm/show:

admin@PicOS-OVS$ovs-appctl  cfm/show 
---- ge-1/1/2 ----
MPID 8999: extended
                average health: undefined
                opstate: up
                remote_opstate: up
                interval: 1000ms
                next CCM tx: 481ms
                next fault check: 973ms
Remote MPID 9000
                recv since check: true
                opstate: up
admin@PicOS-OVS$

Check hardware table:

admin@PicOS-OVS$ovs-appctl pica/dump-flows
#168 normal permanent priority=18000000,in_port=2,dl_dst=01:23:20:00:00:30,dl_type=0x8902, actions:userspace(pid=0,slow_path(cfm))
#167 normal permanent priority=0, actions:drop
Total 2 flows in HW.

DUT2:

Check list interface:

admin@PicOS-OVS$ovs-vsctl list interface ge-1/1/1
_uuid : 61bb8ef5-30f9-4855-8cfa-f1ee0bc5b154
admin_state : up
bfd : {}
bfd_status : {}
cfm_fault : false
cfm_fault_status : []
cfm_flap_count : 0
cfm_health : []
cfm_mpid : 9000
cfm_remote_mpids : [8999]
cfm_remote_opstate : up
duplex : full
external_ids : {}
ifindex : 11
ingress_policing_burst: 0
ingress_policing_rate: 0
lacp_current : []
link_resets : 0
link_speed : 1000000000
link_state : up
mac : []
mac_in_use : "08:9e:01:a8:00:49"
mtu : 9212
name : "ge-1/1/11"
ofport : 11
ofport_request : []
options : {}
other_config : {cfm_extended="true"}
statistics : {collisions=0, rx_bytes=1302, rx_crc_err=0, rx_dropped=8, rx_errors=0, rx_frame_err=0, rx_over_err=0, rx_packets=14, tx_bytes=558, tx_dropped=0, tx_errors=0, tx_packets=6}
status : {}
type : "pica8"
wred_queues : {}
admin@PicOS-OVS$

Check cfm/show:

admin@PicOS-OVS$ovs-appctl  cfm/show 
---- ge-1/1/1 ----
MPID 9000: extended
                average health: undefined
                opstate: up
                remote_opstate: up
                interval : 1000ms
                next CCM tx: 802ms
                next fault check: 1254ms
Remote MPID 8999
                recv since check: true
                opstate: up
admin@PicOS-OVS$

Check hardware table:

admin@PicOS-OVS$ovs-appctl pica/dump-flows
#168 normal permanent priority=18000000,in_port=1,dl_dst=01:23:20:00:00:30,dl_type=0x8902, actions:userspace(pid=0,slow_path(cfm))
#167 normal permanent priority=0, actions:drop
Total 2 flows in HW.

Standard mode, dl_mac is 01:80:c2:00:00:30; when extended mode,the dst mac is 01:23:20:00:00:30.

Configue cfm on port ge-1/1/13, if delete cfm

admin@PicOS-OVS$ovs-vsctl clear interface ge-1/1/13 cfm_mpid
admin@PicOS-OVS$ovs-vsctl remove interface ge-1/1/13 other_config cfm_interval="10000"
admin@PicOS-OVS$ovs-vsctl remove interface ge-1/1/13 other_config cfm_extended="true"
admin@PicOS-OVS$ovs-vsctl remove interface ge-1/1/13 other_config cfm_ccm_vlan=random

 

 


 

Copyright © 2024 Pica8 Inc. All Rights Reserved.