车载以太网交换机入门基本功(2)— 初识VLAN

news2024/11/15 4:35:00

在《交换机入门基本功 -上》提到,交换机在物理层面划分通信区域并产生局域网(Local Area Network, LAN)。局域网具有一个特点:连线拓扑一旦确定,一定时间内不会发生通信区域的变动。在实际通信过程中,广播报文和未知目的地址的单播报文,需要通知到所有设备。通信区域的大小,影响了这个过程中需要通知设备的多少。然而,对设备不加选择的广播会造成广播泛滥。交换机此时并不具备设备选择的功能,通信区域内的所有设备们此时别无选择,只能不断地被“打扰”(“i”设备表示:交换机这个“e人”好可怕,默默哭泣ㄒoㄒ~~)。而且,这种广播泛滥还会占用带宽,造成线路冲突和性能下降等问题,甚至可能造成网络瘫痪。

要解决这个问题,一个简单的想法是:改变局域网内的连线拓扑,这是否可行呢?答案是有用,但不多。理由很简单,如果只需要偶尔改变连线拓扑,每次只改变一两个设备,那就只是几根网线的拔插工作。但如果需要频繁改变通信区域,或者存在多个通信区域、且每次涉及的设备很多呢?千手观音都得说:这活太累了……

图 1  “千手观音”哭泣
聪明的小伙伴可能会想到,如果不改变物理连线,而是限制报文的传播路径,让它们只能在特定范围内进行转发呢?没错,天无绝人之路,既然改变不了物理世界,那就在虚拟世界里大展身手,就是虚拟局域网(Virtual Local Area Network, VLAN)的来源!

VLAN技术在逻辑层面上,将局域网划分成多个区域,每个区域是独立的广播域,区域内可以进行广播通信,区域间不能进行直接通信。这样,无需修改实际的连线拓扑,就可以快速划分和修改广播域,可操作性和应变能力大大增强。设想一下,你一边在小组群讨论小组作业怎么写,一边在宿舍群讨论晚上吃什么,要是两个群的信息可以互相看到,那岂不是乱了套?!这种分群讨论方式的好处还有:如果临时加入了一名小组成员,那么只需要把这个人拉到小组群里就可以继续讨论,并不会影响之前的工作,简直不要太方便!

那么,小伙伴可能又要问了:这么方便的VLAN,究竟是用了什么“魔法”做到的呢?

神秘的魔法就是:VLAN ID ,简称VID,即不同VLAN的编号。通过在报文内增加额外字段,标明报文的VID,说明报文要在哪个VLAN下进行传输。

VLAN报文结构

携带VID的报文结构遵循IEEE的802.1Q协议。IEEE(Institute of Electrical and Electronics Engineers)电气电子工程师学会,在电气及电子工程、计算机及其他技术领域做出卓越贡献,引领新技术发展步伐,制定国际和行业标准。802.1Q协议在MAC(Media Access Control)报文的基础上,定义了VLAN的标准化实现方案。

首先介绍下不带VLAN的MAC报文,有两种格式,分别是IEEE 802.3在1982年颁布的格式,和以太网V2在1983年颁布的格式,二者只在部分字段有所区别,格式如图 2和图 3:

图 2 IEEE 802.3的MAC报文格式
图 3 以太网V2的MAC报文格式
每个字段的含义如下:

  • PRE:Preamble前导码,长度为8个字节(一个字节有8位bit),用于时间同步,通常是连续的“10”值。
  • DA:Destination Address目的地址,长度为6个字节,表明该报文要发送到特定的MAC地址。
  • SA:Source Address源地址,长度为6个字节,表明发送该报文的MAC地址。
  • L/T:Length/Type,表明报文的长度/类型,长度2个字节;L长度字段取值在0-1500之间,T类型字段取值大于1536,1500-1536之间的取值未定义。T类型字段可表明的协议类型有IPv4、IPv6、ARP等。
  • DATA:数据,长度在46-1500字节之间。
  • FCS:Frame Check Sequence帧检测序列,使用CRC(Cyclic Redundancy Check)循环冗余校验算法,对包括DA、SA、L/T、DATA字段在内计算校验值,确保在传输过程中数据没有被篡改。

进一步的,在上述MAC报文格式基础上,增加VLAN的说明字段。具体格式如图 4:

图 4 携带VLAN的MAC报文格式
VLAN的说明字段介于SA和L/T之间,称之为Tag字段。Tag字段长度为4个字节,包括TPID和TCI两个部分:

  • TPID:Tag Protocol Identifier,Tag协议标识位,该字段的位置和不带tag报文的L/T字段重合,用于区分报文是否携带tag;
  • TCI:Tag Control Information,Tag控制信息,包含具体的VLAN控制信息。

TCI字段又可分为三个部分:

  • PCP:Priority Code Point优先级代码位,长度为3bit,表明报文在同个VLAN内的优先转发顺序,需要和交换机队列配合使用,后面会进行介绍。
  • DEI:Drop Eligible Indicator丢弃使能位,长度为1bit,表明在传输过程中,如果数据过多影响传输效率,是否进行丢弃处理。取值为0表示不丢弃,1表示丢弃。
  • VLAN ID:简称VID,长度为12bit,表明报文所属的VLAN,这也是前文提到的任意划分广播域的“魔法”!

除了在报文内增加Tag字段表明报文所属的VLAN,还需要依赖交换机进行实际转发。其中,交换机的端口属性在VLAN转发过程中非常关键。在《交换机入门基本功-3》将介绍交换机端口属性以及具体的转发过程。

经纬恒润作为OPEN联盟会员和AUTOSAR联盟的高级合作伙伴,长期为国内外各大OEM和供应商提供涵盖TCP/IP、SOME/IP、DoIP、AVB、TSN、DDS等技术领域的设计和测试咨询服务,积极研发和探索车载网络前沿技术和工程应用。通过多个项目的实践经验,已建立了高质量、本土化的设计与测试一体化解决方案,为整车网络架构提供可靠支持。

了解更多

请致电 010-64840808转6115或发邮件至market_dept@hirain.com(联系时请说明来自CSDN)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1932406.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MKS流量计软件MFC通讯驱动使用于C和P系列MFC控制USB接口W10系统

MKS流量计软件MFC通讯驱动使用于C和P系列MFC控制USB接口W10系统

国产精品ORM框架-SqlSugar详解 SqlSugar初识 附案例源码 云草桑 专题一

国产精品ORM框架-SqlSugar详解 1、SqlSugar初识 2、开始实操 3、增删改操作 4、进阶功能 5、集成整合 6、脚手架应用 sqlsugar 官网-CSDN博客 国产精品ORM框架-SqlSugar详解 SqlSugar初识 专题二-CSDN博客 1、SqlSugar初识 1.1 基本概念和历史 SqlSugar 是一款 老牌 …

论文复现丨物流中心选址问题:蜘蛛猴算法求解

路径优化系列文章: 1、路径优化历史文章2、物流中心选址问题论文复现丨改进蜘蛛猴算法求解 物流中心选址问题 一般物流中心选址问题是指:在有限的用户(即需求点)中找出一定数量的地点建立配送中心,实现从物流中心到用户之间的配送&#xf…

实验3.mbr读取硬盘

简介 实验:编写 mbr,读取0盘0道2扇区的内容写入内存,然后跳转执行写好的loader.s 代码 boot/mbr.s ; boot/mbr.s ; 功能:读取磁盘,加载loader到内存并跳转到loader%include "boot.inc" SECTION MBR vsta…

【Python 基础】方法

方法 方法和函数是一回事,只是它是调用在一个值上。例如,如果一个列表值存储在 spam 中,你可以在这个列表上调用 index()列表方法(稍后我会解释),就像spam.index(‘hello’)一样。方法部分跟在这个值后面,以一个句点分隔。 每种数据类型都有它自己的一组方法。例如,列…

Qt5.12.2安装教程

文章目录 文章介绍下载连接安装教程 文章介绍 安装Qt5.12.2 下载连接 点击官网下载 安装包下载完毕 安装教程 点开设置,添加临时储存库,复制连接“https://download.qt.io/online/qtsdkrepository/windows_x86/root/qt/” 点击测试&#xff0…

航空航天用电机控制器和车规级电机控制器有什么区别?

航空航天用电机控制器和车规级电机控制器有什么区别? 1.标准与认证要求2.工作环境与温度范围3.可靠性与容错性4.性能要求5.使用寿命与维护6.成本与批量生产 最近遇到这样一个问题,处在航空航天动力系统行业中,也会经常遇到类似的问题&#xf…

Spring框架(三)——AOP--基础部分

1、概括 将与核心业务无关的代码独立的抽取出来,形成一个独立的组件(抽取公共代码的过程),然后以横向交叉的方式应用到业务流程当中的过程被称为AOP优点 代码复用性强 代码易维护 使开发者更专注于业务逻辑 2、AOP的底层原理&…

探索APP开发中的主流版式设计与应用实践

在当今移动互联网高速发展的时代,APP已成为人们日常生活中不可或缺的一部分。无论是社交娱乐、购物支付还是工作学习,各类APP都以其独特的界面设计和用户体验赢得了用户的青睐。而APP开发的版式设计和页面规范,则是决定用户体验好坏的关键因素…

打卡第15天------二叉树

最近公司给我派活儿太多了,要干好多活儿,好多工作任务要处理,我都没时间刷题了。leetcode上的题目通过数量一直停留在原地不动,我真的很着急呀,我现在每天过的都有一种紧迫感,很着急,有一种与时间赛跑的感觉,真的时间过的太快了,没有任何人能够阻挡住时间的年轮向前推…

SongComposer:让大模型像人类一样具有音乐创作力

人工智能咨询培训老师叶梓 转载标明出处 大模型在翻译、复杂语言环境中的推理等任务中展现出了人类级别的能力。这引发了一个问题:这些模型能否在更具情感、抽象性以及需要专业技能的领域中,如音乐创作,展现出人类的创造力呢?香港…

IAR启动流程深度“起底”

目录 1. IAR启动流程概述 2.可以不用__iar_program_start吗 3.小结 大家好,今天的肌肉也不是很快乐。 今天聊聊IAR特有的一些启动流程以及在调试的时候遇到的一些问题。 1. IAR启动流程概述 ARM M内核芯片里的启动代码通常会提供Arm、gcc、iar等编译器的模板&…

OrangePi 学习摘录

文章目录 1. 参考2. 开发板 Orange-Pi-CM4 预览3. 烧录 Linux 镜像到 TF 卡中4. 制作桌面版镜像qemu/chroot 5. Armbian6. 编译 1. 参考 淘宝 香橙派官网 Orange-Pi-3B Orange-Pi-CM4 基于docker构建香橙派zero系统构建环境 2. 开发板 Orange-Pi-CM4 预览 3. 烧录 Linux 镜像…

[iOS]浅析isa指针

[iOS]浅析isa指针 文章目录 [iOS]浅析isa指针isa指针isa的结构isa的初始化注意事项 上一篇留的悬念不止分类的实现 还有isa指针到底是什么 它是怎么工作的 class方法又是怎么运作的 class_data_bits_t bits; // class_rw_t * plus custom rr/alloc flags 这里面的class又是何方…

【C++11】(lambda)

C11中的lambda与线程。 目录 Lambda:仿函数的缺点:Lambda语法:Lambda使用示例:两数相加:两数交换:解决Goods排序问题: Lambda原理: Lambda: 假设我们有一个商品类&…

controller-from表单1

mvc模式是spring boot 开发web应用程序主要使用模式,mvc分别代表model模型,view是视图 ,controller是控制器 controller是对接用户请求数据调用服务层代码,具体怎么操作 浏览器发送http请求给到dispatcherServlet(前…

echarts 实现水利计算模型-雨量,流量,时间分割线

需求背景解决效果ISQQW代码地址index.vue 需求背景 实现水利计算模型-雨量&#xff0c;流量&#xff0c;时间分割线 解决效果 ISQQW代码地址 链接 index.vue <!--/** * author: liuk * date: 2024/06/13 * describe: 水利计算模型图表 */--> <template><di…

快速创建一个AI应用

千帆官网&#xff1a;https://console.bce.baidu.com/qianfan/overview 完成的demo&#xff1a;https://dog-tired.github.io/spage_ai/ 这篇博客主要讲述使用千帆免费的大模型接口简单的html页面创建一个AI问答机器人 平台能力 选择使用千帆的speed系列模型&#xff0c;免费…

SpringBoot整合MybatisPlus(详细版)

MybatisPlus简介 1. MybatisPlus 2. 特点 SpringBoot整合MybatisPlus 1. 新建SpringBoot工程 2. 数据准备 3. 引入依赖 4. 配置文件 5. 用MyBatisX-Generator生成代码 整体结构 User类 UserMapper UserServiceImpl UserController类 测试 查询用户表中全部信息 …

Flutter 状态管理新境界:多Provider并行驱动UI

前言 在上一篇文章中&#xff0c;我们讨论了如何使用 Provider 在 Flutter 中进行状态管理。 本篇文章我们来讨论如何使用多个 Provider。 在 Flutter 中&#xff0c;使用 Provider 管理多个不同的状态时&#xff0c;你可以为每个状态创建一个单独的 ChangeNotifierProvider…