当前位置:首页 » 操作系统 » openvswitch源码

openvswitch源码

发布时间: 2022-07-12 14:53:12

1. openvswitch源码 从哪个文件开始看

建议先去了解下ovs的架构,ovs代码本身较为混乱,并且数据包处理(datapath)在内核空间,较为复杂。
大概了解模块结构后,可以去看看网上相关的源码分析,比自己看更快。
如果是自己去看,建议从一个bridge的创建到运行开始逐步深入,需要注意bridge的主循环中ctrlplane和dataplane没有分离,大量代码都是处理用户配置修改。

2. 如何在linux发行版上安装和配置KVM和Open vSwitch

将Open vSwitch安装在Ubuntu或Debian上

虽然OVS以程序包的方式出现在Ubuntu或Debian上,但我在此还是通过源代码来构建OVS,这将拥有最新的功能特性和修正版。

首先,安装用于构建OVS的依赖项。

$ sudo apt-get install build-essential libssl-dev linux-headers-$(uname -r)
通过源代码来构建OVS,如下所示。下列步骤将构建OVS内核模块以及OVS用户空间工具。

$ wget http://openvswitch.org/releases/openvswitch-1.9.3.tar.gz
$ tar xvfvz openvswitch-1.9.3.tar.gz
$ cd openvswitch-1.9.3
$ ./configure --with-linux=/lib/moles/`uname -r`/build
$ make
接下来,继续在/usr/local/share/下安装OVS用户空间组件:

$ sudo make install
下一步是,测试OVS内核模块(安装该模块之前)。为此,先在内核中装入内核模块。

$ sudo insmod ./datapath/linux/openvswitch.ko
证实OVS内核模块已成功装入。

$ lsmod | grep openvswitch
openvswitch 97934 0
一旦你证实openvswitch.ko已成功装入到内核中,继续安装内核模块,如下所示。

$ sudo make moles_install
配置和启动Open vSwitch

创建一个框架式OVS配置数据库

$ sudo mkdir /etc/openvswitch
$ sudo ovsdb-tool create /etc/openvswitch/conf.db ./vswit
chd/vswitch.ovsschema
启动OVS数据库服务器。

$ sudo ovsdb-server --remote=punix:/usr/local/var/run/ope
nvswitch/db.sock - remote=db:Open_vSwitch,manager_options
--pidfile --detach
OVS配置数据库初始化。

$ sudo ovs-vsctl --no-wait init
最后,启动OVS守护程序。

$ sudo ovs-vswitchd --pidfile --detach
将KVM安装在Ubuntu或Debian上

使用apt-get命令,安装KVM和必要的用户空间工具。

$ sudo apt-get install qemu-kvm libvirt-bin bridge-utils
virt-manager
将一个普通的非根用户(如alice)添加到libvirtd群组,那样该用户不需要根用户权限,就能启动虚拟机。

$ sudo adser alice libvirtd
退出,重新以该用户身份登录,让群组成员的变更生效。

运行下面这个命令。如果你看到空空如也的虚拟机列表,这意味着KVM已成功设置完毕。

$ virsh -c qemu:///system list
Id Name State
为KVM配置Open vSwitch

现在是时候创建OVS网桥启动脚本了,那样启动或终止虚拟机时,OVS就能自动配置。

安装依赖项(用户模式Linux实用工具),这些依赖项将用于处理Linux网桥模式。

$ sudo apt-get install uml-utilities
创建网桥启动脚本,如下所示。

$ sudo vi /etc/openvswitch/ovs-ifup
#!/bin/sh
switch='br0'
/sbin/ifconfig $1 0.0.0.0 up
ovs-vsctl add-port ${switch} $1
$ sudo vi /etc/openvswitch/ovs-ifdown
#!/bin/sh
switch='br0'
/sbin/ifconfig $1 0.0.0.0 down
ovs-vsctl del-port ${switch} $1
$ sudo chmod +x /etc/openvswitch/ovs-if*
然后,创建一个默认的网桥br0,并添加一个物理网络接口,虚拟机将通过这个接口与外部网络进行联系。在该教程中,我假设这类网络接口是eth5。

$ sudo ovs-vsctl add-br br0
$ sudo ovs-vsctl add-port br0 eth5
借助KVM启动虚拟机

现在你可以准备启动访客虚拟机了。

我假设,你已经准备好了一个访客虚拟机映像(比如ubuntu-client.img)。使用下面这个命令,启动访客虚拟机。

$ sudo kvm -m 1024 -net nic,macaddr=11:11:11:EE:EE:EE -ne
t tap,script=/etc/openvswitch/ovs-ifup,downscript=/etc/op
envswitch/ovs-ifdown -vnc :1 -drive file=/home/dev/images
/ubuntu-client.img,boot=on
这会创建并启动一个访客虚拟机;一旦访客虚拟机启动,其虚拟接口就自动添加到OVS网桥br0。

3. 如何使用Floodlight连接并管理Open vSwitch

Open vSwitch(下面简称为 OVS)是由 Nicira Networks 主导的,运行在虚拟化平台(例如 KVM,Xen)上的虚拟交换机。在虚拟化平台上,OVS 可以为动态变化的端点提供 2 层交换功能,很好的控制虚拟网络中的访问策略、网络隔离、流量监控等等。

OVS 遵循 Apache 2.0 许可证, 能同时支持多种标准的管理接口和协议。OVS 也提供了对 OpenFlow 协议的支持,用户可以使用任何支持 OpenFlow 协议的控制器对 OVS 进行远程管理控制。

Open vSwitch 概述

在 OVS 中, 有几个非常重要的概念:

Bridge: Bridge 代表一个以太网交换机(Switch),一个主机中可以创建一个或者多个 Bridge 设备。
Port: 端口与物理交换机的端口概念类似,每个 Port 都隶属于一个 Bridge。
Interface: 连接到 Port 的网络接口设备。在通常情况下,Port 和 Interface 是一对一的关系, 只有在配置 Port 为 bond 模式后,Port 和 Interface 是一对多的关系。
Controller: OpenFlow 控制器。OVS 可以同时接受一个或者多个 OpenFlow 控制器的管理。
datapath: 在 OVS 中,datapath 负责执行数据交换,也就是把从接收端口收到的数据包在流表中进行匹配,并执行匹配到的动作。
Flow table: 每个 datapath 都和一个“flow table”关联,当 datapath 接收到数据之后, OVS 会在 flow table 中查找可以匹配的 flow,执行对应的操作, 例如转发数据到另外的端口。
Open vSwitch 实验环境配置

OVS 可以安装在主流的 Linux 操作系统中,用户可以选择直接安装编译好的软件包,或者下载源码进行编译安装。

在我们的实验环境中,使用的操作系统是 64 位 Ubuntu Server 12.04.3 LTS,并通过源码编译的方式安装了 Open vSwitch 1.11.0

$ lsb_release -a
No LSB moles are available.
Distributor ID:Ubuntu
Description:Ubuntu 12.04.3 LTS
Release:12.04
Codename:precise
OVS 的源码编译安装方式可以参考官方文档 How to Install Open vSwitch on Linux, FreeBSD and NetBSD。

安装完毕后,检查 OVS 的运行情况:

$ ps -ea | grep ovs
12533 ? 00:00:00 ovs_workq
12549 ? 00:00:04 ovsdb-server
12565 ? 00:00:48 ovs-vswitchd
12566 ? 00:00:00 ovs-vswitchd
查看 OVS 的版本信息, 我们安装版本的是 1.11.0

$ ovs-appctl --version
ovs-appctl (Open vSwitch) 1.11.0
Compiled Oct 28 2013 14:17:16
查看 OVS 支持的 OpenFlow 协议的版本

$ ovs-ofctl --version
ovs-ofctl (Open vSwitch) 1.11.0
Compiled Oct 28 2013 14:17:17
OpenFlow versions 0x1:0x4
基于 Open vSwitch 的 OpenFlow 实践

OpenFlow 是用于管理交换机流表的协议,ovs-ofctl 则是 OVS 提供的命令行工具。在没有配置 OpenFlow 控制器的模式下,用户可以使用 ovs-ofctl 命令通过 OpenFlow 协议去连接 OVS,创建、修改或删除 OVS 中的流表项,并对 OVS 的运行状况进行动态监控。

4. openswitch安装apt

1.更新系统sudoapt-getupdate,sudoapt-getupgrade2.安装OVS,sudoapt-getinstallopenvswitch-switch3.验证sudoovs-vsctlshow。
在补充的时候安装libssl相关套件,以及其他需要的套件。
还有一种方法,首先更新可安装的组件,安装相关依赖,从ovs的git仓库下载源码文件,并进入到ovs文件中,在ovs目录下执行,编译安装,最后启动。

5. open vswitch和网桥的区别

下载完后输入以下命令解压
[root@localhost ~]# tar –xzvf openvswitch-1.1.0pre2.tar.gz

进入解压后目录,输入以下命令配置Open vSwitch工程,生成Makefile文件。
[root@localhost ~]# ./configure --with-linux=/lib/moles/`uname -r`/build

–with- linux:生成内核模式的Open vSwitch时需指定的内核源码编译目录
指定Open
vSwitch的安装位置加参数:–prefix=/…
如有其他问题可参考源码根目录下的帮助文件:INSTALL.Linux

编译、链接、生成和安装Open vSwitch,命令如下,make install目录只安装Open vSwitch除内核模块外的其他所有模块,如ovs-vsctl、ovs-vswitchd、ovs-ofctl等
[root@localhost ~]# make[root@localhost ~]# make install

卸载原有虚拟网桥模块,命令如下,如果Xend正常启动,将自动加载linux虚拟网桥模块bridge.ko。
[root@localhost ~]# rmmod bridge

如果无法卸载,可用“lsmod”命令查看已加载的依赖于bridge的内核模块,并用“rmmod 模块名”卸载,常见的无法卸载的情况可通过预先执行下面两条命令解决。
[root@localhost ~]# /etc/init.d/iptables stop[root@localhost ~]# rmmod xt_physdev

加载Open
vSwitch内核模块openvswitch_mod.ko和linux虚拟网桥兼容模块brcompat_mod.ko
[root@localhost ~]# insmod openvswitch-1.1.0pre2/datapath/linux-2.6/openvswitch_mod.ko[root@localhost ~]# insmod openvswitch-1.1.0pre2/datapath/linux-2.6/brcompat_mod.ko

根据ovsdb模板vswitch.ovsschema创建ovsdb数据库ovs-vswitchd.conf.db,用于存储虚拟交换机的配置信息,只需第一次运行Open
vSwitch时创建
[root@localhost ~]# ovsdb-tool create/usr/local/etc/ovs-vswitchd.conf.dbopenvswitch-1.1.0pre2/vswitchd/vswitch.ovsschema

启动ovsdb数据库服务器,Open vSwitch虚拟网桥模块将通过ovsdb-server获得虚拟交换机配置信息,“—detach”表示以后台方式运行, ovsdb-server其他参数请参考“ovsdb-server –help”
[root@localhost ~]# ovsdb-server/usr/local/etc/ovs-vswitchd.conf.db--remote=punix:/usr/local/var/run/openvswitch/db.sock--remote=db:Open_vSwitch,manager_options--private-key=db:SSL,private_key--certificate=db:SSL,certificate--bootstrap-ca-cert=db:SSL,ca_cert--detach

初始化Open
vSwitch控制接口,以便用ovs-vsctl管理配置虚拟交换机
[root@localhost ~]#
ovs-vsctl –no-wait init

启动Open
vSwitch用户态模块,unix:后的文件为socket文件,为ovsdb-server监听的socket文件。
[root@localhost ~]#
ovs-vswitchd unix:/usr/local/var/run/openvswitch/db.sock –detach

启动linux原有虚拟网桥兼容模块用户态组件ovs-brcompatd,该模块必须在ovsdb-server和ovs-vswitchd启动后才能启动。
[root@localhost ~]# ovs-brcompatd--pidfile--detach

2.2 apt-get安装

$apt-get install openvswitch-*

注意:使用deb安装openvswitch-datapath*也是需要依赖/lib/moles/`uname -r`/build,否则无法编译内核模块

6. 如何在linux下安装floodlight

一、安装VmwareWorkstation
附赠可用注册码5C4A7-6Q20J-6ZD58-K2C72-0AKPE

二、安装floodlight及mininet
1、安装floodlight
Ctrl+Alt+T打开控制台输入:
$sudo apt-get update
$sudo apt-get install build-essential default-jdk ant python-dev
$git clone git://github.com/floodlight/floodlight.git
$cd floodlight
$ant
$cd target
$java -jar floodlight.jar #运行Floodlight
打开浏览器输入:localhost:8080/ui/index.html进入如下界面则说明安装成功:

2、安装mininet
新建一个终端控制台,输入:
$sudo apt-get install mininet
注:如果之前安装过openvswitch将会报错,这是只需要输入以下命令删除ovs残存文件即可:
$sudo rm /usr/local/bin/ovs*
解决完错误之后再输入安装mininet的命令此时不再报错,但是使用mininet创建命令的时会在报错,提示6633端口已被占用。这是因为mininet安装完毕之后会自行启动,输入以下命令关闭服务:
$sudo service openvswitch-controller stop
Mininet同时也是开机自启动,关闭自启动:
$sudo update-rc.d openvswitch-controller disable
这是在用mininet的创建命令就没有任何问题了:
$sudo mn --controller=remote,ip=172.168.1.2,port=6633(此处的IP地址运行floodlight控制器的机器的IP地址,请根据自己的情况自行修改)

需要注意的是使用命令行安装的mininet的版本比较老,貌似只有1.4+,而通过源码安装则可以安装到最新版本(2.2+)。
源码编译安装:
$git clone git://github.com/mininet/mininet#下载源码
$git checkout -b 2.2.0 2.2.0#选择2.2版本
$./util/install.sh#编译安装
这里自带的脚本会帮你处理好一切的,安心好了。不过建议看一下mininet的INSTALL文件,看一下对系统有什么要求。
同样需要注意命令安装的情况,关闭自启动。

三、安装wireshark
新建终端控制台,输入:
$sudo apt-get install wireshark
这样全部的准备工作已经做完了

四、联机调试抓包
在进行抓包之前将之前运行的floodlight和mininet全部关闭
1、运行floodlight
$java -jar floodlight/target/floodlight.jar
2、运行wireshark
$sudo wireshark (一定要用root权限打开,否则无法检测网卡端口)
点击监测的端口,如果在同一台机器上测试,就选择lo环回端口,如果mininet链接练成控制器则监测eth0端口。
在开始对网卡端口监测之后在启动mininet,确保能抓到Hello包

3、启动mininet
$sudo mn --controller=remote,ip=202.119.167.224
这时你就能从wireshark中看到各种OFP的数据包了!

7. 如何用openvswitch-switch搭建多虚拟机环境

将Open vSwitch安装在Ubuntu或Debian上 虽然OVS以程序包的方式出现在Ubuntu或Debian上,但我在此还是通过源代码来构建OVS,这将拥有最新的功能特性和修正版。 首先,安装用于构建OVS的依赖项

8. openvswitch能够装在什么系统中

将Open vSwitch安装在Ubuntu或Debian上 虽然OVS以程序包的方式出现在Ubuntu或Debian上,但我在此还是通过源代码来构建OVS,这将拥有最新的功能特性和修正版。 首先,安装用于构建OVS的依赖项。 $ sudo apt-get install build-essential libssl-d...

9. 如何去研究SDN&OpenFlow

Nick McKeown主页上的教程ppt和演讲ppt。Nick的几篇关于OpenFlow的主要paper做精读。

OpenFlow官网上的Tutorial非常非常好,一步一步做下来,再做2遍,然后对着OpenFlow对应版本的Spec学习,知其然知其所以然。
开源的那么多Controller和Switch,找一对学习源代码,个人觉得floodlight和open vswitch不错。(根据学习的深浅,2周到半年都有可能)
前沿的方向,比如P4,比如POF,比如ONOS,比如ODL……这些方向都有很多内容
每年的ONS会议,网站注册后可以看到视频和ppt,这都是最新的东东
如果你是学生,尤其是以此为研(bi)究(ye)方向的研究生,就需要考虑选啥方向做毕业选题了,比如可以有几个方向
做个APP实现,比如做烂了的TE/LB算法、管理、可视化?混个毕业应该问题不大
修改下floodlight、openvswith搞点新特性啥的
做个前沿方向?比如P4、POF、ONOS、ODL、甚至OCP……每一条里面可研究的东西很多
如果是清华中科大的话,他们相关的实验室已经有自己探索的方向了,跟着老师走多干活多思考
多讨论、多练手、多思考、多笔记

10. ubuntu桌面版能装kvm吗

可以安装。

安装KVM所需要的软件包:

$ apt-get install qemu-kvm libvirt-bin virt-manager bridge-utils

其中:virt-manager为GUI管理窗口,bridge-utils:用于网络桥接

热点内容
黑漫的服务器ip 发布:2025-01-23 03:16:40 浏览:650
tplink无internet访问 发布:2025-01-23 03:15:18 浏览:566
原神用安卓手机玩为什么画质那么低 发布:2025-01-23 03:09:31 浏览:847
空调压缩机是外机吗 发布:2025-01-23 03:09:31 浏览:950
大学数据库学 发布:2025-01-23 02:54:30 浏览:588
部队营区监控系统录像存储多少天 发布:2025-01-23 02:49:26 浏览:523
oraclelinux用户名和密码 发布:2025-01-23 02:43:06 浏览:404
安卓手机主页滑动屏幕怎么设置 发布:2025-01-23 02:41:15 浏览:225
小脸解压 发布:2025-01-23 02:24:17 浏览:368
网易电脑版我的世界布吉岛服务器 发布:2025-01-23 02:20:17 浏览:985