Skip to content

Latest commit

 

History

History
116 lines (84 loc) · 6.17 KB

sonic-nexthopgroup.md

File metadata and controls

116 lines (84 loc) · 6.17 KB

SONiC: Next Hop Group

Next Hop Group - SAI Call Flow (SAI Object Creation)

Next Hop Group SAI Object 作成フロー

  • nexthop#1: Create SAI_OBJECT_TYPE_NEIGHBOR_ENTRY -> Create SAI_OBJECT_TYPE_NEXT_HOP
  • nexthop#2: Create SAI_OBJECT_TYPE_NEIGHBOR_ENTRY -> Create SAI_OBJECT_TYPE_NEXT_HOP
  • Create SAI_OBJECT_TYPE_NEXT_HOP_GROUP
  • Create SAI_OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER
    • Set nexthop#1,#2 oid as SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID
  • Create SAI_OBJECT_TYPE_ROUTE_ENTRY
    • Set nexthop_group oid as SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID

Examples

IPv4 Next Hop Group 設定例

  • ECMP となる IPv4 Static Route を設定
admin@sonic:~$ sudo config route add prefix 10.99.0.0/24 nexthop 10.0.0.100
admin@sonic:~$ sudo config route add prefix 10.99.0.0/24 nexthop 10.0.0.101
admin@sonic:~$ show ip route
C>* 10.0.0.0/24 is directly connected, Ethernet0, 1d01h06m
S>* 10.99.0.0/24 [1/0] via 10.0.0.100, Ethernet0, weight 1, 00:00:07
  *                    via 10.0.0.101, Ethernet0, weight 1, 00:00:07
...snip...
  • SONiC APPL_DB / ASIC_DB
admin@sonic:~$ sonic-db-cli APPL_DB HGETALL ROUTE_TABLE:10.99.0.0/24
{'nexthop': '10.0.0.100,10.0.0.101', 'ifname': 'Ethernet0,Ethernet0', 'weight': '1,1'}

admin@sonic:~$ sonic-db-cli ASIC_DB keys * | grep 10.99
ASIC_STATE:SAI_OBJECT_TYPE_ROUTE_ENTRY:{"dest":"10.99.0.0/24","switch_id":"oid:0x21000000000000","vr":"oid:0x3000000000048"}

admin@sonic:~$ sonic-db-cli ASIC_DB HGETALL 'ASIC_STATE:SAI_OBJECT_TYPE_ROUTE_ENTRY:{"dest":"10.99.0.0/24","switch_id":"oid:0x21000000000000","vr":"oid:0x3000000000048"}'
{'SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID': 'oid:0x5000000002755'}

APPL_DB に設定した際のログ -> ASIC_DB Entry

  • ipv4_nhg_99.json
[
    {
        "ROUTE_TABLE:10.99.0.0/24": {
            "nexthop": "10.0.0.100,10.0.0.101",
            "ifname": "Ethernet0,Ethernet0",
            "weight": "1,1"
        },
        "OP": "SET"
    }
]
  • swss.rec
2022-10-29.09:33:28.502602|ROUTE_TABLE:10.99.0.0/24|SET|ifname:Ethernet0,Ethernet0|nexthop:10.0.0.100,10.0.0.101|weight:1,1
2022-10-29.09:33:28.505773|NEIGH_TABLE:Ethernet0:10.0.0.100|SET|neigh:0c:42:a1:46:64:a2|family:IPv4
2022-10-29.09:33:28.506198|NEIGH_TABLE:Ethernet0:10.0.0.101|SET|neigh:0c:42:a1:46:64:a2|family:IPv4
  • sairedis.rec
2022-10-29.09:33:28.506496|c|SAI_OBJECT_TYPE_NEIGHBOR_ENTRY:{"ip":"10.0.0.100","rif":"oid:0x600000000037f","switch_id":"oid:0x21000000000000"}|SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS=0C:42:A1:46:64:A2

2022-10-29.09:33:28.509289|c|SAI_OBJECT_TYPE_NEXT_HOP:oid:0x4000000000381|SAI_NEXT_HOP_ATTR_TYPE=SAI_NEXT_HOP_TYPE_IP|SAI_NEXT_HOP_ATTR_IP=10.0.0.100|SAI_NEXT_HOP_ATTR_ROUTER_INTERFACE_ID=oid:0x600000000037f

2022-10-29.09:33:28.511105|c|SAI_OBJECT_TYPE_NEIGHBOR_ENTRY:{"ip":"10.0.0.101","rif":"oid:0x600000000037f","switch_id":"oid:0x21000000000000"}|SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS=0C:42:A1:46:64:A2

2022-10-29.09:33:28.513627|c|SAI_OBJECT_TYPE_NEXT_HOP:oid:0x4000000000382|SAI_NEXT_HOP_ATTR_TYPE=SAI_NEXT_HOP_TYPE_IP|SAI_NEXT_HOP_ATTR_IP=10.0.0.101|SAI_NEXT_HOP_ATTR_ROUTER_INTERFACE_ID=oid:0x600000000037f

2022-10-29.09:33:28.515523|c|SAI_OBJECT_TYPE_NEXT_HOP_GROUP:oid:0x5000000000383|SAI_NEXT_HOP_GROUP_ATTR_TYPE=SAI_NEXT_HOP_GROUP_TYPE_DYNAMIC_UNORDERED_ECMP

2022-10-29.09:33:28.519971|C|SAI_OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER||oid:0x2d000000000384|SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID=oid:0x5000000000383|SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID=oid:0x4000000000381|SAI_NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT=1||oid:0x2d000000000385|SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID=oid:0x5000000000383|SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID=oid:0x4000000000382|SAI_NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT=1

2022-10-29.09:33:28.524226|C|SAI_OBJECT_TYPE_ROUTE_ENTRY||{"dest":"10.99.0.0/24","switch_id":"oid:0x21000000000000","vr":"oid:0x3000000000048"}|SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID=oid:0x5000000000383
  • ASIC_DB
ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE:oid:0x600000000037f
{'SAI_ROUTER_INTERFACE_ATTR_VIRTUAL_ROUTER_ID': 'oid:0x3000000000048', 'SAI_ROUTER_INTERFACE_ATTR_SRC_MAC_ADDRESS': '00:90:FB:65:D6:FE', 'SAI_ROUTER_INTERFACE_ATTR_TYPE': 'SAI_ROUTER_INTERFACE_TYPE_PORT', 'SAI_ROUTER_INTERFACE_ATTR_PORT_ID': 'oid:0x100000000004e', 'SAI_ROUTER_INTERFACE_ATTR_MTU': '9100'}

ASIC_STATE:SAI_OBJECT_TYPE_NEIGHBOR_ENTRY:{"ip":"10.0.0.101","rif":"oid:0x600000000037f","switch_id":"oid:0x21000000000000"}
{'SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS': '0C:42:A1:46:64:A2'}
ASIC_STATE:SAI_OBJECT_TYPE_NEIGHBOR_ENTRY:{"ip":"10.0.0.100","rif":"oid:0x600000000037f","switch_id":"oid:0x21000000000000"}
{'SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS': '0C:42:A1:46:64:A2'}

ASIC_STATE:SAI_OBJECT_TYPE_NEXT_HOP:oid:0x4000000000381
{'SAI_NEXT_HOP_ATTR_TYPE': 'SAI_NEXT_HOP_TYPE_IP', 'SAI_NEXT_HOP_ATTR_IP': '10.0.0.100', 'SAI_NEXT_HOP_ATTR_ROUTER_INTERFACE_ID': 'oid:0x600000000037f'}
ASIC_STATE:SAI_OBJECT_TYPE_NEXT_HOP:oid:0x4000000000382
{'SAI_NEXT_HOP_ATTR_TYPE': 'SAI_NEXT_HOP_TYPE_IP', 'SAI_NEXT_HOP_ATTR_IP': '10.0.0.101', 'SAI_NEXT_HOP_ATTR_ROUTER_INTERFACE_ID': 'oid:0x600000000037f'}

ASIC_STATE:SAI_OBJECT_TYPE_NEXT_HOP_GROUP:oid:0x5000000000383
{'SAI_NEXT_HOP_GROUP_ATTR_TYPE': 'SAI_NEXT_HOP_GROUP_TYPE_DYNAMIC_UNORDERED_ECMP'}

ASIC_STATE:SAI_OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER:oid:0x2d000000000384
{'SAI_NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT': '1', 'SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID': 'oid:0x4000000000381', 'SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID': 'oid:0x5000000000383'}
ASIC_STATE:SAI_OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER:oid:0x2d000000000385
{'SAI_NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT': '1', 'SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID': 'oid:0x4000000000382', 'SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID': 'oid:0x5000000000383'}

ASIC_STATE:SAI_OBJECT_TYPE_ROUTE_ENTRY:{"dest":"10.99.0.0/24","switch_id":"oid:0x21000000000000","vr":"oid:0x3000000000048"}
{'SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID': 'oid:0x5000000000383'}