Comments
Description
Transcript
『 FIB OFFLOADING NIC 』 チーム:まるたか
『 FIB OFFLOADING NIC 』 チーム:まるたか 慶應義塾大学 湘南藤沢キャンパス 村井研究室 後期博士課程 空閑洋平,松谷健史 {sora, macchan} @sfc.wide.ad.jp http://www.latticesemi.com/ 1 http://netfpga.org/ 背景と目標 • 高機能で入手が手軽なPCルータ、しかし専用機に劣る転送能力 • pps(packet per second)問題 • • バスとメモリの帯域問題 • • L1のインターフェイス仕様は固定しているのに対しL2/L3技術は変化が早い PCルータの高機能と専用機の高性能のハイブリッド(いいとこどり) • • 高速Ethernetに対するPCI Express、メモリ帯域の問題 ネットワークは発展途上 • • 1パケットあたりにかけられる処理時間の問題 PC NICにL2/L3スイッチの専用ASICに代わり自分で再構成可能な汎用FPGAを採用 オープンなハードウェア技術によって、個人でもアイディアがあれば専用機並(以 上?)の性能をひきだすことが証明できたらいいなあ。。。 2 PPS問題 Frame Size 64 速度 packet per second Frame 1518 CPU clock/pkt time/packet ※ @4GHz pps 100M 148,809 pps 6,905 ns 27,600 clock 8,127 pps Giga 1,488,095 pps 690 ns 2,760 clock 81,274 pps 10G 14,880,950 pps 69 ns 276 clock 812,743 pps 40G 59,523,800 pps 17 ns 68 clock 3,250,972 pps 100G 148,809,500 pps 7 ns 28 clock 8,127,433 pps ※ 1ポート、片方向通信の場合 CPUコア数を増やしたりGPU併用で処理の負担を軽減することができる 3 バスとメモリの帯域問題 DDR3-1600 12.8GB/s ※ ※片方向通信 PCI-Express G2/×8 4GB/s 10G Ethernet 1.25GB/s 40G Ethernet 送信 受信 5GB/s 100G Ethernet 12.5GB/s 0 4 10 20 概要図 ルータ ハードウェア ソフトウェア テスタ ブラウザ デモ PCルータ websocket Kernel FIB node.js (web server, mmap) FIB PCI /PCIe コントローラ テスター回路 送信 IPv4 受信 5 送信 NIC ドライバ PCI / PCIe コントローラ IPv6 ARP NDP NIC 受信 デモ ネットワーク テスタ 40.5万ルート!! FIBNIC ルータ IPルックアップ ポート0 ポート1 6 ポート2 ポート3 IPV4性能評価(参考値) ※2 理論値と同じ 64バイトフレーム 1518バイトフレーム 遅延 フレーム間 (ns) GAP/pps ※1 NIC+PCルータ i5 2.8GHz (Linux 3.3.7) FIBNIC+PCルータ Celeron2.53G(Linux 3.3.7) 某社L3スイッチ 24,144 遅延 フレーム間 (ns) 270 byte 101,152 365,497 pps 12 byte 976 1,488,095 pps 13 byte 6,600 1,470,588 pps GAP/pps 580 byte 59,355 pps 条件 ポート数 IPv4 Route Giga×2ポート 2 Route 976 12 byte 81,274 pps Giga×4ポート 20,608 13 byte 81,222 pps Giga×4ポート 405,452 Route 4 Route ※1 パケットをロストしない時のフレーム間ギャップ最小値(Ethernetの規格上は12 が最小) 7 FIBNIC遅延内訳 • FIBNIC回路 • • 280ns IPルーティングに必要なDestIPを受信 するまでのフレーム内サイズ(8はプ リアンプル部+StartFrameDelimiter) 336ns RGMII/GMII変換回路 • • IP Lookup、Fowarding、Filtering、 Priority処理 FIBNIC @125MHz 35cycle DestIPまでの8+34バイトフレーム • • IPv4 976ns IPv4 (IPv6 1,064ns) 8+34バイト 40ns RGMII/GMII変換 42cycle 5cycle 4bit@250MHz、8bit@125MHz変換 PHYチップ • DestIPまでの ケーブルの信号をASICやFPGAで接続 可能なディジタル信号に変換 320ns 8 PHYチップ 40cycle まとめ • • 市販のGigabit Ether FPGAボード上でH/W IPv4/IPv6 ルーティングが可能なPC用NICを 実装 • ワイヤーレートでのパケットルーティング • 1,488,095 経路探索/秒 (IPv4 40万経路時、回路単体では125M 経路探索/秒) ハードウェアの高速性とソフトウェアの高機能性の融合 • • 10/40G以上の高速Ethernetを考慮した回路設計 • • 簡単なパケットはハードウェア、複雑なプロトコルはNICにて処理 インターフェイスの入口から出口まで同じクロック、バス幅、ウェイト無し設計 ハードウェア記述言語による回路の再構成 • フィルタリング、フォワーディング条件等。回路の再構成時間は数秒 • ワイヤーレートでのNAT、トンネリング、4と6共存技術など色々できそ う!?! 9 オープンソース ネットワークテスタ •Magukara • FPGAベースのオープンソースハードウェア • Lattice ECP3 Versa Development Kit ($99ドル !!) • 1000Base-T, IPv4/v6サポート • URL: https://github.com/Murailab-arch/magukara 10 予備スライド 11 IPV6性能評価(参考値) ※2 理論値と同じ 80バイトフレーム 1518バイトフレーム 遅延 フレーム間 (ns) GAP/pps ※1 FIBNIC+PCルータ 遅延 フレーム間 (ns) GAP/pps 条件 ポート数 Celeron2.53G(Linux 3.3.7) 1,064 12 byte 1,250,000 pps 1,064 12 byte 81,274 pps Giga×4ポート 某社L3スイッチ 6,552 13 byte 1,237,624 pps 20,480 13 byte 81,222 pps Giga×4ポート ※1 パケットをロストしない時のフレーム間ギャップ最小値(Ethernetの規格上は12 が最小) 12 FPGAの再コンフィグレーション • フィルタの条件はHDL言語でFPGAの回路として記述可能。 Reconfiguration時間は数秒。 • IP宛先が192.2.3/24でかつポートが22の場合パケットをドロップ する記述 if (ipv4_dest_ip[31:8]==24‘hc00203 && (ipv4_dest_port==16‘d22)) foward_port = 4‘b0000; // どのポートへも転送しない • iSCSI宛のパケットは4番ポートへ転送する記述 if (ipv4_dest_port==16‘d3260) foward_port = 4‘b1000; // 第4ポートへ転送する 13 NICへ転送する条件 HDL記述(例) • wire frame_type_ipv4 = (eth_type == 16'h0800); • wire frame_type_ipv6 = (eth_type == 16'h86dd); • wire forward_nic = (frame_type_ipv4 && (ipv4_dest_ip == interface_ipv4_addr || ipv4_dest_ip == 32'h0)) || eth_dest_addr[40] == 1'b || .............; 14