14
FIB OFFLOADING NIC チーム:まるたか 慶應義塾大学 湘南藤沢キャンパス 村井研究室 後期博士課程 空閑洋平,松谷健史 {sora, macchan} @sfc.wide.ad.jp http://netfpga.org / http://www.latticesemi.com / 1

FIB OFFLOADING NIC チーム:まるたかweb.sfc.wide.ad.jp/~macchan/orc2012.pdfPPS問題 速度 Frame Size 64 Frame 1518 packet per second time/packet CPU clock/pkt ※ @4GHz pps

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: FIB OFFLOADING NIC チーム:まるたかweb.sfc.wide.ad.jp/~macchan/orc2012.pdfPPS問題 速度 Frame Size 64 Frame 1518 packet per second time/packet CPU clock/pkt ※ @4GHz pps

『 FIB OFFLOADING NIC 』チーム:まるたか慶應義塾大学 湘南藤沢キャンパス

村井研究室 後期博士課程 空閑洋平,松谷健史{sora, macchan} @sfc.wide.ad.jp

http://netfpga.org/http://www.latticesemi.com/1

Page 2: FIB OFFLOADING NIC チーム:まるたかweb.sfc.wide.ad.jp/~macchan/orc2012.pdfPPS問題 速度 Frame Size 64 Frame 1518 packet per second time/packet CPU clock/pkt ※ @4GHz pps

背景と目標• 高機能で入手が手軽なPCルータ、しかし専用機に劣る転送能力• pps(packet per second)問題• 1パケットあたりにかけられる処理時間の問題

• バスとメモリの帯域問題• 高速Ethernetに対するPCI Express、メモリ帯域の問題

• ネットワークは発展途上• L1のインターフェイス仕様は固定しているのに対しL2/L3技術は変化が早い

• PCルータの高機能と専用機の高性能のハイブリッド(いいとこどり)• PC NICにL2/L3スイッチの専用ASICに代わり自分で再構成可能な汎用FPGAを採用

• オープンなハードウェア技術によって、個人でもアイディアがあれば専用機並(以上?)の性能をひきだすことが証明できたらいいなあ。。。

2

Page 3: FIB OFFLOADING NIC チーム:まるたかweb.sfc.wide.ad.jp/~macchan/orc2012.pdfPPS問題 速度 Frame Size 64 Frame 1518 packet per second time/packet CPU clock/pkt ※ @4GHz pps

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

Page 4: FIB OFFLOADING NIC チーム:まるたかweb.sfc.wide.ad.jp/~macchan/orc2012.pdfPPS問題 速度 Frame Size 64 Frame 1518 packet per second time/packet CPU clock/pkt ※ @4GHz pps

バスとメモリの帯域問題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

Page 5: FIB OFFLOADING NIC チーム:まるたかweb.sfc.wide.ad.jp/~macchan/orc2012.pdfPPS問題 速度 Frame Size 64 Frame 1518 packet per second time/packet CPU clock/pkt ※ @4GHz pps

概要図テスタ ルータ

ブラウザデモ

node.js(web server, mmap)

テスター回路

Kernel FIB NICドライバソ

フトウェア

ハードウェア

PCルータ

websocket

PCI / PCIeコントローラ

NICARPNDPIPv6IPv4

送信 受信

PCI /PCIeコントローラ

送信 受信

FIB

5

Page 6: FIB OFFLOADING NIC チーム:まるたかweb.sfc.wide.ad.jp/~macchan/orc2012.pdfPPS問題 速度 Frame Size 64 Frame 1518 packet per second time/packet CPU clock/pkt ※ @4GHz pps

デモ

ネットワークテスタ

FIBNICルータ

ポート0 ポート1 ポート2 ポート3

IPルックアップ

40.5万ルート!!

6

Page 7: FIB OFFLOADING NIC チーム:まるたかweb.sfc.wide.ad.jp/~macchan/orc2012.pdfPPS問題 速度 Frame Size 64 Frame 1518 packet per second time/packet CPU clock/pkt ※ @4GHz pps

 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

Page 8: FIB OFFLOADING NIC チーム:まるたかweb.sfc.wide.ad.jp/~macchan/orc2012.pdfPPS問題 速度 Frame Size 64 Frame 1518 packet per second time/packet CPU clock/pkt ※ @4GHz pps

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

Page 9: FIB OFFLOADING NIC チーム:まるたかweb.sfc.wide.ad.jp/~macchan/orc2012.pdfPPS問題 速度 Frame Size 64 Frame 1518 packet per second time/packet CPU clock/pkt ※ @4GHz pps

まとめ• 市販のGigabit Ether FPGAボード上でH/W IPv4/IPv6 ルーティングが可能なPC用NICを実装

• ワイヤーレートでのパケットルーティング

• 1,488,095 経路探索/秒 (IPv4 40万経路時、回路単体では125M 経路探索/秒)

• ハードウェアの高速性とソフトウェアの高機能性の融合

• 簡単なパケットはハードウェア、複雑なプロトコルはNICにて処理

• 10/40G以上の高速Ethernetを考慮した回路設計

• インターフェイスの入口から出口まで同じクロック、バス幅、ウェイト無し設計

• ハードウェア記述言語による回路の再構成

• フィルタリング、フォワーディング条件等。回路の再構成時間は数秒

• ワイヤーレートでのNAT、トンネリング、4と6共存技術など色々できそう!?!

9

Page 10: FIB OFFLOADING NIC チーム:まるたかweb.sfc.wide.ad.jp/~macchan/orc2012.pdfPPS問題 速度 Frame Size 64 Frame 1518 packet per second time/packet CPU clock/pkt ※ @4GHz pps

オープンソースネットワークテスタ

•Magukara• FPGAベースのオープンソースハードウェア

• Lattice ECP3 Versa Development Kit ($99ドル !!)

• 1000Base-T, IPv4/v6サポート

•URL: https://github.com/Murailab-arch/magukara

10

Page 11: FIB OFFLOADING NIC チーム:まるたかweb.sfc.wide.ad.jp/~macchan/orc2012.pdfPPS問題 速度 Frame Size 64 Frame 1518 packet per second time/packet CPU clock/pkt ※ @4GHz pps

予備スライド

11

Page 12: FIB OFFLOADING NIC チーム:まるたかweb.sfc.wide.ad.jp/~macchan/orc2012.pdfPPS問題 速度 Frame Size 64 Frame 1518 packet per second time/packet CPU clock/pkt ※ @4GHz pps

 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

Page 13: FIB OFFLOADING NIC チーム:まるたかweb.sfc.wide.ad.jp/~macchan/orc2012.pdfPPS問題 速度 Frame Size 64 Frame 1518 packet per second time/packet CPU clock/pkt ※ @4GHz pps

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

Page 14: FIB OFFLOADING NIC チーム:まるたかweb.sfc.wide.ad.jp/~macchan/orc2012.pdfPPS問題 速度 Frame Size 64 Frame 1518 packet per second time/packet CPU clock/pkt ※ @4GHz pps

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