Neutron 理解 (2): 使用 Open vSwitch + VLAN 组网

本文详细介绍了VLAN的基础知识,包括VLAN的含义、类型和端口类型。接着讲解了二层交换机的工作原理,如MAC地址学习和ARP协议。随后,文章重点探讨了如何使用Open vSwitch(OVS)结合VLAN进行网络组网,包括物理VLAN网络配置和Neutron的配置过程。最后,阐述了Neutron虚拟网络的实现,包括端口管理和数据流向。适合OpenStack和网络技术爱好者阅读。
摘要由CSDN通过智能技术生成

1. L2 基础知识

1.1 VLAN 基础知识

1.1.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。

图片描述图片描述

1.1.2 VLAN 的类型

(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)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 内的计算机互相通信了。

在实际的VLAN 配置中的各种情况:

  • 交换机的所有端口,部分是 tagged port,部分被添加到 VLAN 中。
  • 一个 untagged port,不管它是一个基于端口的VLAN 的一个成员还是一个 tagged VLAN 中的一个成员,一个时刻只能在一个 VLAN 中。
  • 一个 tagged port,可以是多个 VLAN 的成员。
  • 一个 port,可以同时是一个 VLAN 的 untagged member,以及不同 VLAN 中的 tagged member。

图片描述

1.1.3 交换机端口类型

以太网端口有三种链路类型:Access、Hybrid和Trunk。

  • Access类型的端口只能属于1个VLAN,一般用于连接计算机的端口
  • Trunk类型的端口可以属于多个VLAN,可以接收和发送多个VLAN的报文,一般用于交换机之间连接的端口
  • Hybrid类型的端口可以属于多个VLAN,可以接收和发送多个VLAN的报文,可以用于交换机之间连接,也可以用于连接用户的计算机。Hybrid端口和Trunk端口的不同之处在于Hybrid端口可以允许多个VLAN的报文发送时不打标签,而Trunk端口只允许缺省VLAN的报文发送时不打标签。

各种类型:

  • Access (接收) Tagged = PVID 不接收 注:部分高端产品可能接收。
  • Access (接收) Tagged =/ PVID 不接收 注:部分高端产品可能接收。
  • Access (接收) Untagged 接收 增加tag=PVID 从PC

  • Access (发送) Tagged = PVID 转发 删除tag
  • Access (发送) Tagged =/ PVID 不转发 不处理
  • Access (发送) Untagged 无此情况

  • Trunk (接收) Tagged = PVID 接收 不修改tag
  • Trunk (接收) Tagged =/ PVID 接收 不修改tag
  • Trunk (接收) Untagged 接收 增加tag=PVID
  • Trunk (发送) Tagged = PVID If Passing then 转发 删除tag
  • Trunk (发送) Tagged =/ PVID If Passing then 转发 不修改tag
  • Trunk (发送) Untagged 无此情况

  • Hybrid (接收) Tagged =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值