The Fabric Crossconnect service creates an L2 bridge between two given ports on the same device. For example, this service can be used on a SEBA pod to connect OLT devices to a BNG via the aggregation switch.
A fabric crossconnect entry is a tuple (deviceid
, vlanid
, port1
, port2
).
For more information, see VLAN Cross Connect
This service is composed of three models:
FabricCrossconnectService
global service-related parameters, such as the name of the service. There is currently no additional state here beyond the default XOS
Service
model.FabricCrossconnectServiceInstance
represents one half of a vlan crossconnect. Fields include the following:s-tag
the vlan_id that will be connectedswitch_datapath_id
switch id where the vlan crossconnect will be enactedsource_port
port number on the switchBNGPortMapping
represents the other half of a vlan crossconnect. Fields include the following:s_tag
the vlan_id that will be connected. In addition to specifying a single vlan_id, the keyword ANY
may be used, or a range (123-456
) may be used.switch_port
port number on the switchFabricCrossconnectServiceInstance
and BNGPortMapping
work together to create the vlan crossconnect tuple, linked by a common s-tag
.
Below is an example TOSCA recipe that creates a FabricCrossconnectServiceInstance
:
tosca_definitions_version: tosca_simple_yaml_1_0 imports: - custom_types/fabriccrossconnectservice.yaml - custom_types/fabriccrossconnectserviceinstance.yaml description: Create a FabricCrossconnectServiceInstance topology_template: node_templates: service#fabric-crossconnect: type: tosca.nodes.FabricCrossconnectService properties: name: fabric-crossconnect must-exist: true fcsi: type: tosca.nodes.FabricCrossconnectServiceInstance properties: name: "custom_vm_crossconnect" s_tag: 123 source_port: 3 switch_datapath_id: "of:0000000000000201" requirements: - owner: node: service#fabric-crossconnect relationship: tosca.relationships.BelongsToOne
Below is an example TOSCA recipe that creates a BNGPortMapping
for a single s-tag:
tosca_definitions_version: tosca_simple_yaml_1_0 imports: - custom_types/bngportmapping.yaml description: Create a bng port mapping topology_template: node_templates: bngmapping: type: tosca.nodes.BNGPortMapping properties: s_tag: "222" switch_port: 4
The western neighbor of the FabricCrossconnectService
is typically an access service such as VOLTService
. FabricCrossconnectServiceInstance
participates in the dataplane chain for a given subscriber.
FabricCrossConnectService
features a method acquire_service_instance(subscriber_service_instance)
that may be used as a helper for creating service instances. Given that many subscribers may map to a single s_tag
, it's often the case that a single FabricCrossconnectServiceInstance
is used by several subscribers. acquire_service_instance
does the following:
FabricCrossconnnectServiceInstance
already exists, and if so links it to the subscriber_service_instance.FabricCrossconnectServiceInstance
already exists, then a new one will be created and linked.When a FabricCrossconnectServiceInstance
is created, updated, or deleted, the synchronizer will make a REST API call to ONOS.
No specific processing is performed if a BNGPortMapping
is created, updated, or deleted, as the workflow is driven by FabricCrossconnectServiceInstance
. Responding to changes in BNGPortMapping
is future work. For now it is suggested that if you need to change one, afterward you touch any FabricCrossconnectServiceInstance
that may be affected, causing them to resynchronize.
When ONOS is restarted, FabricCrossconnectServiceInstance
objects will be dirtied and resynced.