0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

以太網(wǎng)基礎(chǔ):為什么要為節(jié)點分配VLAN呢?

jf_EksNQtU6 ? 來源:開心果 Need Car ? 2023-12-12 09:39 ? 次閱讀

以太網(wǎng)的開發(fā)中,有時需要為節(jié)點分配VLAN(Virtual Local Area Network,虛擬局域網(wǎng))。但是,為什么要為節(jié)點分配VLAN呢?本文針對這個話題展開討論。除此之外,文末給出Lwip(Light weight IP)+TC3xx VLAN實現(xiàn)的源碼及注意事項。

劃分VLAN場景

事物的出現(xiàn),總有其合理性(即:存在即合理),所以,VLAN也有其出現(xiàn)的原因。先看這樣一個工程場景:某個控制器(eg:ECU1)啟動時,向交換機(Switch)發(fā)送ARP Broadcast,以便于獲取目標節(jié)點MAC(Media Access Control)地址。由于是廣播幀,交換機收到該幀后,轉(zhuǎn)發(fā)給所有Port(不包括接收Port),也就是我們常說的泛洪(Flooding),如下所示:

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

如果網(wǎng)絡(luò)范圍進一步擴大,即:多個Switch連接時,該幀ARP傳播的范圍會進一步擴大,如下所示:

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

節(jié)點發(fā)送ARP的目的是為了獲取目標節(jié)點的MAC地址,以便于通信。但是,這樣的動作卻要把信息傳遍整個網(wǎng)絡(luò),如此,將增加網(wǎng)絡(luò)負擔。如上,只是討論ARP廣播的例子,實際工程中,類似場景還有很多:SOME/IP中的服務發(fā)現(xiàn)、未知單播幀的轉(zhuǎn)發(fā)等。

所以,面對這些工程場景,應該如何降低網(wǎng)絡(luò)帶寬負載呢?答:可以通過VLAN技術(shù),分割廣播域,將信息的傳播限定到一定范圍。

VLAN劃分原理

(一)VLAN格式

相比沒有VLAN的以太網(wǎng)幀,包含VLAN的以太網(wǎng)幀多4 Byte(VLAN Tag),具體位置如下所示:

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

VLAN Tag包含TPID(Tag Protocol Identifier,標簽協(xié)議標識符)和TCI(Tag Control Information,數(shù)據(jù)幀控制信息)兩個部分,如下所示:

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

參數(shù)解釋如下:

TPID:表示數(shù)據(jù)幀類型,0x8100 表示 IEEE 802.1Q 幀(C-VLAN),0x88A8表示S-VLAN;

PCP:Priority Code Point(3 bits),表示數(shù)據(jù)幀優(yōu)先級,數(shù)值越大,優(yōu)先級越高;

DEI:Drop eligible indicator(1 bit),丟棄資格標識符,表示 MAC 地址封裝是否符合規(guī)范格式;

CFI:Canonical Format Indicator(1 bit),標準格式標識符;

VID:VLAN identifier(12 bits),表示幀所屬的VLAN。取值范圍:0~4095。

(二)VLAN分割廣播域原理

根據(jù)項目的實際情況,可以劃分不同ECU組,之后,為每組ECU分配一個VID。比如:ECU1、ECU2劃分到VID = 0x0A組,ECU2、ECU3劃分到VID = 0x0B組,如下所示:

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

當某個節(jié)點(eg:ECU1)發(fā)送ARP Broadcast報文時,該廣播幀只能在相同VID(eg:VID=0x0A)的域內(nèi)傳播,非相關(guān)的VID組則不受影響,如下所示:

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

如此,即限定了消息傳播的范圍,同時,也降低了總線帶寬的消耗。

VLAN分組方式有多種:基于端口(Port)劃分、基于協(xié)議(Protocol)劃分、基于MAC地址劃分、基于IP地址劃分等。

Lwip+TC3xx的VLAN實現(xiàn)細節(jié)

開源的Lwip雖然是不錯的Ethernet學習資料,但是,這并不意味著使用Lwip會一帆風順。利用Lwip實現(xiàn)VLAN過程中,需要注意以下幾點:

(一)netif.c修改

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

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:
    ......

(二)發(fā)送VLAN設(shè)置

IfxGeth_Eth.c中,本文在接口IfxGeth_Eth_configureMacCore()中添加如下代碼,設(shè)置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()接口的具體實現(xiàn)如下所示:

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通信數(shù)據(jù)流

包含VLAN(VID = 0x0A)的通信數(shù)據(jù)流如下所示:

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








審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 以太網(wǎng)
    +關(guān)注

    關(guān)注

    40

    文章

    5317

    瀏覽量

    170470
  • VLAN
    +關(guān)注

    關(guān)注

    1

    文章

    263

    瀏覽量

    35500
  • LwIP協(xié)議棧
    +關(guān)注

    關(guān)注

    0

    文章

    19

    瀏覽量

    7321

原文標題:以太網(wǎng)基礎(chǔ):為什么需要VLAN?

文章出處:【微信號:談思實驗室,微信公眾號:談思實驗室】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    以太網(wǎng)交換技術(shù)講解

    當前園區(qū)網(wǎng)大多使用交換機組網(wǎng),使用交換機組建的網(wǎng)絡(luò)管理非常靈活,可以根據(jù)同一部門或者具有相同管理要求的需要創(chuàng)建虛擬局域網(wǎng)Vlan)。那么園區(qū)內(nèi)的交換機是如何進行數(shù)據(jù)包交換的?不同部門之間是如何進行隔離的?今天這篇文章,將通過對以太網(wǎng)
    的頭像 發(fā)表于 12-11 10:30 ?807次閱讀
    <b class='flag-5'>以太網(wǎng)</b>交換技術(shù)講解

    以太網(wǎng)是什么鬼?以太網(wǎng)基礎(chǔ)知識詳解

    以太網(wǎng)
    電子學習
    發(fā)布于 :2023年02月07日 21:05:57

    車載以太網(wǎng)快速入門#車載以太網(wǎng)

    車載以太網(wǎng)
    北匯信息POLELINK
    發(fā)布于 :2023年09月01日 17:54:31

    車載以太網(wǎng)基礎(chǔ)培訓——車載以太網(wǎng)的鏈路層#車載以太網(wǎng)

    車載以太網(wǎng)
    北匯信息POLELINK
    發(fā)布于 :2023年09月19日 16:25:21

    ATM上的以太網(wǎng)服務介紹

    ATM上的以太網(wǎng)服務介紹ATM電路擴展技術(shù)使服務提供商可以將多條VLAN映射到一條虛擬電路上,或?qū)⒍鄺l虛擬電路映射到一條VLAN上。利用這項技術(shù)作為一個構(gòu)件,服務提供商可以在ATM和以太網(wǎng)
    發(fā)表于 05-25 12:14

    以太網(wǎng)城域MSTP應用發(fā)展趨勢

    一個共享傳輸媒介上提供多點接入方式,因此點對點連接服務并沒有充分發(fā)揮以太網(wǎng)技術(shù)的特點。基于VLAN技術(shù)的城域以太網(wǎng)的組網(wǎng)是通過二層以太網(wǎng)交換機完成的,當網(wǎng)絡(luò)規(guī)模擴大時,網(wǎng)絡(luò)轉(zhuǎn)發(fā)時延、V
    發(fā)表于 11-13 22:21

    如何在S32DS中設(shè)置以太網(wǎng)VLAN ID?

    我想在 S32K324 上設(shè)置以太網(wǎng) VLAN ID,但在LWIP 示例和 S32DS 外設(shè) UI中找不到任何信息。是否有關(guān)于如何設(shè)置以太網(wǎng) VLAN ID 的示例或文檔?
    發(fā)表于 03-20 06:49

    以太網(wǎng)交換機基礎(chǔ)

    3.1 培訓目標. 123.1.1 傳統(tǒng)的共享式以太網(wǎng). 123.1.2 以太網(wǎng)沖突域 123.1.3 廣播 123.1.4 以太網(wǎng)分段 133.1.5 以太網(wǎng)交換機 133.2 虛擬
    發(fā)表于 06-09 23:21 ?19次下載

    以太網(wǎng)與工業(yè)以太網(wǎng)的區(qū)別

    以太網(wǎng)相較工業(yè)以太網(wǎng)有以下四大缺陷,要使以太網(wǎng)符合工藝上的要求,還必須克服這4大缺陷
    發(fā)表于 12-12 15:16 ?3750次閱讀

    以太網(wǎng)是什么_以太網(wǎng)怎么連接寬帶

    本文首先介紹了以太網(wǎng)的概念,其次介紹了以太網(wǎng)連接寬帶的方法,最后闡述了以太網(wǎng)與寬帶區(qū)別。
    發(fā)表于 03-20 10:02 ?8.5w次閱讀
    <b class='flag-5'>以太網(wǎng)</b>是什么_<b class='flag-5'>以太網(wǎng)</b>怎么連接寬帶

    以太網(wǎng)的傳播速率_以太網(wǎng)的傳輸介質(zhì)

    本文首先介紹了以太網(wǎng)的傳播速率,其次介紹了千兆以太網(wǎng)的傳輸速度,最后介紹了以太網(wǎng)的傳輸介質(zhì)。
    發(fā)表于 03-20 10:12 ?7093次閱讀

    工業(yè)以太網(wǎng)和普通以太網(wǎng)區(qū)別

    工業(yè)以太網(wǎng)和普通以太網(wǎng)的主要區(qū)別在哪?
    的頭像 發(fā)表于 07-29 14:24 ?1.2w次閱讀

    如何快速分辨以太網(wǎng)與千兆以太網(wǎng)

    本文解釋并比較了兩種類型的以太網(wǎng):快速以太網(wǎng)與千兆以太網(wǎng)。快速以太網(wǎng)和千兆以太網(wǎng)之間的最大區(qū)別在于速度。
    的頭像 發(fā)表于 05-06 16:35 ?4270次閱讀
    如何快速分辨<b class='flag-5'>以太網(wǎng)</b>與千兆<b class='flag-5'>以太網(wǎng)</b>

    傳統(tǒng)以太網(wǎng)是如何工作的?傳統(tǒng)以太網(wǎng)和時間敏感網(wǎng)絡(luò)TSN的區(qū)別

    傳統(tǒng)以太網(wǎng)是如何工作的?傳統(tǒng)以太網(wǎng)和時間敏感網(wǎng)絡(luò)TSN的區(qū)別? 傳統(tǒng)以太網(wǎng)是一種局域網(wǎng)技術(shù),它在20世紀70年代開始普及,主要用于連接個人電腦和其他設(shè)備,提供高速、可靠的數(shù)據(jù)傳輸。它
    的頭像 發(fā)表于 11-17 14:23 ?1213次閱讀

    科普科普以太網(wǎng)的定義、種類以及晶振在以太網(wǎng)上的應用

    科普科普以太網(wǎng)的定義、種類以及晶振在以太網(wǎng)上的應用? 以太網(wǎng)是一種用于局域網(wǎng)通信的傳輸技術(shù),它是一種在計算機網(wǎng)絡(luò)中常用的傳輸協(xié)議,用于將數(shù)據(jù)包從一個節(jié)點傳輸?shù)搅硪粋€
    的頭像 發(fā)表于 01-24 16:11 ?866次閱讀