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. 年轻的工程师如何月入伍万XD

    郑昀:你要跟谁比?关键词:成长,自我管理,自我激励,面试,候选人201806 ——你觉得跟你的 Leader 差在什么地方?——肯定有差距,一个是知识面不如他广,二一个是解决问题不如他老练.——怎么追 ...

  2. javascript ES6 新特性之 扩展运算符 三个点 ...

    对于 ES6 新特性中的 ... 可以简单的理解为下面一句话就可以了: 对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中. 作用类似于 Object.assign() ...

  3. 【Android Studio安装部署系列】六、在模拟器上运行项目

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 在模拟器上运行项目的步骤.不过在实际开发中,一般不采用这种方式,因为影响电脑的运行,所以一般使用真机运行项目. 运行项目 创建模拟器 ...

  4. 并发系列(6)之 ThreadPoolExecutor 详解

    本文将主要介绍我们平时最常用的线程池 ThreadPoolExecutor ,有可能你平时没有直接使用这个类,而是使用 Executors 的工厂方法创建线程池,虽然这样很简单,但是很可能因为这个线程 ...

  5. [Linux] deepin与nginx

    deepin Linux Deepin 是一个基于 DEB 包管理的一个独立操作系统,和那些 Ubuntu(下个大版本是基于debian开发) 的衍生版仅仅只是换主题.调整ISO预置的软件包不同.Li ...

  6. 为Qt视图中的文字添加彩虹渐变效果

    将view中的文本内容用自定义的颜色显示是一种十分常见的需求.今天我们稍微改变些"花样". 本文索引 需求定义 需求分析 代码实现 思考题 需求定义 我们的需求很简单,现在有一些在 ...

  7. C# 插入文本框到PPT幻灯片

    概述 在文本框中我们可以实现的操作有很多,如插入文字.图片.设置字体大小.颜色.文本框背景填充.边框设置等.下面的示例中,将介绍通过C# 在PPT幻灯片中插入幻灯片的方法. 示例中包含了以下要点: 插 ...

  8. keepalived介绍

    keepalived介绍 Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障,类似的工具还有heartbeat.corosync.pacemaker.但是它 ...

  9. git操作常用命令

    一.使用git 1.git是什么? Git是目前世界上最先进的分布式版本控制系统. SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己 ...

  10. CSS重要知识概述——Java Web从入门到精通第2章

    一.CSS简单规则 CSS样式表包含3部分内容:选择符.属性和属性值 其中选择符包括基本的3种选择器: 1.标记选择器,如<a></a>标签等: 2.类别选择器,用class属 ...