关于VLAN Tag,PVID的问题

2023-05-16

VLAN(Virtual Local Network,虚拟局域网),对于VLAN的划分方法有很多种:基于端口划分,基于MAC地址划分,基于网络协议划分,基于IP地址划分,基于策略划分等等。但是就上述而言,对VLAN的划分就是以交换机为主语的,也就是说,主机并不感知VLAN的存在,那么关于报文中VLAN的标签到底是怎么回事呢?

首先,我们先来说一下交换机的端口。

交换机的端口以三种分类:

  1. Access接口:一般用于接用户计算机,一个Access端口只能属于一个VLAN。
  2. Trunk接口:一般用于交换机之间的互联的端口,trunk口可以属于多个VLAN,可以接受和发送多个VLAN的报文。
  3. Hybrid接口:可以用于交换机之间的连接,也可以用于接用户的计算机,Hybrid端口可以属于多个VLAN,可以接受和发送多个VLAN的报文。

那么对于可以接受和发送多个VLAN的端口来说,就有一个缺省VLAN的概念,什么是缺省VLAN呢?举个例子,当收到一个不知道属于哪个VLAN的报文的时候,Trunk端口或者Hybrid端口怎么对其进行处理呢?就将其设置为缺省VLAN。对于缺省VLAN也有叫做PVID(Port VID),或者Native Vlan的叫法。缺省VLAN可能是不存在的VLAN。

  1. Access端口只属于一个VLAN,则缺省VLAN就是他所在的VLAN,不用设置。
  2. Hybrid端口和Trunk口都属于多个VLAN,所以需要设置缺省VLAN ID。在没有设置的情况下,这个缺省VLAN ID均为1。

所谓VLAN tag就是在以太网帧格式的源MAC和目的IP之间添加了4字节,这四个字节中除了控制位以外,就是12bit的VLAN ID号码。这个报文格式由于是IEEE 802.1Q协议提出的,所以有时候也称为802.1Q帧格式。

端口对于报文的处理,其处理方面分为两种:接受报文、发送报文:

  1. Access端口:
    1. 当收到不带VLAN Tag的报文,则加上端口的PVID;当收到带VLAN Tag的报文,则交换机不做处理,直接丢弃。
    2. 当Access端口向主机发送帧时,会剥离802.1Q的 tag头部,发送普通的以太网帧给主机。
  2. Trunk端口:
    1. 当收到不带VLAN Tag的报文,则打上端口的PVID;如果该帧包含802.1Q的报文头部,查看是否允许进入(缺省VID,所包含VID),如果可以则接收,否则丢弃。
    2. 当发送帧时,比较该帧的VLAN ID与端口PVID,当不同时,且是允许通过的VLAN ID,则保留Tag,直接透传;当相同时,则去掉Tag,发送报文。
  3. Hybrid端口:
    1. 当接收到不带VLAN Tag的报文时,打上端口的PVID;当该帧包含802.1Q报文头部,查看是否允许进入(PVID,所包含VID),如果可以则接收,否则丢弃。
    2. 当发送报文时,当VLAN ID是该端口允许通过的VLAN ID,则发送该报文,并可以通过命令进行配置端口在发送该VLAN报文时候是否携带Tag。
  4. 总的来说,在接受数据的时候,PVID的作用是为不带VLAN Tag的untag报文添加一个PVID 的tag;在发送报文的时候,将带有PVID Tag的报文的VLAN Tag剥离,从而发送一个不带VLAN Tag的untag报文。这也就是主机与交换机相连的时候采用Access端口,主机从属VLAN但是主机不感知VLAN的原因。
  5. Trunk端口和Hybrid端口的最大区别是,Trunk端口在发送报文时候,只有当VLAN Tag=PVID的时候才会发送出不带Tag的报文;而Hybrid端口可以配置发送多个VLAN的报文,且不带VLAN Tag。
  6. 值得一提的是,同一个交换机上Trunk和Hybrid是不允许并存的。对于Hybrid的妙用如下:

    可以看到B与D的通信过程是这样的:

    1. 当D向B发送数据,到了端口2,加上VID=20的标签。交换机发现端口1允许通过VID=20的报文,然后报文到了端口1,端口1对于VID=20的报文是不加标签的,所以,剥离标签到达B。

    2. 当B向D发送数据时候,B的报文进入端口1,打上VID=10的标签。交换机发现端口2允许VID=10的报文,然后报文到达端口2,端口2对于VID=10的报文是不叫标签的,所以,剥离标签到达D。

    3. 对于这次通信的往返,虽能正常通信,但所走的VLAN是不同的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于VLAN Tag,PVID的问题 的相关文章

  • idea的xml文件Tag name expected

    小编在mapper文件中写sql语句时提示Tag name expected xff0c 找到原因是因为xml不识别 lt 号需要用特定转义符来表示 lt 号 SELECT CASE WHEN SUM integral is null Th
  • SVN中trunk、branch、tag区别

    虽然一直都在用svn作项目管理 xff0c 但是一直都是傻傻的分不清主干 分支 今天小编就来详细介绍一下 xff1a branch 分支 xff1a 版本控制系统的一个特性就是能够把各种修改分离出来放在开发品的一个分割线上 这条线就被称为分
  • git获取最新的tag

    获取git最新的tag标签 git tag n sort 61 taggerdate head n 1 这样获取到的会有合并信息 如果只需要获取到tag名称 xff0c 也可以这样 git tag sort 61 taggerdate he
  • tomcat lombok 报 Invalid byte tag in constant pool: 19

    提供给其他系统使用的jar包造成tomcat启动报错 xff1a Unable to process Jar entry module info class from Jar jar file xxxxxxxx lombok 1 18 4
  • Invalid <param> tag: Cannot load command parameter [robot_description]: command [[‘/opt/ros/noetic/l

    Ubuntu20 04 运行LIO SAM遇到这个错误 xff0c 一直解决不掉 xff0c 好像是xacro文件的问题 xff0c 有大佬帮忙看一下吗 xff1f 求求了
  • tag与branch的区别

    1 什么是tag 什么时候应该创建一个tag 项目的版本管理中 每当一个release版本发布时 需要做一个记录 以便以后需要的时候能查找特定的版本 这时候就用到tag这个功能 Git中的tag指向一次commit的id xff0c 通常用
  • Git tag标签与branch分支 区别

    Git中的分支和标签有点类似 xff0c 都是引用或者说指针 关于Git引用可以参阅Git References一章节 一 相似的地方 xff1a 图示如下 xff1a heads和tags文件夹存储的是具体分支和标签 xff1a tags
  • docker tag 镜像id_6-docker镜像仓库和标签tag

    TOC 一 docker仓库和镜像tag A docker仓库分类 docker镜像是需要放到一个统一的仓库的 以便不同的主机可以下载和使用相同的镜像而不必每次都用dockerfile自己做 docker镜像仓库按如下方式划分 1 公共仓库
  • 标记(Tag),推送(Push),拉取(Pull)你自己的镜像

    目录 开始使用Docker在OS X安装Docker理解镜像 images 和容器 containers 搜索 amp 运行whalesay镜像构建你自己的镜像创建Docker Hub账号 account amp 库 repository
  • git从tag拉分支

    https blog csdn net adoreen article details 106400594
  • 精华:QinQ基础,VLAN双层TAG

    QinQ 是 802 1Q in 802 1Q 的简称 xff0c 是基于 IEEE 802 1Q 技术的一种比较简单的二层 VPN 协议 QinQ简介 IEEE 802 1Q 定义的 VLAN ID 域有 12 个比特 xff0c 最多可
  • VLAN标签

    大家好呀 xff0c 我是请假君 xff0c 今天又来和大家一起学习数通了 xff0c 今天要分享的知识是VLAN标签 我们知道 xff0c 以太网交换机根据MAC地址表来转发数据帧 MAC地址表中包含了端口和端口所连接终端主机MAC地址的
  • GIT 基于TAG拉取分支

    git 基于tag拉branch 获得最新 span class token function git span origin fetch 从tag创建新的分支 span class token function git span bran
  • git: tag 和 branch 的区别

    前言 tag 是什么 tag 翻译过来是标签的意思 xff0c 顾名思义 xff0c 标签是为了标记某种事物 tag 是 Git 版本库的一个快照 xff0c 指向某个 commit 的指针 tag 的好处 tag 的存在 xff0c 是因
  • git tag和branch的区别

    tag 和branch的区别 Git tag是一系列commit的中的一个点 xff0c 只能查看 xff0c 不能移动 branch是一系列串联的commit的线 git tag的用法 我们常常在代码封板时 使用git 创建一个tag 这
  • 要点初见:Stable Diffusion NovelAI模型优质文字Tag汇总与实践【魔咒汇总】

    目前贴吧 B站上有大量Stable Diffusion的模型资源 TAG TAG生成器分享 xff0c 其中居然有不少试图靠信息差把这些开源资源卖钱的 加上目前网上相关的TAG整理贴极少 xff0c 不少TAG也是以图片的形式存在 xff0
  • git 拉取上游仓库tag并同步

    git remote add upstream https github com xxxx xxxx git git fetch upstream tag vX X git tag git push origin refs tags vX
  • 解决Error response from daemon: Get https://registry-1.docker.io/v2/library/hello-world/manifests/问题

    昨天在使用docker 时 将 image 文件从仓库抓取到本地一直报错 经过尝试 终于得以解决 错误信息如下 root archlinux docker image pull library hello world Using defau
  • jsp自定义tag标签

    首先定义use tag 存放目录在 WEB INF tags use tag div p This is a test p br div
  • 自定义分页标签

    原文地址 http blog csdn net wjt1989wjt article details 4720350 步骤一 编写分页标签处理类 分页标签处理类 public class PagerTag extends TagSuppor

随机推荐