OVS安装
ovs与linux内核版本对应
OVS版本是需要与linux内核版本对应的,否则会导致内核函数与OVS调用的函数不匹配,简称装不上。
https://docs.openvswitch.org/en/latest/faq/releases/
linux 内核版本查看uname -r
安装过程
这里要注意,如果下载的是官网的压缩文件,则不用./boot.sh直接从./configure开始即可, 如果是在github上下载的,则需要./boot.sh再configure
官方教程: https://docs.openvswitch.org/en/latest/intro/install/#
下载链接: http://www.openvswitch.org/download/
下载版本: 2.13.6, 解压后进入根目录
参考资料:
https://www.cnblogs.com/goldsunshine/p/10331606.html
https://blog.csdn.net/zhangmeimei_pku/article/details/97929098
- 在这之前要先安装python和python-pip, 这么做会让系统自动安装c编译器
sudo apt install python
sudo apt install python-pip
OVS的源码安装命令如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
./configure
make
make install
## 安装内核
make modules_install
## 将openvswitch载入到内核模块中
/sbin/modprobe openvswitch
## 看内核模块是否被加载
/sbin/lsmod |grep openvswitch
## 启动(这里要注意一下使用sudo找不到命令的问题,所以需要找到原来的目录运行一下)
export PATH=$PATH:/usr/local/share/openvswitch/scripts
ovs-ctl start
export PATH=$PATH:/usr/local/share/openvswitch/scripts
ovs-ctl --no-ovs-vswitchd start
export PATH=$PATH:/usr/local/share/openvswitch/scripts
ovs-ctl --no--ovsdb-server start
## 下面的是要配置ovsdb的数据库 (配置数据库了套接字都需要使用sudo,命令找不到就使用which, 然后使用绝对路径运行命令)
## 原文:In addition to using the automated script to start Open vSwitch, you may wish to manually start the various daemons. Before starting ovs-vswitchd itself, you need to start its configuration database, ovsdb-server. Each machine on which Open vSwitch is installed should run its own copy of ovsdb-server. Before ovsdb-server itself can be started, configure a database that it can use:
## 这里要注意, 需要在openvswitch要目录运行该命令
mkdir -p /usr/local/etc/openvswitch
ovsdb-tool create /usr/local/etc/openvswitch/conf.db \
vswitchd/vswitch.ovsschema
## 配置ovsdb-server以使用上面创建的数据库,监听Unix域套接字
## 原文: Configure ovsdb-server to use database created above, to listen on a Unix domain socket, to connect to any managers specified in the database itself, and to use the SSL configuration in the database:
mkdir -p /usr/local/var/run/openvswitch
ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
--remote=db:Open_vSwitch,Open_vSwitch,manager_options \
--private-key=db:Open_vSwitch,SSL,private_key \
--certificate=db:Open_vSwitch,SSL,certificate \
--bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \
--pidfile --detach --log-file
ovs-vsctl --no-wait init
ovs-vswitchd --pidfile --detach --log-file
|
若对OVS的源码有修改,改完ovs之后,再次按照这个步骤重新安装一下自己的ovs
重启系统后: 这个时候启动ovs会失败, 这是因为OVS自带的数据库不会自动启动
因此我们需要把后三个命令再运行一下才行, 即:
1
2
3
4
5
6
7
8
9
10
|
ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
--remote=db:Open_vSwitch,Open_vSwitch,manager_options \
--private-key=db:Open_vSwitch,SSL,private_key \
--certificate=db:Open_vSwitch,SSL,certificate \
--bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \
--pidfile --detach --log-file
ovs-vsctl --no-wait init
ovs-vswitchd --pidfile --detach --log-file
|
自动脚本
这里是我修改OVS源码时为了方便而写的一些自动脚本
OVS删除脚本
修改完OVS源码需要重新安装前需要先停止并删除本机运行的OVS,这是自动脚本:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#!/bin/bash
# 停止其运行
sudo /usr/local/share/openvswitch/scripts/ovs-ctl stop
sleep 2
# 依次删除脚本;还有两个不知道干嘛的
sudo rm -rf /usr/local/share/openvswitch/scripts
sudo rm -rf /usr/local/etc/openvswitch/
sudo rm -rf /usr/local/var/run/openvswitch/
sleep 2
# 移除内核模块
echo 'lsmod | grep openvswitch'
lsmod | grep openvswitch
echo 'sudo rmmod openvswitch'
sudo rmmod openvswitch
echo 'lsmod | grep openvswitch'
lsmod | grep openvswitch
# 若移除内核失败,执行下面两条命令
# sudo ovs-dpctl show # 查看是否被占用
# sudo ovs-dpctl del-dp ovs-system # 删除
|
OVS一键安装脚本
修改完OVS时需要重新安装它,这是它的安装一键脚本,在这之前别忘记删除本机上已安装的OVS,否则易失败
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
#!/bin/bash
./configure --with-linux=/lib/modules/$(uname -r)/build
echo ''
echo -e "\033[47;30m end configure \033[0m"
sleep 3
make
echo -e "\033[47;30m end make \033[0m"
sleep 3
sudo make install
echo -e "\033[47;30m end make install \033[0m"
sleep 3
sudo make modules_install
echo -e "\033[47;30m end sudo make modules_install \033[0m"
sleep 3
sudo /sbin/modprobe openvswitch
echo -e "\033[47;30m end sudo /sbin/modprobe openvswitch \033[0m"
sleep 3
/sbin/lsmod | grep openvswitch
echo -e "\033[47;30m end /sbin/lsmod | grep openvswitch \033[0m"
sleep 3
sudo mkdir -p /usr/local/etc/openvswitch
echo -e "\033[47;30m end sudo mkdir -p /usr/local/etc/openvswitch \033[0m"
sleep 3
sudo ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema # 这里没出现找不到路径的问题,可能是安装了内核版本的原因
echo -e "\033[47;30m end ovsdb-tool \033[0m"
sleep 3
sudo mkdir -p /usr/local/var/run/openvswitch
echo -e "\033[47;30m end sudo mkdir -p /usr/local/var/run/openvswitch \033[0m"
sleep 3
sudo ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
--remote=db:Open_vSwitch,Open_vSwitch,manager_options \
--private-key=db:Open_vSwitch,SSL,private_key \
--certificate=db:Open_vSwitch,SSL,certificate \
--bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \
--pidfile --detach --log-file
echo -e "\033[47;30m end sudo ovsdb-server \033[0m"
sleep 3
sudo ovs-vsctl --no-wait init
echo -e "\033[47;30m end sudo ovs-vsctl --no-wait init \033[0m"
sleep 3
sudo ovs-vswitchd --pidfile --detach --log-file
echo -e "\033[47;30m end sudo ovs-vswitchd --pidfile --detach --log-file \033[0m"
sleep 3
sudo mn --test pingall
echo -e "\033[47;30m end sudo mn --test pingall \033[0m"
sleep 3
echo -e "\033[47;30m show dmesg \033[0m"
dmesg | tail # 这时能查到我们插入源码的信息
|
OVS重启脚本
在重启系统后,OVS自带的一些服务数据库啥的不会一同启动,因此需要手动启动
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
sudo ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
--remote=db:Open_vSwitch,Open_vSwitch,manager_options \
--private-key=db:Open_vSwitch,SSL,private_key \
--certificate=db:Open_vSwitch,SSL,certificate \
--bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \
--pidfile --detach --log-file
echo -e "\033[47;30m sudo ovsdb-server \033[0m"
sleep 3
sudo ovs-vsctl --no-wait init
echo -e "\033[47;30m sudo ovs-vsctl --no-wait init \033[0m"
sleep 3
sudo ovs-vswitchd --pidfile --detach --log-file
echo -e "\033[47;30m sudo ovs-vswitchd --pidfile --detach --log-file \033[0m"
|
OVS迁移脚本
源码被一个系统编译过,再复制到其他系统中编译不成功,需要运行下这个脚本才可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#!/bin/bash
autoscan
echo -e "\033[47;30m autoscan \033[0m"
sleep 1
aclocal
echo -e "\033[47;30m aclocal \033[0m"
sleep 1
autoconf
echo -e "\033[47;30m autoconf \033[0m"
sleep 1
automake --add-missing
echo -e "\033[47;30m automake --add-missing \033[0m"
|
Mininet安装(官网上的安装教程最全)
下载:http://mininet.org/download/
去github上下载它的源码
解压后进入根目录
使用git tag
可以查看所有的版本, 不切换当前默认安装3.2.1b1.
使用的安装命令:
1
2
|
## 只安装mininet和openflow1.3, 因此使用命令:
./util/install.sh -n3
|
测试
运行 sudo mn –test pingall, 成功则说明2个都安装好了
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
*** Creating network
*** Adding controller
*** Adding hosts:
h1 h2
*** Adding switches:
s1
*** Adding links:
(h1, s1) (h2, s1)
*** Configuring hosts
h1 h2
*** Starting controller
c0
*** Starting 1 switches
s1 ...
*** Waiting for switches to connect
s1
*** Ping: testing ping reachability
h1 -> h2
h2 -> h1
*** Results: 0% dropped (2/2 received)
*** Stopping 1 controllers
c0
*** Stopping 2 links
..
*** Stopping 1 switches
s1
*** Stopping 2 hosts
h1 h2
*** Done
completed in 6.082 seconds
|
ryu源码安装
下载源码
git clone https://github.com/faucetsdn/ryu.git
github上的readme里面有相关的安装依赖说明, 直接使用pip安装没成功, 因此我们这里使用python3安装.
-
安装pip3
sudo apt install python3-pip
-
安装依赖
sudo pip3 install -r tools/pip-requires
-
安装ryu(此之前应已安装python3)
sudo python3 setup.py install
-
运行 ryu-manager
1
2
|
loading app ryu.controller.ofp_handler
instantiating app ryu.controller.ofp_handler of OFPHandler
|
成功