无内核支持的Open vSwitch

在损失性能的条件下,Open vSwitch可完全的运行在用户空间,无需内核模块的协助。本文解释如何安装工作在此模式的Open vSwitch.

此版本的Open vSwitch应当手动使用configuremake进行编译。Debian的Open vSwitch软件包虽然也支持此功能,但是近期未进行测试,所有在使用Open vSwitch的此功能时不建议通过Debian软件包安装。

警告:
Open vSwitch的无DPDK支持用户空间模式被认为是实现性质的,没有经过彻底的测试.

编译和安装

编译、安装和配置Open vSwitch的要求和步骤与其文档general中描述的相同。此处你可以省略配置、编译和安装内核模块以及相关要求。

在Linux上,用户空间交换机还要求内核TUN/TAP驱动程序可用,要么内置在内核中,要么可作为模块加载。如果不确定,请检查名为/sys/class/misc/tun的目录。如果不存在,则尝试使用modprobe tun加载模块。

tun设备也必须存在于以下目录/dev/net/tun。如果不存在,则使用命令mkdir /dev/net创建/dev/net目录(如有必要),然后使用命令mknod/dev/net/tun c 10 200创建/dev/net/tun设备节点。

在FreeBSD和NetBSD上,用户空间交换机还要求内核tap(4)驱动程序可用,要么内置到内核中,要么作为模块加载。

使用ovs-vswitchd的用户空间数据路径

为在用户空间模式使用ovs-vswitchd,创建网桥,配置数据库参数datapath_type=netdev,例如:

$ ovs-vsctl add-br br0
$ ovs-vsctl set bridge br0 datapath_type=netdev
$ ovs-vsctl add-port br0 eth0
$ ovs-vsctl add-port br0 eth1
$ ovs-vsctl add-port br0 eth2

ovs-vswitchd将创建一个TAP设备作为网桥的本地接口,与网桥名称相同,并为每个配置的内部接口命名。

ovs-vswitchd will create a TAP device as the bridge’s local interface, named the same as the bridge, as well as for each configured internal interface.

目前,在FreeBSD上,没有实现支持带内控制所需的功能。为了避免相关错误,可以使用以下命令禁用带内支持:

$ ovs-vsctl set bridge br0 other_config:disable-in-band=true

防火墙规则

在Linux上,当用户空间数据路径使用物理接口时,接口上接收到的数据包仍会传递到内核TCP/IP堆栈中。这会导致意外和错误的行为。你可以使用iptables命令来避免这种行为,方法是使用它来丢弃接收到的数据包。例如,丢弃eth0上接收到的数据包:

$ iptables -A INPUT -i eth0 -j DROP
$ iptables -A FORWARD -i eth0 -j DROP

其它设置

在NetBSD上,根据你的网络拓扑结构和应用程序,以下配置可能会有所帮助。参见sysctl(7)。:

$ sysctl -w net.inet.ip.checkinterface=1

猜你喜欢

转载自blog.csdn.net/sinat_20184565/article/details/94482314
今日推荐