vlan network 是带 tag 的网络,是实际应用最广泛的网络类型。
 
 下图是 vlan100 网络的示例。
 
1. 三个 instance 通过 TAP 设备连接到名为 brqXXXX 的linux bridge。 
2. 在物理网卡 eth1 上创建了 eth1.100 的 vlan interface,eth1.100 连接到 brqXXXX。
3. instance 通过 eth1.100 发送到 eth1 的数据包就会打上 vlan100 的 tag。
如果再创建一个 network vlan101,eth1 上会相应的创建 vlan interface eth1.101,并且连接的新的 lingux bridge brqYYYY。
 
每个 vlan network 有自己的 bridge,从而也就实现了基于 vlan 的隔离。
 
如下图:
 
这里有一点要 特别提醒: 因为物理网卡 eth1 上面可以走多个 vlan 的数据,那么物理交换机上与 eth1 相连的的 port 要设置成 trunk 模式,而不是 access 模式。
 
 
配置vlan模式
 
首先在 /etc/neutron/plugins/ml2/ml2_conf.ini 中设置 vlan network 相关参数。
tenant_network_types = vlan
指定普通用户创建的网络类型为 vlan。
 
然后指定 vlan 的范围:
上面配置定义了 label 为default的 vlan network,vlan id 的范围是 3001 - 4000。 这个范围是针对普通用户在自己的租户里创建 network 的范围。 因为普通用户创建 network 时并不能指定 vlan id,Neutron 会按顺序自动从这个范围中取值。
对于 admin 则没有 vlan id 的限制,admin 可以创建 id 范围为 1-4094 的 vlan network。
 
接着需要指明 vlan network 与物理网卡的对应关系:
如上所示: 在 [ml2_type_vlan] 中定义了 lable default,[linux_bridge] 中则指明 default 对应的物理网卡为 eth1。
这里 label 的作用与前面 flat network 中的 label 一样,只是一个标识,可以是任何字符串。
配置完成,重启 Neutron 服务后生效。
 
 
在dashboard创建vlan network
其中 Segmentation ID 即 VLAN ID
 
在控制节点上执行 brctl show,查看当前网络结构。
 
Neutron 自动新建了三个设备:
1. vlan100 对应的网桥 brq3fcfdb98-9d。 
2. vlan interface eth1.100。 
3. dhcp 的 tap 设备 tap1180bbe8-06。
 
eth1.100 和 tap1180bbe8-06 已经连接到了 brq3fcfdb98-9d,VLAN 100 的二层网络就绪。
 
此时 vlan100 结构如图所示:
 
 
 
创建虚拟机连接vlan network,测试连通性
 
cirros-vm1 被 schedule 到控制节点,对应的 tap 设备为 tap238437b8-50,并且连接到 bridge。
 
当前 vlan100 的结构如下。
 
 
cirros-vm2 被 schedule 到计算节点,对应的 tap 设备为 tapac94e0e8-2b,并且连接到 bridge。
 
因为计算节点上没有 hdcp 服务,所以没有相应的 tap 设备。 另外,bridge 的名称与控制节点上一致,都是 brq3fcfdb98-9d,表明是同一个 network。
 
 
当前 vlan100 的结构如下:
cirros-vm1(172.16.100.3) 与 cirros-vm2(172.16.100.4) 位于不同节点,通过 vlan100 相连,测试连通性,可以ping通
 
 
 
不同vlan间通信,需要通过三层路由转发才能通信
 
路由服务(Routing)提供跨 subnet 互联互通功能。
例如前面我们搭建了实验环境:
cirros-vm1      172.16.100.3        vlan100 
cirros-vm3      172.16.101.3        vlan101
这两个 instance 要通信必须借助 router。 可以是物理 router 或者虚拟 router。
 

物理 router

使用物理 router,如下图所示:
接入的物理 router 有两个 interface ip: 
172.16.100.1 对应 vlan100 的网关。 
172.16.101.1 对应 vlan101 的网关。
 
当 cirros-vm1 要跟 cirros-vm3 通信时,数据包的流向是这样的: 
1. 因为 cirros-vm1 的默认网关指向 172.16.100.1,cirros-vm1 发送到 cirros-vm3 的数据包首先通过 vlan100 的 interface 进入物理 router。
2. router 发现目的地址 172.16.101.3 与 172.16.101.1 为同一个 vlan,则从 vlan101 的 interface 发出。 
3. 数据包经过 brq1d7040b8-01 最终到达 cirros-vm3。
 

虚拟 router

虚拟 router 的路由机制与物理 router 一样,只是由软件实现。
Neutron 两种方案都支持。
如果要使用虚拟 router,需要启用 L3 agent。
L3 agent 会在控制节点或者网络节点上运行虚拟 router,为 subnet 提供路由服务。

Neutron Vlan Network 学习的更多相关文章

  1. Neutron Vlan Network 原理- 每天5分钟玩转 OpenStack(92)

    前面我们陆续学习了 Neutron local network,flat network 和 DHCP 服务,从本节将开始讨论 vlan network. vlan network 是带 tag 的网 ...

  2. Neutron local network 学习

    local network 的特点是不会与宿主机的任何物理网卡相连,也不关联任何的 VLAN ID.   对于每个 local netwrok,ML2 linux-bridge 会创建一个 bridg ...

  3. Neutron flat network 学习

    flat network 是不带 tag 的网络,要求宿主机的物理网卡直接与 linux bridge 连接,这意味着: 每个 flat network 都会独占一个物理网卡.   在 ML2 配置中 ...

  4. 在 ML2 中配置 OVS vlan network - 每天5分钟玩转 OpenStack(136)

    前面我们已经学习了 OVS 的 local 网络 和 falt 网络,今天开始讨论 vlan 网络. vlan network 是带 tag 的网络. 在 Open vSwitch 实现方式下,不同 ...

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

    学习 Neutron 系列文章: (1)Neutron 所实现的网络虚拟化 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...

  6. 创建第二个 vlan network "vlan101" - 每天5分钟玩转 OpenStack(96)

    前面我们创建了 vlan100,并部署了 instance,今天将继续创建第二个 vlan network "vlan101". subnet IP 地址为 172.16.101. ...

  7. 创建第一个 vlan network "vlan100" - 每天5分钟玩转 OpenStack(94)

    上一节我们在 ML2 配置中 enable 了 vlan network,今天将创建 vlan100 并讨论底层网络变化. 打开菜单 Admin -> Networks,点击 “Create N ...

  8. Network In Network学习笔记

    Network In Network学习笔记 原文地址:http://blog.csdn.net/hjimce/article/details/50458190 作者:hjimce 一.相关理论 本篇 ...

  9. 深度学习(二十六)Network In Network学习笔记

    深度学习(二十六)Network In Network学习笔记 Network In Network学习笔记 原文地址:http://blog.csdn.net/hjimce/article/deta ...

随机推荐

  1. chrome谷歌浏览器开发者工具-网络带宽控制

    有时候我们想在本地测试一下图片预加载loading的加载情况,如下图: 可无奈一般网络带宽都比较好,基本上看不到效果,图片一下子就加载出来了, 可能这个时候有些小伙伴想到的办法是用定时器延迟加载 其实 ...

  2. 6. VIM 系列 - 全局搜索(ctrlsf.vim)

    目录 全局搜索利器 ag.vim 更强大的全局搜索利器 ctrlsf.vim 全局搜索利器 ag.vim 终端上安装ag: sudo apt install silversearcher-ag vim ...

  3. 【Git之旅】1.Git常用命令

    1.创建初始化版本库 git init 2.将文件添加到版本库中 git add index.html (添加到暂存区) git add . 命令让Git把当前目录及目录中的文件都添加到版本库里 gi ...

  4. redis的string类型!!!!

    value的最大存储量为512m,可储存图像数据或json数据等 1.redis的增加操作 127.0.0.1:6379> set name China     --返回ok,说明增加成功,若n ...

  5. 我眼中的 Nginx(二):HTTP/2 dynamic table size update

    张超:又拍云系统开发高级工程师,负责又拍云 CDN 平台相关组件的更新及维护.Github ID: tokers,活跃于 OpenResty 社区和 Nginx 邮件列表等开源社区,专注于服务端技术的 ...

  6. Android中EditText显示明文与密文的两种方式

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 记录输入框显示.隐藏密码的简单布局以及实现方式. 效果图    代码分析 方式一 /**方式一:*/ private void sh ...

  7. java~集合分组groupby的实现

    对于数据聚合来说,分组操作是很常见的,在.net里有lambda和linq,而在java里也有lambda,现在我们来实现对一个集合进行分组. 一 准备工作,有两个类型 @Value class It ...

  8. 使用strace命令跟踪系统调用

    一.是什么strace? strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由 ...

  9. java爬虫系列第四讲-采集"极客时间"专栏文章、视频专辑

    1.概述 极客时间(https://time.geekbang.org/),想必大家都知道的,上面有很多值得大家学习的课程,如下图: 本文主要内容 使用webmagic采集极客时间中某个专栏课程生成h ...

  10. 包、继承以及 LeetCode 27、28题

    1 package.import 和 import static 1.1 Package Java 引入了包(Package)机制,提供了类的多层命名空间,用于解决类的命名冲突.类文件管理问题.Jav ...