$30 off During Our Annual Pro Sale. View Details »

SONiCで設定するFRRouting

 SONiCで設定するFRRouting

SONiCでは、Quaggaをベースに改良が続けられているRouting softwareであるFRRoutingを利用してBGPの機能を実現しています。本資料では、SONiCの設定によりFRRoutingをどのように制御しているかの概要について解説します。

Masaru OKI

June 28, 2019
Tweet

More Decks by Masaru OKI

Other Decks in Technology

Transcript

  1. FRRouting? • https://frrouting.org/ • Quaggaを基にした IP routing protocol suite •

    BGP, IS-IS, LDP, OSPF, PIM, RIPに対応。 • 対応OSはLinux, FreeBSD, NetBDS, OpenBSD. • 最新バージョンは7.1 (2019年6月18日リリース) 2
  2. SONiCで使われるFRRouting • SONiC自体は、複数のRouting softwareから任意のものを選択できる。 ◦ Quagga ◦ FRRouting ◦ goBGP

    • ビルド時に決定されるため、配布されるバイナリはいずれか一つを含む。 • 2019年5月に、無指定時のRouting softwareがFRRoutingに切り替わった。 ◦ 以前はQuaggaだった • 2019年6月25日時点で、SONiCで使われているFRRoutingのバージョンは7.0.1 3
  3. JSON形式設定とbgpd.confの関係 JSON “DEVICE_METADATA”: { “localhost”: { “bgp_asn”: “ 65100” }

    }, “BGP_NEIGHBOR”: { “10.0.0.1”: { “asn”: “65200”, “name”: “Tokyo”, “keepalive”: 30, “holdtime”: 120” } bgpd.conf router bgp 65100 neighbor 10.0.0.1 remote-as 65200 neighbor 10.0.0.1 description “ Tokyo” neighbor 10.0.0.1 timers 30 120 自分のASN neighborのASN 6
  4. 参照されるJSONキー一覧 • DEVICE_METADATA-localhost ◦ hostname ◦ bgp_asn ◦ type -

    ToRRouterかその他 ◦ default_bgp_status - upかdown ◦ deployment_id ◦ docker_routing_config_mode • LOOPBACK_INTERFACE-Loopback0 ◦ IP address • VLAN_INTERFACE-(vlanX) ◦ IP address • BGP_NEIGHBOR-(neighbor_address) ◦ asn ◦ name ◦ keepalive ◦ holdtime ◦ admin_status - upかdown ◦ rrclient ◦ nhopself • BGP_PEER_RANGE-(group) ◦ name ◦ peer_asn ◦ src_address ◦ ip_range 7
  5. 1. JSON形式の設定を読み込みSONiCのConfig DBにデータを格納する 2. DBにsubscribeしていたbgpcfgdがデータを読む ◦ 読むデータは現在 bgp_asnとneighbor asn, name,

    admin_statusのみ ◦ neighborの削除には対応。追加の場合は上記設定のみが反映される 3. データの内容をvtyshコマンドを使いbgpdに叩き込む SONiCにおけるBGP設定変更フロー 9 bgpcfgd Config DB config_db.json vtysh bgpd config reload
  6. SONiCでのBGP制限事項 bgpd.conf.j2を見る限り、FRRoutingで対応しているうち(少なくとも)下記ができない • VRFには対応しない (router bgp行は1つのみ) • distance指定には対応しない • aggregate-address指定には対応しない

    • router-idはLoopback0につけられたIPアドレスで固定 • bestpathはas-path multipath-relaxで固定 • redistribute指定に対応しない • as-path access-listに対応しない bgpd.conf.j2に記述を追加し、JSON形式の設定を書き、bgpcfgdを変更すれば、拡張可能。 10