OpenvSwitch安装及配置
更新时间:2023-05-21 03:36:01 阅读量: 实用文档 文档下载
SDN/Openflow 入门资料
Open vSwitch安装及配置
N.J.C.H
一、 Open vSwitch简介
1.1概述
Open vSwitch是一个高质量的、多层虚拟交换机,使用开源Apache 2.0许可协议,由Nicira Networks开发,主要实现代码为可移植的C代码。
它的目的是让大规模网络自动化可以通过编程扩展,同时仍然支持标准的管理接口和协议(例如NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag)。此外,它被设计位支持跨越多个物理服务器的分布式环境,类似于VMware的vNetwork分布式vswitch或Cisco Nexus 1000 V。
Open vSwitch支持多种linux虚拟化技术,包括Xen/XenServer, KVM,和 VirtualBox。
1.2模块介绍
当前最新代码包主要包括以下模块和特性:
ovs-vswitchd 主要模块,实现switch的daemon,包括一个支持流交换的Linux内核模块; ovsdb-server 轻量级数据库服务器,提供ovs-vswitchd获取配置信息;
ovs-brcompatd 让ovs-vswitch替换Linux bridge,包括获取bridge ioctls的Linux内核模块; ovs-dpctl 用来配置switch内核模块;
一些Scripts and specs 辅助OVS安装在Citrix XenServer上,作为默认switch; ovs-vsctl 查询和更新ovs-vswitchd的配置; ovs-appctl 发送命令消息,运行相关daemon;
ovsdbmonitor GUI工具,可以远程获取OVS数据库和OpenFlow的流表。
此外,OVS也提供了支持OpenFlow的特性实现,包括 ovs-openflowd:一个简单的OpenFlow交换机; ovs-controller:一个简单的OpenFlow控制器; ovs-ofctl 查询和控制OpenFlow交换机和控制器; ovs-pki :OpenFlow交换机创建和管理公钥框架;
ovs-tcpundump:tcpdump的补丁,解析OpenFlow的消息;
1.3运行原理
内核模块实现了多个“数据路径”(类似于网桥),每个都可以有多个“vports”(类似于桥内的
SDN/Openflow 入门资料
端口)。每个数据路径也通过关联一下流表(flow table)来设置操作,而这些流表中的流都是用户空间在报文头和元数据的基础上映射的关键信息,一般的操作都是将数据包转发到另一个vport。当一个数据包到达一个vport,内核模块所做的处理是提取其流的关键信息并在流表中查找这些关键信息。当有一个匹配的流时它执行对应的操作。如果没有匹配,它会将数据包送到用户空间的处理队列中(作为处理的一部分,用户空间可能会设置一个流用于以后碰到相同类型的数据包可以在内核中执行操作)。
二、准备工作
2.1说明
在linux编译内核模块,还需要安装下面的软件。如果你不能建造或安装内核模块,你可以使用userspace-only实现。
SDN/Openflow 入门资料
2.2操作
安装Open vSwitch之前确保安装了下面的软件
执行
On Linux you should ensure that /dev/urandom exists. To support TAP devices, you must also ensure that /dev/net/tun exists.
SDN/Openflow 入门资料
三、安装Open vSwitch
3.1下载
3.2解压
3.3安装
生成内核模式的Open vSwitch时需指定的内核源码编译目录,基本步骤如下
补充一下DataPath的概念,OpenFlow就是控制和数据转发分离,而控制端,就叫做Controller Path,比如floodlight等;负责转发数据的数据转发端,就叫做DataPath,也就是支持OpenFlow的硬件或者软件交换机Switch。
四、配置Open vSwitch
建立OpenVSwitch配置文件和数据库
SDN/Openflow 入门资料
启动配置数据库
如果你built Open vSwitch 没有加SSL 支持,省略--private-key, --certificate, and --bootstrap-ca-cert
查启动情况
启动Open vSwitch daemon,连接到同样的Unix domain socket上
成功后,会有三个进程,一ovs_个workeq进程,一个ovs-vswitchd进程,一个ovsdb-server进程
SDN/Openflow 入门资料
升级Open vSwitch的时候,也需要升级数据库架构,步骤如下
5.1停止Open vSwitch daemons
5.2安装新的版本
方法同上,下载,解压,configure make make install
5.3升级数据库
两种情况如下
如果数据库没有重要的信息,可以直接删除数据库文件,然后用ovsdb-tool命令重新创建,方法同上。
如果要保留数据库的内容,首先把它备份一下,然后使用ovsdb-tool convert命令升级,
5.4启动Open vSwitch daemon
方法同上。
SDN/Openflow 入门资料
6.1网桥管理
6.1.1非ovsdb数据库操作
查看结果
SDN/Openflow 入门资料
6.1.2 ovsdb数据库操作
ovsdb是一个非常轻量级的数据库,与其说它是一个数据库,不如说它是一个提供增删查改等功能的临时配置缓存,之所以这么说,是因为ovsdb数据库的根本就未使用多少数据库技术,如SQL语言查询、存储过程等等。ovsdb 数据库通过模式文件“openvswitch-1.1.0pre2/vswitchd/vswitch.ovsschema”
,如要定制ovsdb数据库,可通过更改 vswitch.ovsschema 文件实现。
数据库操作的一般格式为
默认情况下ovsdb中有以下数据表
SDN/Openflow 入门资料
查看bridge数据表中的所有记录
获取bridge 的_uuid字段值
设置bridge数据表datapath_type字段的值
清除bridge数据表flood_vlans字段的值
删除uuid为69ee0c09-9e52-4236-8af6-037a98ca704d的qos记录
SDN/Openflow 入门资料
6.2流规则管理
6.2.1 流规则组成
每条流规则由一系列字段组成,分为基本字段、条件字段和动作字段三部分。
基本字段包括生效时间duration_sec、所属表项table_id、优先级priority、处理的数据包数n_packets,空闲超时时间idle_timeout等,空闲超时时间idle_timeout以秒为单位,超过设置的空闲超时时间后该流规则将被自动删除,空闲超时时间设置为0表示该流规则永不过期,idle_timeout将不包含于ovs-ofctl dump-flows brname的输出中。
条件字段包括输入端口号in_port、源目的mac地址dl_src/dl_dst、源目的ip地址nw_src/nw_dst、数据包类型dl_type、网络层协议类型nw_proto等,可以为这些字段的任意组合,但在网络分层结构中底层的字段未给出确定值时上层的字段不允许给确定值,即一条流规则中允许底层协议字段指定为确定值,高层协议字段指定为通配符(不指定即为匹配任何值),而不允许高层协议字段指定为确定值,而底层协议字段却为通配符(不指定即为匹配任何值),否则,ovs-vswitchd 中的流规则将全部丢失,网络无法连接。
动作字段包括正常转发normal、定向到某交换机端口output:port、丢弃drop、更改源目的mac地址mod_dl_src/mod_dl_dst等,一条流规则可有多个动作,动作执行按指定的先后顺序依次完成。
6.2.2 基本操作 查看虚拟交换机的信息
SDN/Openflow 入门资料
查看br0上各交换机端口的状态
注:输出的结果中包含了各网络接口上收到的数据包数,字节数,丢包数,错误数据包数等信息
查看br0上所有的流规则
SDN/Openflow 入门资料
删除一条流规则:删除条件字段中包含in_port=2的所有流规则
6.3应用场景设置
6.3.1 QoS设置
针对网络接口的设置:
设置网络接口eth4的带宽为1000±100kbps
注:
ingress_policing_rate:最大发送速率(单位均为kbps)
ingress_policing_burst:超过ingress_policing_rate的最大浮动值
针对交换机端口的设置:
创建在vif0.0端口上的linux-htb QoS,linux-htb QoS可以针对具有指定特征的数据包流设置最大最小带宽,且在最大带宽范围内,某一特征的数据包流可以借用其他特征数据包流未用完的带宽。
SDN/Openflow 入门资料
6.3.2端口映射
将发往eth0端口和从eth1端口发出的数据包全部定向到eth2端口
用ovs-vsctl list port命令查看eth0、eth1、eth2端口的uuid分别为: a27e5ec3-5d78-437e-8e36-d6f81679132a be52eece-1f03-4ccf-a4c6-b0b68cb25f8a bc38e1c3-60a1-468e-89d7-e4b45585b533
命令如下
6.3.3其他设置
网站屏蔽
屏蔽由Open vSwitch管理的任何主机对主机119.75.213.50的访问,但只屏蔽ip数据包(由dl_type=0x0800指定),即所有主机将无法访问该主机上所有基于IP协议的服务,如万维
注:简写形式为将字段组简写为协议名,目前支持的简写有ip,arp,icmp,tcp,udp,与流规则条件字段的对应关系如下 dl_type=0x0800 <=> ip dl_type=0x0806 <=> arp
dl_type=0x0800,nw_proto=1 <=> icmp dl_type=0x0800,nw_proto=6 <=> tcp dl_type=0x0800,nw_proto=17 <=> udp
数据包重定向
将交换机中所有的icmp协议包(由dl_type=0x0800,nw_proto=1指定)全部转发到4号端口,包括4号端口自己发出的icmp包,该流规则将导致由Open vSwitch管理的主机间以及与外部网络间都将访问ping通,但可以使用万维网、FTP等服务。
SDN/Openflow 入门资料
去除VLAN tag
去除从3号端口发来的所有VLAN数据包中的tag,然后转发
更改数据包源IP地址后转发
6.4综合应用
6.4.1构建简单的交换机
将一台有五个网卡的主机做成交换机,然后接两台一个网卡的主机到交换机上进行上网测试。
结果图如下
SDN/Openflow 入门资料
说明:
eth1后面接一台主机,IP:192.168.28.43 eth2后面接一台主机,IP:192.168.28.209 eth0、eth1、eth2都属于一台主机上的网卡
执行命令
验证:
192.168.28.43ping 192.168.28.209
SDN/Openflow 入门资料
192.168.28.209ping 192.168.28.43
可见两台机器能够相互ping通,进一步验证eth1和eth2后面的主机能够正常连上网络。
6.4.2交换机VLAN划分
这里将同一个网桥的不同网卡分配到不同的VLAN上
结构图:
SDN/Openflow 入门资料
VLAN分配情况: VLAN1:eth1,eth3 VLAN2:eth2
执行命令
SDN/Openflow 入门资料
注:
tag vlan 基于IEEE 802.1Q(vlan标准),用VID(vlan id)来划分不同的VLAN。
验证
用192.168.28.43ping192.168.28.209
用192.168.28.209 ping 192.168.28.43,也ping不通
除此之外,发现两台机器也不能上网,不能上网的原因可以是内核不支持。
进一步验证,把eth1和eth2加到同一个VLAN,如下
SDN/Openflow 入门资料
相互Ping的结果如下
需要注意的是,连接在eth1和eth2的两台机器仍然不能上网。
结论:
VLAN技术是基于二层和三层之间的隔离,可以将不同的网络用户与网络资源进行分组并通 过支持VLAN技术的交换机隔离不同组内网络设备间的数据交换来达到网络安全的目的。同一个VALN上的机器可以相互通信,不同的VLAN之前不可以通信,因为它们之间在数据链路层上是断开的,只能通过三层路由器才能访问。
6.4.3 ovs-controller测试
这里使用OpenvSwitch
自带的控制器做一些操作
部署情况:
主机192.168.28.229做ovs-controller
虚拟机192.168.1.156做vswitch受192.168.28.229控制
SDN/Openflow 入门资料
6.4.3.1 TCP方式
首先在192.168.1.156上执行 建立控制器
查看控制器
最后在192.168.1.156上执行
SDN/Openflow 入门资料
这样控制器和vswitch就连接成功了 验证如下
可见192.168.28.229和192.168.1.156连接起来了,仔细查看,他们之间建立了两个连接,一个是229的controller和156的vswitch,还有一个是229的controller和156的controller。还有一点就是在229上查看,192.168.1.156的连接名是 192.168.28.1,是因为192.168.28.1是无线路由的IP,而它192.168.1.156是无线路由器分配的IP,采用方式是NAT。
6.4.3.1 SSL方式
当ovs-vswitchd被配置为通过SSL进行连接管理器或控制器连接,下面的参数是必需的:
private-key私有密钥
指定PEM文件,其中包含的私有密钥用于SSL连接到控制器的虚拟交换机的身份。
certificate证书
指定一个的PEM文件包含一个证书签名的证书颁发机构(CA)的使用,证明了虚拟交换机的私有密钥,确定一个值得信赖的开关控制器和管理者。
ca-certCA-证书
指定PEM文件,其中包含的CA证书用于验证的虚拟交换机连接到一个值得信赖的控制器
6.5代码测试
这里对安装包文件~/openvswitch-1.7.1/tests目录下的部分代码进行简单的了解。
6.5.1 test-uuid
test-uuid.c主要产生uuid或者检查uuid
是否正确,创建一个设备或者获取一个设备的
正在阅读:
OpenvSwitch安装及配置05-21
2009年江苏省苏州市中考英语试卷(含答案) - 图文04-15
青岛2012公选副处级以上考试05-26
创意想象中的幼儿美术教学01-28
制袋车间计件工资及奖励方案 408-11
张家港市党政领导干部任前公示04-16
首件检验记录表08-15
2013年青岛市义务教育学校市级三好学生、优秀学生干部和先进班集05-16
原来你还在这里作文700字07-12
对于弘扬正能量演讲稿08-22
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- OpenvSwitch
- 配置
- 安装
- 水润流年
- 突发事件应急预案
- 湘教版天气和气候教案【转】
- 人教版二年级语文下册期中试卷
- 1-4-3项目经理管理细则
- 四年级经典诵读串词
- 人教版九年级化学 物质构成的奥秘
- 高二物理纠偏辅导专题
- Lay Theories of Spring Displacement of Common-Sense Understandings of Nature by ‘Expert ’
- 精选继续教育工作总结3篇(最新)
- 初一(七年级)语文练习题:成语试题及答案
- 98 号损余物资管理暂行规定
- 基于单片机的数字多用表的设计
- 低碳经济指导下的钢铁工业发展和展望
- 【成才之路】2014-2015学年高中数学(北师大版,选修1-2)练习:1章综合测试]
- 系统工程2--系统结构模型技术
- 知识产权法(第三版11)
- 跆拳道教学经验总结
- 外贸跟单实务第三版课后答案项目十一
- 喷砂除锈施工方案