Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
『 FIB OFFLOADING NIC 』チーム:まるたか慶應義塾大学 湘南藤沢キャンパス
村井研究室 後期博士課程 空閑洋平,松谷健史{sora, macchan} @sfc.wide.ad.jp
http://netfpga.org/http://www.latticesemi.com/1
背景と目標• 高機能で入手が手軽なPCルータ、しかし専用機に劣る転送能力• pps(packet per second)問題• 1パケットあたりにかけられる処理時間の問題
• バスとメモリの帯域問題• 高速Ethernetに対するPCI Express、メモリ帯域の問題
• ネットワークは発展途上• L1のインターフェイス仕様は固定しているのに対しL2/L3技術は変化が早い
• PCルータの高機能と専用機の高性能のハイブリッド(いいとこどり)• PC NICにL2/L3スイッチの専用ASICに代わり自分で再構成可能な汎用FPGAを採用
• オープンなハードウェア技術によって、個人でもアイディアがあれば専用機並(以上?)の性能をひきだすことが証明できたらいいなあ。。。
2
PPS問題速度
Frame Size 64Frame Size 64Frame Size 64 Frame 1518速度 packet per
secondtime/packet
CPU clock/pkt※ @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 10 20
※片方向通信
4
概要図テスタ ルータ
ブラウザデモ
node.js(web server, mmap)
テスター回路
Kernel FIB NICドライバソ
フトウェア
ハードウェア
PCルータ
websocket
PCI / PCIeコントローラ
NICARPNDPIPv6IPv4
送信 受信
PCI /PCIeコントローラ
送信 受信
FIB
5
デモ
ネットワークテスタ
FIBNICルータ
ポート0 ポート1 ポート2 ポート3
IPルックアップ
40.5万ルート!!
6
IPV4性能評価(参考値)
64バイトフレーム64バイトフレーム 1518バイトフレーム1518バイトフレーム 条件
遅延(ns)
フレーム間GAP/pps ※1
遅延(ns)
フレーム間GAP/pps
ポート数IPv4 Route
NIC+PCルータi5 2.8GHz (Linux
3.3.7)24,144 270 byte
365,497 pps 101,152 580 byte59,355 pps
Giga×2ポート2 Route
FIBNIC+PCルータCeleron2.53G(Linux
3.3.7)976 12 byte
1,488,095 pps 976 12 byte81,274 pps
Giga×4ポート405,452 Route
某社L3スイッチ 6,600 13 byte1,470,588 pps 20,608 13 byte
81,222 pps
Giga×4ポート4 Route
※1 パケットをロストしない時のフレーム間ギャップ最小値(Ethernetの規格上は12 が最小)
※2 理論値と同じ
7
FIBNIC遅延内訳
• FIBNIC回路
• IP Lookup、Fowarding、Filtering、Priority処理
• DestIPまでの8+34バイトフレーム
• IPルーティングに必要なDestIPを受信するまでのフレーム内サイズ(8はプリアンプル部+StartFrameDelimiter)
• RGMII/GMII変換回路
• 4bit@250MHz、8bit@125MHz変換
• PHYチップ
• ケーブルの信号をASICやFPGAで接続可能なディジタル信号に変換
PHYチップ
RGMII/GMII変換
DestIPまでの8+34バイト
FIBNIC
320ns
40ns
336ns
280ns
IPv4 976ns IPv4(IPv6 1,064ns)
5cycle
42cycle
35cycle
40cycle
@125MHz
8
まとめ• 市販のGigabit Ether FPGAボード上でH/W IPv4/IPv6 ルーティングが可能なPC用NICを実装
• ワイヤーレートでのパケットルーティング
• 1,488,095 経路探索/秒 (IPv4 40万経路時、回路単体では125M 経路探索/秒)
• ハードウェアの高速性とソフトウェアの高機能性の融合
• 簡単なパケットはハードウェア、複雑なプロトコルはNICにて処理
• 10/40G以上の高速Ethernetを考慮した回路設計
• インターフェイスの入口から出口まで同じクロック、バス幅、ウェイト無し設計
• ハードウェア記述言語による回路の再構成
• フィルタリング、フォワーディング条件等。回路の再構成時間は数秒
• ワイヤーレートでの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性能評価(参考値)
80バイトフレーム80バイトフレーム 1518バイトフレーム1518バイトフレーム 条件
遅延(ns)
フレーム間GAP/pps ※1
遅延(ns)
フレーム間GAP/pps
ポート数
FIBNIC+PCルータCeleron2.53G(Linux
3.3.7)1,064 12 byte
1,250,000 pps 1,064 12 byte81,274 pps Giga×4ポート
某社L3スイッチ 6,552 13 byte1,237,624 pps 20,480 13 byte
81,222 pps Giga×4ポート
※1 パケットをロストしない時のフレーム間ギャップ最小値(Ethernetの規格上は12 が最小)
※2 理論値と同じ
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