您现在的位置是:首页 >学无止境 >使用OpenFlow和Ryu控制器实现网络交换机的软件定义网络(SDN)控制网站首页学无止境
使用OpenFlow和Ryu控制器实现网络交换机的软件定义网络(SDN)控制
使用OpenFlow和Ryu控制器实现网络交换机的软件定义网络(SDN)控制
(1)环境介绍
硬件环境:系统最低要求为2个CPU 、2 GB内存。
拓扑介绍:云平台具体安装拓扑如图5-4所示。
图5-4 云平台安装拓扑
搭建云平台搭建之前,首先配置好OpenDayLight的生产环境,安装完成之后,根据云计算基础架构平台的用户手册,在控制节点和计算节点完成相关模块的安装和配置,本任务云平台的网络模式为Neutron GRE模式,如果需要采用OpenDayLight模式管理虚拟网络,那么需要在配置之前清空Open vSwitch的相关配置,所以云实例的启动需要在完成OpenDayLight的前提下进行。具体的IP地址分配如表5-1所示。
表5-1 主机IP地址分配
主机名 | 隧道(管理网段)地址 | 实例(外网)地址 |
Controller | 30.0.0.10 | 192.168.60.10 |
Compute/Network | 30.0.0.20 | 192.168.60.20 |
OpenDayLight | 无 | 192.168.60.10 |
(2)安装步骤说明
1 在控制节点安装OpenDayLight控制软件,并完成控制器的配置。
2 安装云计算平台,确定网络节点。
如果不确定网络节点可以通过neutron agent-list查看,即存在DHCP和L3服务的节点为网络节点,以下网络节点的操作步骤在此节点进行。
3 修改Ml2的插件的mechanism_ drivers类型。
4 清空Open vSwitch的默认配置,交由OpenDayLight来监控。
5 重新启动Open vSwitch,正常完成Neutron的使用,在Dashboard界面创建网络和云主机。
1. 安装ODL控制器
(1)安装JDK环境
工具5-1 Java软件包 |
1 OpenDayLight的安装节点需要配置JDK的环境,安装提供的Java软件包jdk-7u71-linux-x64.tar.gz。
拷贝软件包到系统中,然后执行以下命令安装。
# tar -zxvf jdk-7u80-linux-x64.tar.gz -C /usr/local/ |
2 修改环境变量添加如下内容。
编辑文件/etc/profile。
export JAVA_HOME=/usr/local/jdk1.7.0_80/ export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar |
3 安装完成后执行以下命令检测安装。
执行环境变量。
# source /etc/profile # java -version java version "1.8.0_241" Java(TM) SE Runtime Environment (build 1.8.0_241-b07) Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode) |
(2)安装Maven环境
工具5-1 Maven软件包 |
1 OpenDayLight的安装节点需要配置Maven的环境,安装提供的Maven软件包apache-maven-3.6.3.tar.gz。
# tar -zxvf apache-maven-3.6.3.tar.gz -C /usr/local/ |
2 修改环境变量添加如下内容。
编辑文件/etc/profile。
export MAVEN_HOME=/usr/local/apache-maven-3.6.3/ export PATH=$PATH:$MAVEN_HOME/bin |
3 安装完成后执行以下命令检测安装。
执行环境变量
# source /etc/profile # mvn -v Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f) Maven home: /usr/local/apache-maven-3.6.3 Java version: 1.8.0_241, vendor: Oracle Corporation, runtime: /usr/local//jdk1.8.0_241/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-862.el7.x86_64", arch: "amd64", family: "unix" |
(3)安装OpenDayLight
拷贝软件包到系统内,执行以下命令完成解压。
将软件包解压到指定的目录下(目录需存在)
# tar -zxvf opendaylight.tar.gz -C /opt 进入目录准备安装 # cd /opt/opendaylight/ 修改mvn的配置setting位置路径 编辑以下配置文件
将此段修改成 37 org.ops4j.pax.url.mvn.settings=/usr/local/apache-maven-3.6.3/conf/settings.xml (#查看用最新的路径代替!) 启动OpenDayLight服务进程 # ./bin/start 确保存在进程后执行以下步骤,即确定 ps aux |grep opendaylight 存在进程。 开始以客户端方式连接 需要在启动进程之后等待一段,否则会出现以下报错 Failed to get the session.
|
登录成功如图5-5所示,此时继续配置OpenDayLight模块内容。
图5-5 命令行登陆OpenDayLight页面
此时执行以下命令完成模块的安装。
opendaylight-user@root> feature:install odl-ovsdb-openstack odl-dlux-core |
通过以上命令可以安装OpenDayLight一个最基本的框架,目前只支持通过Web界面简单的查看Neutron的分配情况,包括Open vSwitch的网桥分配的虚拟接口情况。
OpenDayLight提供的安装命令为feature:install,然后加上安装的所需插件odl-ovsdb-openstack,为安装基于Open vSwitch的OpenStack功能,odl-dlux-core为安装DLUX功能,用于管理界面。
此时打开Web界面均可以访问OpenDayLight界面,如图5-6所示,打开方式http://主机IP:8181/index.html,默认用户名和密码均为admin。
用logout退出OpenDayLight命令界面
图5-6 网页登陆OpenDayLight页面
至此,OpenDayLight环境安装完毕。
这里的是在没有配置Gre隧道出现的页面演示 ,若想出现拓扑,可参考下面链接http://t.csdn.cn/f7E7h
3. 安装Ryu控制器
1 部署网络连通环境。
#vi /etc/resolv.conf (添加域名解析语句) ; generated by /sbin/dhclient-script search openstacklocal #nameserver 10.0.0.2 nameserver 114.114.114.114(当前网络例如电信、联通、移动dns服务器地址) |
2 安装Git和Python组件。
# yum install -y git python-dev python-setuptools python-pip (用系统镜像文件) #yum -y install python-devel #yum -y localinstall python2-pip-8.1.2-12.el7.noarch.rpm (上传文件到本地,用本地安装) |
3 下载Ryu控制器的源码包。
#git clone https://github.com/osrg/ryu.git |
4 查看Ryu控制器的源码包内容。
[root@localhost ~]# cd ryu/ [root@localhost ryu]# ll total 48 drwxr-xr-x. 2 root root 36 Feb 27 02:52 bin -rw-r--r--. 1 root root 3955 Feb 27 02:52 CONTRIBUTING.rst drwxr-xr-x. 3 root root 4096 Feb 27 02:52 debian drwxr-xr-x. 3 root root 36 Feb 27 02:52 doc drwxr-xr-x. 3 root root 17 Feb 27 02:52 etc -rw-r--r--. 1 root root 11358 Feb 27 02:52 LICENSE -rw-r--r--. 1 root root 310 Feb 27 02:52 MANIFEST.in -rw-r--r--. 1 root root 1996 Feb 27 02:52 README.rst -rwxr-xr-x. 1 root root 5469 Feb 27 02:52 run_tests.sh drwxr-xr-x. 12 root root 259 Feb 27 02:52 ryu -rw-r--r--. 1 root root 1441 Feb 27 02:52 setup.cfg -rw-r--r--. 1 root root 956 Feb 27 02:52 setup.py drwxr-xr-x. 3 root root 233 Feb 27 02:52 tools -rw-r--r--. 1 root root 1832 Feb 27 02:52 tox.ini |
5 安装GCC编译环境。
# yum install -y gcc (用本地centos镜像文件) Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Resolving Dependencies --> Running transaction check ---> Package gcc.x86_64 0:4.8.5-28.el7 will be installed --> Processing Dependency: cpp = 4.8.5-28.el7 for package: gcc-4.8.5-28.el7.x86_64 --> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc-4.8.5-28.el7.x86_64 --> Processing Dependency: libmpfr.so.4()(64bit) for package: gcc-4.8.5-28.el7.x86_64 --> Processing Dependency: libmpc.so.3()(64bit) for package: gcc-4.8.5-28.el7.x86_64 --> Running transaction check ...... Installed: gcc.x86_64 0:4.8.5-28.el7 Dependency Installed: cpp.x86_64 0:4.8.5-28.el7 glibc-devel.x86_64 0:2.17-222.el7 glibc-headers.x86_64 0:2.17-222.el7 kernel-headers.x86_64 0:3.10.0-862.el7 libmpc.x86_64 0:1.0.1-3.el7 mpfr.x86_64 0:3.1.1-4.el7 Complete! |
6 安装Ryu控制器。
#pip install --ignore-installed . Processing /root/ryu Collecting eventlet!=0.18.3,!=0.20.1,!=0.21.0,!=0.23.0,>=0.18.2 Using cached eventlet-0.25.1-py2.py3-none-any.whl (222 kB) Found existing installation: Babel 0.9.4 ...... Running setup.py install for msgpack ... done Running setup.py install for wrapt ... done Running setup.py install for PyYAML ... done Running setup.py install for ovs ... done Running setup.py install for repoze.lru ... done Running setup.py install for tinyrpc ... done Running setup.py install for ryu ... done Successfully installed Babel-2.8.0 PyYAML-5.3 certifi-2019.11.28 chardet-3.0.4 debtcollector-1.22.0 dnspython-1.16.0 enum34-1.1.9 eventlet-0.25.1 funcsigs-1.0.2 greenlet-0.4.15 idna-2.9 monotonic-1.5 msgpack-1.0.0 netaddr-0.7.19 oslo.config-7.0.0 oslo.i18n-3.25.1 ovs-2.11.0 pbr-5.4.4 pytz-2019.3 repoze.lru-0.7 requests-2.23.0 rfc3986-1.3.2 routes-2.4.1 ryu-4.34 six-1.14.0 sortedcontainers-2.1.0 stevedore-1.32.0 tinyrpc-0.9.4 urllib3-1.25.8 webob-1.8.6 wrapt-1.12.0 |