Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Next Hop Group on SONiC (Japanese)

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for ebiken ebiken PRO
November 23, 2022

Next Hop Group on SONiC (Japanese)

Next Hop や Next Hop Group の概要と、SONiC での設定方法、各種データベース(CONFIG_DB, APPL_DB, ASIC_DB)エントリの形式を解説

English Version: https://speakerdeck.com/ebiken/next-hop-group-on-sonic-english

Avatar for ebiken

ebiken PRO

November 23, 2022
Tweet

More Decks by ebiken

Other Decks in Technology

Transcript

  1. • Next Hop Group (NHG) 概要 • Route Entry &

    Next Hop • Route Entry & Next Hop データ構造 • Next Hop Group on SONiC • SONiC における Next Hop Group (Multipath Route) • ASIC_DB エントリ • CLIで設定した場合の各種 DB の変化(CONFIG_DB, APPL_DB, ASIC_DB) • その他:参考情報 • (参考)ASIC_DB エントリの変化(詳細)(CLI で設定した場合) • (参考)SWSS / SAI の動作ログ(swss.rec , sairedis.rec)(CLI で設定した場合) • (参考)FRR での Next Hop Group 確認方法 • (参考)direct attached network に関する nexthop_id • (参考)ASIC エントリ確認方法 • 参考文献 Next Hop Group on SONiC | Twitter: @ebiken | 2022/11/23 目次 Wedge100BF-32X (Tofino) SONiC-OS-master.143513-dirty-20220903.195418
  2. Next Hop Group (NHG) 概要 Next Hop Group on SONiC

    | Twitter: @ebiken | 2022/11/23
  3. • route は宛先(prefix)に対応した転送先情報 gateway (gw) と device (dev) を保持 •

    この場合の prefix は Longest Prefix Match に利用されマスク(len)を含む • gw (address) により dev が決定する場合等、dev を指定しなくてもOS等により解 決される場合もあり • gw の MAC アドレスは別途解決され neightbor table に保存される(Linuxの場合) • 実装により様々な保持の仕方(データ構造)が存在する Next Hop Group on SONiC | Twitter: @ebiken | 2022/11/23 Route Entry & Next Hop A B C D route prefix: D dev : ens0 gw : B ens0 route ens1
  4. Next Hop Group on SONiC | Twitter: @ebiken | 2022/11/23

    Route Entry & Next Hop データ構造 route prefix dev gateway route prefix nexthop nexthop dev gateway ip route add <prefix> via <gw> [dev <device>] ip route add <prefix> nexthop via <gw> [dev <device>] route group nexthop nexthop dev gateway nexthop dev gateway nexthop dev gateway nexthop group nexthop[N] ① route entry に nexthop 情報 を内包(Linux 5.2 以前) ② route entry と nexthop object の分離(Linux 5.3 以降) ※ Linux 5.2 は nexthop サポートに向け たリファクタリングが含まれる。但し、 fib_info には fib_nh のみ含まれ nexthop はまだ含まれない Linux コマンド
  5. Next Hop Group on SONiC Next Hop Group on SONiC

    | Twitter: @ebiken | 2022/11/23
  6. Next Hop Group on SONiC | Twitter: @ebiken | 2022/11/23

    SONiC における Next Hop Group (Multipath Route) ROUTE_TABLE Key: 10.99.0.0/24 Value: 'nexthop': '10.0.0.100,10.0.0.101' 'ifname': 'Ethernet0,Ethernet0' 'weight': '1,1' ROUTE_TABLE Key: 10.99.0.0/24 Value: 'nexthop_group': 'nhg1' NEXT_HOP_GROUP_TABLE Key: nhg1 Value: 'nexthop': '10.0.0.100,10.0.0.101' 'ifname': 'Ethernet0,Ethernet0' APPL_DBエントリの形式が異なる2通りの方法が存在(20220903時点) ROUTE_TABLE エントリのみ (NEXT_HOP_GROUP_TABLE エントリ無し) ASIC_DBエントリの形式は共通 CLI の有無 APPL_DB 形式 ASIC_DB 形式 ROUTE_TABLE + NEXT_HOP_GROUP_TABLE エントリ APPL_DB に直接エントリを追加する必要あり CLIから設定可能 config route add prefix 10.99.0.0/24 nexthop 10.0.0.100 config route add prefix 10.99.0.0/24 nexthop 10.0.0.101 ASIC_DBエントリの形式は共通 (SONiC HLD: Routing and Next Hop Table Enhancement で機能追加) https://github.com/sonic-net/SONiC/blob/master/doc/ip/next_hop_group_hld.md
  7. Next Hop Group on SONiC | Twitter: @ebiken | 2022/11/23

    ASIC_DB エントリ(Next Hop 1つ) Next Hop が1つの場合 ⇒ ASIC_DB エントリは異なる sudo config route add prefix 10.99.0.0/24 nexthop 10.0.0.100 NEXT_HOP Key: oid: 3 Value: { NEXT_HOP_ATTR_IP: 10.0.0.100 NEXT_HOP_ATTR_ROUTER_INTERFACE_ID: 1 } ROUTE_ENTRY Key: { dest: 10.99.0.0/24 } Value: { NEXT_HOP_ID: 3 } ROUTE_ENTRY Key: { dest: 10.99.0.0/24 } Value: { NEXT_HOP_ID: 5 } NEXT_HOP_GROUP_MEMBER Key: oid: 6 Value: { NEXT_HOP_GROUP_ID: oid: 5 NEXT_HOP_ID: oid: 3 } NEXT_HOP_GROUP Key: oid: 5 NEXT_HOP Key: oid: 3 Value: { NEXT_HOP_ATTR_IP: 10.0.0.100 NEXT_HOP_ATTR_ROUTER_INTERFACE_ID: 1 } APPL_DB ROUTE_TABLE:10.99.0.0/24{'nexthop_group': 'nhg1'} NEXTHOP_GROUP_TABLE:nhg1 {'nexthop': '10.0.0.100', 'ifname': 'Ethernet0'} APPL_DB ROUTE_TABLE:10.99.0.0/24 {'nexthop': '10.0.0.100','ifname': 'Ethernet0'} ※ Next Hop が1つの場合でも NEXT_HOP_GROUP が作成される
  8. Next Hop Group on SONiC | Twitter: @ebiken | 2022/11/23

    ASIC_DB Entry(Next Hop 2つ) Next Hop が2つ以上場合 ⇒ ASIC_DB エントリは同じ sudo config route add prefix 10.99.0.0/24 nexthop 10.0.0.100 sudo config route add prefix 10.99.0.0/24 nexthop 10.0.0.101 NEXT_HOP Key: oid: 3 Value: { NEXT_HOP_ATTR_IP: 10.0.0.100 NEXT_HOP_ATTR_ROUTER_INTERFACE_ID: 1 } ROUTE_ENTRY Key: { dest: 10.99.0.0/24 } Value: { NEXT_HOP_ID: 5 } NEXT_HOP_GROUP_MEMBER Key: oid: 7 Value: { NEXT_HOP_GROUP_ID: oid: 5 NEXT_HOP_ID: oid: 4 } NEXT_HOP_GROUP Key: oid: 5 NEXT_HOP Key: oid: 4 Value: { NEXT_HOP_ATTR_IP: 10.0.0.100 NEXT_HOP_ATTR_ROUTER_INTERFACE_ID: 1 } APPL_DB ROUTE_TABLE:10.99.0.0/24{'nexthop_group': 'nhg1'} NEXTHOP_GROUP_TABLE:nhg1 {'nexthop': '10.0.0.100,10.0.0.101', 'ifname': 'Ethernet0,Ethernet0'} APPL_DB ROUTE_TABLE:10.99.0.0/24 {'nexthop': '10.0.0.100,10.0.0.101','ifname': 'Ethernet0,Ethernet0’, 'weight': '1,1’} NEXT_HOP_GROUP_MEMBER Key: oid: 6 Value: { NEXT_HOP_GROUP_ID: oid: 5 NEXT_HOP_ID: oid: 3 }
  9. Next Hop Group on SONiC | Twitter: @ebiken | 2022/11/23

    CONFIG_DB, APPL_DB エントリの変化(CLI から設定した場合) 同一 prefix に複数の nexthop を設定すると、2つ目以降は同じエントリの Value に追加される ROUTE_TABLE Key: 10.99.0.0/24 Value: 'nexthop': '10.0.0.100', 'ifname': 'Ethernet0' STATIC_ROUTE Key: 10.99.0.0/24 Value: "blackhole":"false", "distance":"0", "ifname":"", "nexthop":"10.0.0.100", "nexthop-vrf":"" admin@sonic:~$ sudo config route add prefix 10.99.0.0/24 nexthop 10.0.0.100 (CONFIG_DB) (APPL_DB) ROUTE_TABLE Key: 10.99.0.0/24 Value: 'nexthop': '10.0.0.100,10.0.0.101', 'ifname': 'Ethernet0,Ethernet0', 'weight': '1,1' STATIC_ROUTE Key: 10.99.0.0/24 Value: "blackhole":"false,false", "distance":"0,0", "ifname":",", "nexthop":"10.0.0.100,10.0.0.101", "nexthop-vrf":"," 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 (CONFIG_DB) (APPL_DB)
  10. Next Hop Group on SONiC | Twitter: @ebiken | 2022/11/23

    ASIC_DB エントリの変化(CLI で設定した場合) admin@sonic:~$ sudo config route add prefix 10.99.0.0/24 nexthop 10.0.0.100 NEXT_HOP Key: oid: 3 Value: { NEXT_HOP_ATTR_IP: 10.0.0.100, NEXT_HOP_ATTR_ROUTER_INTERFACE_ID: 1 } ROUTE_ENTRY Key: { dest: 10.99.0.0/24, } Value: { NEXT_HOP_ID: 3 }
  11. Next Hop Group on SONiC | Twitter: @ebiken | 2022/11/23

    ASIC_DB エントリの変化(CLI で設定した場合) 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 ROUTE_ENTRY Key: { dest: 10.99.0.0/24, } Value: { NEXT_HOP_ID: 3 } NEXT_HOP_GROUP Key: oid: 5 NEXT_HOP Key: oid: 3 Value: { NEXT_HOP_ATTR_IP: 10.0.0.100, NEXT_HOP_ATTR_ROUTER_INTERFACE_ID: 1 } NEXT_HOP Key: oid: 4 Value: { NEXT_HOP_ATTR_IP: 10.0.0.101, NEXT_HOP_ATTR_ROUTER_INTERFACE_ID: 1 } 1 2
  12. Next Hop Group on SONiC | Twitter: @ebiken | 2022/11/23

    ASIC_DB エントリの変化(CLI で設定した場合) 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 ROUTE_ENTRY Key: { dest: 10.99.0.0/24, } Value: { NEXT_HOP_ID: 3 } NEXT_HOP_GROUP_MEMBER Key: oid: 6 Value: { NEXT_HOP_GROUP_ID: oid: 5, NEXT_HOP_ID: oid: 3 } NEXT_HOP_GROUP Key: oid: 5 NEXT_HOP_GROUP_MEMBER Key: oid: 7 Value: { NEXT_HOP_GROUP_ID: oid: 5, NEXT_HOP_ID': oid: 4 } NEXT_HOP Key: oid: 3 Value: { NEXT_HOP_ATTR_IP: 10.0.0.100, NEXT_HOP_ATTR_ROUTER_INTERFACE_ID: 1 } NEXT_HOP Key: oid: 4 Value: { NEXT_HOP_ATTR_IP: 10.0.0.101, NEXT_HOP_ATTR_ROUTER_INTERFACE_ID: 1 } 1 3 4 2
  13. Next Hop Group on SONiC | Twitter: @ebiken | 2022/11/23

    ASIC_DB エントリの変化(CLI で設定した場合) 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 ROUTE_ENTRY Key: { dest: 10.99.0.0/24, } Value: { NEXT_HOP_ID: 5 } NEXT_HOP_GROUP_MEMBER Key: oid: 6 Value: { NEXT_HOP_GROUP_ID: oid: 5, NEXT_HOP_ID: oid: 3 } NEXT_HOP_GROUP Key: oid: 5 NEXT_HOP_GROUP_MEMBER Key: oid: 7 Value: { NEXT_HOP_GROUP_ID: oid: 5, NEXT_HOP_ID': oid: 4 } NEXT_HOP Key: oid: 3 Value: { NEXT_HOP_ATTR_IP: 10.0.0.100, NEXT_HOP_ATTR_ROUTER_INTERFACE_ID: 1 } NEXT_HOP Key: oid: 4 Value: { NEXT_HOP_ATTR_IP: 10.0.0.101, NEXT_HOP_ATTR_ROUTER_INTERFACE_ID: 1 } 1 3 4 2 5 ※ NEXT_HOP と NEXT_HOP_GROUP は共通の oid 空間を共有 ⇒ Route に紐づけされた NEXT_HOP を変更せずに NEXT_HOP_GROUP に変更可能
  14. Next Hop Group on SONiC | Twitter: @ebiken | 2022/11/23

    ASIC_DB エントリの変化(CLI で設定した場合) admin@sonic:~$ sudo config route add prefix 10.88.0.0/24 nexthop 10.0.0.100 admin@sonic:~$ sudo config route add prefix 10.88.0.0/24 nexthop 10.0.0.101 ROUTE_ENTRY Key: { dest: 10.99.0.0/24, } Value: { NEXT_HOP_ID: 5 } NEXT_HOP_GROUP_MEMBER Key: oid: 6 Value: { NEXT_HOP_GROUP_ID: oid: 5, NEXT_HOP_ID: oid: 3 } NEXT_HOP_GROUP Key: oid: 5 NEXT_HOP_GROUP_MEMBER Key: oid: 7 Value: { NEXT_HOP_GROUP_ID: oid: 5, NEXT_HOP_ID': oid: 4 } NEXT_HOP Key: oid: 3 Value: { NEXT_HOP_ATTR_IP: 10.0.0.100, NEXT_HOP_ATTR_ROUTER_INTERFACE_ID: 1 } NEXT_HOP Key: oid: 4 Value: { NEXT_HOP_ATTR_IP: 10.0.0.101, NEXT_HOP_ATTR_ROUTER_INTERFACE_ID: 1 } 1 3 4 2 5 ROUTE_ENTRY Key: { dest: 10.88.0.0/24, } Value: { NEXT_HOP_ID: 5 } 6 ※ 同じ Next Hop を持つ ROUTE_ENTRY の場合、同じ NEXT_HOP_GROUP を参照
  15. Next Hop Group on SONiC | Twitter: @ebiken | 2022/11/23

    (参考)ASIC_DB エントリの変化(詳細)(CLI で設定した場合) 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:~$ sudo config route add prefix 10.88.0.0/24 nexthop 10.0.0.100 admin@sonic:~$ sudo config route add prefix 10.88.0.0/24 nexthop 10.0.0.101 SAI_OBJECT_TYPE_ROUTE_ENTRY Key: { "dest":"10.99.0.0/24", "switch_id":"oid:0x21000000000000", "vr":"oid:0x300000000004a" } Value: { 'SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID': 'oid:0x40000000003a3' } SAI_OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER Key: oid:0x2d0000000003a6 Value: { 'SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID': 'oid:0x50000000003a5’, 'SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID': 'oid:0x40000000003a3’, 'SAI_NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT': '1', 'SAI_NEXT_HOP_GROUP_MEMBER_ATTR_SEQUENCE_ID': '1' } SAI_OBJECT_TYPE_NEXT_HOP_GROUP Key: oid:0x50000000003a5 Value: { 'SAI_NEXT_HOP_GROUP_ATTR_TYPE': 'SAI_NEXT_HOP_GROUP_TYPE_DYNAMIC_ORDERED_ECMP' } SAI_OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER Key: oid:0x2d0000000003a7 Value: { 'SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID': 'oid:0x50000000003a5’, 'SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID': 'oid:0x40000000003a4’, 'SAI_NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT': '1', 'SAI_NEXT_HOP_GROUP_MEMBER_ATTR_SEQUENCE_ID': '2' } SAI_OBJECT_TYPE_NEXT_HOP Key: oid:0x40000000003a3 Value: { '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:0x60000000003a1' } SAI_OBJECT_TYPE_NEXT_HOP Key: oid:0x40000000003a4 Value: { '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:0x60000000003a1' } SAI_OBJECT_TYPE_ROUTE_ENTRY Key: { "dest":"10.99.0.0/24", "switch_id":"oid:0x21000000000000", "vr":"oid:0x300000000004a" } Value: { 'SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID': 'oid:0x50000000003a5’ } SAI_OBJECT_TYPE_ROUTE_ENTRY Key: { "dest":"10.88.0.0/24", "switch_id":"oid:0x21000000000000", "vr":"oid:0x300000000004a" } Value: { 'SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID': 'oid:0x50000000003a5' }
  16. Next Hop Group on SONiC | Twitter: @ebiken | 2022/11/23

    (参考)SWSS / SAI の動作ログ(swss.rec , sairedis.rec)(CLI で設定した場合) $ tail -f /var/log/swss/swss.log ROUTE_TABLE:10.99.0.0/24|SET| • nexthop:10.0.0.100 • ifname:Ethernet0 NEIGH_TABLE:Ethernet0:10.0.0.100|SET|neigh:0c:42:a1:46:64:a2|family:IPv4 ROUTE_TABLE:10.99.0.0/24|SET| • nexthop:10.0.0.100,10.0.0.101 • ifname:Ethernet0,Ethernet0 • weight:1,1 NEIGH_TABLE:Ethernet0:10.0.0.101|SET|neigh:0c:42:a1:46:64:a2|family:IPv4 $ tail -f /var/log/swss/sairedis.rec SAI_OBJECT_TYPE_NEIGHBOR_ENTRY:{"ip":"10.0.0.100","rif":"oid:0x60000000003a1","switch_id":"oid:0x21000000000000"} • SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS=0C:42:A1:46:64:A2 SAI_OBJECT_TYPE_NEXT_HOP:oid:0x40000000003a3 • 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:0x60000000003a1 SAI_OBJECT_TYPE_ROUTE_ENTRY||{"dest":"10.99.0.0/24","switch_id":"oid:0x21000000000 000","vr":"oid:0x300000000004a"} • SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID=oid:0x40000000003a3 SAI_OBJECT_TYPE_NEIGHBOR_ENTRY:{"ip":"10.0.0.101","rif":"oid:0x60000000003a1","switch_id":"oid:0x21000000000000"} • SAI_NEIGHBOR_ENTRY_ATTR_DST_MAC_ADDRESS=0C:42:A1:46:64:A2 SAI_OBJECT_TYPE_NEXT_HOP:oid:0x40000000003a4 • 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:0x60000000003a1 SAI_OBJECT_TYPE_NEXT_HOP_GROUP:oid:0x50000000003a5 • SAI_NEXT_HOP_GROUP_ATTR_TYPE=SAI_NEXT_HOP_GROUP_TYPE_DYNAMIC_ORDERED_ECMP SAI_OBJECT_TYPE_NEXT_HOP_GROUP_MEMBER ||oid:0x2d0000000003a6 • SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID=oid:0x50000000003a5 • SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID=oid:0x40000000003a3 • SAI_NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT=1 • SAI_NEXT_HOP_GROUP_MEMBER_ATTR_SEQUENCE_ID=1 ||oid:0x2d0000000003a7 • SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_GROUP_ID=oid:0x50000000003a5 • SAI_NEXT_HOP_GROUP_MEMBER_ATTR_NEXT_HOP_ID=oid:0x40000000003a4 • SAI_NEXT_HOP_GROUP_MEMBER_ATTR_WEIGHT=1 • SAI_NEXT_HOP_GROUP_MEMBER_ATTR_SEQUENCE_ID=2 SAI_OBJECT_TYPE_ROUTE_ENTRY||{"dest":"10.99.0.0/24","switch_id":"oid:0x21000000000 000","vr":"oid:0x300000000004a"} • SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID=oid:0x50000000003a5
  17. Next Hop Group on SONiC | Twitter: @ebiken | 2022/11/23

    (参考)FRR での Next Hop Group 確認方法 sonic# show ip route nexthop-group Codes: K - kernel route, C - connected, S - static, R - RIP, ...snip... S>* 10.88.0.0/24 [1/0] (26) via 10.0.0.100, Ethernet0, weight 1, 00:01:39 * via 10.0.0.101, Ethernet0, weight 1, 00:01:39 S>* 10.99.0.0/24 [1/0] (26) via 10.0.0.100, Ethernet0, weight 1, 04:56:29 * via 10.0.0.101, Ethernet0, weight 1, 04:56:29 sonic# show nexthop-group rib 26 ID: 26 (zebra) RefCnt: 2 Uptime: 01:08:01 VRF: default Valid, Installed Depends: (22) (27) via 10.0.0.100, Ethernet0 (vrf default), weight 1 via 10.0.0.101, Ethernet0 (vrf default), weight 1 sonic# show nexthop-group rib 22 ID: 22 (zebra) RefCnt: 3 Uptime: 02:27:13 VRF: default Valid, Installed Interface Index: 8 via 10.0.0.100, Ethernet0 (vrf default), weight 1 Dependents: (26) sonic# show nexthop-group rib 27 ID: 27 (zebra) RefCnt: 3 Uptime: 07:19:32 VRF: default Valid, Installed Interface Index: 8 via 10.0.0.101, Ethernet0 (vrf default), weight 1 Dependents: (26) SONiC host から vtysh で FRR CLI にアクセス admin@sonic:~$ vtysh Hello, this is FRRouting (version 8.2.2). Copyright 1996-2005 Kunihiro Ishiguro, et al. sonic# FRR は fpmsyncd に対しては NHA_GROUP(Next Hop Attribute Group)を使用しないため、「CLIで設定した場 合」の動作となる。 すなわち APPL_DBにはNEXT_HOP_GROUP_TABLE エ ントリは作成されず ROUTE_TABLE エントリのみとなる。
  18. Next Hop Group on SONiC | Twitter: @ebiken | 2022/11/23

    (参考)direct attached network に関する nexthop_id > route entry の nexthop_id は router_interface を参照 (nexthop object ではなく) admin@sonic:~$ sonic-db-cli ASIC_DB HGETALL 'ASIC_STATE:SAI_OBJECT_TYPE_ROUTE_ENTRY:{ "dest":"10.0.0.0/24","switch_id":"oid:0x21000000000000","vr":" oid:0x300000000004a"}' {'SAI_ROUTE_ENTRY_ATTR_NEXT_HOP_ID': 'oid:0x60000000003a1’} admin@sonic:~$ sonic-db-cli ASIC_DB HGETALL ASIC_STATE:SAI_OBJECT_TYPE_ROUTER_INTERFACE:oid:0x60000000003a1 {'SAI_ROUTER_INTERFACE_ATTR_VIRTUAL_ROUTER_ID': 'oid:0x300000000004a', '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:0x1000000000050’, 'SAI_ROUTER_INTERFACE_ATTR_MTU': '9100’}
  19. Next Hop Group on SONiC | Twitter: @ebiken | 2022/11/23

    (参考)ASIC エントリ確認方法 admin@sonic:~$ docker exec -it syncd bash root@sonic:/# root@sonic:/# /opt/bfn/install/bin/bfshell ******************************************** * WARNING: Authorised Access Only * ******************************************** bfshell> syncd / sonic host から ASIC 固有の debug コマンドを利用 ※ 具体的な利用方法解説には各ASICベンダとのNDAが必要なため省略 admin@sonic:~$ bcmsh Press Enter to show prompt. Press Ctrl+C to exit. NOTICE: Only one bcmsh or bcmcmd can connect to the shell at same time. drivshell>
  20. • Improving Route Scalability: Nexthops as Separate Objects • Linux

    Plumbers Conf 2019: David Ahern @Cumulus • https://lpc.events/event/4/contributions/434/attachments/251/436/nexthop-objects-talk.pdf • https://www.youtube.com/watch?v=HIqvUiwDHGk • lwn.net [net: Improve route scalability via support for nexthop objects] • https://lwn.net/Articles/763950/ • FRR: Docs: • Nexthop Groups: https://docs.frrouting.org/en/latest/nexthop_groups.html • Multiple nexthop static route: https://docs.frrouting.org/en/latest/static.html#multiple- nexthop-static-route • RFC5549 Advertising IPv4 Network Layer Reachability Information with an IPv6 Next Hop • https://datatracker.ietf.org/doc/rfc5549/ • RFC8950 Advertising IPv4 Network Layer Reachability Information (NLRI) with an IPv6 Next Hop • https://datatracker.ietf.org/doc/rfc8950/ Next Hop Group on SONiC | Twitter: @ebiken | 2022/11/23 参考文献