OpenVSwitch
任务:
1.源码安装ovs
2.写基本的openflow条目控制网络包转发方向
3.minine环境下设计应用ovs
OpenVSwitch安装
Linux内核支持到4.1.25。
之前安装的是4.6.4
所以用系统原本的3.10.0
天才第一步:先好好看源码包里的README
下载源码
wget http://openvswitch.org/releases/openvswitch-2.0.1.tar.gz
!!注意!!下载前一定要了解自己内核支持的版本,这个在readme里都有写,切勿一味追求latest version
比如
ovs版本|系统内核
2.0.x | 2.6.32 to 3.10
解压
tar zxvf openvswitch-2.0.1.tar.gz
前期准备
1.确保OVS正确运行的环境依赖,切换至root用户
yum update
yum install -y build-essential (有则忽略)
yum -y install openssl-devel wget kernel-devel
要求如下(可以通过xxx –version)查询
gcc版本4.1或更高
pkg-config版本0.22或更高
autoconf版本2.64或更高
automake版本1.10或更高
m4版本1.42或更高
python2.X ,X>4(不建议用python3.0以上的版本)
构建基于Linux内核的交换机
cd openvswitch-2.0.1
./boot.sh
开始用了不匹配的2.5.0,不过这里结果基本一致,是在make时候出错的
make clean
./configure --with-linux=/lib/modules/
uname -r/build
内核版本
编译并安装OVS 2.3.0
make
//make没有这么快的
make install
install要用root权限 su
install 不通过 安装autoconf 和autonmake libtool rpm-build m4
安装并加载构建的内核模块
make modules_install
/sbin/modprobe openvswitch
使用ovsdb工具初始化配置数据库
mkdir -p /usr/local/etc/openvswitch
ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema
启动配置数据库
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
初始化数据库
ovs-vsctl --no-wait init
启动主进程
ovs-vswitchd --pidfile —detach
查看OVS进程是否启动
ps aux|grep ovs
ovs应用
例子:新建网桥br0并加入端口
ovs-vsctl add-br br0
ovs-vsctl add-port br0 eth0
ovs-vsctl add-port br0 vif1.0
应用场景:
1.常用:如删除网桥br0上挂接的eth0网络接口
ovs-vsctl del-port br0 eth0
2.新建网桥加入端口
ovs-vsctl add-br ovs-switch
ovs-vsctl add-port ovs-switch eth0 //port4
自定义
ovs-vsctl add-port ovs-switch p1 -- set Interface p1 ofport_request=101
ovs-vsctl add-port ovs-switch p2 -- set Interface p2 ofport_request=102
ovs-vsctl add-port ovs-switch p3 -- set Interface p3 ofport_request=103
对于 internal 类型的的网络接口,OVS 会在 Linux 系统中创建一个可以用来收发数据的模拟网络设备。我们可以为这个网络设备配置 IP 地址、进行数据监听。
ovs-vsctl set Interface p1 type=internal
ovs-vsctl set Interface p1 type=internal
ovs-vsctl set Interface p3 type=internal
ethtool -i p2
ethtool -i p2
ethtool -i p3
3.创建虚拟网络空间
为了避免网络接口上的地址和本机已有网络地址冲突,创建一个虚拟网络空间 ns1,把 p1 接口移入网络空间 ns1,并配置 IP 地址为 192.168.1.101,另外两个同理
ip netns add ns1
ip link set p1 netns ns1
ip netns exec ns1 ip addr add 192.168.1.101/24 dev p1
ip netns exec ns1 ifconfig p1 promisc up
4.查看 OVS 交换机的信息
ovs-vsctl show
查看 Open vSwitch 中的端口信息,获得交换机对应的 datapath ID (dpid),以及每个端口的 OpenFlow 端口编号,端口名称,当前状态。
ovs-ofctl show ovs-switch
5.运行查看
ovs-appctl fdb/show ovs-switch
查看交换机所有table
ovs-ofctl dump