路由器(Router)是连接两个或多个网络的硬件设备,在网络间起网关的作用,是读取每一个数据包中的地址然后决定如何传送的专用智能性的网络设备,路由器最主要的功能为实现信息的转送。 VLAN tag是什么意思?tag vlan是trunk口吗 ?类似这样的问题,下面就给大家详细的解答下这个问题,帮助大家快速理解VLAN中tag的含义。 一、Vlan tag(VLAN标签)无论在传统物理交换机、路由器,还是在Openstack Neutron网络、SDN网络中其工作原理仍然不会发生变化,网络上对Vlan tag的解释层出不穷,追本溯源还需研究其代码的实现方式;首先来回顾一下带有Vlan tag的Ethernet Frame封装格式:
其4字节的Tag字段有12bit是Vlan ID位,总共支持的VLAN数为2^12。 温馨提示:可能大部分的新手若是没有系统的去学习交换机相关理论知识,你可能看到这些什么以太网数据帧之类的会感到云里雾里的,所以建议大家先了解相关课程,打好基础。 二、数据转发,Vlan标签如何动作?针对于这样的数据帧在我们传统的交换机,或者Vswitch里面是怎样被转发的呢?下面我们用两个例子来解释,如下图所示:
1和A通信,标签如何“动作”(本例中省略Native vlan的解释) 1).1主机发送普通的数据帧; 2).switch1收到此帧首先需要对其解封装,查看二层帧头部帧目的MAC地址; 3).从CAM表中查找其目的MAC地址对应的VLAN ID与接收该帧的接口对应的VLAN ID 是否相同,如果相同则找到对应的出接口,如果不同则丢弃该帧; 4).找到出接口后,打上对应的VLAN 标签,封装成802.1Q的帧,从Trunk接口发送出去; 5).到达switch2后,解封装查看帧头部的目的MAC地址; 6).从CAM表中查找其目的MAC地址对应的VLAN ID与接收该帧头部的VLAN ID是否匹配,如果匹配,则查找对应的出接口,如果不同则丢弃该帧; 7).找到出接口后,封装成原始的帧,从相应端口转发出去。 注意:vlan tag动作打不打标签不是基于接口的概念,而是基于其查表,cpu计算,背板的功能,我看过太多的文章,也听过很多人在描述交换机转发数据包是说的一句话“Access 口用来去标签,Trunk口用来打标签,”或是“Access口和Trunk口具有打标签和剥离标签的功能”,这样的描述都是错的。如果这样做的话,交换机太傻了,这样的代码实现也是非常低级的。 例如:我们再看一种情况,如下图所示:
主机1和主机2通信,问在交换机内部有打标签和剥离标签的动作吗?1和2 在相同的vlan中,他们之间通信经过交换机如果需要打标签的话,那岂不是加重交换机的计算负载吗,所以像这样的两个主机在相互通信的时候,仅仅是查看CAM表,而不需要执行打标签和剥离标签的动作。 三、Openstack Neutron网络中vlan 的工作原理
1.情景1:vm03 与 vm 04 通信 由于vm03 和 vm 04 分别在两台不同的物理服务器上,所以他们之间通信必须要经过外界物理交换机的帮助; a. vm03 从eth0发送常规ethernet frame经过qbrccc到qvoccc; b. br-int 上的qvoccc接收到该帧之后,开始解封装其数据包,查看ethernet头部的dest mac字段; c. 因为其发送的数据是从qvoccc接收到的,而qvoccc 接口已经被划分到vlan 20中,如下配置:
d. 所以在查看vcam表的时候,需要查看mac/vlan id是否一致,如果一致则将数据封装成802.1Q的frame从int-br-eth1发送到br-eth1上,如果不一致则丢弃; e. 当br-eth1 从 phy-br-eth1 接收到ethernet frame 时,首先就去查看local-vlan 到 global-vlan的一个映射表,配置如下:
发现 local_vlan=20 需要将其转换成vlan 120 ; f. br-eth1 将会查看其vcam表,查找frame destmac address对应的vlan id是否为120 如果是,则将其封装成802.1Q vlan 120的frame 从对应的接口(eth1)转发出去; g. 物理交换机中转发过程此处不再熬述; h. 此frame到达vm04所在的物理机br-eth1上时,将解封装查看帧的dest mac 字段; i. 然后查找vcam表地址对应的vlan tag与此帧的tag是否一致,如果一致则封装之后从相应的接口(phy-br-eth1)转发出去,如果不一致则丢弃(此处与传统交换机并无差异); j. 当vm04所在物理机的br-int的int-br-eth1接收到该帧的时候,首先解封装查看帧的dest mac 字段; k. 继而查看vcam表,寻找该mac地址对应的vlan id 与该帧的vlan tag 是否匹配,如果匹配执行如下操作,如果不匹配丢弃; l. 当匹配时,br-int上将会查看local_global vlan id 映射关系,配置如下:
vlan tag=120 需要转换成 tag 20;注意:转换是查表的一个过程中,而不是具体的一个操作,更不是在进入接口的时候; m. 当查询完成映射表之后将会再一次查找vcam表,寻找转化后的vlan id与该表中 mac地址对应的vlan id是否匹配,如果匹配则封装成常规的frame,从相应端口转发出去,如果不匹配则丢弃。 情景2:vm01和vm02之间通信 和我们传统的交换机是一样的,在这个过程中,br-int是不做任何的打标签,弹标签的动作,就是普通的frame之间转发数据,此处不再熬述。 本文可以帮助您基本地设置和管理您的路由器。 |
温馨提示:喜欢本站的话,请收藏一下本站!