Open Ethernet Networking (OpEN) API Guide and Reference Manual  3.6.0.3
Dot1cb

The 802.1CB feature provides a mechanism to split a traffic stream into multiple duplicate streams. Each duplicate stream can take a different path through the network to the destination device and the packets are marked with a sequence number using the R-Tag field. At the destination device the switch examines the packet sequence number in the R-Tag field, accepts the first packet with a unique sequence number, and removes packets with duplicate sequence number. The intent of the 802.1CB feature is to avoid any packet loss when links or switches fail.

Dot1cb OpEN API

This document provides a brief description of the Dot1cb OpEN APIs. It provides the following services:

All 'Set' operations would affect the Switch behavior and configuration.

Example C Application dot1cb_example

Initialization

In the main function, the sample application initializes the OpEN API RPC service by calling openapiClientRegister() and waits for the RPC service in switchdrvr to start. A Client Handle is returned by openapiClientRegister() which is used while invoking the OpEN APIs. The application then exercises the associated OpEN APIs and logs informational and/or error messages on the console. The example application runs to its completion and exits.

dot1cb_example

dot1cb_example.c is a sample application that demonstrates the use of OpEN's Dot1cb APIs. dot1cb_example is started from the command line and can be used to exercise the various APIs by specifying arguments on the command line.

Sample Output

Dot1cb CLI/API Cross Reference

CLI Command OpEN API Reference
(Config)#
[no] dot1cb ipv4 <srcprefix>/<srcprefix-length> <dstprefix>/<dstprefix-length> [{initiator | transit} <flow-id>]
openapiDot1cbIpv4ClassifierAdd()
openapiDot1cbIpv4ClassifierDelete()
(Config)#
[no] dot1cb ipv6 <srcprefix>/<srcprefix-length> <dstprefix>/<dstprefix-length> [{initiator | transit} <flow-id>]
openapiDot1cbIpv6ClassifierAdd()
openapiDot1cbIpv6ClassifierDelete()
(Config)#
[no] dot1cb transit-flow <flow-id> {accept-window-size | age-time | hist-window-size} [{<accept-window-size> | <age-time> | <hist-window-size>}]
openapiDot1cbApiTransitFlowHistoryWindowSizeSet()
openapiDot1cbApiTransitFlowAcceptanceWindowSizeSet()
openapiDot1cbApiTransitFlowAgeTimeSet()
(Config)#
[no] dot1cb sa-mac-vlan-mode
openapiDot1cbSaModeSet()
(Interface-Config Mode)#
[no] dot1cb rtag-mode
openapiDot1cbRtagModeGet()
openapiDot1cbRtagModeSet()
(Priv-User Mode)#
show dot1cb summary
openapiDot1cbIpv4ClassifierCountGet()
openapiDot1cbIpv4ClassifierInHardwareGet()
openapiDot1cbIpv6ClassifierCountGet()
openapiDot1cbIpv6ClassifierInHardwareGet()
openapiDot1cbNumActiveTransitFlowsGet()
openapiDot1cbNumActiveInititatorFlowsGet()
openapiDot1cbSaModeGet()
openapiDot1cbNumMfdbClassifiersGet()
openapiDot1cbApiNumDot1cbVlansGet()
openapiDot1cbApiDot1cbEnabledVlanNextGet()
openapiDot1cbGlobalStatsGet()
(Priv-User Mode)#
show dot1cb ipv4
openapiDot1cbIpv4ClassifierGet()
openapiDot1cbIpv4ClassifierNextGet()
(Priv-User Mode)#
show dot1cb ipv6
openapiDot1cbIpv6ClassifierGet()
openapiDot1cbIpv6ClassifierNextGet()
(Priv-User Mode)#
show dot1cb rtag-interfaces
openapiDot1cbIntfNextGet()
(Priv-User Mode)#
show dot1cb initiator-flow {<flow-id> | all}
openapiDot1cbApiInitFlowGet()
openapiDot1cbApiInitFlowNextGet()
(Priv-User Mode)#
show dot1cb transit-flow {<flow-id> | all}
openapiDot1cbApiTransitFlowGet()
openapiDot1cbApiTransitFlowNextGet()
(Priv-User Mode)#
show dot1cb transit-flow-config {<flow-id> | all}
openapiDot1cbApiTransitFlowConfigGet()