<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % BOOK_ENTITIES SYSTEM "cloudstack.ent">
%BOOK_ENTITIES;
]>

<!-- Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at
   http://www.apache.org/licenses/LICENSE-2.0
 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
-->
<section id="creating-shared-network">
  <title>Configuring a Shared Guest Network</title>
  <orderedlist>
    <listitem>
      <para>Log in to the &PRODUCT; UI as administrator.</para>
    </listitem>
    <listitem>
      <para>In the left navigation, choose Infrastructure.</para>
    </listitem>
    <listitem>
      <para>On Zones, click View More.</para>
    </listitem>
    <listitem>
      <para>Click the zone to which you want to add a guest network.</para>
    </listitem>
    <listitem>
      <para>Click the Physical Network tab.</para>
    </listitem>
    <listitem>
      <para>Click the physical network you want to work with.</para>
    </listitem>
    <listitem>
      <para>On the Guest node of the diagram, click Configure.</para>
    </listitem>
    <listitem>
      <para>Click the Network tab.</para>
    </listitem>
    <listitem>
      <para>Click Add guest network.</para>
      <para>The Add guest network window is displayed.</para>
    </listitem>
    <listitem>
      <para>Specify the following:</para>
      <itemizedlist>
        <listitem>
          <para><emphasis role="bold">Name</emphasis>: The name of the network. This will be visible
            to the user.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Description</emphasis>: The short description of the network
            that can be displayed to users.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">VLAN ID</emphasis>: The unique ID of the VLAN.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Isolated VLAN ID</emphasis>: The unique ID of the Secondary
            Isolated VLAN. </para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Scope</emphasis>: The available scopes are Domain, Account,
            Project, and All.</para>
          <itemizedlist>
            <listitem>
              <para><emphasis role="bold">Domain</emphasis>: Selecting Domain limits the scope of
                this guest network to the domain you specify. The network will not be available for
                other domains. If you select Subdomain Access, the guest network is available to all
                the sub domains within the selected domain.</para>
            </listitem>
            <listitem>
              <para><emphasis role="bold">Account</emphasis>: The account for which the guest
                network is being created for. You must specify the domain the account belongs
                to.</para>
            </listitem>
            <listitem>
              <para><emphasis role="bold">Project</emphasis>: The project for which the guest
                network is being created for. You must specify the domain the project belongs
                to.</para>
            </listitem>
            <listitem>
              <para><emphasis role="bold">All</emphasis>: The guest network is available for all the
                domains, account, projects within the selected zone. </para>
            </listitem>
          </itemizedlist>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Network Offering</emphasis>: If the administrator has
            configured multiple network offerings, select the one you want to use for this
            network.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Gateway</emphasis>: The gateway that the guests should
            use.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Netmask</emphasis>: The netmask in use on the subnet the
            guests will use.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">IP Range</emphasis>: A range of IP addresses that are
            accessible from the Internet and are assigned to the guest VMs.</para>
          <para>If one NIC is used, these IPs should be in the same CIDR in the case of IPv6.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">IPv6 CIDR</emphasis>: The network prefix that defines the
            guest network subnet. This is the CIDR that describes the IPv6 addresses in use in the
            guest networks in this zone. To allot IP addresses from within a particular address
            block, enter a CIDR.</para>
        </listitem>
        <listitem>
          <para><emphasis role="bold">Network Domain</emphasis>: A custom DNS suffix at the level of
            a network. If you want to assign a special domain name to the guest VM network, specify
            a DNS suffix.</para>
        </listitem>
      </itemizedlist>
    </listitem>
    <listitem>
      <para>Click OK to confirm.</para>
    </listitem>
  </orderedlist>
</section>
