summaryrefslogtreecommitdiff
path: root/docs/formatnetwork.html.in
diff options
context:
space:
mode:
authorGene Czarcinski <gene@czarc.net>2013-05-07 13:42:55 -0400
committerLaine Stump <laine@laine.org>2013-05-13 16:14:40 -0400
commitccff335f8384892645f1a242214d58eb125fa5a7 (patch)
tree50cf47b4d1513a49a8e1e66d61267de3dd594f27 /docs/formatnetwork.html.in
parent84f3777a7909c9f173d40b8f02dc1b0a085e31fb (diff)
downloadlibvirt-ccff335f8384892645f1a242214d58eb125fa5a7.tar.gz
Support for static routes on a virtual bridge
network: static route support for <network> This patch adds the <route> subelement of <network> to define a static route. the address and prefix (or netmask) attribute identify the destination network, and the gateway attribute specifies the next hop address (which must be directly reachable from the containing <network>) which is to receive the packets destined for "address/(prefix|netmask)". These attributes are translated into an "ip route add" command that is executed when the network is started. The command used is of the following form: ip route add <address>/<prefix> via <gateway> \ dev <virbr-bridge> proto static metric <metric> Tests are done to validate that the input data are correct. For example, for a static route ip definition, the address must be a network address and not a host address. Additional checks are added to ensure that the specified gateway is directly reachable via this network (i.e. that the gateway IP address is in the same subnet as one of the IP's defined for the network). prefix='0' is supported for both family='ipv4' address='0.0.0.0' netmask='0.0.0.0' or prefix='0', and for family='ipv6' address='::', prefix=0', although care should be taken to not override a desired system default route. Anytime an attempt is made to define a static route which *exactly* duplicates an existing static route (for example, address=::, prefix=0, metric=1), the following error message will be sent to syslog: RTNETLINK answers: File exists This can be overridden by decreasing the metric value for the route that should be preferred, or increasing the metric for the route that shouldn't be preferred (and is thus in place only in anticipation that the preferred route may be removed in the future). Caution should be used when manipulating route metrics, especially for a default route. Note: The use of the command-line interface should be replaced by direct use of libnl so that error conditions can be handled better. But, that is being left as an exercise for another day. Signed-off-by: Gene Czarcinski <gene@czarc.net> Signed-off-by: Laine Stump <laine@laine.org>
Diffstat (limited to 'docs/formatnetwork.html.in')
-rw-r--r--docs/formatnetwork.html.in84
1 files changed, 84 insertions, 0 deletions
diff --git a/docs/formatnetwork.html.in b/docs/formatnetwork.html.in
index d72bd0a9f3..a1198ce6be 100644
--- a/docs/formatnetwork.html.in
+++ b/docs/formatnetwork.html.in
@@ -546,6 +546,62 @@
starting.
</p>
+ <h5><a name="elementsStaticroute">Static Routes</a></h5>
+ <p>
+ Static route definitions are used to provide routing information
+ to the virtualization host for networks which are not directly
+ reachable from the virtualization host, but *are* reachable from
+ a guest domain that is itself reachable from the
+ host <span class="since">since 1.0.6</span>.
+ </p>
+
+ <p>
+ As shown in <a href="formatnetwork.html#examplesNoGateway">this
+ example</a>, it is possible to define a virtual network
+ interface with no IPv4 or IPv6 addresses. Such networks are
+ useful to provide host connectivity to networks which are only
+ reachable via a guest. A guest with connectivity both to the
+ guest-only network and to another network that is directly
+ reachable from the host can act as a gateway between the
+ networks. A static route added to the "host-visible" network
+ definition provides the routing information so that IP packets
+ can be sent from the virtualization host to guests on the hidden
+ network.
+ </p>
+
+ <p>
+ Here is a fragment of a definition which shows the static
+ route specification as well as the IPv4 and IPv6 definitions
+ for network addresses which are referred to in the
+ <code>gateway</code> gateway address specifications. Note
+ that the third static route specification includes the
+ <code>metric</code> attribute specification with a value of 2.
+ This particular route would *not* be preferred if there was
+ another existing rout on the system with the same address and
+ prefix but with a lower value for the metric. If there is a
+ route in the host system configuration that should be overriden
+ by a route in a virtual network whenever the virtual network is
+ running, the configuration for the system-defined route should
+ be modified to have a higher metric, and the route on the
+ virtual network given a lower metric (for example, the default
+ metric of "1").
+ </p>
+
+ <pre>
+ ...
+ &lt;ip address="192.168.122.1" netmask="255.255.255.0"&gt;
+ &lt;dhcp&gt;
+ &lt;range start="192.168.122.128" end="192.168.122.254" /&gt;
+ &lt;/dhcp&gt;
+ &lt;/ip&gt;
+ &lt;route address="192.168.222.0" prefix="24" gateway="192.168.122.2" /&gt;
+ &lt;ip family="ipv6" address="2001:db8:ca2:2::1" prefix="64" /&gt;
+ &lt;route family="ipv6" address="2001:db8:ca2:3::" prefix="64" gateway="2001:db8:ca2:2::2"/&gt;
+ &lt;route family="ipv6" address="2001:db9:4:1::" prefix="64" gateway="2001:db8:ca2:2::3" metric='2'&gt;
+ &lt;/route&gt;
+ ...
+ </pre>
+
<h3><a name="elementsAddress">Addressing</a></h3>
<p>
@@ -577,6 +633,7 @@
&lt;/dhcp&gt;
&lt;/ip&gt;
&lt;ip family="ipv6" address="2001:db8:ca2:2::1" prefix="64" /&gt;
+ &lt;route family="ipv6" address="2001:db9:ca1:1::" prefix="64" gateway="2001:db8:ca2:2::2" /&gt;
&lt;/network&gt;</pre>
<dl>
@@ -826,6 +883,33 @@
&lt;/ip&gt;
&lt;/network&gt;</pre>
+ <p>
+ Below is yet another IPv6 variation. This variation has only
+ IPv6 defined with DHCPv6 on the primary IPv6 network. A static
+ link if defined for a second IPv6 network which will not be
+ directly visible on the bridge interface but there will be a
+ static route defined for this network via the specified
+ gateway. Note that the gateway address must be directly
+ reachable via (on the same subnet as) one of the &lt;ip&gt;
+ addresses defined for this &lt;network&gt;.
+ <span class="since">Since 1.0.6</span>
+ </p>
+
+ <pre>
+ &lt;network&gt;
+ &lt;name&gt;net7&lt;/name&gt;
+ &lt;bridge name="virbr7" /&gt;
+ &lt;forward mode="route"/&gt;
+ &lt;ip family="ipv6" address="2001:db8:ca2:7::1" prefix="64" &gt;
+ &lt;dhcp&gt;
+ &lt;range start="2001:db8:ca2:7::100" end="2001:db8:ca2::1ff" /&gt;
+ &lt;host id="0:4:7e:7d:f0:7d:a8:bc:c5:d2:13:32:11:ed:16:ea:84:63" name="lucas" ip="2001:db8:ca2:2:3::4" /&gt;
+ &lt;/dhcp&gt;
+ &lt;/ip&gt;
+ &lt;route family="ipv6" address="2001:db8:ca2:8::" prefix="64" gateway="2001:db8:ca2:7::4" &gt;
+ &lt;/route&gt;
+ &lt;/network&gt;</pre>
+
<h3><a name="examplesPrivate">Isolated network config</a></h3>
<p>