VLAN 问题引起的思考:vlan 基础及车载使用场景

背景

        无意间,我发现一封内容大致如下的邮件:

xxx、xxx:

如之前沟通,客户目前需求5路VLAN:

现状不管什么条件限制,目前我们只支持4路,但是竞品VLAN数量不是问题。

我们需要充分讨论后向客户解释,由于车型需求和竞品差异,简单回答客户不会轻易放过我们

1.硬件限制的说法很不好解释,因为VLAN实际上就是路牌,软件比重相对多一些。

2.如果改善外部环境,如硬件环境,是否可以多支持几路VLAN,我们可以向客户建议。

        由于刚毕业那会接触过路由器、交换机产品的开发,对VLAN的作用有一点印象,因此看到这封邮件内容时,我有以下几点疑问:

  1. VLAN 的基本原理是在数据包中添加相关标识,进行区分。理论上是纯软的范围,VLAN的数量应该是4095个,为什么MTK 仅支持4路

  2. 座舱中为什么需要VLAN,其应用场景是什么

        趁这个机会,将相关知识整理一下,并咨询了主机厂的朋友,了解VLAN的使用场景。本文仅限我个人的理解,有任何有误或不严谨的地方,非常感谢指出,讨论

VLAN 基础

        首先回顾一下以前交换机上的VLAN基础知识。

什么是VLAN

        VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。VLAN内的主机间可以直接通信,而VLAN间不能直接通信,从而将广播报文限制在一个VLAN内。

技术诞生背景:

        90年代早期以太网普及后,企业网络规模扩大,三层设备(路由器)昂贵,导致大型二层网络出现。当时一个广播域可能覆盖几百台设备,ARP风暴和广播包能占用30%带宽消耗大量的CPU和宽带资源。VLAN 通过逻辑划分广播域,将一个大网络分割成多个小型虚拟广播域,广播流程仅限本VLAN 内传播

VLAN 的原理

        IEEE 802.1Q协议规定,在以太网数据帧的目的MAC地址和源MAC地址字段之后、协议类型字段之前加入4个字节的VLAN标签,用以标识VLAN信息。其帧格式如下:

        

字段解析:

字段

长度

含义

取值

TPID

2Byte

Tag Protocol Identifier(标签协议标识符),表示数据帧类型。

表示帧类型,取值为0x8100时表示IEEE 802.1Q的VLAN数据帧。如果不支持802.1Q的设备收到这样的帧,会将其丢弃。各设备厂商可以自定义该字段的值。

PRI

3bit

Priority,表示数据帧的802.1Q优先级

取值范围为0~7,值越大优先级越高。当网络阻塞时,设备优先发送优先级高的数据帧

CFI

1bit

Canonical Format Indicator(标准格式指示位),表示MAC地址在不同的传输介质中是否以标准格式进行封装,用于兼容以太网和令牌环网

CFI取值为0表示MAC地址以标准格式进行封装,为1表示以非标准格式封装。在以太网中,CFI的值为0

VID

12bit

VLAN ID,表示该数据帧所属VLAN的编号。

VLAN ID取值范围是0~4095。由于0和4095为协议保留取值,所以VLAN ID的有效取值范围是1~4094。因此VLAN 理论最大支持4095个

        由上可知,VLAN 通过在数据帧中添加VLAN标识信息,进行VLAN域划分。交换机是如何对数据帧进行处理的呢?

        在交换机中,将以太网的接口分为三类:Access 接口、Trunk 接口、Hybrid 接口

  • Access接口

        Access接口一般用于和不能识别Tag的用户终端(如用户主机、服务器等)相连,或者不需要区分不同VLAN成员时使用。它只能收发Untagged帧,且只能为Untagged帧添加唯一VLAN的Tag

  • Trunk接口

        Trunk接口一般用于连接交换机、路由器、AP以及可同时收发Tagged帧和Untagged帧的语音终端。它可以允许多个VLAN的帧带Tag通过,但只允许一个VLAN的帧从该类接口上发出时不带Tag(即剥除Tag)

  • Hybrid接口

        Hybrid接口既可以用于连接不能识别Tag的用户终端(如用户主机、服务器等)和网络设备(如Hub),也可以用于连接交换机、路由器以及可同时收发Tagged帧和Untagged帧的语音终端、AP。它可以允许多个VLAN的帧带Tag通过,且允许从该类接口发出的帧根据需要配置某些VLAN的帧带Tag(即不剥除Tag)、某些VLAN的帧不带Tag(即剥除Tag)。

        Hybrid接口和Trunk接口在很多应用场景下可以通用,但在某些应用场景下,必须使用Hybrid接口。比如一个接口连接不同VLAN网段的场景中,因为一个接口需要给多个Untagged报文添加Tag,所以必须使用Hybrid接口。

不同接口对报文的处理方式:

接口类型

对接收不带Tag的报文处理

对接收带Tag的报文处理

发送帧处理过程

Access接口

接收该报文,并打上缺省的VLAN ID

当VLAN ID与缺省VLAN ID相同时,接收该报文。当VLAN ID与缺省VLAN ID不同时,丢弃该报文

先剥离帧的PVID Tag,然后再发送。

Trunk接口

打上缺省的VLAN ID,当缺省VLAN ID在允许通过的VLAN ID列表里时,接收该报文。打上缺省的VLAN ID,当缺省VLAN ID不在允许通过的VLAN ID列表里时,丢弃该报文。

当VLAN ID在接口允许通过的VLAN ID列表里时,接收该报文。当VLAN ID不在接口允许通过的VLAN ID列表里时,丢弃该报文

当VLAN ID与缺省VLAN ID相同,且是该接口允许通过的VLAN ID时,去掉Tag,发送该报文。当VLAN ID与缺省VLAN ID不同,且是该接口允许通过的VLAN ID时,保持原有Tag,发送该报文

Hybrid接口

打上缺省的VLAN ID,当缺省VLAN ID在允许通过的VLAN ID列表里时,接收该报文。打上缺省的VLAN ID,当缺省VLAN ID不在允许通过的VLAN ID列表里时,丢弃该报文。

当VLAN ID在接口允许通过的VLAN ID列表里时,接收该报文。VLAN ID不在接口允许通过的VLAN ID列表里时,丢弃该报文

当VLAN ID是该接口允许通过的VLAN ID时,发送该报文。可以通过命令设置发送时是否携带Tag

举例:

如图所示:

PC1 访问 PC3流程:

  1. 由于PC1 发送的消息不会携带VLAN 标签,因此Access口1收到请求后,会对数据帧添加VLAN 100标签

  2. 由于PC3 在MAC表中,对应Access口3,并且两者VLAN标签相同。因此交换机将数据帧发往Access口3。

  3. Access 口3,对外发送具有VLAN标签的数据帧时,会剥离标签,因此PC3 最终收到的数据帧是不携带VLAN标签的。

PC1 访问PC2流程:

  1. 由于PC1 发送的消息不会携带VLAN 标签,因此Access口收到请求后,会对数据帧添加VLAN 100标签

  2. 虽然PC2 在MAC表中,对应Access口2,但是两者VLAN标签不相同。因此交换机将数据帧丢弃

PC4 访问 PC6流程:

  1. 由于PC4 发送的消息不会携带VLAN 标签,因此Access口4收到请求后,会对数据帧添加VLAN 200标签

  2. 由于PC6 不在交换机1的MAC表中,因此会将数据帧发送到Trunk口1。

  3. 由于Trunk口1具备VLAN100、VLAN200 标签,因此会保留数据帧中的VLAN200标签,发向Trunk口2

  4. Trunk口收到数据帧,其携带的VLAN 200标签,则允许进入。

  5. 由于PC6 在MAC表中,对应Access口6,并且两者VLAN标签相同。因此交换机将数据帧发往Access口6。

  6. Access 口6,对外发送具有VLAN标签的数据帧时,会剥离标签,因此PC6 最终收到的数据帧是不携带VLAN标签的。

VLAN的优点

        VLAN最初是为了解决广播导致局域网拥堵的问题。随着使用的推广,发现VLAN还具备其它的优点,应用于各个场景。

  1. 增强局域网的安全性:不同VLAN内的报文在传输时是相互隔离的,即一个VLAN内的用户不能和其它VLAN内的用户直接通信。

  2. 提高了网络的健壮性:故障被限制在一个VLAN内,本VLAN内的故障不会影响其他VLAN的正常工作。

  3. 灵活构建虚拟工作组:用VLAN可以划分不同的用户到不同的工作组,同一工作组的用户也不必局限于某一固定的物理范围,网络构建和维护更方便灵活。

VLAN 在车载中应用场景

        在车载中,VLAN的使用主要用于保证区域的安全性。咨询了一些主机厂的朋友,VLAN的使用目的主要是为了通过隔离,保证信息安全。(有了解更多场景的朋友,欢迎讨论)其以太网控制网络清单如下:

控制器

MAC地址表

IP地址

对应业务

TGW 网关

02-00-00-00-00-22

192.168.1.22

VLAN 100 (gPTP,时间同步

192.168.2.22

VLAN 200(SOME/IP,服务通信

192.168.3.22

VLAN 300 (UDPNM,网络管理

192.168.4.22

VLAN 400(DoIP,诊断)

192.168.5.22

VLAN 1024(AVTP Camera Video,音视频传输

BDCU 车身域控制器

02-00-00-00-00-12

192.168.1.12

VLAN 100 (gPTP,时间同步

192.168.2.12

VLAN 200(SOME/IP,服务通信

192.168.3.12

VLAN 300 (UDPNM,网络管理

192.168.4.12

VLAN 400(DoIP,诊断)

192.168.5.12

VLAN 1024(AVTP Camera Video,音视频传输

CDCU 座舱域控制器

02-00-00-00-00-32

192.168.1.32

VLAN 100 (gPTP,时间同步

192.168.2.32

VLAN 200(SOME/IP,服务通信

192.168.3.32

VLAN 300 (UDPNM,网络管理

192.168.4.32

VLAN 400(DoIP,诊断)

192.168.5.32

VLAN 1024(AVTP Camera Video,音视频传输

        根据以往经验理解,其车身EE电气架构可能如下(仅供参考):

中央网关一般是通信设备,集成了交换机芯片,比如T-Box+switch。如上图端口设置大致如下:

  • 中央网关

port 1 端口 配置为trunk 类型接口,允许通过VLAN 100、VLAN 200、VLAN 300、 VLAN 400、 VLAN 1024。

port 2 端口 配置为trunk 类型接口,允许通过VLAN 100、VLAN 200、VLAN 300、 VLAN 400、 VLAN 1024。

port 3 端口 配置为Access 类型接口,允许通过 VLAN 400。

  • 车身域控制器

port 4 端口 配置为trunk 类型接口,允许通过VLAN 100、VLAN 200、VLAN 300、 VLAN 400、 VLAN 1024。

  • 座舱域控制器

port 5 端口 配置为trunk 类型接口,允许通过VLAN 100、VLAN 200、VLAN 300、 VLAN 400、 VLAN 1024。

各个域中的服务,如何携带不同的VLAN 对外发出呢?

        由交换机基础知识可知,trunk口发送帧的过程是:当VLAN ID与缺省VLAN ID不同,且是该接口允许通过的VLAN ID时,保持原有Tag,发送该报文。如何保证各服务携带VLAN ID呢?可通过创建虚拟网卡实现该功能。流程如下:

ip link add link eth0 name eth0.100 type vlan id 100
ifconfig eth0.100 up

        在Linux系统中执行上述命令,会创建eth0.100的虚拟网卡,并且绑定在物理网卡eth0中。即:应用服务绑定eth0.100网卡,对外发送的数据帧都是携带VLAN 100,且eth0 会默认放行和接收VLAN 100的数据帧。同理设置其它虚拟网卡。数据流程大致如下:

        以中央网关中的时间同步服务 与 车身域控制器中的时间同步服务通信为例。其数据链路解析:

数据流

数据流向

描述

1

时间同步服务 --> 路由表

根据《以太网网络清单》可知,车身域控制器的时间同步服务的IP 192.168.1.12。那么我们的路由表中,肯定会走向eth0.100(192.168.1.22)。此时的数据帧并不携带VLAN信息

2

  1. 路由表 --> eth0.100

根据路由信息,将数据帧发送eth0.100。由于数据帧不带VLAN信息,因此eth0.100允许通过,并打上VLAN 100标签。eth0.100 类似Access 口

3

eth0.100 --> eth0

此时数据帧携带VLAN 100标签。该标签属于eth0 允许通过的VLAN ID。eth0 保留VLAN ID,并发送。

4

eth0 --> eth3

数据帧携带VLAN 100标签该标签属于eth3 允许通过的VLAN ID。eth3 保留VLAN ID,并接收。

5

eth3 --> eth3.100

通过arp 表进行转发,此时数据帧依然具备VLAN 100标签

6

eth3.100 --> 路由表

eth3.100 将数据帧的VLAN 标签剥离,此时数据帧不带VLAN标签

        通过以上的VLAN划分,实现了严格的功能域隔离,保证了业务之间互不干扰。比如诊断业务被破解,但是不会影响到通信服务。

总结

综上就是本次的思考总结。在回顾刚开始的两个问题:

1. 为什么MTK 仅支持4路?

        答:从VLAN基础中可知,VLAN ID 的最大个数应该是4095个。而MTK 反馈仅支持4路,他是通过硬件实现过滤规则。后续关闭硬件过滤,通过软件过滤,即可支持4095个VLAN ID,但是会对CPU 有一定的消耗。

2. VALN 在车载中的应用场景?

        答:传统的车载网络难以满足日益增长的带宽隔离性安全性复杂性需求,而基于以太网的网络架构结合VLAN技术提供了强大的解决方案。常见的使用场景有:

  1. 功能域隔离与安全域划分。如上示例。

  2. 带宽管理与服务质量保证。

  3. 简化网络拓扑与线束优化

  4. 故障隔离

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢艺华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值