Known Issue - Potential Broadcast Storm

Current implementation will implicitly include the pair port (if configured) into the cross connect broadcast domain. When the same cross connect is configured on both switch of the same pair, it can potentially cause a broadcast storm if the network has a physical loop (i.e. the red dotted line shown in the following diagram). To make sure that doesn't happen, the physical loop must be broken (e.g. by taking down the crossed link; or taking down one of the router). The host will also receives duplicated packets in this case.

This issue will be addressed in a near future.

Known Issue - Customer Host Being Learnt

ONOS will learn the customer host if the customer start sending ARP/NDP traffic before cross connect configuration is uploaded and the flows are installed.
Segment routing does not push flows for those hosts since the VLAN / IP do not match the interface configuration so it should do no harm. After cross connect is set up, the switch will no longer send the ARP/NDP in cross connect VLAN to controller.

This issue will be addressed in a near future.

Introduction

VLAN cross connect creates a L2 bridge between two given ports on the same device. Once configured, every packets arriving at one of the port with specific VLAN tag will be sent to another port directly.
Current implementation only matches on the outermost VLAN tag. If the packet is double tagged, the S-tag will be matched and both the S-tag and C-tag will be persisted.

VLAN cross connect only works on the same device. If you are looking for transporting L2 traffic across devices, please refer to pseudo wire.

The pair port (if configured) will be added into the flood group implicitly. Users only need to specify two cross connect ports when installing a VLAN cross connect.

CLI

Get

To view a list of cross connects configured in the system through ONOS CLI:

sr-xconnect

Add

To add a new cross connects through ONOS CLI:

sr-xconnect-add <deviceId> <vlanId> <port1> <port2>

deviceId: device ID, e.g. of:0000000000000201
vlanId: VLAN ID, e.g. 94
port1: One end of the cross connect, e.g. 2
port2: Another end of the cross connect, e.g. 54

Remove

To remove an existing cross connects through ONOS CLI:

sr-xconnect-remove <deviceId> <vlanId>

deviceId: device ID, e.g. of:0000000000000201
vlanId: VLAN ID, e.g. 94

REST API

Get

To view a list of cross connects configured in the system through ONOS REST API:

curl -X GET --header 'Accept: application/json' 'http://<onos-ip>:8181/onos/segmentrouting/xconnect'

Add

To add a new cross connects through ONOS REST API:

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \ 
   "deviceId": "of:0000000000000201", \ 
   "vlanId": "94", \ 
   "ports": [ 1, 2 ] \ 
 }' 'http://<onos-ip>/onos/segmentrouting/xconnect'

deviceId: device ID, e.g. of:0000000000000201
vlanId: VLAN ID, e.g. 94
ports: endpoints of the cross connect, e.g. [1, 2]

Remove

To remove an existing cross connects through ONOS REST API:

curl -X DELETE --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{ \ 
   "deviceId": "of:0000000000000201", \ 
   "vlanId": "94" \ 
 }' 'http://<onos-ip>:8181/onos/segmentrouting/xconnect'

deviceId: device ID, e.g. of:0000000000000201
vlanId: VLAN ID, e.g. 94

 

Attachments:

xconnect-loop.png (image/png)