Open vSwitch 入门实践(1)简介

2020-12-12 21:40:39 +08:00
 FreeEx

OVS 简介

Open vSwitch 是什么?

Open vSwitch(以下简称 OVS)是一个用 C 语言开发的多层虚拟交换机,使用 Apcahe 2 开源许可证,现如今基本上已经成为了开源 SDN (软件定义网络)基础设施层的事实标准。

OVS 支持哪些功能

OVS 的术语解释

Bridge

中文名称网桥,一个 Bridge 代表一个以太网交换机( Switch ),一台主机中可以创建一个或多个 Bridge,Bridge 可以根据一定的规则,把某一个端口接收到的数据报文转发到另一个或多个端口上,也可以修改或者丢弃数据报文。

Port

中文名称端口,需要注意的是它和 TCP 里面的端口不是同样的概念,它更像是物理交换机上面的插口,可以接水晶头的那种。Port 隶属于 Bridge,必须先添加了 Bridge 才能在 Bridge 上添加 Port 。Port 有以下几种类型:

Interface

( iface/接口)接口是 OVS 与操作系统交换数据报文的组件,一个接口即是操作系统上的一块网卡,这个网卡可能是 OVS 生成的虚拟网卡,也有可能是挂载在 OVS 上的物理网卡,操作系统上的虚拟网卡( TUN/TAP )也可以被挂载在 OVS 上。

Controller

OpenFlow 控制器,OVS 可以接收一个或者多个 OpenFlow 控制器的管理,功能主要是下发流表,控制转发规则。

Flow

流表是 OVS 进行数据转发的核心功能,定义了端口之间转发数据报文的规则,一条流表规则主要分为匹配和动作两部分,匹配部分决定哪些数据报文需要被处理,动作决定了匹配到的数据报文该如何处理。

OVS 常用操作

安装

yum install openvswitch
systemctl enable openvswitch
systemctl start openvswitch

如果当前软件源中没有 openvswitch,可以通过阿里云官方镜像站下载和操作系统版本对应的 rpm 包到本地再安装。 示例命令: yum localinstall openvswitch-2.9.0-3.el7.x86_64.rpm

Bridge 操作

添加网桥

ovs-vsctl add-br br-int

查询网桥列表

ovs-vsctl list-br

删除网桥

ovs-vsctl del-br br-int

Port 操作

# 将物理网卡 eth0 添加到网桥 br-int 上
ovs-vsctl add-port br-int eth0
# 移除网桥 br-int 上的 Port
ovs-vsctl del-port br-int eth0
# 添加 Internal Port 
ovs-vsctl add-port br-int vnet0 -- set Interface vnet0 type=internal
# 把网卡 vnet0 启动并配置 IP
ip link set vnet0 up
ip addr add 192.168.0.1/24 dev vnet0
# 设置 VLAN tag
ovs-vsctl set Port vnet0 tag=100
# 移除 vnet0 上面的 VLAN tag 配置
ovs-vsctl remove Port vnet0 tag 100
# 设置 vnet0 允许通过的 VLAN tag
ovs-vsctl set Port vnet0 trunks=100,200
# 移除 vnet0 允许通过的的 VLAN tag 配置
ovs-vsctl remove Port vnet0 trunks 100,200
ovs-vsctl add-br br0
ovs-vsctl add-br br1
ovs-vsctl \
-- add-port br0 patch0 -- set interface patch0 type=patch options:peer=patch1 \
-- add-port br1 patch1 -- set interface patch1 type=patch options:peer=patch0
#主机 10.1.7.21 上
ovs-vsctl add-br br-tun
ovs-vsctl add-port br-tun vxlan-vx01 -- set Interface vxlan-vx01 type=vxlan options:remote_ip=10.1.7.22 options:key=flow
ovs-vsctl add-port br-tun vxlan-vx02 -- set Interface vxlan-vx02 type=vxlan options:remote_ip=10.1.7.23 options:key=flow

#主机 10.1.7.22 上
ovs-vsctl add-br br-tun
ovs-vsctl add-port br-tun vxlan-vx01 -- set Interface vxlan-vx01 type=vxlan options:remote_ip=10.1.7.21 options:key=flow
ovs-vsctl add-port br-tun vxlan-vx02 -- set Interface vxlan-vx02 type=vxlan options:remote_ip=10.1.7.23 options:key=flow

#主机 10.1.7.23 上
ovs-vsctl add-br br-tun
ovs-vsctl add-port br-tun vxlan-vx01 -- set Interface vxlan-vx01 type=vxlan options:remote_ip=10.1.7.21 options:key=flow
ovs-vsctl add-port br-tun vxlan-vx02 -- set Interface vxlan-vx02 type=vxlan options:remote_ip=10.1.7.22 options:key=flow
# 设置 VLAN mode
ovs-vsctl set port <port name> VLAN_mode=trunk|access|native-tagged|native-untagged
# 设置 VLAN tag
ovs-vsctl set port <port name> tag=<1-4095>
# 设置 VLAN trunk
ovs-vsctl set port <port name> trunk=100,200
# 移除 Port 的属性
ovs-vsctl remove port <port name> <property name> <property value>
# 查看 Port 的属性
ovs-vsctl list interface <port name>

接下来我们将使用 OVS 来实现单机和多台物理服务器下的虚拟 VLAN 网络。

本文首发我的微信公众号:我在对面的角落 欢迎关注,接收第一时间更新通知。

1125 次点击
所在节点    推广
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/734856

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX