| Device Configuration |
| ==================== |
| Each switch in Trellis requires a device config. |
| |
| .. code-block:: json |
| |
| { |
| "devices" : { |
| "of:0000000000000001" : { |
| "segmentrouting" : { |
| "ipv4NodeSid" : 101, |
| "ipv4Loopback" : "192.168.0.201", |
| "ipv6NodeSid" : 111, |
| "ipv6Loopback" : "2000::c0a8:0201", |
| "routerMac" : "00:00:00:00:02:01", |
| "isEdgeRouter" : true, |
| "adjacencySids" : [] |
| }, |
| "basic" : { |
| "name" : "Leaf-R1", |
| "driver" : "ovs-ofdpa" |
| } |
| } |
| } |
| } |
| |
| - ``of:0000000000000001``: DPID of the device. |
| |
| - ``ipv4NodeSid``: IPv4 node segment ID, which is used as an MPLS label in |
| forwarding IPv4 traffic. Can be arbitrary and should be globally unique. |
| |
| - ``ipv4Loopback``: IPv4 loopback address. Can be arbitrary, should be globally |
| unique and should not be part of the same subnet(s) defined on the data plane |
| ports (see port config). |
| |
| - ``ipv6NodeSid``: IPv6 node segment ID, which is used as an MPLS label in |
| forwarding IPv6 traffic. Can be arbitrary and should be globally unique. Only |
| required when using IPv6. |
| |
| - ``ipv6Loopback``: IPv6 loopback address. Can be arbitrary, should be globally |
| unique and should not be part of the same subnet(s) defined on the data plane |
| ports (see port config). Only required when using IPv6. |
| |
| - ``routerMac``: Router MAC address. Can be arbitrary and should be globally |
| unique. This MAC address will be used to reply the ARP request for the |
| loopback IP or the Interface IP that will be introduced later. (We recommend |
| using the MAC address of the device's management interface as the router |
| MAC.) |
| |
| - ``isEdgeRouter``: True for leaf switches. False for spine switches. |
| |
| - ``adjacencySids``: Deprecated. Just put an empty array for now. |
| |
| - ``name``: Name of the device. It is an arbitrary name to identify the device easily. |
| |
| - ``driver``: This tells ONOS which OpenFlow driver should be loaded for this |
| device. It overrides the driver selected by ONOS automatically when the |
| device connects. |
| |
| - When using OpenvSwitch, set this to ``ofdpa-ovs`` |
| |
| - When using hardware switches, set this to ``ofdpa3`` or eliminate |
| ``driver`` entirely as the correct driver configuration will be set |
| automatically by ONOS |
| |
| |
| Additional Device Configuration for Stratum Switches |
| ==================================================== |
| |
| When using Stratum switches, following **additional** configurations need |
| to be added to the ``basic`` section of device config. |
| |
| .. code-block:: json |
| |
| { |
| "devices" : { |
| "device:montara1" : { |
| "segmentrouting" : { |
| "...": "...", |
| }, |
| "basic" : { |
| "...": "...", |
| "managementAddress": "grpc://192.168.0.1:9339?device_id=1", |
| "driver": "stratum-tofino", |
| "pipeconf": "org.opencord.fabric.tofino.montara_sde_9_0_0" |
| } |
| } |
| } |
| } |
| |
| - ``managementAddress``: gRPC endpoint of the Stratum device and a numerical device ID. |
| The IP address can be replaced by domain name as well. |
| |
| - ``driver``: ``stratum-bmv2`` or ``stratum-tofino``, depending on which switch this is. |
| |
| - ``pipeconf``: A list of available pipeconfs can be dumped by running ``pipeconfs`` in ONOS CLI. |
| Select the pipeconf you would like to use for this device. |
| |
| |
| .. caution:: |
| We should avoid using reserved MPLS labels for ``ipv4NodeSid`` and |
| ``ipv6NodeSid``. Please check here for the reserved values: |
| http://www.iana.org/assignments/mpls-label-values/mpls-label-values.xhtml |
| |
| .. note:: |
| Most of the Trellis configurations support dynamic configuration updates. |
| Unfortunately, Trellis currently **do not support dynamic device |
| configuration updates**. You will have to restart the device when if |
| corresponding device configuration changes. |
| |
| Having said that, when introducing a completely new device in the network, |
| the device configurations pushed before the device's connection should |
| apply correctly. |