0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

以太网基础:为什么要为节点分配VLAN呢?

jf_EksNQtU6 来源:开心果 Need Car 2023-12-12 09:39 次阅读

以太网的开发中,有时需要为节点分配VLAN(Virtual Local Area Network,虚拟局域网)。但是,为什么要为节点分配VLAN呢?本文针对这个话题展开讨论。除此之外,文末给出Lwip(Light weight IP)+TC3xx VLAN实现的源码及注意事项。

划分VLAN场景

事物的出现,总有其合理性(即:存在即合理),所以,VLAN也有其出现的原因。先看这样一个工程场景:某个控制器(eg:ECU1)启动时,向交换机(Switch)发送ARP Broadcast,以便于获取目标节点MAC(Media Access Control)地址。由于是广播帧,交换机收到该帧后,转发给所有Port(不包括接收Port),也就是我们常说的泛洪(Flooding),如下所示:

5693423e-9812-11ee-8b88-92fbcf53809c.png

如果网络范围进一步扩大,即:多个Switch连接时,该帧ARP传播的范围会进一步扩大,如下所示:

56a56f04-9812-11ee-8b88-92fbcf53809c.png

节点发送ARP的目的是为了获取目标节点的MAC地址,以便于通信。但是,这样的动作却要把信息传遍整个网络,如此,将增加网络负担。如上,只是讨论ARP广播的例子,实际工程中,类似场景还有很多:SOME/IP中的服务发现、未知单播帧的转发等。

所以,面对这些工程场景,应该如何降低网络带宽负载呢?答:可以通过VLAN技术,分割广播域,将信息的传播限定到一定范围。

VLAN划分原理

(一)VLAN格式

相比没有VLAN的以太网帧,包含VLAN的以太网帧多4 Byte(VLAN Tag),具体位置如下所示:

56aa0cc6-9812-11ee-8b88-92fbcf53809c.png56aa0cc6-9812-11ee-8b88-92fbcf53809c.png

VLAN Tag包含TPID(Tag Protocol Identifier,标签协议标识符)和TCI(Tag Control Information,数据帧控制信息)两个部分,如下所示:

56c4d6f0-9812-11ee-8b88-92fbcf53809c.png

参数解释如下:

TPID:表示数据帧类型,0x8100 表示 IEEE 802.1Q 帧(C-VLAN),0x88A8表示S-VLAN;

PCP:Priority Code Point(3 bits),表示数据帧优先级,数值越大,优先级越高;

DEI:Drop eligible indicator(1 bit),丢弃资格标识符,表示 MAC 地址封装是否符合规范格式;

CFI:Canonical Format Indicator(1 bit),标准格式标识符;

VID:VLAN identifier(12 bits),表示帧所属的VLAN。取值范围:0~4095。

(二)VLAN分割广播域原理

根据项目的实际情况,可以划分不同ECU组,之后,为每组ECU分配一个VID。比如:ECU1、ECU2划分到VID = 0x0A组,ECU2、ECU3划分到VID = 0x0B组,如下所示:

56d8031a-9812-11ee-8b88-92fbcf53809c.png

当某个节点(eg:ECU1)发送ARP Broadcast报文时,该广播帧只能在相同VID(eg:VID=0x0A)的域内传播,非相关的VID组则不受影响,如下所示:

56eba8ac-9812-11ee-8b88-92fbcf53809c.png

如此,即限定了消息传播的范围,同时,也降低了总线带宽的消耗。

VLAN分组方式有多种:基于端口(Port)划分、基于协议(Protocol)划分、基于MAC地址划分、基于IP地址划分等。

Lwip+TC3xx的VLAN实现细节

开源的Lwip虽然是不错的Ethernet学习资料,但是,这并不意味着使用Lwip会一帆风顺。利用Lwip实现VLAN过程中,需要注意以下几点:

(一)netif.c修改

在netif.c的ifx_netif_input()接口中,需要添加ETHTYPE_VLAN,即:接收含有VLAN的以太网帧,修改如下所示:

err_t ifx_netif_input(netif_t *netif)
{
    ......


    switch (htons(ethhdr->type))
    {
    /* IP or ARP packet? */
    case ETHTYPE_IP:
    case ETHTYPE_ARP:
    case ETHTYPE_VLAN:
    ......

(二)发送VLAN设置

IfxGeth_Eth.c中,本文在接口IfxGeth_Eth_configureMacCore()中添加如下代码,设置VID=0x0A,如下所示:

void IfxGeth_Eth_configureMacCore(IfxGeth_Eth *geth, IfxGeth_Eth_MacConfig *macConfig)
{
   ...
    /* Set Send Vlan */
IfxGeth_mac_writeQueueVlanTag(geth->gethSFR,IfxGeth_MtlQueue_0,0x0A);
   ...
}

IfxGeth_Eth_configureMacCore()接口的具体实现如下所示:

boolean IfxGeth_mac_writeQueueVlanTag(Ifx_GETH *gethSFR, IfxGeth_MtlQueue queueId, uint16 vLanTag)
{
    Ifx_GETH_MAC_VLAN_INCL vlan_incl;


    if (gethSFR->MAC_VLAN_INCL.B.BUSY)
    {
        return FALSE;
    }
    /* VLAN Tag Control in Transmit Packets */
    vlan_incl.B.VLC          = 2;


    vlan_incl.B.RDWR         = 1;
    vlan_incl.B.CSVL         = 0;
    vlan_incl.B.VLT          = vLanTag;
    vlan_incl.B.ADDR         = queueId;


    gethSFR->MAC_VLAN_INCL.U = vlan_incl.U;


    // Wait until operation is finished
    while (gethSFR->MAC_VLAN_INCL.B.BUSY)
    {}


    return TRUE;
}

(三)含VLAN通信数据流

包含VLAN(VID = 0x0A)的通信数据流如下所示:

5703c360-9812-11ee-8b88-92fbcf53809c.png








审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 以太网
    +关注

    关注

    40

    文章

    5394

    浏览量

    171285
  • VLAN
    +关注

    关注

    1

    文章

    274

    浏览量

    35589
  • LwIP协议栈
    +关注

    关注

    0

    文章

    19

    浏览量

    7342

原文标题:以太网基础:为什么需要VLAN?

文章出处:【微信号:谈思实验室,微信公众号:谈思实验室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    以太网交换技术讲解

    当前园区网大多使用交换机组网,使用交换机组建的网络管理非常灵活,可以根据同一部门或者具有相同管理要求的需要创建虚拟局域Vlan)。那么园区内的交换机是如何进行数据包交换的?不同部门之间是如何进行隔离的?今天这篇文章,将通过对以太网
    的头像 发表于 12-11 10:30 932次阅读
    <b class='flag-5'>以太网</b>交换技术讲解

    以太网是什么鬼?以太网基础知识详解

    以太网
    电子学习
    发布于 :2023年02月07日 21:05:57

    车载以太网快速入门#车载以太网

    车载以太网
    北汇信息POLELINK
    发布于 :2023年09月01日 17:54:31

    车载以太网基础培训——车载以太网的链路层#车载以太网

    车载以太网
    北汇信息POLELINK
    发布于 :2023年09月19日 16:25:21

    ATM上的以太网服务介绍

    ATM上的以太网服务介绍ATM电路扩展技术使服务提供商可以将多条VLAN映射到一条虚拟电路上,或将多条虚拟电路映射到一条VLAN上。利用这项技术作为一个构件,服务提供商可以在ATM和以太网
    发表于 05-25 12:14

    以太网城域MSTP应用发展趋势

    一个共享传输媒介上提供多点接入方式,因此点对点连接服务并没有充分发挥以太网技术的特点。基于VLAN技术的城域以太网的组网是通过二层以太网交换机完成的,当网络规模扩大时,网络转发时延、V
    发表于 11-13 22:21

    如何在S32DS中设置以太网VLAN ID?

    我想在 S32K324 上设置以太网 VLAN ID,但在LWIP 示例和 S32DS 外设 UI中找不到任何信息。是否有关于如何设置以太网 VLAN ID 的示例或文档?
    发表于 03-20 06:49

    以太网交换机基础

    3.1 培训目标. 123.1.1 传统的共享式以太网. 123.1.2 以太网冲突域 123.1.3 广播 123.1.4 以太网分段 133.1.5 以太网交换机 133.2 虚拟
    发表于 06-09 23:21 19次下载

    以太网与工业以太网的区别

    以太网相较工业以太网有以下四大缺陷,要使以太网符合工艺上的要求,还必须克服这4大缺陷
    发表于 12-12 15:16 3768次阅读

    以太网是什么_以太网怎么连接宽带

    本文首先介绍了以太网的概念,其次介绍了以太网连接宽带的方法,最后阐述了以太网与宽带区别。
    发表于 03-20 10:02 8.6w次阅读
    <b class='flag-5'>以太网</b>是什么_<b class='flag-5'>以太网</b>怎么连接宽带

    以太网的传播速率_以太网的传输介质

    本文首先介绍了以太网的传播速率,其次介绍了千兆以太网的传输速度,最后介绍了以太网的传输介质。
    发表于 03-20 10:12 7266次阅读

    工业以太网和普通以太网区别

    工业以太网和普通以太网的主要区别在哪?
    的头像 发表于 07-29 14:24 1.2w次阅读

    如何快速分辨以太网与千兆以太网

    本文解释并比较了两种类型的以太网:快速以太网与千兆以太网。快速以太网和千兆以太网之间的最大区别在于速度。
    的头像 发表于 05-06 16:35 4434次阅读
    如何快速分辨<b class='flag-5'>以太网</b>与千兆<b class='flag-5'>以太网</b>

    传统以太网是如何工作的?传统以太网和时间敏感网络TSN的区别

    传统以太网是如何工作的?传统以太网和时间敏感网络TSN的区别  传统以太网是一种局域网技术,它在20世纪70年代开始普及,主要用于连接个人电脑和其他设备,提供高速、可靠的数据传输。它
    的头像 发表于 11-17 14:23 1379次阅读

    科普科普以太网的定义、种类以及晶振在以太网上的应用

    科普科普以太网的定义、种类以及晶振在以太网上的应用  以太网是一种用于局域网通信的传输技术,它是一种在计算机网络中常用的传输协议,用于将数据包从一个节点传输到另一个
    的头像 发表于 01-24 16:11 1037次阅读