DUICUO

5分間の技術トーク | Linux PCをシンプルなエンタープライズルーターに変える

パート01

FRRoutingの概要

FRRouting(FRR)は、LinuxおよびUnixプラットフォーム向けの無料のオープンソースインターネットルーティングプロトコルスイートです。BGP、OSPF、RIP、IS-IS、PIM、LDP、BFD、Babel、PBR、OpenFabric、VRRPなどのルーティングプロトコルを実装し、EIGRPとNHRPをサポートするアルファ版も提供しています。

FRR はネイティブの Linux/Unix IP ネットワーク スタックとシームレスに統合され、ホスト、仮想マシン、コンテナのネットワークへの接続、ネットワーク サービスのアドバタイズ、LAN スイッチングとルーティング、インターネット アクセス ルーター、インターネット ピアリング機能など、さまざまなユース ケースに適したユニバーサル ルーティング スタックになります。

つまり、FRRはネイティブLinux/Unixシステムに導入できるため、マシンは様々なルーティングプロトコルの連携機能を迅速に習得し、デバイスをシンプルなエンタープライズルーターに変えることができます。多くの機器ベンダーのルーター製品はFRRの二次開発に基づいており、その高い普及率を証明しています。

FRR は主に 3 層のネットワーク ルーティング プロトコルを統合します。その中で最も重要かつ一般的に使用されるものは次のとおりです。

OSPF(Open Shortest Path First):OSPFは、インターネットプロトコル(IP)ネットワーク向けのリンクステートルーティングプロトコルです。リンクステートルーティングアルゴリズムを備えた内部ゲートウェイプロトコル(IGP)を使用し、単一の自律システム(AS)内で動作します。IPv4向けのOSPFv2はRFC 2328で定義されており、IPv6向けのOSPFv3はRFC 5340で定義されています。

IS-IS(Intermediate System to Intermediate System)は、通信事業者によって広く使用されている内部ゲートウェイプロトコルです。標準IS-ISプロトコルは、国際標準化機構(ISO)が策定したISO/IEC 10589:2002で規定されています。しかし、標準IS-ISプロトコルはコネクションレス型ネットワークサービス(CLNS)向けに設計されており、IPネットワークには直接適合しません。そこで、インターネット技術タスクフォース(IETF)は、IPネットワークに適用可能な統合IS-ISプロトコル(Integrated IS-IS)を開発しました。これは、RFC 1195などのRFC文書で規定されています。IPネットワークの普及により、一般的にIS-ISプロトコルと呼ばれる場合は、Integrated IS-ISプロトコルを指します。

BGP(ボーダーゲートウェイプロトコル)は、TCP上で動作する自律システム向けのルーティングプロトコルです。BGPは、インターネット規模のネットワークを処理できるように設計されたプロトコルであり、無関係なルーティングドメイン間の複数の接続を効果的に管理できます。BGPはEGPで得られた経験に基づいて構築されています。BGPシステムの主な機能は、他のBGPシステムとネットワーク到達可能性情報を交換することです。このネットワーク到達可能性情報には、リストされている自律システム(AS)に関する情報が含まれます。この情報により、相互接続されたASのトポロジマップが効果的に構築され、ルーティングループが排除され、ASレベルでのポリシー決定が可能になります。

パート02

FRRoutingでサポートされる機能

FRRは幅広い機能と多くのプラットフォームをサポートしています。サポートされる機能はプラットフォームによって異なります。以下の表は、FRRでサポートされる具体的な機能を示しています。

パート03

FRRoutingアーキテクチャ

従来のルーティングソフトウェアは、通常、すべてのルーティングプロトコル機能を担当する単一プロセスプログラムです。これとは対照的に、FRRは異なるアプローチを採用しています。FRRは、ルーティングテーブルを構築するために連携して動作する複数のデーモンで構成されています。重要なプロトコルはそれぞれ独自のデーモンに実装され、中間デーモン(Zebra)と通信してルーティングの決定を調整し、データプレーンと通信します。

FRRはモジュール型アーキテクチャを採用しており、高い柔軟性と拡張性を備えています。モジュール設計により、新しいプロトコルや機能の追加が非常に容易になります。各デーモンはプラグインシステムを実装しており、実行時に新しい機能をロードできるため、プログラム全体を再コンパイルすることなく、スイート全体を拡張できます。

FRRのアーキテクチャはモジュール化されているため、単一のプロトコルデーモンでエラー、クラッシュ、または脆弱性が発生しても、通常は他のプロトコルには影響しません。そのため、システム全体の回復力と信頼性が向上します。さらに、FRRの柔軟性により、様々なネットワークの特定のルーティングニーズに合わせてカスタマイズできます。FRRの全体的なフレームワークは次の図に示されています。

Zebra: ZebraはIPルートマネージャです。カーネルルーティングテーブルの更新、インターフェースのルックアップ、そして異なるルーティングプロトコル間のルート再配布機能を提供します。Zebraはスタンドアロンプ​​ロセスであり、すべてのプロセス間通信はZebraを介して処理されます。

BGPDとOSPFD:これらの独立したプロセスは、異なるプロトコルの処理プロセスを表します。上記の2つのプロセスは、それぞれBGPとOSPFを実装します。

パート04

FRRouting を素早く設定するにはどうすればいいですか?

(1)FRRoutingのソースコードを入手する

公式 FRR Web サイトから FRRouting git アドレスまたはインストール パッケージを取得します。

https://frrouting.org/

GitHub から取得したソースコードからのインストールを例に挙げます。

 git clone https://github.com/FRRouting/frr.git

(2)設定を作成する

FRRouingをダウンロードすると、ほとんどのホスト構成を自動的に検出できる設定スクリプトが提供されます。また、ビルドをカスタマイズして特定の機能や依存関係を追加または除外するための設定オプションもいくつか用意されています。

 ./bootstrap.sh

設定後、次の表に示すように、さまざまな設定プロパティを設定できます。

(3)カーネル転送機能を有効にする

/etc/sysctl.conf或者/etc/sysctl.d/90-routing-sysctl.conf

IPv4 および IPv6 転送を有効にします。

 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1

(4)建設を始める

構成オプションを選択したら、次の例に示すように、構成スクリプトを実行し、選択したオプションを渡します。

 ./configure \ --prefix=/usr \ --localstatedir=/var/run/frr \ --sbindir=/usr/lib/frr \ --syscnotallow=/etc/frr \ --enable-pimd \ --enable-watchfrr \ ...

ソフトウェアを構成したら、それをビルドしてシステムにインストールできます。

 make && sudo make install

すべてが成功すると、FRRouting がインストールされ、構成ファイルの構成を開始できます。

(5)プロセス構成ファイルの設定

インストール直後は、FRRを起動しても何も動作しません。これは、設定ディレクトリ内のファイルを編集してデーモンを明示的に有効化する必要があるためです。このファイルは通常 `/etc/frr/daemons` にあり、`init` または `systemd` 経由でサービスが起動/停止された際にどのデーモンが有効化されるかを決定します。例えば、以下のようになります。

 zebra=no bgpd=no ospfd=no ospf6d=no ripd=no ripngd=no isisd=no pimd=no ldpd=no nhrpd=no eigrpd=no babeld=no sharpd=no staticd=no pbrd=no bfdd=no fabricd=no # If this option is set the /etc/init.d/frr script automatically loads # the config via "vtysh -b" when the servers are started. # Check /etc/pam.d/frr if you intend to use "vtysh"! vtysh_enable=yes zebra_options=" -s 90000000 --daemon -A 127.0.0.1" bgpd_options=" --daemon -A 127.0.0.1" ospfd_options=" --daemon -A 127.0.0.1" ospf6d_options=" --daemon -A ::1" ripd_options=" --daemon -A 127.0.0.1" ripngd_options=" --daemon -A ::1" isisd_options=" --daemon -A 127.0.0.1" pimd_options=" --daemon -A 127.0.0.1" ldpd_options=" --daemon -A 127.0.0.1" nhrpd_options=" --daemon -A 127.0.0.1" eigrpd_options=" --daemon -A 127.0.0.1" babeld_options=" --daemon -A 127.0.0.1" sharpd_options=" --daemon -A 127.0.0.1" staticd_options=" --daemon -A 127.0.0.1" pbrd_options=" --daemon -A 127.0.0.1" bfdd_options=" --daemon -A 127.0.0.1" fabricd_options=" --daemon -A 127.0.0.1" #MAX_FDS=1024 # The list of daemons to watch is automatically generated by the init script. #watchfrr_optinotallow="" # for debugging purposes, you can specify a "wrap" command to start instead # of starting the daemon directly, eg to use valgrind on ospfd: # ospfd_wrap="/usr/bin/valgrind" # or you can use "all_wrap" for all daemons, eg to use perf record: # all_wrap="/usr/bin/perf record --call-graph -" # the normal daemon command is added to this at the end.

起動が必要なプロセスを「はい」に設定し、サービス起動コマンドを実行します。

 systemctl daemon-reload systemctl start frr

(6)ユーザーインターフェース

FRRのユーザーインターフェースは、基本的にCiscoルータの設定インターフェースと同じです。インストール後、システムでvtyshと入力することで、FRRoutingの管理インターフェースにアクセスできます(次の図を参照)。

画像は私のテストである Ubuntu 18.04 のスクリーンショットです。


「configure terminal」と入力して構成管理モードに入り、「?」と入力して、次の画像に示すように、サポートされている構成モジュールを表示します。

画像は私のテストである Ubuntu 18.04 のスクリーンショットです。

この時点で、Linux PC はさまざまなルーティング プロトコルを使用して構成でき、さまざまなルーティング デバイスとインターフェイスできます。

パート05

実験的なテスト環境の構築

著者のテストスクリーンショット、eNSP ビルドからの画像。

州外ルーティング デバイスの 1 つは、CLOUD1 経由で FRR がインストールされた Linux PC を使用してシミュレートされましたが、他のルーティング デバイスはすべて Huawei ルーティング デバイスでした。

州外 1 の構成は次のとおりです。

画像は私のテストである Ubuntu 18.04 のスクリーンショットです。

実験の結論: BGP コマンドを正常に構成し、ピア構成が正常であることを確認すると、最後のパケット キャプチャで、BGP が制御メッセージ交換を完了し、BGP ネイバーが正常に確立され、エンドツーエンド アクセスが正常であり、他のルーティング デバイスが BGP によって公開されたルートを正しく学習できることが示されました。

パート06

結論

FRRは優れたオープンソースソフトウェアであり、一般的なLinux PCを強力なエンタープライズグレードのルーターへと瞬時に変換し、日常的なネットワークニーズに対応します。しかしながら、FRRのパフォーマンスと安定性を向上させるには、研究開発チームが継続的な研究開発により多くの時間と労力を投入し、最適化と改良を重ねていく必要があります。

今後、デジタル時代の到来とインターネットアプリケーションの継続的な拡大に伴い、FRRは大きな機会と課題の両方に直面することになります。変化する市場のニーズに応えるため、FRRにはより高品質な機能が追加されていくと期待しています。同時に、より多くの業界専門家がFRRに参加し、共同で開発を推進することで、ユーザーに優れた、安全で効率的なユーザーエクスペリエンスを提供していくことを期待しています。