使用OpenFlow和Ryu控制器实现网络交换机的软件定义网络(SDN)控制

使用OpenFlowRyu控制器实现网络交换机的软件定义网络(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位置路径

编辑以下配置文件

vi  etc/org.ops4j.pax.url.mvn.cfg        //这两个命令一个是相对路径一个是绝对路径

[root@localhost ~]# vim /opt/opendaylight/etc/org.ops4j.pax.url.mvn.cfg

将此段修改成

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.

# ssh -p 8101 karaf@localhost

密码为karaf

登录成功如图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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/27358.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NodeJS MongoDB⑦

文章目录 ✨文章有误请指正,如果觉得对你有用,请点三连一波,蟹蟹支持😘前言Node&MongoDB 第一步 连接数据库 第二步 创建User Mongodb模型 第三步 简单使用 Mongodb命令 第四步 规范使用 Mongodb命令 &#xff08…

解数独--难的一批

1题目 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) 数…

RHEL7同步ntp时间

RHEL7同步ntp时间 RHEL7同步ntp时间测试ntp服务器是否可用抓包分析ntp 查看NTP同步情况ntp服务器配置文件将ntp配置迁移到chronytimedatectl设置时区和时间设置UTC或RTC时间查看所有可用时区查看当前时区设置系统时区启用夏令时timedatectl时间同步timedatectl修改当前日期时间…

基于ADME的分子过滤和 lead-likeness标准

T002 基于ADME的分子过滤和 lead-likeness标准 项目来源于TeachOpenCADD 本文目标 在药物设计的背景下,重要的是通过例如它们的物理化学性质来过滤候选分子。 在这个教程中,从 ChEMBL ( Talktorial T001 )获得的化合物将按照 Lipinsik 的五法则进行…

卷积编码和维特比译码

文章目录 卷积编码维特比译码 卷积编码 卷积码是一种非分组码,通常适用于前向纠错。在分组码中,编码器产生的 n 个码元的一个码组,完全决定于这段时间中 k 比特输入信息。这个码组中的监督位仅监督本码组中 k 个信息位。卷积码在编码时虽然也…

【马蹄集】第十四周作业

第十四周作业 目录 MT2134 泡泡MT2135 调整队伍MT2141 快排变形MT2142 逆序MT2143 线段树 MT2134 泡泡 难度:黄金    时间限制:1秒    占用内存:128M 题目描述 小码哥小时候喜欢吹泡泡,有一次他吹出了 n n n 个一样小的泡泡&…

SSM-Spring+SpringMVC+MyBatis框架的水果商城网站

项目介绍 主要功能: 前端用户购物端: ①角色信息:用户注册、用户登录、个人中心 ②个人中心:基本信息、我的订单、商品收藏、修改密码 ③首页管理:公告、留言、折扣大促销、热门商品 ④商品详情:收藏、加入…

使用阿里云OSS实现图片文件上传

说明&#xff1a;注册用户时&#xff0c;经常会用到上传头像。文件的上传/接收与一般文本数据不同。 一、创建Demo页面 先准备一个Demo页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>图片上传…

影响电磁铁磁力大小的因素有哪些

影响电磁铁磁力大小的因素主要有四个&#xff0c;一是缠绕在铁芯上线圈的圈数&#xff0c;二是线圈中电流的强度&#xff0c;三是缠绕的线圈与铁芯的距离&#xff0c;四是铁芯的大小形状。 首先要了解电磁铁的磁性是如何产生的&#xff0c;通电螺线管的磁场&#xff0c;由毕奥&…

总结895

学习目标&#xff1a; 月目标&#xff1a;6月&#xff08;线性代数强化9讲&#xff0c;背诵15篇短文&#xff0c;考研核心词过三遍&#xff09; 周目标&#xff1a;线性代数强化3讲&#xff0c;英语背3篇文章并回诵&#xff0c;检测 每日必复习&#xff08;5分钟&#xff09;…

JMM如何实现volatile写/读的内存语义

内存屏障类型表 StoreLoad Barriers是一个“全能型”的屏障&#xff0c;它同时具有其他3个屏障的效果。现代的多处理器大多支持该屏障&#xff08;其他类型的屏障不一定被所有处理器支持&#xff09;。执行该屏障开销会很昂贵&#xff0c;因为当前处理器通常要把写缓冲区中的数…

基于html+css的图展示112

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

【图书推荐 | 13】后端系列

【赠书活动第十二期 】 图书推荐 本期书籍&#xff1a;后端系列 图书列表 本期图书列表&#xff1a; Spring Cloud 微服务快速上手项目驱动零起点学JavaNode.js 从基础到项目实战Diango Web 开发实例精解Flask Web 全栈开发实战精通Hadoopsmysql 数据库基础与实战应用Neo4j 图谱…

【Hive】安装配置及导入Hdfs数据

知识目录 一、写在前面&#x1f495;二、Hive的安装与配置✨2.1 Hive简介2.2 上传与解压2.3 拷贝MySQL驱动2.4 hive-site.xml文件2.5 启动hive 三、导入Hdfs数据到Hive✨3.1 修改Hadoop集群配置3.2 初始化3.3 创建表3.4 从Hdfs导入数据 四、总结撒花&#x1f60a; 一、写在前面…

MySQL-索引详解(上)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a;小刘主页 ♥️每天分享云计算网络运维课堂笔记&#xff0c;努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️树高千尺&#xff0c;落叶归根人生不易&…

Qt(C++)绘制指针仪表盘显示当前温度

一、功能介绍 当前文章要实现的功能: 使用Qt绘制一个仪表盘,用来显示当前的温度,绘制刻度、绘制数字、绘制温度指针。仪表盘全程使用QPainter进行绘制,QPainter是Qt框架中非常重要的一个类,绘制功能的实现离不开它。如果想要使用Qt进行高质量的绘图或UI设计,必须掌握QP…

Django新手必看:如何创建应用和定义数据表。(详细讲解)

Django新手必看&#xff1a;如何创建应用和定义数据表。 1. Django创建应用1.1 创建应用1.2 应用的添加 2. Django ORM2.1 定义数据表2.2 定义项目数据表2.3 通用字段选项2.4 外键使用2.5 应用数据库迁移 &#x1f3d8;️&#x1f3d8;️个人简介&#xff1a;以山河作礼。 &…

学习HCIP的day.11

目录 十一、BGP的属性 1、权重属性 2、本地优先级 3、as-path 4、起源属性 5、MED --多出口的鉴别属性 十二、BGP选路规则 十三、BGP的社团属性 十四、BGP的在MA网络中的下一跳问题 五、BGP的认证 十一、BGP的属性 BGP协议在选路时&#xff0c;先对比属性&#xf…

Java(30天拿下---第一天)

Java开发&#xff08;30天拿下---第一天&#xff09; 一 hello world以及JDK,JRE,JVM二 转义字符三 注释四 代码规范五 DOS命令&#xff08;了解&#xff09;六 变量1.加号的使用2.数据类型整型浮点型字符类型布尔类型自动类型转换强制类型转换String类型 七 API文档 一 hello …

ASP.NET Core Web API入门之一:创建新项目

ASP.NET Core Web API入门之一&#xff1a;创建新项目 一、引言二、创建新项目三、加入Startup类&#xff0c;并替换Program.cs内容四、编辑Program.cs代码五、修改控制器的路由六、运行项目 一、引言 最近闲着&#xff0c;想着没真正从0-1开发过ASP.NET Core Web API的项目&a…