hogeとはワイルドカードのようなものです。日々起こった、さまざまなこと −すなわちワイルドカード− を取り上げて日記を書く、という意味で名付けたのかというとそうでもありません。適当に決めたらこんな理由が浮かんできました。
04/16/2014 ふむ [長年日記]
■ [Linux] Linux の VXLAN モジュールの Unicast Mode
だいぶ昔に実装されたものだけれど,何かあんまり知られてないのかなと思ったので,まあメモがてら書いておこうかなと思った次第.
執筆時点の VXLAN I-D (draft-mahalingam-dutt-dcops-vxlan-09) には,宛先が Unknown / Broadcast / Multicast なフレームについては Outer を Multicast アドレスとして encap するようなことが書いてあって,本件実装前の Linux VXLAN でもそういう使い方をするようになってました.
とはいえ環境によっては Multicast を使えなかったり使いたくなかったりすることも往々にしてあるわけで,じゃあ全部 Unicast でできるようにしようぜってな話がクラウド界隈では結構前からありました. また VXLAN にお熱なメーカー/ベンダー各社もやはり "Unicast Mode" と題して高らかに対応を謳ってたりしました.
もっとも,その実装方法にはいくつかのパターンがあって,「VTEP でフレームをコピー/転送する負荷と引き替えに,予めデフォルト送信先を VTEP に全て登録しておく」「Multicast による学習メカニズムを諦めて,VTEP 以下の全てのノードの MAC を予め VTEP の FDB に教えておく」といったものがあるようですけれど.
さて Linux の VXLAN の話に戻ると,こいつの Unicast Mode は前者で実装されていて (勿論何か別の仕組みを使えば後者もいけるはずだけど),予め対向 VTEP のアドレスを登録しておくと,FDB に学習エントリがなかったりした時はその全てに対して encap されたパケットが飛ぶような形になってます.
ではどのように複数の対向を登録できるのか.これは vxlan: allow specifying multiple default destinations と題した patch の cover letter に書いてあって,抜粋すると,
The default destinations list is managed via the fdb entry with "00:00:00:00:00:00" MAC address and does not require changes to vxlan netlink API.
要するに MAC ゼロな FDB エントリを登録すると,その全てがデフォルト送信先として扱われるので,
# bridge fdb append 00:00:00:00:00:00 dev vxlan0 dst 54.242.49.246 # bridge fdb append 00:00:00:00:00:00 dev vxlan0 dst 23.22.26.34 # bridge fdb append 00:00:00:00:00:00 dev vxlan0 dst 184.72.129.120
こんな感じで登録を行うことになるわけですね.
この実装は Linux 3.11 から入っているはずなので,3.11 以降の Kernel と,対応した iproute2 を使えば,利用可能なはずです.