写在开篇:
星光不问赶路人,时光不负有心人。
哪怕走得慢,也比站在原地更靠近幸福。
愿每一份努力,都不被辜负。
41岁的CPU,虽然转速不如从前,但胜在稳定。
今晚下雨,伴着窗外的雨声,回到家,我又开始琢磨起这几个问题啦:
1. “交换机”?啥?卖电话的吗?
2. 我们一直用的CAN总线不也挺好的吗?为啥要这玩意?
3. 车上真需要它吗?还是供应商为了多卖些钱包装出来的?
如果你也有这些疑惑,恭喜你,那这篇就是又totally for you!
一、交换机是啥?名字咋来的?(我查了半天)
常听有懂的网络工程师说Switch,听着很洋气,原意是“开关”,它就是今天的主人公交换机,。
1993年这东西刚出来的时候,国内的工程师看着它,觉得它就是个“能切换线路的开关”,于是翻译成了“交换机”。
一句话:人家可不是卖电话的,人家可是给数据指路的“交通警察”——它根据MAC地址,把数据从进来的端口,转送到出去的端口。
一个形象的类比:
你在一栋大楼里,要去某个房间。大楼里有个总机接线员,你告诉他“我要去302”,他看一眼手里的表(俗称的查表法,嘿嘿),告诉你“302在3楼,往左走第三间”。
交换机就是那个接线员。它手里有一张MAC地址表,记录了“哪个MAC地址在哪个端口”。
我当年的疑惑:这不就是个带脑子插线板吗?后来发现,还真不是,它比插线板聪明多了。
二、交换机到底干啥的?(一个类比盘清楚)
在讲交换机之前,得先说说CAN总线,不然你不知道交换机“高明”在哪。
CAN总线的“广播式”通信:
在CAN总线里,所有节点都挂在同一根线上。任何一个节点发消息,所有节点都能收到。
节点A发消息: “我是节点A,我要告诉节点B一件事” 节点B:听到,收了 节点C:听到,发现不是给我的,扔掉 节点D:听到,发现不是给我的,扔掉 ...
问题:每个消息全网广播,所有节点都要“听一耳朵”,不是自己的就扔掉。浪费带宽,浪费CPU。
类比:大喇叭喊话
就像你在村里的大喇叭喊话。你只想跟隔壁老王说句话,结果全村人都听到了,老张、老李、老赵都要停下来听一耳朵:“哦,不是找我的。”然后该干嘛干嘛。效率低,还吵。
以太网交换机的“单播式”通信:
在以太网里,每个节点都只连到交换机,节点之间不直接相连。
摄像头 → 交换机: “我要发给网关(MAC:GW_MAC)” 交换机查表: GW_MAC在端口3 交换机: 只把数据从端口3发出去,其他端口不动
关键点:其他端口根本收不到这个数据,不用浪费CPU去“听一耳朵”。
类比:打电话
就像你给老王打电话,拨他的分机号,只有老王那部电话会响。老张、老李的手机安安静静,该干嘛干嘛。这才是现代化的通信方式。
这就是以太网比CAN“高级”的地方——不是速度快,是“点对点”,不打扰别人。
三、CSMA/CD是啥?车载以太网需要吗?
CSMA/CD,全称Carrier Sense Multiple Access with Collision Detection,中文叫“载波监听多点接入/冲突检测”。(NND,谁起的名字,上大学时都被他唬过,不过搞懂后还是比较爽的)
别看他名字听起来吓人,但原理其实真不复杂:
先听再说:发数据前,先听一下线上有没有人在发。有?等一会儿再发。
边听边说:发的时候,也在听有没有冲突。
冲突就停:如果检测到冲突(两个人同时发),立即停止,等随机时间后重试。
这玩意儿在早期的同轴电缆以太网里是必需品——因为所有设备串在一根线上,跟CAN总线一模一样。
那车载以太网需要CSMA/CD吗?
答案是:不需要。因为车载以太网用了交换机,变成了“全双工”。
全双工:可以同时发送和接收,不会冲突
交换机:每个端口独立,数据只在需要的端口之间传输
所以:CSMA/CD是以太网总线时代的“历史产物”。有了交换机,它就不需要了。
经典类比:
CSMA/CD:像单车道公路上的“会车规则”——看到对面有车,就靠边等
交换机:像立交桥——各走各的道,根本不会碰到对面
四、车载以太网也有广播模式吧?(是的,但和CAN不一样)
你可能会问:以太网不是只有点对点单播吧?也有广播吧?
答案是:对,以太网也有广播。但实现的路径跟CAN不一样。
| 对比 | CAN总线 | 以太网+交换机 |
|---|---|---|
| 广播机制 | 物理层广播(一根线上,所有人物理上都能听到) | 逻辑层广播(交换机主动复制到所有端口) |
| 广播地址 | 没有地址概念,所有消息都是“广播” | 目标MAC =FF:FF:FF:FF:FF:FF(广播地址) |
| 交换机行为 | 不适用 | 看到广播地址,复制到所有端口(除了进来的那个) |
关键区别:
CAN的广播:是物理上的。因为一根线串着所有人,不管你愿不愿意,信号都会到你那儿。
以太网的广播:是逻辑上的。交换机的广播,是它主动把数据复制到每个端口。如果交换机配置了VLAN隔离,广播只在同一VLAN内传播,不会“打扰”其他VLAN。
所以:以太网也有广播,但它是“可控的软广播”——交换机说了算。不是像CAN那样“硬广播”。
五、交换机的核心:MAC地址表(小本本)
交换机手里有一个小本本,叫MAC地址表,记录了“哪个MAC地址在哪个端口”。
| 小本本 | 谁在用 | 记录什么 |
|---|---|---|
| ARP缓存 | 终端设备(摄像头、电脑) | IP ↔ MAC的对应关系 |
| MAC地址表 | 交换机 | MAC ↔ 端口的对应关系 |
(ARP是啥?别急,后面再盘你。先记住“终端设备有一个小本本”就行。)
六、MAC地址表是怎么建立起来的?(这个问题我当年问了三遍)
我就在想:MAC地址表一开始是空的,交换机怎么知道哪个MAC在哪个端口?
答案是:通过“学习”和“泛洪”两个步骤。
第一步:泛洪(Flooding)——不知道就群发
当交换机收到一个数据帧,但MAC地址表里没有目标MAC的记录时,它会:
把数据帧复制到所有其他端口(除了进来的那个)。
这叫泛洪。就像快递员不认识路,就挨家挨户敲门问。
第二步:学习——从源MAC开始积累
交换机从数据帧里提取源MAC地址,记到小本本上:“这个MAC是从这个端口进来的。”
一个完整的例子:
摄像头(MAC:CAM)第一次发数据给网关(MAC:GW)
交换机收到,查表:GW不在表里
交换机泛洪:把数据发给所有其他端口(包括网关)
网关收到数据,回复了一个确认帧
交换机收到网关的回复,看到源MAC=GW,端口=3
交换机学习:在小本本上记下“GW在端口3”
下次摄像头发数据给网关,交换机就知道只发端口3了
关键点:
源MAC用来“学习”(谁在我这儿)
目标MAC用来“查表”(我要发给谁)
不知道目标MAC时,就泛洪(挨家挨户问)
七、交换机的三种转发行为
| 行为 | 什么时候发生 | 怎么做 |
|---|---|---|
| 泛洪 | 目标MAC不在表里,或者是广播地址 | 发给所有其他端口 |
| 转发 | 目标MAC在表里,且不是进来的端口 | 只发给目标端口 |
| 丢弃 | 目标MAC在表里,但就是进来的端口 | 不发(因为对方就是自己) |
八、交换机和VLAN啥关系?(上一讲的坑填上了)
上一堂笔记我说了VLAN。你可能会问:VLAN是在交换机上实现的吗?
答案是:对,VLAN是交换机的一个“技能包”。
没有VLAN的交换机,像个“大通铺”——所有设备住在一起,谁都能跟谁聊天。
有了VLAN,交换机可以把端口分组:端口1-3属于VLAN 100,端口4-6属于VLAN 200。
VLAN 100里的设备,只能跟VLAN 100里的设备聊天
VLAN 200里的设备,只能跟VLAN 200里的设备聊天
两个VLAN之间是隔离的,除非配置路由
而且:广播也只在本VLAN内泛洪,不会“打扰”其他VLAN。
一个完整的车载例子:
假设你有个8端口的交换机:
| 端口 | 连接的设备 | VLAN | 说明 |
|---|---|---|---|
| 1 | 前视摄像头 | 100 | ADAS数据 |
| 2 | 毫米波雷达 | 100 | ADAS数据 |
| 3 | 域控制器 | 100 | ADAS处理 |
| 4 | 中控屏 | 200 | 娱乐数据 |
| 5 | 后排娱乐 | 200 | 娱乐数据 |
| 6 | 音响 | 200 | 娱乐数据 |
| 7 | 诊断口 | 300 | 诊断数据 |
| 8 | T-Box | 300 | 远程通信 |
摄像头发给域控制器的数据,只在端口1-3之间跑,不会跑到端口4-6去“打扰”娱乐系统。
这不就是“各走各的道”吗?对,这就是VLAN的精髓。
九、车载交换机长啥样?(我找了几个真实的例子)
1. NXP S32J系列
恩智浦的S32J系列是专门为车载设计的以太网交换机,用于软件定义汽车(SDV)的骨干网络。它支持TSN(时间敏感网络),可以同时处理ADAS摄像头数据、娱乐数据、诊断数据,互不干扰。
2. 裕太微 YT99系列
国内厂商裕太微的YT99系列车载交换机,支持8或11个端口,集成了TSN协议栈,能实现微秒级延迟。用于ADAS、座舱、中央网关等场景。
3. Marvell 88Q5050/88Q5072
Marvell的经典车载交换机芯片,支持VLAN划分、流量优先级管理。很多量产车上都在用。
我当年的感慨:原来车上真的有交换机,而且比家里的还高级——要抗振、耐高温、支持TSN。车规级,三个字,价格翻倍。
十、CAN vs 以太网+交换机:一张表说清楚
| 对比项 | CAN总线 | 以太网 + 交换机 |
|---|---|---|
| 拓扑结构 | 总线型(一根线串所有) | 星型(每个设备连交换机) |
| 通信方式 | 广播(所有人都能收到) | 单播为主(只有目标能收到),广播为辅 |
| 冲突处理 | CSMA/CD(冲突了就等) | 无冲突(全双工+交换机隔离) |
| 带宽 | 最大1Mbps(CAN FD 8Mbps) | 100Mbps / 1000Mbps / 更高 |
| 带宽利用率 | 低(广播浪费) | 高(点对点) |
| 网络管理 | 简单(不用配置) | 复杂(需要配置VLAN等) |
| 成本 | 低 | 高(交换机+PHY+布线) |
一句话:CAN便宜简单,但慢、吵。以太网+交换机快、安静,但贵、复杂。
十一、我替你踩过的坑(从我身上过)
最大的坑:以前我以为“交换机就是高级版的集线器”。后来才知道,集线器是“傻转发”,进来什么出去什么;交换机是“智能转发”,只发给该发的人。
第二个坑:以前我以为“交换机在车上很少用”。后来才知道,现在的智能汽车里,交换机是核心部件。ADAS、座舱、中央网关,都靠它。
第三个坑:以前我以为“VLAN是交换机的一个附加功能,可有可无”。后来才知道,没有VLAN,车上不同功能域的数据混在一起,摄像头数据可能会被娱乐数据“挤卡”,那可是要出事的。
第四个坑:以前我以为“MAC地址表是配置出来的”。后来才知道,是交换机自己“学”出来的。通过学习源MAC和泛洪,小本本慢慢就满了。
想通的那一瞬间:是当我理解了以太网和CAN的本质区别——CAN是“大喇叭喊话”,以太网是“打电话”。交换机就是那个“电话交换台”。而MAC地址表,就是交换机的“通讯录”,自己慢慢攒起来的。
十二、下步目标
交换机算是大致搞清楚了,说是完全理解,感觉还是差点意思,不过先学到这吧。
下期预告:想想再说(欠的账太多了,都不敢瞎写了,不然又怕自己打自己脸,哎)。
十三、写在最后
这次最大的收获,是终于搞清楚了交换机是啥、为啥以太网离不开它、MAC地址表怎么来的、车载里怎么用。
交换机就是以太网的“交通枢纽”,根据MAC地址决定数据往哪走。MAC地址表是它自己“学”出来的小本本。VLAN是它的“技能包”,能把一个物理交换机切成多个虚拟小网络。
星光不问赶路人,时光不负有心人。慢慢学,总能搞明白。
今晚的雨,是被我的学习精神感动的眼泪吗?(又自恋了)
写好啦,886。