标签:openvswitch

发表于
上篇文章我们学会了kickstart脚本中如何配置bond、bridge的方法,下面我们来看看如何配置openVswitch的方法: 由于openVwitch在系统包里并不存在,所以必须在系统装好后在%post部分中配置: %post # add the puppet server to hosts file echo '200.7.4.199 puppet.mynetwork.com puppet' |tee -a /etc/hosts # add the gateway to /etc/sysconfig/network echo 'GATEWAY=200.7.7.2' |tee /etc/sysconfig/network # Setup the bridge echo 'Bridge Config'...
发表于
管理相关命令 查看bridge信息 ovs-ofctl show br0 # 显示结果中port前面的数字为OpenFlow port id Dump flow table # Dump br0所使用的flow table ovs-ofctl dump-tables br0 Dump flow # Dump br0的所有flow ovs-ofctl dump-flows br0 # Dump br0上匹配xx的flow ovs-ofctl dump-flows br0 xx Flow Table相关命令 添加 flow ovs-ofctl add-flow br0 in_port=1,actions=xx # 从文件br0flow.txt中导入Flow Table # 该文件必须一行一个flow ovs-ofctl add-flow br0 -...
发表于
Introduction Open vSwitch中有多个命令,分别有不同的作用,大致如下: ovs-vsctl用于控制ovs db ovs-ofctl用于管理OpenFlow switch 的 flow ovs-dpctl用于管理ovs的datapath ovs-appctl用于查询和管理ovs daemon 本文主要介绍ovs-vsctl。以下命令查询主机上已有的 OVS bridge,以及其中的 port。 ovs-vsctl show 例子 $ ovs-vsctl show fc562da8-fb36-4d62-8b47-5502e72069dc Bridge br-vxlan Port "vxlan0" Interface "vxlan0" type: vxlan options: {remote_ip="10.10.10.1"} Port br-vxlan Interface br-vxlan type: internal Port "veth2" Interface...
发表于
如上的场景,这是一个标准的生产环境 两台物理机,每台上都跑了若干虚机,eth0是数据网,eth1是管理网。 虚机的网络加载在Open vSwitch之上。 虚机只有一个网卡,tap是个2层设备。 具体的配置步骤如下: 在每台实机上建立网桥: ovs-vsctl add-br br0 把实机上的eth0加入网桥: ovs-vsctl add-port br0 eth0 注意,上面的方法加入网桥,实际和以下命令相当: ovs-vsctl add port br0 eth0 tag=1 缺省tag=1, 表示native,接受所有的vlan。 另外,上一步如果直接执行,会洗掉eth0原有的ip地址,你就连不上了,这就是为什么要有eth1管理网口的原因,你只能连eth1的地址了 把VM1虚机上的网口添加到网桥,打vlan tag=100: ovs-vsctl add-port br0 tap0 tag=100...
发表于
运行ovs后,Linux系统中会多出一块状态是down掉的网卡ovs-system: ifconfig -a ... ovs-system Link encap:Ethernet HWaddr FA:4F:0D:E4:DA:11 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0...
发表于
环境如上: 两边一个是ubuntu,一个是centos,都是双网卡绑定。 步骤: 两台机器都建立网桥: ovs-vsctl add-br remibr0 可以增加一个vlan tag=101的管理网桥挂到remibr0上去 ovs-vsctl add-br mgmt0 remibr0 101 更进一步,两个网卡bonding,注意,这里需要硬件交换机配置802.3ad才能支持balance-tcp: ovs-vsctl add-bond remibr0 bond0 em49 em50 bond_mode=balance-tcp lacp=active other_config:lacp-time=fast 在ubuntu机器上执行: ovs-vsctl add-br remibr0 ovs-vsctl add-port remibr0 vxlan0 -- set Interface vxlan0 type=...
发表于
转自:http://tekyhost.com/configure-start-up-scripts-for-ovs-on-centos-and-red-hat/ The RPM packages for Open vSwitch provide some integration with Red Hat's network scripts. Using this integration is optional. To use the integration for a Open vSwitch bridge or interface named <name>, create or edit /etc/sysconfig/network-scripts/ifcfg-<name>. This...
发表于
一般OpenFlow controller有很多种了,有软件实现的,也有硬件实现的,大部分人是用floodlight来做control path的部分。我们这里用Pox来实现,Pox是基于python的。 Openvswitch安装就不说了。 增加一个tun设备(tap2层|tun3层) yum -y install tunctl tunctl –t tap0 –u root 增加网桥、添加端口tap0 # ovs-vsctl add-br ovsbr0 # ovs-vsctl add-port ovsbr0 tap0 # ovs-vsctl add-port ovsbr0 em1 # ifconfig tap0 promisc up # ifconfig em1 promisc up 用qemu-kvm来安装虚机 # /usr/bin/qemu-kvm -smp 2,cores=2...
发表于
Open vSwitch如果利用vlan将kvm或者docker-lxc虚机连接起来的话,设备多的话,就无法承受,尤其是openstack这种海量大规模虚机的环境。 所以,用vxlan来连接比较好,毕竟vxlan是可以支持到16百万虚拟2层网络的。 场景:两台实体机,都跑ovs,用vxlan互联,上面的交换机可以通联。 实体机1:host1 eth0: 123.123.123.1 实体机2:host2 eth0: 123.123.123.2 首先在host1和host2上分别建立网桥 ovs-vsctl add-br ovsbr0 接下来用virt-install安装kvm的时候就可以指定ovs参数来安装: virt-install ... -w bridge=ovsbr0,virtualport_type=openvswitch 如果是用克隆或者机器来生产虚机的话,网络部分的xml应该如下: <interface type='bridge'> < source bridge='ovsbr0'/...
发表于
lxc类型的容器如何使用Open vSwitch做网络底层呢? 假设底层是ovs, 网桥是ovsbr0,容器已经启动,docker的底层是lxc 查看容器: ps axww --forest 找到-f 后面的配置文件: /var/lib/docker/containers/19ab1b6edd1635159095f3a59f4dab0c1e71f6512282156620fd532ca6446db8/config.lxc 编辑修改网络部分: # vi /var/lib/docker/containers/ae5bfe8ac3567d545c9a0dc64c30cbbdd5ae67466be0b44bd462a4815fbee11d lxc.network.type = veth lxc.network.flags = up lxc.network.link = lxcbr0 并增加以下三行,注意ovs port name: lxc.network.script.up = /etc/network/if-up.d/...
发表于
背景:链路聚合(Link Aggregation Control Protocol, or LACP) Linux下可以多端口Bongding,那么Open vSwitch也是没问题的。 假设我们用得是Dell R730机器,4个网口,捆成一个,dell的网卡名是em1,而不是eth0。 ovs加bonding的命令: ovs-vsctl add-bond <bridge name> <bond name> <list of interfaces> So ovs-vsctl add-bond ovsbr0 bond0 em1 em2 em3 em4 lacp=active other_config:lacp-time=fast 注意加了个lcap-active,缺省不激活的,...
发表于
如果我们用直接定义Open-vlan的方法不能正确启动kvm,如下图的配置: <interface type='network'> <mac address='11:22:33:44:55:66'/> <source network='ovs-network' portgroup='vlan-02'/> </interface> 这种情况有可能发生在libvirt与ovs的兼容性问题上。 那么就得使用另外一种方式了,ovs的Fake Bridge,最早的文章说过,做Docker平台的时候,容器连接到linux系统的br0网桥,然后br0网桥再连接到ovs的网桥ovsbr0,这么串联起来用。ovs的Fake Bridge也是这么个意思,在ovs的网桥ovsbr0上面再串一个带vlan信息的Fake Bridge。 用法: ovs-vsctl add-br <fake bridge> <parent bridge&...
发表于
前几篇文章,讲述了如何用Open vSwitch配置vlan,那么更进一步,如何手动给ovs配置vlan trunk呢?方法其实很简单。 首先什么事vlan trunk呢? VLAN的中继端口叫做trunk。trunk技术用在交换机之间互连,使不同VLAN通过共享链路与其它交换机中的相同VLAN通信。交换机之间互连的端口就称为trunk端口。 简单说vlan trunk就是承载了多个vlan信息的端口。 给出场景,ovs和kvm已经都配好了,无vlan的信息。 首先找出要配vlan的port,ifconfig看一下,这里kvm对应的interface是vnet0 ovs-vsctl list interface vnet0 定义trunks ovs-vsctl set port vnet0 trunks=20,30,40 查看: ovs-vsctl list port vnet0 如果这个端口既能收到带vlan tag的流量,又能收到不带vlan tag的流量(native VLAN),需要这么设置: ovs-vsctl set port vnet0...
发表于
前面有一篇: http://www.rendoumi.com/open-vswitchshe-zhi-vlande-ce-shi/ 我们描述了ovs与kvm使用vlan的文章,在kvm里是手动配置的。下面是比较进阶的过程: 一、在kvm里非手动配置vlan网卡: 假设我们kvm的网卡是eth0,基本配置是: # vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes 我们来配一个vlan id是192: # vi /etc/sysconfig/network-scripts/ifcfg-eth0.192 DEVICE=eth0.192 BOOTPROTO=none ONBOOT=yes IPADDR=192.168.1.1 PREFIX=24 NETWORK=192....
发表于
network namespace is logically another copy of the network stack, with its own routes, firewall rules, and network devices. netns是网络栈的一个逻辑副本,有自己的路由、防火墙规则和网络设备。 We can use network namespace to isolate networks. 我们用netns来隔离网络。 举个复杂的例子: 解释一下802.1q,就是vlan: 802.1q协议也就是“Virtual Bridged Local Area Networks”(虚拟桥接局域网,简称“虚拟局域网”)协议,主要规定了VLAN的实现方法 如上图,实现topo的脚本: cat...
发表于
这一篇 http://www.rendoumi.com/zen-yang-zai-open-vswitchshang-she-zhi-span-huo-zhe-mirrorduan-kou/ 里我们描述了如何利用libvirt的脚本来设置mirror port. 下面我们来讲一下纯手工版本的: 场景依旧: kvm01:vnet1 kvm02:vnet2 先查看一下ovs,看到有vnet1和vnet2两个端口绑到ovsbr0上了: # ovs-vsctl show 238d066c-8354-4978-a9f4-39a98fa2d2e9 Bridge "ovsbr0" Port "eth0" Interface "eth0" Port "ovsbr0" Interface "ovsbr0" type: internal Port "vnet1" Interface "vnet1" Port "vnet2" Interface "vnet2" ovs_version: "1.4.2" ovs show mirror的结果应该是空的: # ovs-vsctl list Mirror...
发表于
Open vSwitch 跟实体交换机的功能相似,那么如何设置一个mirror端口呢?一般mirror端口是用来监控流量,或者挂snort进行安全扫描的,ovs是也支持这个功能的。 场景: 我们先装好2台kvm,然后连接到ovs网桥ovsbr0,两个kvm的两个网卡的mac地址只是最后1位不同,如下: ------ <interface type='bridge'> <mac address='52:54:bb:bb:11:11'/> <source bridge='ovsbr0'/> <virtualport type='openvswitch'> </virtualport> <model type='virtio'/> </interface> ------...
发表于
公司的系统是基于kvm的,基本是一台物理及虚拟出十台kvm来用,网络是基于linux bridge的,现在想改用 Open vSwitch ,来改改看: 基本场景:一开始装好的基本系统是没有bridge的,只有eth0配了ip地址,连接到交换机。 先生成ovs 网桥: ovs-vsctl add-br ovsbr0 将ovsbr0和eth0加入网桥: ovs-vsctl add-port ovsbr0 eth0 注意,执行add-port命令的时候如果是远程,就死定了,网络会断开。所以最好还是在配置文件里把ovs的配置给固定下来。 将eth0的地址交给ovsbr0来处理: ifconfig eth0 0.0.0.0 ifconfig ovsbr0 192.168.100.1/24 看一下结果: ovs-vsctl show 79437d32-5f9f-48bf-a2cf-42d87374bd4b Bridge "ovsbr0" Port "eth0" Interface...
发表于
Open vSwitch的功能十分强大,我们的最终目的是在Open vSwitch之上构建kvm或者docker,并且隔离不必要的网络流量,下面我们看看vlan如何设置: 设置网桥br0,并且增加两个端口vlan10和vlan20,并给它们赋ip ovs-vsctl add-br br0 ovs-vsctl add-port br0 vlan10 tag=10 -- set interface vlan10 type=internal ifconfig vlan10 192.168.10.254 netmask 255.255.255.0 ovs-vsctl add-port br0 vlan20 tag=20 -- set interface vlan20 type=internal ifconfig vlan20 192....
发表于
其实Open vSwitch组Vxlan的方法跟设置GRE/patch port的方法差不多的: 基本场景: 物理机HostA 网卡eth0 的 IP 是172.16.8.105 物理机HostB 网卡eth0 的 IP 是172.16.8.106 创建网桥: # HostA ovs-vsctl add-br br0 ovs-vsctl add-port br0 eth0 ifconfig eth0 0 ip a add 172.16.8.105 dev br0 ip link set br0 up # HostB ovs-vsctl add-br...