グリーさんが、「任天堂の倒し方、知らないでしょ?オレらはもう知ってますよ」
といったそうだけど、YAHOOは倒せるでしょうか?
OpenStack Days Tokyoで、YAHOOさんは、FPGAについて「Pythonなどで回路が書けることが重要」と
言っていました。
でも、当分そんなものが、できそうもありません。
ということは、HDL(Verilogとか)で、OpenStackのネットワークが書ければ
倒せそうです???
ということで???FPGAでネットワーク、具体的にはEthernetを操作する方法を
まとめてみたいと思います
■なぜ、OpenStackでFPGAなのか?
OpenStackでネットワーク構築を行った場合、ネットワークが高負荷になる
ことがあります。この時、ハードウエア的にIPアドレスを振り分けられれば
(SDNみたいなことが出来れば)負荷がへるかもしれません。
FPGAを使えば、Ethernet層のデータを取得できるので、ネットワークを
操作できるかもしれません。そこで、OpenStackでFPGAになります。
■FPGAのクロックは遅いのに?
FPGAは、並列処理できるからです。データを振り分けて並列処理してしまえば、
遅くても処理量は大量になります。
■具体的には
実は、FPGAだけで行うのではないです。
ネットワークは、以下のようになります。
物理層(PHY)
↓ GMII,RGMII,RMIIなど
Ethernet
↓ FPGA
IP
電気信号が入ってくる物理層(PHY)は、余り大きな違いが無いので、
固定的なチップを使ったほうがよさそうです。
たとえば、NXP ARM/EX LAN&SDカード拡張子基板等がありえますが、
これは、100Baseレベルなので、1000Baseでやるには、もっといいチップがいるかも?
で、それと、FPGAをつなぎます。
インターフェースとしては、GMII,RGMII,RMIIなどがあります。
上記のチップRMIIでこれは100Baseどまりです。
1000Baseなものは、GMII等になります。
FPGAは、アルテラ(altera)、ザイリンクス(xilinx)などがあります。
ここではアルテラ(altera)で話します。
FPGAはそのままでは扱いにくいので、評価ボードがあります。
開発時はこれを使います。今回はDE0を使うとします。
Ethernetの部分は、すでに作ってあるもの(IPといいます)があります。
優勝のものもあり、それはalteraのFPGAの開発環境QuartusⅡから作れます。
オープンソースのものもあります。OpenCoresというもので
そこのEthernet MAC 10/100 Mbps :: OverviewのLatest version:Downloadから、登録すれば(左上)、ダウンロードできるようです。
QuartusⅡで、
このIPを読み込み、
インターネット部分の処理をverilogで記述して、
ピン配置を指定(pin planner)して
コンパイルして、
FPGAに転送し、
PHY層のものと、FPGAを(RMIIなどのインターフェースに基づき)配線すれば、
出来上がりです。
■ここまでの操作について
本に書いてあるようです。FPGAマガジンの3月号にOpenCoresのEthernetの記事があるようです。また、マクニカさんのmpression等を使えば、この辺のことは全部やってくれそうです。
ということで、なかなか簡単にはYAHOOさんは、倒せそうにもありません。
【参考】
・CQ出版社 セミナー
実習・ハードウェアによる大容量ストリーミング伝送システムの開発
講師:横溝 憲治 氏
といったそうだけど、YAHOOは倒せるでしょうか?
OpenStack Days Tokyoで、YAHOOさんは、FPGAについて「Pythonなどで回路が書けることが重要」と
言っていました。
でも、当分そんなものが、できそうもありません。
ということは、HDL(Verilogとか)で、OpenStackのネットワークが書ければ
倒せそうです???
ということで???FPGAでネットワーク、具体的にはEthernetを操作する方法を
まとめてみたいと思います
■なぜ、OpenStackでFPGAなのか?
OpenStackでネットワーク構築を行った場合、ネットワークが高負荷になる
ことがあります。この時、ハードウエア的にIPアドレスを振り分けられれば
(SDNみたいなことが出来れば)負荷がへるかもしれません。
FPGAを使えば、Ethernet層のデータを取得できるので、ネットワークを
操作できるかもしれません。そこで、OpenStackでFPGAになります。
■FPGAのクロックは遅いのに?
FPGAは、並列処理できるからです。データを振り分けて並列処理してしまえば、
遅くても処理量は大量になります。
■具体的には
実は、FPGAだけで行うのではないです。
ネットワークは、以下のようになります。
物理層(PHY)
↓ GMII,RGMII,RMIIなど
Ethernet
↓ FPGA
IP
電気信号が入ってくる物理層(PHY)は、余り大きな違いが無いので、
固定的なチップを使ったほうがよさそうです。
たとえば、NXP ARM/EX LAN&SDカード拡張子基板等がありえますが、
これは、100Baseレベルなので、1000Baseでやるには、もっといいチップがいるかも?
で、それと、FPGAをつなぎます。
インターフェースとしては、GMII,RGMII,RMIIなどがあります。
上記のチップRMIIでこれは100Baseどまりです。
1000Baseなものは、GMII等になります。
FPGAは、アルテラ(altera)、ザイリンクス(xilinx)などがあります。
ここではアルテラ(altera)で話します。
FPGAはそのままでは扱いにくいので、評価ボードがあります。
開発時はこれを使います。今回はDE0を使うとします。
Ethernetの部分は、すでに作ってあるもの(IPといいます)があります。
優勝のものもあり、それはalteraのFPGAの開発環境QuartusⅡから作れます。
オープンソースのものもあります。OpenCoresというもので
そこのEthernet MAC 10/100 Mbps :: OverviewのLatest version:Downloadから、登録すれば(左上)、ダウンロードできるようです。
QuartusⅡで、
このIPを読み込み、
インターネット部分の処理をverilogで記述して、
ピン配置を指定(pin planner)して
コンパイルして、
FPGAに転送し、
PHY層のものと、FPGAを(RMIIなどのインターフェースに基づき)配線すれば、
出来上がりです。
■ここまでの操作について
本に書いてあるようです。FPGAマガジンの3月号にOpenCoresのEthernetの記事があるようです。また、マクニカさんのmpression等を使えば、この辺のことは全部やってくれそうです。
ということで、なかなか簡単にはYAHOOさんは、倒せそうにもありません。
【参考】
・CQ出版社 セミナー
実習・ハードウェアによる大容量ストリーミング伝送システムの開発
講師:横溝 憲治 氏