虚拟化网络之OpenvSwitch

摘要:
OpenvSwitch被称为OVS,官方网站(http://openvswitch.org/)OVS是一种高质量、多层虚拟交换软件,即虚拟交换机。参见OpenvSwitch的相关组件:ovs-vswitchd:实现交换机的守护程序功能,包括支持流交换的Linux内核模块,实现OpenvSwitch的交换功能ovsdb-vswtich:数据库,并为ovs-vsswitchd提供操作配置

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 拓扑图如下

虚拟化网络之OpenvSwitch第1张

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
 
测试两台宿主机之间网络名称空间的连通性
  [root@node3 ~]# 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
  [root@node4 ~]# 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宿主机上抓包分析
[root@node3 ~]# 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转发的
 
[root@node3 ~]# 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 拓扑图如下
虚拟化网络之OpenvSwitch第2张
步骤与gre的相同但最后一步变成了 ovs-vsctl set Interface vxlan type=vxlan options:remote_ip=192.168.204.131
 
在node4宿主机上ping  node3宿主机上的网络名称空间,在node3宿主机上抓包分析
 
[root@node3 ~]# tcpdump -nn -i eth1
10:34:12.799191 IP 10.10.10.1.58588 > 10.10.10.2.4789: UDP, length 60
 
通过以上数据分析,可以发现vxlan利用udp封装数据报文将两台宿主机之前的虚拟网络打通
 
 

免责声明:文章转载自《虚拟化网络之OpenvSwitch》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vscode配置远程免密window.open()打开新窗口教程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用Dockerfile制作镜像

组成部分 基础镜像信息 FROM 维护者信息 MAINTAINER、LABEL 镜像操作指令 RUN、COPY、ADD、EXPOSE、WORKDIR、ONBUILD、USER等 容器启动时执行指令 CMD、ENTRYPOINT 1、MAINTAINER (docker1.7以后的版本已被LABEL替代,但仍兼容此字段) 格式: MAINTAINER &...

实验2:Open vSwitch虚拟交换机实践

一、实验目的 能够对Open vSwitch进行基本操作; 能够通过命令行终端使用OVS命令操作Open vSwitch交换机,管理流表; 能够通过Mininet的Python代码运行OVS命令,控制网络拓扑中的Open vSwitch交换机 二、实验环境 下载虚拟机软件Oracle VisualBox 或 VMware; 在虚拟机中安装Ubuntu...

多进程侦听同一端口

一、端口侦听我们知道,系统中的互联网端口地址是系统级唯一的,在默认情况下,IPV4和IPV6的同一个协议的套接口也不能再同一个端口侦听,而套接口编程的五元组就是<IP,port,peerip,peerport,inet proto>,其中没有进程区分,所以一个系统的套接口对于同一个网络地址来说是唯一的。但是有时候为了实现负载平衡,可能希望有多个...

HDFS之五:Hadoop 拒绝远程 9000 端口访问

最近学习Hadoop 时发现在本机访问 hadoop 9000 端口没有问题,但是远程机器访问 9000端口时不能访问,通过telnet 命令诊断发现发现无法访问端口,经过网上搜索解决方案结合自己实践,总结解决办法一般有以下几点。 首先,利用netstat -tpnl查看的端口开放情况 下图中9000端口只能本机访问 下图中的9000端口可以通过192....

TravelPort官方API解读

TravelPort Ping通使用教程 Unit1 Lesson 1: 标签(空格分隔): 完成第1单元的三个课程后,您可以使用Travelport Universal API来提出服务请求并了解响应。 1、 下载和安装cxf 2、 需要从Travelport的UniversalAPI提供的wsdl和xsd文件生成Java代码 3、 首先要生成的...

端口转发正反向链接 NC 和 SSH下的用法

SSH 端口转发: SSH开启端口转发需要修改 /etc/ssh/sshd_config配置文件,将 GatewayPorts修改为yes -f 后台执行ssh指令 -C 允许压缩数据 -N 不执行远程指令 -R 将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口 -L 本地端口转发 -D 动态端口转发 正向代理 ssh -fCNL *:12...