CFM CCM (cfm_ccm)
- Layer: L2 (data link)
- Header: variable length
- Notes: PTP / ESMC / CFM / R-APS / 802.3ah OAM (P2)
Reached from
| Lower layer | Selector | Value |
|---|---|---|
ethernet2 | ethertype | 35074 (0x8902) |
dot1q | ethertype | 35074 (0x8902) |
dot1ad | ethertype | 35074 (0x8902) |
cfm | opcode | 1 (0x01) (re-decodes this layer) |
Fields
| Field | Type | Default | Auto | Description |
|---|---|---|---|---|
md_level | uint(3) | 0 | Maintenance domain / MEG level (0-7). | |
version | uint(5) | 0 | CFM version (0; 1 for R-APS of G.8032v2). | |
opcode | enum(8) | 1 (ccm) | OpCode: 1 CCM, 2 LBR, 3 LBM, 4 LTR, 5 LTM, 33 AIS, 35 LCK, 37 TST, 39 Linear APS, 40 R-APS, 41 MCC, 42 LMR, 43 LMM, 45 1DM, 46 DMR, 47 DMM, 52 CSF, 53 1SL, 54 SLR, 55 SLM … | |
rdi | uint(1) | 0 | RDI: remote defect indication. | |
flags_reserved | uint(4) | 0 | ||
period | enum(3) | 4 (s_1) | Transmission period: 1 = 3.33 ms, 2 = 10 ms, 3 = 100 ms, 4 = 1 s, 5 = 10 s, 6 = 1 min, 7 = 10 min. | |
first_tlv_offset | uint(8) | 70 | Offset of the first TLV from the end of this field (constant for each OpCode). | |
sequence_number | uint(32) | 0 | Sequence number. | |
mep_id_reserved | uint(3) | 0 | ||
mep_id | uint(13) | 1 | MEP ID (1-8191). | |
maid | bytes(48) | 01 20 0d 57 50 47 30 30 31 4d 45 47 30 30 30 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | MAID / MEG ID, 48 octets: MD name format and name, short MA name format, length and name, zero padded (Y.1731: no MD name, format 32 ICC-based, length 13). | |
tx_fcf | uint(32) | 0 | Frame counter (loss measurement). | |
rx_fcb | uint(32) | 0 | Frame counter (loss measurement). | |
tx_fcb | uint(32) | 0 | Frame counter (loss measurement). | |
reserved | uint(32) | 0 | ||
tlvs | tlv — up to and including the first item of type 0, or the end of the PDU | 1 items | TLVs (8-bit type, 16-bit length of the value, Auto): Sender ID, Port Status, Data, Interface Status, Reply Ingress / Egress, LTM / LTR Egress Identifier, Organization-Specific, Test, closed by the End TLV (type 0). |
opcode
| Value | Name |
|---|---|
| 1 (0x01) | ccm |
| 2 (0x02) | lbr |
| 3 (0x03) | lbm |
| 4 (0x04) | ltr |
| 5 (0x05) | ltm |
| 33 (0x21) | ais |
| 35 (0x23) | lck |
| 37 (0x25) | tst |
| 39 (0x27) | linear_aps |
| 40 (0x28) | ring_aps |
| 41 (0x29) | mcc |
| 42 (0x2a) | lmr |
| 43 (0x2b) | lmm |
| 45 (0x2d) | one_dm |
| 46 (0x2e) | dmr |
| 47 (0x2f) | dmm |
| 48 (0x30) | exr |
| 49 (0x31) | exm |
| 50 (0x32) | vsr |
| 51 (0x33) | vsm |
| 52 (0x34) | csf |
| 53 (0x35) | one_sl |
| 54 (0x36) | slr |
| 55 (0x37) | slm |
period
| Value | Name |
|---|---|
| 0 | invalid |
| 1 | ms_3_33 |
| 2 | ms_10 |
| 3 | ms_100 |
| 4 | s_1 |
| 5 | s_10 |
| 6 | min_1 |
| 7 | min_10 |
tlvs
- Type 8 bits, length 16 bits.
- The length counts the value only.
- Unknown types are kept as raw value octets.
| Type | Name | Value fields | Description |
|---|---|---|---|
| 0 (0x00) | end | (type only, no length or value) | |
| 1 (0x01) | sender_id | chassis_id_length, chassis_id_subtype, chassis_id, management_address | |
| 2 (0x02) | port_status | port_status | |
| 3 (0x03) | data_tlv | value | |
| 4 (0x04) | interface_status | interface_status | |
| 5 (0x05) | reply_ingress | ingress_action, ingress_mac, ingress_port_id | |
| 6 (0x06) | reply_egress | egress_action, egress_mac, egress_port_id | |
| 7 (0x07) | ltm_egress_identifier | egress_identifier | |
| 8 (0x08) | ltr_egress_identifier | last_egress_identifier, next_egress_identifier | |
| 31 (0x1f) | organization_specific | oui, subtype, value | |
| 32 (0x20) | test | pattern_type, test_pattern |
tlvs › sender_id
| Field | Type | Default | Auto | Description |
|---|---|---|---|---|
chassis_id_length | uint(8) | Size of chassis_id in octets | ||
chassis_id_subtype | enum(8) | 4 (mac_address) | ||
chassis_id | bytes — chassis_id_length octets | 02 00 00 00 00 01 | ||
management_address | bytes — rest of the PDU |
tlvs › sender_id › chassis_id_subtype
| Value | Name |
|---|---|
| 1 (0x01) | chassis_component |
| 2 (0x02) | interface_alias |
| 3 (0x03) | port_component |
| 4 (0x04) | mac_address |
| 5 (0x05) | network_address |
| 6 (0x06) | interface_name |
| 7 (0x07) | local |
tlvs › port_status
| Field | Type | Default | Auto | Description |
|---|---|---|---|---|
port_status | enum(8) | 2 (up) |
tlvs › port_status › port_status
| Value | Name |
|---|---|
| 1 (0x01) | blocked |
| 2 (0x02) | up |
tlvs › data_tlv
| Field | Type | Default | Auto | Description |
|---|---|---|---|---|
value | bytes — rest of the PDU |
tlvs › interface_status
| Field | Type | Default | Auto | Description |
|---|---|---|---|---|
interface_status | enum(8) | 1 (up) |
tlvs › interface_status › interface_status
| Value | Name |
|---|---|
| 1 (0x01) | up |
| 2 (0x02) | down |
| 3 (0x03) | testing |
| 4 (0x04) | unknown |
| 5 (0x05) | dormant |
| 6 (0x06) | not_present |
| 7 (0x07) | lower_layer_down |
tlvs › reply_ingress
| Field | Type | Default | Auto | Description |
|---|---|---|---|---|
ingress_action | enum(8) | 1 (ok) | ||
ingress_mac | mac | 02:00:00:00:00:02 | ||
ingress_port_id | bytes — rest of the PDU |
tlvs › reply_ingress › ingress_action
| Value | Name |
|---|---|
| 1 (0x01) | ok |
| 2 (0x02) | down |
| 3 (0x03) | blocked |
| 4 (0x04) | vid |
tlvs › reply_egress
| Field | Type | Default | Auto | Description |
|---|---|---|---|---|
egress_action | enum(8) | 1 (ok) | ||
egress_mac | mac | 02:00:00:00:00:02 | ||
egress_port_id | bytes — rest of the PDU |
tlvs › reply_egress › egress_action
| Value | Name |
|---|---|
| 1 (0x01) | ok |
| 2 (0x02) | down |
| 3 (0x03) | blocked |
| 4 (0x04) | vid |
tlvs › ltm_egress_identifier
| Field | Type | Default | Auto | Description |
|---|---|---|---|---|
egress_identifier | uint(64) | 2199023255553 |
tlvs › ltr_egress_identifier
| Field | Type | Default | Auto | Description |
|---|---|---|---|---|
last_egress_identifier | uint(64) | 2199023255553 | ||
next_egress_identifier | uint(64) | 2199023255554 |
tlvs › organization_specific
| Field | Type | Default | Auto | Description |
|---|---|---|---|---|
oui | uint(24) | |||
subtype | uint(8) | |||
value | bytes — rest of the PDU |
tlvs › test
| Field | Type | Default | Auto | Description |
|---|---|---|---|---|
pattern_type | enum(8) | |||
test_pattern | bytes — rest of the PDU |
tlvs › test › pattern_type
| Value | Name |
|---|---|
| 0 (0x00) | null_without_crc |
| 1 (0x01) | null_with_crc |
| 2 (0x02) | prbs_without_crc |
| 3 (0x03) | prbs_with_crc |
Constraints
| Level | Rule |
|---|---|
| warning | first_tlv_offset = 70 |
Sample templates
- cfm-ccm —
templates/protocols/oam/cfm-ccm.wpg.yaml