From c1762113c12b971753c35ce99f05d3d48dfa9eee Mon Sep 17 00:00:00 2001 From: Bin Hu Date: Wed, 6 Jan 2016 15:43:35 -0800 Subject: JIRA:IPVSIX-29 Change-Id: I08ab438d0d01de1badaba5df9e5fb82f067ef375 Signed-off-by: Bin Hu --- docs/setupservicevm/index.rst | 1 + .../scenario-3-1-ipv6-configguide-odl-setup.rst | 125 +++++++++++++++ .../scenario-3-4-ipv6-configguide-servicevm.rst | 173 +++++++++++++++++++++ docs/setupservicevm/scenario-3.rst | 4 +- 4 files changed, 301 insertions(+), 2 deletions(-) create mode 100644 docs/setupservicevm/scenario-3-1-ipv6-configguide-odl-setup.rst create mode 100644 docs/setupservicevm/scenario-3-4-ipv6-configguide-servicevm.rst diff --git a/docs/setupservicevm/index.rst b/docs/setupservicevm/index.rst index 0ea59a9..292cffe 100644 --- a/docs/setupservicevm/index.rst +++ b/docs/setupservicevm/index.rst @@ -30,4 +30,5 @@ environment. There are three scenarios. architecture-design.rst 5-ipv6-configguide-scenario-1-native-os.rst scenario-2.rst + scenario-3.rst topology-after-setup.rst diff --git a/docs/setupservicevm/scenario-3-1-ipv6-configguide-odl-setup.rst b/docs/setupservicevm/scenario-3-1-ipv6-configguide-odl-setup.rst new file mode 100644 index 0000000..89152d5 --- /dev/null +++ b/docs/setupservicevm/scenario-3-1-ipv6-configguide-odl-setup.rst @@ -0,0 +1,125 @@ +======================================== +Setting Up Open Daylight Controller Node +======================================== + +For exemplary purpose, we assume: + +* The hostname of Open Daylight Controller Node is ``opnfv-odl-controller``, and the host IP address is + ``192.168.0.30`` +* CentOS 7 is installed +* We use ``opnfv`` as username to login. +* Java 7 is installed in directory ``/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.85-2.6.1.2.el7_1.x86_64/`` + +**ODL-1**: Login to Open Daylight Controller Node with username ``opnfv``. + +**ODL-2**: Download the ODL Lithium distribution from +``http://www.opendaylight.org/software/downloads`` + +.. code-block:: bash + + wget https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.3.3-Lithium-SR3/distribution-karaf-0.3.3-Lithium-SR3.tar.gz + +**Note**: This **ODL-2** is a placeholder, and to be replaced with actual URL of a build from the latest +``stable/Lithium`` branch which includes the fix. + +**ODL-3**: Extract the tar file + +.. code-block:: bash + + tar -zxvf distribution-karaf-0.3.3-Lithium-SR3.tar.gz + +**Note**: This **ODL-3** is a placeholder, and to be replaced with actual tarball of a build from the latest +``stable/Lithium`` branch which includes the fix. + +**ODL-4**: Install Java7 + +.. code-block:: bash + + sudo yum install -y java-1.7.0-openjdk.x86_64 + +**ODL-5 (OPTIONAL)**: We are using ``iptables`` instead of +``firewalld`` but this is optional for the OpenDaylight Controller +Node. The objective is to allow all connections on the internal +private network (ens160). The same objective can be achieved using +firewalld as well. **If you intend to use firewalld, please skip this step and directly go to next step**: + +.. code-block:: bash + + sudo systemctl stop firewalld.service + sudo yum remove -y firewalld + sudo yum install -y iptables-services + sudo touch /etc/sysconfig/iptables + sudo systemctl enable iptables.service + sudo systemctl start iptables.service + sudo iptables -I INPUT 1 -i ens160 -j ACCEPT + sudo iptables -I INPUT -m state --state NEW -p tcp --dport 8181 -j ACCEPT # For ODL DLUX UI + sudo iptables-save > /etc/sysconfig/iptables + +**ODL-6**: Open a screen session. + +.. code-block:: bash + + screen -S ODL_Controller + +**ODL-7**: In the new screen session, change directory to where Open +Daylight is installed. Here we use ``odl`` directory name and +``Lithium SR3`` installation as an example. + +.. code-block:: bash + + cd ~/odl/distribution-karaf-0.3.3-Lithium-SR3/bin + +**ODL-8**: Set the JAVA environment variables. + +.. code-block:: bash + + export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.85-2.6.1.2.el7_1.x86_64/jre + export PATH=$PATH:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.85-2.6.1.2.el7_1.x86_64/jre/bin + +**ODL-9**: Run the ``karaf`` shell. + +.. code-block:: bash + + ./karaf + +**ODL-10**: You are now in the Karaf shell of Open Daylight. To explore the list of available features you can execute +``feature:list``. In order to enable Open Daylight with OpenStack, you have to load the ``odl-ovsdb-openstack`` +feature. + +.. code-block:: bash + + opendaylight-user@opnfv>feature:install odl-ovsdb-openstack + +**ODL-11**: Verify that OVSDB feature is installed successfully. + +.. code-block:: bash + + opendaylight-user@opnfv>feature:list -i | grep ovsdb + odl-ovsdb-openstack | 1.1.1-Lithium-SR1 | x | ovsdb-1.1.1-Lithium-SR1 | OpenDaylight :: OVSDB :: OpenStack Network Virtual + odl-ovsdb-southbound-api | 1.1.1-Lithium-SR1 | x | odl-ovsdb-southbound-1.1.1-Lithium-SR1 | OpenDaylight :: southbound :: api + odl-ovsdb-southbound-impl | 1.1.1-Lithium-SR1 | x | odl-ovsdb-southbound-1.1.1-Lithium-SR1 | OpenDaylight :: southbound :: impl + odl-ovsdb-southbound-impl-rest|1.1.1-Lithium-SR1 | x | odl-ovsdb-southbound-1.1.1-Lithium-SR1| OpenDaylight :: southbound :: impl :: REST + odl-ovsdb-southbound-impl-ui | 1.1.1-Lithium-SR1| x | odl-ovsdb-southbound-1.1.1-Lithium-SR1| OpenDaylight :: southbound :: impl :: UI + opendaylight-user@opnfv> + +**ODL-12**: To view the logs, you can use the following commands (or alternately the file data/log/karaf.log). + +.. code-block:: bash + + opendaylight-user@opnfv>log:display + opendaylight-user@opnfv>log:tail + +**ODL-13**: To enable ODL DLUX UI, install the following features. +Then you can navigate to +``http://:8181/index.html`` for DLUX +UI. The default user-name and password is ``admin/admin``. + +.. code-block:: bash + + opendaylight-user@opnfv>feature:install odl-dlux-core + +**ODL-14**: To exit out of screen session, please use the command ``CTRL+a`` followed by ``d`` + +**Note: Do not kill the screen session, it will terminate the ODL controller.** + +At this moment, Open Daylight has been started successfully. diff --git a/docs/setupservicevm/scenario-3-4-ipv6-configguide-servicevm.rst b/docs/setupservicevm/scenario-3-4-ipv6-configguide-servicevm.rst new file mode 100644 index 0000000..6e673ca --- /dev/null +++ b/docs/setupservicevm/scenario-3-4-ipv6-configguide-servicevm.rst @@ -0,0 +1,173 @@ +========================================== +Setting Up a Service VM as an IPv6 vRouter +========================================== + +Now we can start to set up a service VM as an IPv6 vRouter. For exemplary purpose, we assume: + +* The hostname of Open Daylight Controller Node is ``opnfv-odl-controller``, and the host IP address is + ``192.168.0.30`` +* The hostname of OpenStack Controller Node is ``opnfv-os-controller``, and the host IP address + is ``192.168.0.10`` +* The hostname of OpenStack Compute Node is ``opnfv-os-compute``, and the host IP address is ``192.168.0.20`` +* We use ``opnfv`` as username to login. +* We use ``devstack`` to install OpenStack Kilo, and the directory is ``~/devstack`` +* Note: all IP addresses as shown below are for exemplary purpose. + +**SCENARIO-3-SETUP-1**: Now we assume that OpenStack multi-node setup is up and running. The following +commands should be executed: + +.. code-block:: bash + + cd ~/devstack + source openrc admin demo + +**SCENARIO-3-SETUP-2**: Download ``fedora22`` image which would be used for ``vRouter`` + +.. code-block:: bash + + wget https://download.fedoraproject.org/pub/fedora/linux/releases/22/Cloud/x86_64/Images/Fedora-Cloud-Base-22-20150521.x86_64.qcow2 + +**SCENARIO-3-SETUP-3**: Import Fedora22 image to ``glance`` + +.. code-block:: bash + + glance image-create --name 'Fedora22' --disk-format qcow2 --container-format bare --file ./Fedora-Cloud-Base-22-20150521.x86_64.qcow2 + +**SCENARIO-3-SETUP-4**: Create Neutron routers ``ipv4-router`` and ``ipv6-router`` which need to provide external +connectivity. + +.. code-block:: bash + + neutron router-create ipv4-router + neutron router-create ipv6-router + +**SCENARIO-3-SETUP-5**: Create an external network/subnet ``ext-net`` using the appropriate values based on the +data-center physical network setup. + +.. code-block:: bash + + neutron net-create --router:external ext-net + +**SCENARIO-3-SETUP-6**: If your ``opnfv-os-controller`` node has two interfaces ``eth0`` and ``eth1``, +and ``eth1`` is used for external connectivity, move the IP address of ``eth1`` to ``br-ex``. + +Please note that the IP address ``198.59.156.113`` and related subnet and gateway addressed in the command +below are for exemplary purpose. **Please replace them with the IP addresses of your actual network**. + +.. code-block:: bash + + sudo ip addr del 198.59.156.113/24 dev eth1 + sudo ovs-vsctl add-port br-ex eth1 + sudo ifconfig eth1 up + sudo ip addr add 198.59.156.113/24 dev br-ex + sudo ifconfig br-ex up + sudo ip route add default via 198.59.156.1 dev br-ex + neutron subnet-create --disable-dhcp --allocation-pool start=198.59.156.251,end=198.59.156.254 --gateway 198.59.156.1 ext-net 198.59.156.0/24 + +**SCENARIO-3-SETUP-7**: Verify that ``br-ex`` now has the original external IP address, and that the default route is on +``br-ex`` + +.. code-block:: bash + + opnfv@opnfv-os-controller:~/devstack$ ip a s br-ex + 38: br-ex: mtu 1430 qdisc noqueue state UNKNOWN group default + link/ether 00:50:56:82:42:d1 brd ff:ff:ff:ff:ff:ff + inet 198.59.156.113/24 brd 198.59.156.255 scope global br-ex + valid_lft forever preferred_lft forever + inet6 fe80::543e:28ff:fe70:4426/64 scope link + valid_lft forever preferred_lft forever + opnfv@opnfv-os-controller:~/devstack$ + opnfv@opnfv-os-controller:~/devstack$ ip route + default via 198.59.156.1 dev br-ex + 192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.10 + 192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 + 198.59.156.0/24 dev br-ex proto kernel scope link src 198.59.156.113 + +Please note that the IP addresses above are exemplary purpose. + +**SCENARIO-3-SETUP-8**: Create Neutron networks ``ipv4-int-network1`` and ``ipv6-int-network2`` +with port_security disabled + +.. code-block:: bash + + neutron net-create --port_security_enabled=False ipv4-int-network1 + neutron net-create --port_security_enabled=False ipv6-int-network2 + +**SCENARIO-3-SETUP-9**: Create IPv4 subnet ``ipv4-int-subnet1`` in the internal network ``ipv4-int-network1``, +and associate it to ``ipv4-router``. + +.. code-block:: bash + + neutron subnet-create --name ipv4-int-subnet1 --dns-nameserver 8.8.8.8 ipv4-int-network1 20.0.0.0/24 + neutron router-interface-add ipv4-router ipv4-int-subnet1 + +**SCENARIO-3-SETUP-10**: Associate the ``ext-net`` to the Neutron routers ``ipv4-router`` and ``ipv6-router``. + +.. code-block:: bash + + neutron router-gateway-set ipv4-router ext-net + neutron router-gateway-set ipv6-router ext-net + +**SCENARIO-3-SETUP-11**: Create two subnets, one IPv4 subnet ``ipv4-int-subnet2`` and one IPv6 subnet +``ipv6-int-subnet2`` in ``ipv6-int-network2``, and associate both subnets to ``ipv6-router`` + +.. code-block:: bash + + neutron subnet-create --name ipv4-int-subnet2 --dns-nameserver 8.8.8.8 ipv6-int-network2 10.0.0.0/24 + neutron subnet-create --name ipv6-int-subnet2 --ip-version 6 --ipv6-ra-mode slaac --ipv6-address-mode slaac ipv6-int-network2 2001:db8:0:1::/64 + neutron router-interface-add ipv6-router ipv4-int-subnet2 + neutron router-interface-add ipv6-router ipv6-int-subnet2 + +**SCENARIO-3-SETUP-12**: Create a keypair + +.. code-block:: bash + + nova keypair-add vRouterKey > ~/vRouterKey + +**SCENARIO-3-SETUP-13**: Create ports for vRouter (with some specific MAC address - basically for automation - +to know the IPv6 addresses that would be assigned to the port). + +.. code-block:: bash + + neutron port-create --name eth0-vRouter --mac-address fa:16:3e:11:11:11 ipv6-int-network2 + neutron port-create --name eth1-vRouter --mac-address fa:16:3e:22:22:22 ipv4-int-network1 + +**SCENARIO-3-SETUP-14**: Create ports for VM1 and VM2. + +.. code-block:: bash + + neutron port-create --name eth0-VM1 --mac-address fa:16:3e:33:33:33 ipv4-int-network1 + neutron port-create --name eth0-VM2 --mac-address fa:16:3e:44:44:44 ipv4-int-network1 + +**SCENARIO-3-SETUP-15**: Update ``ipv6-router`` with routing information to subnet ``2001:db8:0:2::/64`` + +.. code-block:: bash + + neutron router-update ipv6-router --routes type=dict list=true destination=2001:db8:0:2::/64,nexthop=2001:db8:0:1:f816:3eff:fe11:1111 + +**SCENARIO-3-SETUP-16**: Boot Service VM (``vRouter``), VM1 and VM2 + +.. code-block:: bash + + nova boot --image Fedora22 --flavor m1.small --user-data /opt/stack/opnfv_os_ipv6_poc/metadata.txt --availability-zone nova:opnfv-os-compute --nic port-id=$(neutron port-list | grep -w eth0-vRouter | awk '{print $2}') --nic port-id=$(neutron port-list | grep -w eth1-vRouter | awk '{print $2}') --key-name vRouterKey vRouter + nova list + nova console-log vRouter #Please wait for some 10 to 15 minutes so that necessary packages (like radvd) are installed and vRouter is up. + nova boot --image cirros-0.3.4-x86_64-uec --flavor m1.tiny --nic port-id=$(neutron port-list | grep -w eth0-VM1 | awk '{print $2}') --availability-zone nova:opnfv-os-controller --key-name vRouterKey --user-data /opt/stack/opnfv_os_ipv6_poc/set_mtu.sh VM1 + nova boot --image cirros-0.3.4-x86_64-uec --flavor m1.tiny --nic port-id=$(neutron port-list | grep -w eth0-VM2 | awk '{print $2}') --availability-zone nova:opnfv-os-compute --key-name vRouterKey --user-data /opt/stack/opnfv_os_ipv6_poc/set_mtu.sh VM2 + nova list # Verify that all the VMs are in ACTIVE state. + +**SCENARIO-3-SETUP-17**: If all goes well, the IPv6 addresses assigned to the VMs would be as shown as follows: + +.. code-block:: bash + + vRouter eth0 interface would have the following IPv6 address: 2001:db8:0:1:f816:3eff:fe11:1111/64 + vRouter eth1 interface would have the following IPv6 address: 2001:db8:0:2::1/64 + VM1 would have the following IPv6 address: 2001:db8:0:2:f816:3eff:fe33:3333/64 + VM2 would have the following IPv6 address: 2001:db8:0:2:f816:3eff:fe44:4444/64 + +**SCENARIO-3-SETUP-18**: To ``SSH`` to vRouter, you can execute the following command. + +.. code-block:: bash + + sudo ip netns exec qrouter-$(neutron router-list | grep -w ipv6-router | awk '{print $2}') ssh -i ~/vRouterKey fedora@2001:db8:0:1:f816:3eff:fe11:1111 + diff --git a/docs/setupservicevm/scenario-3.rst b/docs/setupservicevm/scenario-3.rst index 8384794..cb47209 100644 --- a/docs/setupservicevm/scenario-3.rst +++ b/docs/setupservicevm/scenario-3.rst @@ -12,7 +12,7 @@ In this scenario, we can fully automate the setup similar to Scenario 1. :maxdepth: 4 0-ipv6-configguide-prep-infra.rst - 1-ipv6-configguide-odl-setup.rst + scenario-3-1-ipv6-configguide-odl-setup.rst 2-ipv6-configguide-os-controller.rst 3-ipv6-configguide-os-compute.rst - 4-ipv6-configguide-servicevm.rst + scenario-3-4-ipv6-configguide-servicevm.rst -- cgit 1.2.3-korg