Implement a user configurable global parameter for T1 route-target.
In existing implementation, contrail uses hard coded route target in the form of :7999999 for 2 byte asn and :7999 for 4 byte asn. This approach is not flexible because customer can configure an arbitrary route-target for this purpose. Customer should be able to configure a global route target which should be used for all VNs.
Here are various steps of proposal:
- Add a new property to global-systems-config which would indicate number in the route target. It's default value would be 7999999. Whenever customer configures this value, it should be verified by both UI and Api server to make sure that it fits in the range based on existing global asn value.
- UI should be modified to provide configurability for this field.
- Control node should use this newly added field as ESI rtarget index whenever defined and 7999999 otherwise. In addition, control node should reset all the existing bgp connections and change all corresponding route targets whenever this global index is changed.
- Fabric should also be able to ingest this field and use it to configure route targets on connected devices. In addition, fabric should be able to handle change in this field similar to control node.
None
None
Changes are required in many modules. Here is the breakup of work for different modules.
A new property evpn-type1-rtarget-number will be added to global-systems-config in schema. This field can be upto 4 bytes wide. Following is the proposed change in schema:
''' diff --git a/schema/vnc_cfg.xsd b/schema/vnc_cfg.xsd index a336c52..209eef1 100644 --- a/schema/vnc_cfg.xsd +++ b/schema/vnc_cfg.xsd @@ -1018,6 +1018,10 @@ targetNamespace="http://www.contrailsystems.com/2012/VNC-CONFIG/0">
+<xsd:element name="evpn-type1-rtarget-number" type="xsd:integer" required='optional' default='7999999'/> +<!--#IFMAP-SEMANTICS-IDL
-
Property('evpn-type1-rtarget-number', 'global-system-config', 'optional', 'CRUD',
-
'Index in Global Route Target for EVPN Type1 routes.') -->
<xsd:element name="config-version" type="xsd:string"/>