2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

BitVisorAdvent Calendar 2017

Day 14

BitVisorのVLANタグの取り扱い

Last updated at Posted at 2017-12-13

BitVisorのVLANタグの取り扱いについてです。

BitVisorのVLANタグ対応部分

BitVisorのほとんどの部分はVLANタグなど気にしておらず、単なるパススルーがほとんどです。例えばTCP/IPスタックでVLANタグを使うとか、そんなことは、あ、それは設定だけでできるかも? VPNは無理だと思います。

Broadcom GbEドライバー

少し前まで、VLANタグ付きパケットを受信すると黙って即捨てるという素敵な実装になっていましたが、10月頃に受信できるよう実装が入りました。

対応方法ですが、送信に関しては、そもそも特に何もしなくてもできていました。VLANタグに関するハードウェアの機能は使用していません。受信に関しては、ハードウェアが自動的に分離してくれているのを、ソフトウェアで挿入し直します。さすがにフレーム全体のメモリーコピーはあんまりなので、受信バッファーを4バイト後ろにずらしておき、タグを挿入する時には先頭の12バイトを4バイト手前にコピーする方法をとっています。受信に関してはハードウェアの機能を使用しない選択肢がありません。

本当は、タグを分離したままVMM内を引き回せるようにできているといいのですが、その前に非連続メモリーのバッファーやチェックサムなどのオフロードに対応したほうが良さそうです。

Intel GbEドライバー

Virtio-netエミュレーション使用時には、何もしなくても送受信できているようです。VLANタグに関するハードウェアの機能は使用していません。

Para-passthroughモードでは未確認です。

Virtio-netデバイスのエミュレーション

Virtioの仕様を見るとVLANフィルター機能に対応できるようになっていますが、BitVisorではその機能は提供していません。

オペレーティングシステムからパススルーでの使い方

Linuxでは非常に簡単です。GNU/Linuxでは、iproute2に含まれるipというコマンドを用いて、VLANの設定ができます。Virtio-netエミュレーションでは、Broadcom・Intel GbEのどちらでも問題なく通信できました。

Windowsではオペレーティングシステム標準の機能はなさそうです。ネットワークインターフェイスのデバイスドライバーが対応していれば設定できる、みたいな感じのようです。残念ながらvirtio-netのドライバーだとうまくいかない様子でした。

macOSではオペレーティングシステム標準の機能がありますが、デバイスドライバーの何らかの機能をあてにしているのか、virtio-net-osxドライバーだと使えないようでした。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?