This file is indexed.

/usr/share/doc/ganeti/html/design-openvswitch.html is in ganeti-doc 2.16.0~rc2-1build1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Support for Open vSwitch &#8212; Ganeti 2.16.0~rc2 documentation</title>
    <link rel="stylesheet" href="_static/style.css" type="text/css" />
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    './',
        VERSION:     '2.16.0~rc2',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true,
        SOURCELINK_SUFFIX: '.txt'
      };
    </script>
    <script type="text/javascript" src="_static/jquery.js"></script>
    <script type="text/javascript" src="_static/underscore.js"></script>
    <script type="text/javascript" src="_static/doctools.js"></script>
    <link rel="search" title="Search" href="search.html" />
    <link rel="next" title="Design for parallelized instance creations and opportunistic locking" href="design-opportunistic-locking.html" />
    <link rel="prev" title="Ganeti Node OOB Management Framework" href="design-oob.html" /> 
  </head>
  <body>
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="design-opportunistic-locking.html" title="Design for parallelized instance creations and opportunistic locking"
             accesskey="N">next</a></li>
        <li class="right" >
          <a href="design-oob.html" title="Ganeti Node OOB Management Framework"
             accesskey="P">previous</a> |</li>
        <li class="nav-item nav-item-0"><a href="index.html">Ganeti 2.16.0~rc2 documentation</a> &#187;</li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body" role="main">
            
  <div class="section" id="support-for-open-vswitch">
<h1><a class="toc-backref" href="#id1">Support for Open vSwitch</a><a class="headerlink" href="#support-for-open-vswitch" title="Permalink to this headline"></a></h1>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Created:</th><td class="field-body">2013-Jun-28</td>
</tr>
<tr class="field-even field"><th class="field-name">Status:</th><td class="field-body">Implemented</td>
</tr>
<tr class="field-odd field"><th class="field-name">Ganeti-Version:</th><td class="field-body">2.10.0</td>
</tr>
</tbody>
</table>
<div class="contents topic" id="contents">
<p class="topic-title first">Contents</p>
<ul class="simple">
<li><a class="reference internal" href="#support-for-open-vswitch" id="id1">Support for Open vSwitch</a><ul>
<li><a class="reference internal" href="#current-state-and-shortcomings" id="id2">Current state and shortcomings</a><ul>
<li><a class="reference internal" href="#proposed-changes" id="id3">Proposed changes</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<p>This is a design document detailing the implementation of support for
Open vSwitch in the Ganeti tool chain.</p>
<div class="section" id="current-state-and-shortcomings">
<h2><a class="toc-backref" href="#id2">Current state and shortcomings</a><a class="headerlink" href="#current-state-and-shortcomings" title="Permalink to this headline"></a></h2>
<p>At the moment Ganeti’s support for Open vSwitch is very basic and
limited to connecting instances to an existing vSwitch.</p>
<p>The shortcomings of this approach are:</p>
<ol class="arabic simple">
<li>The full functionality (VLANs, QoS and trunking) of Open vSwitch is not used.</li>
<li>Open vSwitch cannot be managed centrally.</li>
</ol>
<div class="section" id="proposed-changes">
<h3><a class="toc-backref" href="#id3">Proposed changes</a><a class="headerlink" href="#proposed-changes" title="Permalink to this headline"></a></h3>
<ol class="arabic simple">
<li>Implement functions into gnt-cluster and gnt-node to manage Open vSwitch through Ganeti.
It should be possible to create, modify and delete vSwitches. The resulting configuration
shall automatically be done on all members of the node group, if possible. Connecting Ethernet
devices to vSwitches should be managed through this interface as well.</li>
<li>Implement VLAN-capabilities: Instances shall have additional information for every NIC: VLAN-ID
and port type. These are used to determine their type of connection to Open vSwitch. This will
require modifying the methods for instance creation and modification</li>
<li>Implement NIC bonding: Functions to bond NICs for performance improvement, load-balancing and
failover should be added. It is preferable to have a configuration option to determine the
type of the trunk, as there are different types of trunks (LACP dynamic and static, different
failover and load-balancing mechanisms)</li>
<li>Set QoS level on per instance basis: Instances shall have an additional information: maximum
bandwidth and maximum burst. This helps to balance the bandwidth needs between the VMs and to
ensure fair sharing of the bandwidth.</li>
</ol>
<div class="section" id="automatic-configuration-of-openvswitches">
<h4>Automatic configuration of OpenvSwitches<a class="headerlink" href="#automatic-configuration-of-openvswitches" title="Permalink to this headline"></a></h4>
<p>Ideally, the OpenvSwitch configuration should be done automatically.</p>
<p>This needs to be done on node level, since each node can be individual and a setting on cluster / node group
level would be too global is thus not wanted.</p>
<dl class="docutils">
<dt>The task that each node needs to do is:</dt>
<dd><code class="docutils literal"><span class="pre">ovs-vsctl</span> <span class="pre">addbr</span> <span class="pre">&lt;switchname&gt;</span></code> with &lt;switchname&gt; defaulting to constants.DEFAULT_OVS
<code class="docutils literal"><span class="pre">ovs-vsctl</span> <span class="pre">add-port</span> <span class="pre">&lt;switchname&gt;</span> <span class="pre">&lt;ethernet</span> <span class="pre">device&gt;</span></code> optional: connection to the outside</dd>
<dt>This will give us 2 parameters, that are needed for the OpenvSwitch Setup:</dt>
<dd>switchname: Which will default to constants.DEFAULT_OVS when not given
ethernet device: Which will default to None when not given, might be more than one (NIC bonding)</dd>
</dl>
<p>These parameters should be set at node level for individuality, _but_ can have defined defaults on cluster
and node group level, which can be inherited and thus allow a cluster or node group wide configuration.
If a node is setup without parameters, it should use the settings from the parent node group or cluster. If none
are given there, defaults should be used.</p>
<p>As a first step, this will be implemented for using 1 ethernet device only. Functions for nic bonding will be added
later on.</p>
</div>
<div class="section" id="configuration-changes-for-vlans">
<h4>Configuration changes for VLANs<a class="headerlink" href="#configuration-changes-for-vlans" title="Permalink to this headline"></a></h4>
<p>nicparams shall be extended by a value “vlan” that will store the VLAN information for each NIC.
This parameter will only be used if nicparams[constants.NIC_MODE] == constants.NIC_MODE_OVS,
since it doesn’t make sense in other modes.</p>
<p>Each VLAN the NIC belongs to shall be stored in this single value. The format of storing this information
is the same as the one which is used in Xen 4.3, since Xen 4.3 comes with functionality to support
OpenvSwitch.</p>
<p>This parameter will, at first, only be implemented for Xen and will have no effects on other hypervisors.
Support for KVM will be added in the future.</p>
<p>Example:
switch1 will connect the VM to the default VLAN of the switch1.
switch1.3 means that the VM is connected to an access port of VLAN 3.
switch1.2:10:20 means that the VM is connected to a hybrid port on switch1, carrying VLANs 2 untagged and
VLANs 10 and 20 tagged.
switch1:44:55 means that the VM is connected to a trunk port on switch1, carrying VLANS 44 and 55</p>
<p>This configuration string is split at the dot or colon respectively and stored in nicparams[constants.NIC_LINK]
and nicparams[constants.NIC_VLAN] respectively. Dot or colon are stored as well in nicparams[constants.NIC_VLAN].</p>
<p>For Xen hypervisors, this information can be concatenated again and stored in the vif config as
the bridge parameter and will be fully compatible with vif-openvswitch as of Xen 4.3.</p>
<p>Users of older Xen versions should be able to grab vif-openvswitch from the Xen repo and use it
(tested in 4.2).</p>
<p>gnt-instance modify shall be able to add or remove single VLANs from the vlan string without users needing
to specify the complete new string.</p>
</div>
<div class="section" id="nic-bonding">
<h4>NIC bonding<a class="headerlink" href="#nic-bonding" title="Permalink to this headline"></a></h4>
<p>To be done</p>
</div>
<div class="section" id="configuration-changes-for-qos">
<h4>Configuration changes for QoS<a class="headerlink" href="#configuration-changes-for-qos" title="Permalink to this headline"></a></h4>
<p>Instances shall be extended with configuration options for</p>
<ul class="simple">
<li>maximum bandwidth</li>
<li>maximum burst rate</li>
</ul>
<p>New configuration objects need to be created for the Open vSwitch configuration.</p>
<p>All these configuration changes need to be made available on the whole node group.</p>
</div>
</div>
</div>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
  <h3><a href="index.html">Table Of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">Support for Open vSwitch</a><ul>
<li><a class="reference internal" href="#current-state-and-shortcomings">Current state and shortcomings</a><ul>
<li><a class="reference internal" href="#proposed-changes">Proposed changes</a><ul>
<li><a class="reference internal" href="#automatic-configuration-of-openvswitches">Automatic configuration of OpenvSwitches</a></li>
<li><a class="reference internal" href="#configuration-changes-for-vlans">Configuration changes for VLANs</a></li>
<li><a class="reference internal" href="#nic-bonding">NIC bonding</a></li>
<li><a class="reference internal" href="#configuration-changes-for-qos">Configuration changes for QoS</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>

  <h4>Previous topic</h4>
  <p class="topless"><a href="design-oob.html"
                        title="previous chapter">Ganeti Node OOB Management Framework</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="design-opportunistic-locking.html"
                        title="next chapter">Design for parallelized instance creations and opportunistic locking</a></p>
  <div role="note" aria-label="source link">
    <h3>This Page</h3>
    <ul class="this-page-menu">
      <li><a href="_sources/design-openvswitch.rst.txt"
            rel="nofollow">Show Source</a></li>
    </ul>
   </div>
<div id="searchbox" style="display: none" role="search">
  <h3>Quick search</h3>
    <form class="search" action="search.html" method="get">
      <div><input type="text" name="q" /></div>
      <div><input type="submit" value="Go" /></div>
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="design-opportunistic-locking.html" title="Design for parallelized instance creations and opportunistic locking"
             >next</a></li>
        <li class="right" >
          <a href="design-oob.html" title="Ganeti Node OOB Management Framework"
             >previous</a> |</li>
        <li class="nav-item nav-item-0"><a href="index.html">Ganeti 2.16.0~rc2 documentation</a> &#187;</li> 
      </ul>
    </div>
    <div class="footer" role="contentinfo">
        &#169; Copyright 2018, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Google Inc..
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.7.
    </div>
  </body>
</html>