Skip to content

Instantly share code, notes, and snippets.

@jedipunkz
Last active December 17, 2015 18:39
Show Gist options
  • Save jedipunkz/5655177 to your computer and use it in GitHub Desktop.
Save jedipunkz/5655177 to your computer and use it in GitHub Desktop.
OpenStack Quantum における仮想マシン通信不具合の対処

OpenStack Quantum における仮想マシン通信不具合の対処

OpenStack (Grizzly, Folsom) に仮想マシンにて特定の通信が出来ない不具合がある。理由は GRE トンネル時に Ethernet の最大フレーム長を超えてしまうため。(@ishikawa84g さんに教えて頂きました。)

解決策として

  • VM の MTU を小さくする
  • トンネルポート, 物理ポート, 物理スイッチの MTU を小さくする
  • フラグメントを許容する

があるが(これも @ishikawa84g さんに教えて頂きました。)、1項目は仮想ネットワークの複雑化と共に更に MTU 調整が必要になる恐れがあるため NG。2項目は Switch によっては難しくなるかも。3項目は OVS の下記の操作にて対処可能。

% sudo ovs-vsctl set interface gre-2 type=gre options:remote_ip=10.200.10.59 options:pmtud=false

この操作は全てのネットワークノード、コンピュートノードにて実施する必要あり。

が、quantum-plugin-openvswitch-agent プロセスの再起動と共に上記の pmtud=false オプションがかき消されてしまうため、Quantum の下記の 'ソースコードの diff' を反映させるとオプションを付加出来る。これによりフラグメントが発生し、本問題を解決出来る。

根本的な解決方法は OVS, Linux Kernel の対処を待つこととなりそう。ちなみに OpenStack に対するパッチコードのレビューも進んでいるが 適用される可能性が小さくなってきた。

https://review.openstack.org/#/c/27937/

下記が Quantum ソースコードの diff 結果

% diff -u /usr/lib/python2.7/dist-packages/quantum/agent/linux/ovs_lib.py.org /usr/lib/python2.7/dist-packages/quantum/agent/linux/ovs_lib.py
--- /usr/lib/python2.7/dist-packages/quantum/agent/linux/ovs_lib.py.org 2013-05-27 12:11:28.503356553 +0900
+++ /usr/lib/python2.7/dist-packages/quantum/agent/linux/ovs_lib.py     2013-05-27 12:03:22.626967070 +0900
@@ -167,6 +167,7 @@
         self.set_db_attribute("Interface", port_name, "options:in_key", "flow")
         self.set_db_attribute("Interface", port_name, "options:out_key",
                               "flow")
+        self.set_db_attribute("Interface", port_name, "options:pmtud", "false")
         return self.get_port_ofport(port_name)

     def add_patch_port(self, local_name, remote_name):
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment