.. 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.


In a CloudStack, guest VMs can communicate with each other using shared
infrastructure with the security and user perception that the guests
have a private LAN. The CloudStack virtual router is the main component
providing networking features for guest traffic.

.. include:: networking/guest_traffic.rst

.. include:: networking/networking_in_pod.rst

.. include:: networking/networking_in_zone.rst

.. include:: networking/basic_zone_config.rst

.. include:: networking/advanced_zone_config.rst

.. include:: networking/manage_guest_networks.rst

.. include:: networking/multiple_guest_networks.rst

.. include:: networking/network_permissions.rst

.. include:: networking/ip_reservation_in_guest_networks.rst

.. include:: networking/public_ips_and_vlans_for_accounts.rst

.. include:: networking/multiple_ips_on_single_nic.rst

.. include:: networking/multiple_ip_ranges.rst

.. include:: networking/elastic_ips.rst

.. include:: networking/portable_ips.rst

.. include:: networking/multiple_subnets_in_shared_network.rst

.. include:: networking/isolation_in_advanced_zone_with_vlan.rst

.. include:: networking/security_groups.rst

.. include:: networking/external_firewalls_and_load_balancers.rst

.. include:: networking/global_server_load_balancing.rst

.. include:: networking/guest_ip_ranges.rst

.. include:: networking/acquiring_an_ip_address.rst

.. include:: networking/releasing_an_ip_address.rst

.. include:: networking/reserving_an_ip_address.rst

.. include:: networking/static_nat.rst

.. include:: networking/ip_forwarding_and_firewalling.rst

.. include:: networking/ip_load_balancing.rst

.. include:: networking/dns_and_dhcp.rst

.. include:: networking/remote_access_vpn.rst

.. include:: networking/site_to_site_vpn.rst

.. include:: networking/inter_vlan_routing.rst

.. include:: networking/virtual_private_cloud_config.rst

.. include:: networking/persistent_networks.rst

.. include:: networking/palo_alto_config.rst
