openvswitch中bridge的TAG使用
来源:互联网 发布:音乐网站 知乎 编辑:程序博客网 时间:2024/06/05 18:02
一台宿主机中创建隔离2层网络
本节主要通过使用vlan TAG,模拟4个虚拟机来在一台宿主机上模拟简历两个虚拟的网络环境。本节内容比较少,涉及的内容可能比较陌生。
首先,原理介绍
在这简单介绍下: 一台交换机有很多端口,在本文中使用vlan tag的目的是为了为了网络隔离,如图(在此只介绍我们本文能用到的部分):
- 标记 TAG为1、2的分别属于不同的网络,两个网络之间的包不会互相流通。
具体参照:https://zh.wikipedia.org/wiki/IEEE_802.1Q
环境准备
- 1, 模拟创建4个虚拟机,分别属于用户A的和用户B的。
在此我写了两个简单的脚本,一个用于初始化测试环境,一个用于销毁环境。
# cat init_vms #! /bin/bash -xovs-vsctl add-br br-intip netns add vm_a_1ip netns add vm_a_2ip netns add vm_b_1ip netns add vm_b_2ovs-vsctl add-port br-int vm_a_1 -- set interface vm_a_1 type=internalovs-vsctl add-port br-int vm_a_2 -- set interface vm_a_2 type=internalovs-vsctl add-port br-int vm_b_1 -- set interface vm_b_1 type=internalovs-vsctl add-port br-int vm_b_2 -- set interface vm_b_2 type=internalip link set vm_a_1 netns vm_a_1ip link set vm_a_2 netns vm_a_2ip link set vm_b_1 netns vm_b_1ip link set vm_b_2 netns vm_b_2ip netns exec vm_a_1 ifconfig vm_a_1 upip netns exec vm_a_2 ifconfig vm_a_2 upip netns exec vm_b_1 ifconfig vm_b_1 upip netns exec vm_b_2 ifconfig vm_b_2 up==================================================# cat clear_vms #! /bin/bash -xovs-vsctl del-br br-intip netns del vm_a_1ip netns del vm_a_2ip netns del vm_b_1ip netns del vm_b_2
我们首先运行初始化脚本,创建br-int,创建4个port,创建4个namespace,把4个port分别加载到4个namespace中,然后设置4个网络设备up状态。
在接下来的代码块中 如果标题有vm_a_1 字样,则表示在该namespace中执行的命令代码块,否则表示在宿主机中执行的命令
- 2,为4个网络设备设置网络地址
root@www /home/abaobo/tmp 2015-08-15 12:27:00 # ip netns exec vm_a_1 ip a a 10.0.0.11/24 dev vm_a_1 root@www /home/abaobo/tmp 2015-08-15 12:27:06 # ip netns exec vm_a_2 ip a a 10.0.0.12/24 dev vm_a_2 root@www /home/abaobo/tmp 2015-08-15 12:27:17 # ip netns exec vm_b_1 ip a a 10.0.0.21/24 dev vm_b_1 root@www /home/abaobo/tmp 2015-08-15 12:27:28 # ip netns exec vm_b_2 ip a a 10.0.0.22/24 dev vm_b_2 root@www /home/abaobo/tmp 2015-08-15 12:27:37 #
接下来我们进行测试
- 1, 首先在vm_a_1 中ping其他的IP
root@www /home/abaobo/tmp 2015-08-15 12:29:29 # ip netns exec vm_a_1 ping -c 1 10.0.0.21 PING 10.0.0.21 (10.0.0.21) 56(84) bytes of data.64 bytes from 10.0.0.21: icmp_seq=1 ttl=64 time=0.446 ms--- 10.0.0.21 ping statistics ---1 packets transmitted, 1 received, 0% packet loss, time 0msrtt min/avg/max/mdev = 0.446/0.446/0.446/0.000 msroot@www /home/abaobo/tmp 2015-08-15 12:29:43 # ip netns exec vm_a_1 ping -c 1 10.0.0.22 PING 10.0.0.22 (10.0.0.22) 56(84) bytes of data.64 bytes from 10.0.0.22: icmp_seq=1 ttl=64 time=0.459 ms--- 10.0.0.22 ping statistics ---1 packets transmitted, 1 received, 0% packet loss, time 0msrtt min/avg/max/mdev = 0.459/0.459/0.459/0.000 msroot@www /home/abaobo/tmp 2015-08-15 12:29:46 #
- 2,接下来我们验证TAG在br-int中的作用
root@www /home/abaobo/tmp 2015-08-15 12:33:36 # ovs-vsctl set port vm_a_1 tag=1 -- set port vm_a_2 tag=1 -- set port vm_b_1 tag=2 -- set port vm_b_2 tag=2 root@www /home/abaobo/tmp 2015-08-15 12:33:45 # ovs-vsctl show 69581e33-310b-4971-84f3-2c06c4f8a75c Bridge br-int Port "vm_b_2" tag: 2 Interface "vm_b_2" type: internal Port "vm_a_1" tag: 1 Interface "vm_a_1" type: internal Port "vm_b_1" tag: 2 Interface "vm_b_1" type: internal Port "vm_a_2" tag: 1 Interface "vm_a_2" type: internal Port br-int Interface br-int type: internal ovs_version: "2.4.0"
然后我们进行测试
root@www /home/abaobo/tmp 2015-08-15 12:34:18 # ip netns exec vm_a_1 ping -c 1 10.0.0.12 PING 10.0.0.12 (10.0.0.12) 56(84) bytes of data.64 bytes from 10.0.0.12: icmp_seq=1 ttl=64 time=0.395 ms--- 10.0.0.12 ping statistics ---1 packets transmitted, 1 received, 0% packet loss, time 0msrtt min/avg/max/mdev = 0.395/0.395/0.395/0.000 msroot@www /home/abaobo/tmp 2015-08-15 12:34:23 # ip netns exec vm_a_1 ping -c 1 10.0.0.21 PING 10.0.0.21 (10.0.0.21) 56(84) bytes of data.--- 10.0.0.21 ping statistics ---1 packets transmitted, 0 received, 100% packet loss, time 0ms1 root@www /home/abaobo/tmp 2015-08-15 12:34:40 # ip netns exec vm_a_1 ping -c 1 10.0.0.22 PING 10.0.0.22 (10.0.0.22) 56(84) bytes of data.--- 10.0.0.22 ping statistics ---1 packets transmitted, 0 received, 100% packet loss, time 0ms1 root@www /home/abaobo/tmp 2015-08-15 12:34:54 #
就像如下:
通过TAG分别制造两个虚拟2层网络,其3层的网络地址也可以重复,也就是说左边的两个port都可以使用10.0.0.11这个地址,由于两个port处于不同的2层网络中,二者不可见,就像一个宿舍用了两个路由器,不同的电脑插在不同的路由器上。
总结
在本节我们讲述了如何在一个宿主机中创建互相隔离的2层网络,下一节将会讲述如何跨节点创建互相隔离的2层网络,使用的知识有GRE通道相关和openflow规则相关。
0 0
- openvswitch中bridge的TAG使用
- openvswitch的安装使用
- openvswitch、Bridge、Datapath
- Github 中Tag的使用
- Openvswitch、Bridge、Datapath简单介绍
- openvswitch有port和bridge
- Openvswitch使用
- Idea中使用github的标签(tag)
- OpenvSwitch中端口的抽象层次结构
- 对openvSwitch中不同类型端口的理解
- Neutron使用openvswitch网络通信的基本原理
- bridge模式的使用
- 让KVM支持OpenvSwitch Bridge ( by quqi99 )
- Openvswitch手册(1): 架构,SSL, Manager, Bridge
- Openvswitch手册(1): 架构,SSL, Manager, Bridge
- Tag的使用
- Tag File的使用
- View Tag 的使用
- CWinApp
- hdu 2563 -统计问题 【递推关系】
- KingbaseES数据库入门,注意事项
- cocos2d-x开发日志01——环境搭建和新建项目
- HTML的属性简介
- openvswitch中bridge的TAG使用
- 开灯问题
- 用hibernate和spring整合做小例子对数据库增删改查
- 面向对象程序设计三个基本特征(C++)
- BASEAdapter
- 关于局部变量、静态局部变量、全局变量、静态全局变量
- 每天一道算法题(31)——正数减法
- Android中选取文件后在onActivityResult中将intent中的Uri转换成文件的路径
- 手机吸费设备 哪有声讯电话 增值电话