『 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