Open RuslanValovyiGL opened 1 month ago
What I did
Added support for EVPN MH feature
Why I did it
This is a part of the implementation of EVPN MH feature according to requirements: https://github.com/sonic-net/SONiC/pull/1702
How I did it
How I verified it
This PR has been tested on such a scheme:
After the configuration of leaf1, leaf2, leaf3, spine and hosts (h1 and h2), the following redis table values were obtained: leaf1:
root@leaf1:/home/admin# redis-dump -d 0 | jq . | grep SPLIT_HORIZON -A 5 "EVPN_SPLIT_HORIZON_TABLE:PortChannel1": { "type": "hash", "value": { "vteps": "2.2.2.2" }, "ttl": -0.001, root@leaf1:/home/admin# redis-dump -d 1 | jq . | grep ISOLATION -C 8 "value": { "NULL": "NULL", "SAI_QUEUE_ATTR_TYPE": "SAI_QUEUE_TYPE_UNICAST", "SAI_QUEUE_ATTR_INDEX": "7" }, "ttl": -0.001, "expireat": 1719734452.214351 }, "ASIC_STATE:SAI_OBJECT_TYPE_ISOLATION_GROUP:oid:0x46000000000b90": { "type": "hash", "value": { "SAI_ISOLATION_GROUP_ATTR_TYPE": "SAI_ISOLATION_GROUP_TYPE_BRIDGE_PORT" }, "ttl": -0.001, "expireat": 1719734452.2143638 }, "ASIC_STATE:SAI_OBJECT_TYPE_FDB_ENTRY:{\"bvid\":\"oid:0x26000000000b6b\",\"mac\":\"52:54:00:52:24:A4\",\"switch_id\":\"oid:0x21000000000000\"}": { "type": "hash", "value": { "SAI_FDB_ENTRY_ATTR_TYPE": "SAI_FDB_ENTRY_TYPE_STATIC", -- "value": { "NULL": "NULL", "SAI_QUEUE_ATTR_TYPE": "SAI_QUEUE_TYPE_UNICAST", "SAI_QUEUE_ATTR_INDEX": "6" }, "ttl": -0.001, "expireat": 1719734452.2146876 }, "ASIC_STATE:SAI_OBJECT_TYPE_ISOLATION_GROUP_MEMBER:oid:0x47000000000b91": { "type": "hash", "value": { "SAI_ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_GROUP_ID": "oid:0x46000000000b90", "SAI_ISOLATION_GROUP_MEMBER_ATTR_ISOLATION_OBJECT": "oid:0x3a000000000b6c" }, "ttl": -0.001, "expireat": 1719734452.2147007 }, "ASIC_STATE:SAI_OBJECT_TYPE_QUEUE:oid:0x1500000000028b": { "type": "hash", "value": { "NULL": "NULL" -- "ASIC_STATE:SAI_OBJECT_TYPE_BRIDGE_PORT:oid:0x3a000000000b8b": { "type": "hash", "value": { "SAI_BRIDGE_PORT_ATTR_TYPE": "SAI_BRIDGE_PORT_TYPE_TUNNEL", "SAI_BRIDGE_PORT_ATTR_TUNNEL_ID": "oid:0x2a000000000b8a", "SAI_BRIDGE_PORT_ATTR_BRIDGE_ID": "oid:0x390000000001ab", "SAI_BRIDGE_PORT_ATTR_ADMIN_STATE": "true", "SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_MODE": "SAI_BRIDGE_PORT_FDB_LEARNING_MODE_DISABLE", "SAI_BRIDGE_PORT_ATTR_ISOLATION_GROUP": "oid:0x46000000000b90" }, "ttl": -0.001, "expireat": 1719734452.2271657 }, root@leaf1:/home/admin# redis-dump -d 0 | jq . | grep EVPN_DF_TABLE -A 5 "EVPN_DF_TABLE:PortChannel1": { "type": "hash", "value": { "non_df": "false" }, "ttl": -0.001, root@leaf1:/home/admin# vtysh -c "show evpn es detail" ESI: 00:11:22:33:44:55:66:77:88:99 Type: Local,Remote Interface: PortChannel1 State: up Bridge port: yes Ready for BGP: yes VNI Count: 1 MAC Count: 1 DF status: df DF preference: 32767 Nexthop group: 536870913 VTEPs: 2.2.2.2 df_alg: preference df_pref: 32767 nh: 268435458 root@leaf1:/home/admin# root@leaf1:/home/admin# redis-dump -d 1 | jq . | grep SAI_BRIDGE_PORT_ATTR_NON_DF -C 8 }, "ASIC_STATE:SAI_OBJECT_TYPE_BRIDGE_PORT:oid:0x3a000000000b6c": { "type": "hash", "value": { "SAI_BRIDGE_PORT_ATTR_TYPE": "SAI_BRIDGE_PORT_TYPE_PORT", "SAI_BRIDGE_PORT_ATTR_PORT_ID": "oid:0x2000000000b69", "SAI_BRIDGE_PORT_ATTR_ADMIN_STATE": "true", "SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_MODE": "SAI_BRIDGE_PORT_FDB_LEARNING_MODE_HW", "SAI_BRIDGE_PORT_ATTR_NON_DF": "false" }, "ttl": -0.001, "expireat": 1719734383.0772326 },
leaf3:
root@leaf3:/home/admin# redis-dump -d 0 | jq . | grep VXLAN_FDB_TABLE -A 5 "VXLAN_FDB_TABLE:Vlan100:52:54:00:52:24:a4": { "type": "hash", "value": { "remote_vtep": "2.2.2.2", "type": "dynamic", "vni": "1000" -- "VXLAN_FDB_TABLE:Vlan100:0c:50:e3:b1:00:01": { "type": "hash", "value": { "nexthop_group": "536870913", "type": "dynamic", "vni": "1000" -- "VXLAN_FDB_TABLE:Vlan100:52:54:00:52:24:a3": { "type": "hash", "value": { "remote_vtep": "1.1.1.1", "type": "dynamic", "vni": "1000" root@leaf3:/home/admin# redis-dump -d 1 | jq . | grep SAI_OBJECT_TYPE_FDB_ENTRY -A 8 "ASIC_STATE:SAI_OBJECT_TYPE_FDB_ENTRY:{\"bvid\":\"oid:0x26000000000b7c\",\"mac\":\"0C:50:E3:B1:00:01\",\"switch_id\":\"oid:0x21000000000000\"}": { "type": "hash", "value": { "SAI_FDB_ENTRY_ATTR_TYPE": "SAI_FDB_ENTRY_TYPE_STATIC", "SAI_FDB_ENTRY_ATTR_ALLOW_MAC_MOVE": "true", "SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID": "oid:0x3a000000000ba3" }, "ttl": -0.001, "expireat": 1719735065.3530211 -- "ASIC_STATE:SAI_OBJECT_TYPE_FDB_ENTRY:{\"bvid\":\"oid:0x26000000000b7c\",\"mac\":\"52:54:00:52:24:A3\",\"switch_id\":\"oid:0x21000000000000\"}": { "type": "hash", "value": { "SAI_FDB_ENTRY_ATTR_TYPE": "SAI_FDB_ENTRY_TYPE_STATIC", "SAI_FDB_ENTRY_ATTR_ALLOW_MAC_MOVE": "true", "SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID": "oid:0x3a000000000ba9", "SAI_FDB_ENTRY_ATTR_ENDPOINT_IP": "1.1.1.1" }, "ttl": -0.001, -- "ASIC_STATE:SAI_OBJECT_TYPE_FDB_ENTRY:{\"bvid\":\"oid:0x26000000000b7c\",\"mac\":\"0C:1F:98:20:00:01\",\"switch_id\":\"oid:0x21000000000000\"}": { "type": "hash", "value": { "SAI_FDB_ENTRY_ATTR_TYPE": "SAI_FDB_ENTRY_TYPE_DYNAMIC", "SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID": "oid:0x3a000000000b7d" }, "ttl": -0.001, "expireat": 1719735065.3782125 }, -- "ASIC_STATE:SAI_OBJECT_TYPE_FDB_ENTRY:{\"bvid\":\"oid:0x26000000000b7c\",\"mac\":\"52:54:00:52:24:A4\",\"switch_id\":\"oid:0x21000000000000\"}": { "type": "hash", "value": { "SAI_FDB_ENTRY_ATTR_TYPE": "SAI_FDB_ENTRY_TYPE_STATIC", "SAI_FDB_ENTRY_ATTR_ALLOW_MAC_MOVE": "true", "SAI_FDB_ENTRY_ATTR_BRIDGE_PORT_ID": "oid:0x3a000000000ba5", "SAI_FDB_ENTRY_ATTR_ENDPOINT_IP": "2.2.2.2" }, "ttl": -0.001, root@leaf3:/home/admin# redis-dump -d 0 | jq . | grep L2_NEXTHOP_GROUP -A 5 "L2_NEXTHOP_GROUP_TABLE:268435458": { "type": "hash", "value": { "remote_vtep": "1.1.1.1" }, "ttl": -0.001, -- "L2_NEXTHOP_GROUP_TABLE:268435459": { "type": "hash", "value": { "remote_vtep": "2.2.2.2" }, "ttl": -0.001, -- "L2_NEXTHOP_GROUP_TABLE:536870913": { "type": "hash", "value": { "nexthop_group": "268435458,268435459" }, "ttl": -0.001, root@leaf3:/home/admin# redis-dump -d 1 | jq . | grep SAI_BRIDGE_PORT_TYPE_L2_ECMP_GROUP -C 8 "NULL": "NULL" }, "ttl": -0.001, "expireat": 1719735066.1303742 }, "ASIC_STATE:SAI_OBJECT_TYPE_BRIDGE_PORT:oid:0x3a000000000ba3": { "type": "hash", "value": { "SAI_BRIDGE_PORT_ATTR_TYPE": "SAI_BRIDGE_PORT_TYPE_L2_ECMP_GROUP", "SAI_BRIDGE_PORT_ATTR_L2_ECMP_GROUP_ID": "oid:0x6b000000000ba1", "SAI_BRIDGE_PORT_ATTR_BRIDGE_ID": "oid:0x390000000001ab", "SAI_BRIDGE_PORT_ATTR_ADMIN_STATE": "true", "SAI_BRIDGE_PORT_ATTR_FDB_LEARNING_MODE": "SAI_BRIDGE_PORT_FDB_LEARNING_MODE_DISABLE" }, "ttl": -0.001, "expireat": 1719735066.1303864 },
Depends on
Details if related
What I did
Added support for EVPN MH feature
Why I did it
This is a part of the implementation of EVPN MH feature according to requirements: https://github.com/sonic-net/SONiC/pull/1702
How I did it
How I verified it
This PR has been tested on such a scheme:![image](https://github.com/user-attachments/assets/ff7c5a29-5c80-420e-ba2d-31b34b444938)
After the configuration of leaf1, leaf2, leaf3, spine and hosts (h1 and h2), the following redis table values were obtained: leaf1:
leaf3:
Depends on
Details if related