虚拟化网络之OpenvSwitch

OpenvSwitch简称OVS,官网(http://openvswitch.org/) OVS是一个高质量、多层的虚拟交换软件,即虚拟交换机。

OpenvSwitch的见的相关组件:

  ovs-vswitchd:实现switch的daemon功能,包括一个支持流交换的Linux内核模块,实现了交换功能

  ovsdb-vswtich: openvswitch的数据库,给ovs-vswitchd提供运行配置信息,即保存了ovs-vswitchd的配置信息,例如vlan、port等信息

  ovs-vsctl:查询和更新ovs-vswitchd的配置,即用于修改或查询ovsdb-vswitch的信息

  还有些组件此处不做介绍

接下来我们来做一个实验,利用GRE通道搭建一个跨多宿主机的虚拟化网络,环境centos6.7 拓扑图如下

1)修改内核参数(一定要先修改内核参数,若果配置了网络名称空间在配置内核参数,内核参数将不会生效)

net.ipv4.ip_forward = 1 \\启用内核转发功能

net.ipv4.conf.default.rp_filter = 0  \\关闭路由验证

/etc/init.d/iptables stop  \\关闭防火墙

setenforce 0 \\关闭Selinux

2)准备yum源

[openswitch]

name= openswitch

baseurl=https://repos.fedorapeople.org/openstack/EOL/openstack-icehouse/epel-6/

enabled=1

gpgcheck=0

yum install openvswitch \\两台宿主机都要安装  启动openvswitch:  service openvswitch start

yum update iproute  \\更新iproute软件

ip netns add A1  \\创建A1网络名称空间

ip netns add B1  \\创建B1网络名称空间

ip netns show    \\查看创建的玩两个名称空间

ovs-vsctl add-br br1  \\使用openvswitch创建br1桥设备

ovs-vsctl add-br br2  \\使用openvswitch创建br2桥设备

ovs-vsctl add-br br3  \\使用openvswitch创建br3桥设备

ovs-vsctl show   \\查看创建的桥设备

ip link add name a1.1 type veth peer name a1.2 \\创建一对端口,用于连接A1网络名称空间跟br2桥设备

ip link set a1.1 up  \\激活a1.1端口

ip link set a1.2 up   \\激活a1.2端口

ip link add name b1.1 type veth peer name b1.2 \\创建一对端口,用于连接B1网络名称空间与br3桥设备

ip link set b1.2 up   \\激活b1.2端口

ip link set b1.1 up   \\激活b1.1端口

ip link add name b12.1 type veth peer name b12.2  \\创建一对端口,用于连接br2与br1桥设备

ip link set b12.1 up  \\激活b12.1端口

ip link set b12.2 up   \\激活b12.2端口

ip link add name b13.1 type veth peer name b13.2 \\创建一对端口,用于连接br3与br1桥设备

ip link set b13.1 up  \\激活b13.1端口

ip link set b13.2 up   \\激活b13.2端口

ip link add name b23.1 type veth peer name b23.2 \\创建一对端口,用于连接br2与br3桥设备

ip link set b23.1 up  \\激活b23.1端口

ip link set b23.2 up   \\激活b23.2端口

ovs-vsctl add-port br2 a1.1  \\把a1.1端口加入到br2桥设备上

ip link set a1.2 netns A1  \\把a1.2端口添加到A1网络名称空间,要注意,a1.2添加到网络名称空间后不会在本地显示

ovs-vsctl add-port br3 b1.1  \\把b1.1端口加入到br3桥设备上

ip link set b1.2 netns B1    \\把b1.2端口加入到B1网络名称空间

ovs-vsctl add-port br2 b23.2     \\把b23.2端口加入到br2桥设备上

ovs-vsctl add-port br3 b23.1     \\把b23.1加入到br3桥设备上

ip netns exec A1  ip link set a1.2 up

ip netns exec A1  ip addr add 192.168.10.1/24 dev a1.2

ip netns exec A1 ifconfig \\查看配置的ip地址

ip netns exec B1 ip link set b1.2 up

ip netns exec B1 ip addr add 192.168.10.2/24 dev b1.2

ip netns exec B1 ifconfig    \\查看配置的ip地址

ip netns exec B1  ping 192.168.10.1  \\在B1网络名称空间可以ping通A1网络名称空间

64 bytes from 192.168.10.1: icmp_seq=1 ttl=64 time=2.66 ms

ip netns exec A1  ping 192.168.10.2   \\在A1网络名称空间可以ping通B1网络名称空间

64 bytes from 192.168.10.2: icmp_seq=1 ttl=64 time=1.52 ms

ovs-vsctl add-port br1 b12.2    \\添加b12.2端口到br1桥设备上

ovs-vsctl add-port br1 b13.2     \\添加b13.2端口到br1桥设备上

ovs-vsctl add-port br2 b12.1      \\添加b12.1端口到br2桥设备上

ovs-vsctl add-port br3 b13.1       \\添加b13.1端口到br3桥设备上

ovs-vsctl set Bridge br1 stp_enable=true \\为了防止br1、br2、br3桥设备产生环路,开启stp协议

ovs-vsctl set Bridge br2 stp_enable=true  \\为了防止br1、br2、br3桥设备产生环路,开启stp协议

ovs-vsctl set Bridge br3 stp_enable=true   \\为了防止br1、br2、br3桥设备产生环路,开启stp协议

ovs-vsctl add-port br1 GRE  \\宿主机的br1桥设备上添加一个用于GRE封装的端口

ovs-vsctl  set Interface GRE type=gre  options:remote_ip=192.168.204.132

上面的步骤在node4上做一遍,最后一步的地址改为192.168.204.131

测试两台宿主机之间网络名称空间的连通性

  [[email protected] ~]# ip netns exec B1 ping 192.168.10.10

  64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=3.59 ms

  [[email protected] ~]# ip netns exec A2 ping 192.168.10.1

  64 bytes from 192.168.10.1: icmp_seq=1 ttl=64 time=6.75 ms

在node4宿主机上ping  node3宿主机上的网络名称空间,在node3宿主机上抓包分析

[[email protected] ~]# tcpdump -nn  -i eth1

10:15:38.768203 IP 10.10.10.1 > 10.10.10.2: GREv0, length 56: STP 802.1d, Config, Flags [none], bridge-id 8000.a2:49:24:81:6e:46.8001, length 35

通过以上数据转发,会发现数据是经过GRE转发的

[[email protected] ~]# ip netns exec A1 tcpdump -nn  icmp    -i a1.2

10:18:29.352487 IP 192.168.10.10 > 192.168.10.1: ICMP echo request, id 7211, seq 1, length 64

利用vxlan通道建一个跨多宿主机的虚拟化网络,环境centos6.7 拓扑图如下

步骤与gre的相同但最后一步变成了 ovs-vsctl set Interface vxlan type=vxlan options:remote_ip=192.168.204.131

在node4宿主机上ping  node3宿主机上的网络名称空间,在node3宿主机上抓包分析

[[email protected] ~]# tcpdump -nn -i eth1

10:34:12.799191 IP 10.10.10.1.58588 > 10.10.10.2.4789: UDP, length 60

通过以上数据分析,可以发现vxlan利用udp封装数据报文将两台宿主机之前的虚拟网络打通

时间: 2024-08-08 09:40:27

虚拟化网络之OpenvSwitch的相关文章

Neutron 理解 (1): Neutron 所实现的虚拟化网络 [How Netruon Virtualizes Network]

原文:http://www.cnblogs.com/sammyliu/p/4622563.html 学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GRE/VxLAN 虚拟网络 (4)Neutron OVS OpenFlow 流表 和 L2 Population (5)Neutron DHCP Agent (6)Neutron L3 Agent (7

利用Windows Azure Pack创建虚拟化网络

接上一篇,SCVMM网络虚拟化配置软件定义网络SDN,不太清楚的同学可以先看看.我们利用Windows Server 2012 R2与SCVMM R2进行了网络虚拟化的配置,下面我们要来验证一下网络虚拟化是否生效.那么,最简单的方法就是利用Windows Azure Pack来进行虚拟网络创建.最近太忙了,这篇文章早写好了快两个月. 1.首先,我们登陆的Windows Azure Pack的租户门户,选择自定义创建"虚拟网络".   2.下面填入虚拟网络的名称,选择IPV4地址协议,配

[每日一问]虚拟化网络设计中为什么建议采用链路聚合

虚拟化网络设计中为什么建议采用链路聚合?原因如下: 1. 首先,链路聚合技术可以使用多个物理链路进行通信,不用担心STP: 2. 其次,当某物理链路发生故障会不影响虚拟机网络的正常运行,提供了链路冗余和计算机冗余

虚拟化网络必须开放

虚拟化网络越来越复杂,使得用户无法依赖一家厂商提供的端到端解决方案来满足对服务敏捷性和可扩展性的要求.博科Vyatta提供了一个开放式平台,让云和电信运营商重新获得对网络的控制权. 在迈向软件网络的征程中,博科(Brocade)公司又迎来了一个新的具有转折意义的时刻--博科Vyatta平台的发布.博科Vyatta平台是一个面向云服务商和电信运营商的开放式.模块化的软件网络平台,它的发布一方面明确了博科软件网络以"开放"为特征;另一方面也表明,建立一个开放的软件网络平台将是引领博科公司未

Docker第四回(容器虚拟化网络)

一.docker网络简介 网络作为docker容器化实现的6个名称空间的其中之一,是必不可少的.其在Linux内核2.6时已经被加载进内核支持了.网络名称空间主要用于实现网络设备和协议栈的隔离,列如:一个docker host有4块网卡,在创建容器的时候,将其中一块网卡分配给该名称空间,那么其他名称空间是看不到这块网卡的.且:一个设备只能属于一个名称空间.因为一个名称空间绑定一个物理网卡和外界通信,且一个物理网卡不能分配多个名称空间,这使得我们只能创建4个名称空间.如果要创建的名称空间多于我们的

虚拟化网络进阶管理

软件模拟网络设备 交换机 路由器 防火墙 负载均衡器 ... Linux内核加载8021q协议 #虚拟交换机支持vlan功能 modinfo 8021q modeprobe 8021q vlan配置工具 安装 1 yum info vconfig 2 yum install -y vconfig 使用 1 vconfig --help Use Linux Network Namespace 网络命名空间隔离,使得各个命名空间的网络,互相不可见 一个网络名称空间可以看做是一个路由器,既分割网络,也

数据中心服务器托管VMware虚拟化网络配置最佳实践

通常把自己购买的服务器托管到一个具有双线网络接入的机房是一个不错的选择,每年的成本在1万元左右. 虚拟化能通过增加硬件的利用率来降低运行和维护物理服务器的成本.可以减少运行服务器工作负载所需的硬件数量.虚拟化的核心优势在于通过"一虚多"的方法提高灵活性和可扩展性,简化IT管理降低资金和运维等方面的成本.单台物理服务器上可以运行多个虚拟机形式的操作系统,并且每个操作系统都可以访问底层服务器的计算.网络.存储等资源.关于虚拟化的优势可以浏览VMware或Microsoft官方网站或者Goo

VMware 虚拟化网络学习(一)

网络组件包括: 1.vSphere标准交换机,负责管理虚拟机的流量.必须在各个ESXI主机单独管理. 2.vSphere分布式交换机,负责管理虚拟机与VMkernel的流量,由一个数据中心的ESXI主机和集群来分享和管理.分布式交换机缩写为VDS. 3.端口/端口组,是vSwintch的一个逻辑对象,一个虚拟交换机可以包含一个VMkernel端口或一个虚拟机端口组.分布式交换机为分布式端口组. 4.VMkernel端口,是一种特殊的虚拟交换机端口类型,配置有一个IP地址,用于支持虚拟机管理程序管

SD-WAN与SDN:揭开差异 如何选择合适的虚拟化网络

随着物联网.工业互联网等新兴业务场景的不断涌现,网络正面临着开放.融合.智能化.个性化等需求.在SDN进入稳定爬升期,还未完全落地之时,以SD-WAN(软件定义的广域网)为代表的新一代网络创新技术正款款而来.SD-WAN逐渐成为热点. 那么如何定义SD-WAN,它和SDN有什么关系呢? SD-WAN和SDN都有一个共同的遗产,从控制平面和数据平面的分离开始.两者都设计为在商用x86硬件上运行,两者都可以虚拟化,并且都支持其他虚拟网络功能(VNF)的集成,如安全性或WAN加速.但是,绝对不是一回事