Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dataplane VXLAN HLD #1764

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

VladimirKuk
Copy link

No description provided.

@venkatmahalingam
Copy link
Collaborator

Can we rename the title of this HLD to "static VXLAN HLD"?

### Requirements

* Static VXLAN Tunnel Configuration: Users should be able to manually specify VXLAN tunnel endpoints.
* VNI to VLAN Mapping: Users must be able to statically map VNIs to VLANs.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please reword as user/controller configured VLAN extension to remote VTEPs.

VNI to VLAN mapping exists today and is static.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

*VNI to VLAN mapping exists today and is static. - You are correct, we just keeping this requirement to make sure it is clear.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • VNI to VLAN mapping - This requirement was kept to make sure it is clear.

* VNI to VLAN Mapping: Users must be able to statically map VNIs to VLANs.
* L2 learning over local and remote VTEPs.
* L2 BUM traffic flooding over VNI.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is L3 fwding over static VXLANs supported ?

Copy link
Author

@VladimirKuk VladimirKuk Aug 1, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Static VXLAN as overlay L2 exists in SONiC. L3 was out of scope.

I'm not clear if L3 overlay can run with BGP without L2 EVPN.


* Static VXLAN Tunnel Configuration: Users should be able to manually specify VXLAN tunnel endpoints.
* VNI to VLAN Mapping: Users must be able to statically map VNIs to VLANs.
* L2 learning over local and remote VTEPs.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the controller driven model is a use-case, configuration of MACs pointing to static VXLAN tunnels would become a requirement?
Distinction should be made between MACs which are static and MACs which can be moved.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This HLD supports full dynamic learning, especially on remote VTEPs.
The purpose of this HLD wasn't replace BGP with controller. That is why we don't support MAC pointing to static VXLAN.
If we want to support command to configure static MAC with move option, in case of actual mac move, this command will need to be deleted from Config db (not sure if this is acceptable behavior in SONiC).


Feature will support following configuration:
1. Remote VTEP name and IP address configuration.
2. Remote VTEP-VNI association.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should the VLAN also be associated here ?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are using the existing VNI-to-VLAN mapping.

#### Configuration

Feature will support following configuration:
1. Remote VTEP name and IP address configuration.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why would Remote VTEP name be required ?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We wanted to identify remote VTEP by its name, so it will allow to change its IP address without affecting other configurations.
Another reason, when admin configures remote VTEP , he will have human readable string , not just IP.

; New table
; specifies mapping of remote VTEP to VNI

key = VXLAN_REMOTE_VTEP_VNI_TABLE|remote_vtep_name|tunnel_map_name
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldnt the key be
VXLAN_REMOTE_VTEP_VNI_TABLE|vtep_name|Vlanname

The tunnel map name can technically be anything and not reflective of the VLAN and VNI

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does the key has to be reflective of vlan/vni ? My understanding is that key only has to be unique and since vni (and maybe vlan) is field in the entry it doesn't have to be specified again in the key.


#### 3. APP_DB Enhancements

##### 3.1 VXLAN_DATAPLANE_VTEP_TABLE
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Corresponding to remote VTEP table in the config DB shouldnt this also be Remote VTEP in the APP DB ?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This table holds VTEP name that will be used as source VTEP for the tunnel (Similar to EVPN_NVO_TABLE).

source_vtep = tunnel_name


##### 3.2 VXLAN_DATAPLANE_VTEP_VNI_TABLE
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The existing VXLAN_REMOTE_VNI table can be reused as is.
I am not clear on the need for this table as the VXLAN_REMOTE_VNI table and the OA handling of this
table is sufficient.
VxlanMgr can populate this instead of fdbsyncd for static tunnel cases.

A "creation_source" field can be used to distinguish between VxlanMgr and fdbsyncd populated entries.
This source can be used to infer if this tunnel is static or dynamic.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree, it can be used. Currently, it is used by EvpnRemoteVnip2pOrch/EvpnRemoteVnip2mpOrch classes. Do you think these also can be reused (with naming change) or same table to be referenced again by Dataplane ?

- BridgePort SAI object with the tunnel oid is created. Learning is disabled for EVPN tunnels and enabled for data plane tunnels.
- Port object of type Tunnel created in the portsorch.

The data plane tunnels are created when the remote VTEP is added and will be deleted when the last remote VTEP is removed.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am unclear on the term "last" remote VTEP.
Wouldnt only one remote VTEP configuration be made ?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There can be several remote VTEPs, each with it name and IP.

A P2MP tunnel uses a single tunnel termination. Because tunnel termination is utilized for MAC learning, supporting P2MP requires manual MAC configuration, which undermines the goal of dynamic learning.

#### 4.4 Fdborch
* FDB entries will be learned over tunnel interface and not configured via APP_VXLAN_FDB_TABLE_NAME(as in BGP-EVPN). So they will be handled as regular MAC entries.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MAC provisioned by the controller will be written into the VXLAN_FDB_TABLE.

Copy link
Author

@VladimirKuk VladimirKuk Aug 5, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since originally we didn't intended to support controller-added MACs (only dynamiccally-learned), I missed this part. Will add this as part of phase two.

@VladimirKuk
Copy link
Author

Can we rename the title of this HLD to "static VXLAN HLD"?

will rename to "Dataplane (static) VXLAN HLD"

@VladimirKuk VladimirKuk marked this pull request as draft August 5, 2024 07:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants