一 VLAN基础
1 VLAN 的含义
LAN 表示 Local Area Network,本地局域网,通常使用 Hub 和 Switch 来连接LAN 中的计算机。一般来说,当你将两台计算机连入同一个 Hub 或者 Switch 时,它们就在同一个 LAN 中。同样地,你连接两个 Switch 的话,它们也在一个 LAN 中。一个 LAN 表示一个广播域,它的意思是,LAN 中的所有成员都会收到 LAN 中一个成员发出的广播包。可见,LAN 的边界在路由器或者类似的3层设备。
VLAN 表示 Virutal LAN。一个带有 VLAN 功能的switch 能够同时处于多个 LAN 中。最简单地说,VLAN 是一种将一个交换机分成多个交换机的一种方法。比方说,你有两组机器,group A 和 B,你想配置成组 A 中的机器可以相互访问,B 中的机器也可以相互访问,但是A组中的机器不能访问B组中的机器。你可以使用两个交换机,两个组分别接到一个交换机。如果你只有一个交换机,你可以使用 VLAN 达到同样的效果。你在交换机上分配配置连接组A和B的机器的端口为 VLAN access ports。这个交换机就会只在同一个 VLAN 的端口之间转发包。
IEEE 802.1Q 标准定义了 VLAN Header 的格式。它在普通以太网帧结构的 SA (src addr)之后加入了 4bytes 的 VLAN Tag/Header 数据,其中包括 12-bits 的 VLAN ID。VLAN ID 最大值为4096,但是有效值范围是 1 - 4094。
带 VLAN 的交换机的端口分为两类:
Access port:这些端口被打上了 VLAN Tag。离开交换机的 Access port 进入计算机的以太帧中没有 VLAN Tag,这意味着连接到 access ports 的机器不会觉察到 VLAN 的存在。离开计算机进入这些端口的数据帧被打上了 VLAN Tag。
Trunk port: 有多个交换机时,组A中的部分机器连接到 switch 1,另一部分机器连接到 switch 2。要使得这些机器能够相互访问,你需要连接两台交换机。 要避免使用一根电缆连接每个 VLAN 的两个端口,我们可以在每个交换机上配置一个 VLAN trunk port。Trunk port 发出和收到的数据包都带有 VLAN header,该 header 表明了该数据包属于那个 VLAN。因此,只需要分别连接两个交换机的一个 trunk port 就可以转发所有的数据包了。通常来讲,只使用 trunk port 连接两个交换机,而不是用来连接机器和交换机,因为机器不想看到它们收到的数据包带有 VLAN Header。
2 VLAN的类型
2.1 基于端口的 VLAN (untagged VLAN - 端口属于一个VLAN,数据帧中没有VLAN tag)
这种模式中,在交换机上创建若干个VLAN,在将若干端口放在每个VLAN 中。每个端口在某一时刻只能属于一个VLAN。一个 VLAN 可以包含所有端口,或者部分端口。每个端口有个PVID (port VLAN identifier)。这种模式下,一个端口上收到的 frame 是 untagged frame,因此它不包含任何有关 VLAN 的信息。VLAN 的关系只能从端口的 PVID 上看出来。交换机在转发 frame 时,只将它转发到相同 PVID 的端口。
如上图所示,连接两个交换机的同一个 VLAN 中的两个计算机需要通信的话,需要在两个交换机之间连两根线:
一根从 Switch A 端口4 到 Switch B 端口 4 (VLAN 1)
一根从 Switch A 端口8 到 Switch B 端口 8 (VLAN 2)
2.2 Tagged VLANs (数据帧中带有 VLAN tag)
这种模式下,frame 的VLAN 关系是它自己携带的信息中保存的,这种信息叫 a tag or tagged header。当交换机收到一个带 VLAN tag 的帧,它只将它转发给具有同样 VID 的端口。一个能够接收或者转发 tagged frame 的端口被称为 a tagged port。所有连接到这种端口的网络设备必须是 802.1Q 协议兼容的。这种设备必须能处理 tagged frame,以及添加 tag 到其转发的 frame。
上图中,两个交换机上的端口8 支持 VLAN 1 和 2, 因此一根线就可以了实现跨交换机的同VLAN 内的计算机互相通信了。
2.3 交换机端口类型
以太网端口有三种链路类型:Access、Hybrid和Trunk。
Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口
Trunk类型的端口可以属于多个VLAN,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口
Hybrid类型的端口可以属于多个VLAN,可以接收和发送多个VLAN的报文,可以用于交换机之间连接,也可以用于连接用户的计算机。Hybrid端口和Trunk端口的不同之处在于Hybrid端口可以允许多个VLAN的报文发送时不打标签,而Trunk端口只允许缺省VLAN的报文发送时不打标签。
二 二层交换机最基本的功能
1 MAC地址学习:当交换机从它的某个端口收到数据帧时,它将端口的 ID 和帧的源 MAC 地址保存到它的内部MAC表中。这样,当将来它收到一个要转发到该 MAC 地址的帧时,它就知道直接从该端口转发出去了。
2 数据帧转发:交换机在将从某个端口收到数据帧,再将其从某个端口转发出去之前,它会做一些逻辑判断:
如果帧的目的 MAC 地址是广播或者多播地址的话,将其从交换机的所有端口(除了传入端口)上转发。
如果帧的目的MAC地址在它的内部MAC表中能找到对应的输出端口的话(MAC 地址学习过程中保存的),将其从该端口上转发出去。
对其它情况,将其从交换机的所有端口(除了传入端口)上转发。
3 加 VLAN 标签/去 VLAN 标签
帧接收:从 trunk port 上收到的数据帧必须是加了标签的。从 access port 上收到的数据帧必须是没有加标签的,否则该帧将会被抛弃。
帧处理:根据上述转发流程决定其发出的端口。
帧发出:从 trunk port 发出的帧是加了标签的。从 access port 上发出的帧必须是没加标签的。
3.1 PC A 发一个帧到交换机的 1 端口,其目的MAC地址为 PC B 的 MAC。
3.2 交换机比较其目的 MAC 地址和它的内部 MAC Table,发现它不存在(此时表为空)。在决定泛洪之前,它把端口 1 和 PC A 的 MAC 地址存进它的 MAC Table。
3.3 交换机将帧拷贝多份,分别从2和3端口发出。
3.4 PC B 收到该帧以后,发现其目的 MAC 地址和他自己的 MAC 地址相同。它发出一个回复帧进入端口3。
3.5 交换机将 PC B 的 MAC地址和端口3 存在它的 MAC 表中。
3.6 因为该帧的目的地址为PC A 的 MAC 地址它已经在 MAC 表中,交换机直接将它转发到端口1,达到PC A。
配置了 VLAN 的交换机的该机制类似,只不过:
(1)MAC 表格中每一行有不同的 VLAN ID。做比较的时候,拿传入帧的目的 MAC 地址和 VLAN ID 和此表中的行数据相比较。如果都相同,则选择其 Ports 作为转发出口端口。
(2)如果没有吻合的表项,则将此帧从所有有同样 VLAN ID 的 Access ports 和 Trunk ports 转发出去。
三 Neutron 虚拟网络
1 一个计算节点上的网络实例
它反映的网络配置如下:
(1) Neutron 使用 Open vSiwtch。
(2) 一台物理服务器,网卡 eth1 接入物理交换机,预先配置了网桥 br-eth1。
(3) 创建了两个 neutron VLAN network,分别使用 VLAN ID 101 和 102。
(4) 该服务器上运行三个虚机,虚机1 和 2 分别有一个网卡接入 network 1;虚机2 和 3 分别有一个网卡接入 network 2.
Neutron 在该计算节点上做的事情:
(1) 创建了 OVS Integration bridge br-int。它的四个 Access 端口中,两个打上了内部 Tag 1,连接接入 network 1 的两个网卡;另两个端口的 VLAN Tag 为 2。
(2) 创建了一对 patch port,连接 br-int 和 br-eth1。
(3) 设置 br-int 中的 flow rules。对从 access ports 进入的数据帧,加上相应的 VLAN Tag,转发到 patch port;从 patch port 进入的数据帧,将 VLAN ID 101 修改为 1, 102 修改为 2,再转发到相应的 Access ports。
(4) 设置 br-eth1 中的 flow rules。从 patch port 进入的数据帧,将内部 VLAN ID 1 修改为 101,内部 VLAN ID 2 修改为 102,再从 eth1 端口发出。
2 连接到同一物理交换机的网络节点的情况
3 网络流向
3.1 不同物理服务器上的虚机,如果 VM1 和 VM2 属于同一个 tenant network 的同一个subnet,那么两者的通信直接经过 物理交换机 进行,不需要做到网络节点。
3.2 相同物理服务器上的虚机,如果 VM1 和 VM2 属于同一个 tenant network 的同一个subnet,那么两者的通信直接经过 br-int 进行。
3.3 对其他虚机之间数据交换情形,都算作跨子网的数据流向,都需要经过网络节点中的 Router 进行 IP 包的路由。(也可以直接使用连接物理交换机的物理路由器)。
四 参考

https://www.cnblogs.com/sammyliu/p/4626419.html

Open vSwitch + VLAN 组网相关推荐

  1. Neutron 理解 (2): 使用 Open vSwitch + VLAN 组网 [Neutron Open vSwitch + VLAN Virtual Network]

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

  2. 维盟无线ap服务器地址,维盟无线AP划分不同SSID与VLAN组网设置教程

    随着BYOD兴起,企业移动办公迎来热潮,越来越多的中小企业开始部署企业级无线Wi-Fi.除了用于员工日常办公外,前来参观交流.进行商务洽谈的外部访客对无线网络也有使用需求. 为了保证企业的网络信息安全 ...

  3. Open vSwitch VLAN相关字段详解(dl_vlan、dl_vlan_pcp、vlan_vid、vlan_pcp、vlan_tci)

    文章目录 字段概览 字段详解 vlan_tci vlan_vid vlan_pcp dl_vlan/dl_vlan_pcp 字段概览 字段名 长度 格式 Masking 前置项 访问权限 OpenFl ...

  4. openstack之neutron linuxbridge + vlan组网

    linuxbridge是和linuxbridge plugin匹配的core agent,主要实现L2层的功能和security group的功能.security group的功能逐渐会被neutr ...

  5. Neutron 理解 (3): Open vSwitch + GRE/VxLAN 组网

    Neutron 理解 (1): Neutron 所实现的虚拟化网络 Neutron 理解 (2): 使用 Open vSwitch + VLAN 组网 目前,OpenStack Neutron 支持使 ...

  6. Open vSwitch概述

    转自https://blog.csdn.net/lizheng2300/article/details/54582310 Open vSwitch概述 Open vSwitch(下面简称OVS)是一个 ...

  7. Neutron 理解 (6): 如何实现虚拟三层网络

    Neutron 理解 (1): Neutron 所实现的虚拟化网络 Neutron 理解 (2): 使用 Open vSwitch + VLAN 组网 Neutron 理解 (3): Open vSw ...

  8. Neutron 理解(5):Neutron 是如何向 Nova 虚机分配固定IP地址的

    Neutron 理解 (1): Neutron 所实现的虚拟化网络 Neutron 理解 (2): 使用 Open vSwitch + VLAN 组网 Neutron 理解 (3): Open vSw ...

  9. [华为 HCNA ] VLAN的介绍和划分

    0x0 VLAN的介绍 1.什么是VLAN? ①VLAN是一种在交换机上划分逻辑网段的二层技术.VLAN(Virtual LAN),翻译成中文是"虚拟局域网".LAN可以是由少数几 ...

最新文章

  1. SpringMVC中数据库链接配置
  2. 深入了解父类引用指向子类
  3. maven缺少jar包问题
  4. c语言数位重排为最大数,18.12.09-C语言练习:黑洞数 / Kaprekar问题(示例代码)
  5. 局域网限速软件_2号破解app重器推荐一款强大的快捷软件
  6. 设计撑百万并发的数据库架构
  7. [剑指offer][JAVA]面试题第[12]题[矩阵的路径][DFS][剪枝]
  8. nginx指定配置文件启动_【第1717期】Nginx入门指南
  9. java每天定时任务
  10. 适合传统节日促销首焦设计的PSD分层模板
  11. TFC2017 腾讯Web前端大会参会小结
  12. SVN 代码与文件管理小记
  13. ubuntu清理磁盘空间的几个技巧
  14. RTMP网页视频抓取
  15. tampermonkey(油猴)跨域发送请求
  16. vue build打包后提示:Tip: built files are meant to be served over an HTTP server
  17. Python初学者(零基础学习Python、Python入门)常见问题:书籍推荐、资料、社区
  18. Python爬虫爬取某小说网的教程(含全代码)#大佬勿喷
  19. 关于16路及以上的X86服务器架构
  20. usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]

热门文章

  1. 淘宝小部件:全新的开放卡片技术!
  2. 上来微软这条贼船有阵年头了
  3. 再论互联网公司盖楼那些事-西毒微软
  4. 申宝投资-A股震荡下行
  5. 新年开单必备:12个国家买家谈判风格差异get,外贸人记得转发收藏...
  6. 前端checkbox
  7. IMAX B6充电器使用说明
  8. 微服务(一)微服务理念
  9. stata豪斯曼检验报错
  10. vue附件上传和展示