更多文章
華為蔡建永:智能網聯汽車的數字安全和功能安全挑戰與思考
汽車數據合規要點
車載以太網技術發展與測試方法
車載以太網防火墻設計
SOA:整車架構下一代的升級方向
軟件如何「吞噬」汽車?
汽車信息安全 TARA 分析方法實例簡介
汽車FOTA信息安全規范及方法研究
聯合國WP.29車輛網絡安全法規正式發布
滴滴下架,我卻看到數據安全的曙光
從特斯拉被約談到車輛遠程升級(OTA)技術的合規
如何通過CAN破解汽
會員權益:?(點擊可進入)談思實驗室VIP會員

點擊上方藍字談思實驗室
獲取更多汽車網絡安全資訊
從硬件的角度看,以太網接口電路主要由MAC(Media Access Control)控制器和物理層接口PHY(Physical Layer,PHY)兩大部分構成。如下圖所示:

DMA控制器通常屬于CPU的一部分,用虛線放在這里是為了表示DMA控制器可能會參與到網口數據傳輸中。但是,在實際的設計中,以上三部分并不一定獨立分開的。由于,PHY整合了大量模擬硬件,而MAC是典型的全數字器件。考慮到芯片面積及模擬/數字混合架構的原因,通常,將MAC集成進微控制器而將PHY留在片外。更靈活、密度更高的芯片技術已經可以實現MAC和PHY的單芯片整合??煞譃橄铝袔追N類型:



MAC及PHY工作在OSI七層模型的數據鏈路層和物理層。具體如下:

MAC(Media Access Control)即媒體訪問控制子層協議。
該部分有兩個概念:MAC可以是一個硬件控制器 及 MAC通信以協議。該協議位于OSI七層協議中數據鏈路層的下半部分,主要負責控制與連接物理層的物理介質。MAC硬件大約就是下面的樣子了:

在發送數據的時候,MAC協議可以事先判斷是否可以發送數據,如果可以發送將給數據加上一些控制信息,最終將數據以及控制信息以規定的格式發送到物理層。
在接收數據的時候,MAC協議首先判斷輸入的信息并是否發生傳輸錯誤,如果沒有錯誤,則去掉控制信息發送至LLC(邏輯鏈路控制)層。該層協議是以太網MAC由IEEE-802. 3以太網標準定義。
以太網數據鏈路層其實包含MAC(介質訪問控制)子層和LLC(邏輯鏈路控制)子層。一塊以太網卡MAC芯片的作用不但要實現MAC子層和LLC子層的功能,還要提供符合規范的PCI界面以實現和主機的數據交換。
MAC從PCI總線收到IP數據包(或者其他網絡層協議的數據包)后,將之拆分并重新打包成最大1518Byte、最小64Byte的幀。
這個幀里面包括了目標MAC地址、自己的源MAC地址和數據包里面的協議類型(比如IP數據包的類型用80表示,最后還有一個DWORD(4Byte)的CRC碼。
可是目標的MAC地址是哪里來的呢?
這牽扯到一個ARP協議(介乎于網絡層和數據鏈路層的一個協議)。第一次傳送某個目的IP地址的數據的時候,先會發出一個ARP包,其MAC的目標地址是廣播地址,里面說到:“誰是xxx.xxx.xxx.xxx這個IP地址的主人?”因為是廣播包,所有這個局域網的主機都收到了這個ARP請求。收到請求的主機將這個IP地址和自己的相比較,如果不相同就不予理會,如果相同就發出ARP響應包。這個IP地址的主機收到這個ARP請求包后回復的ARP響應里說到:“我是這個IP地址的主人”。這個包里面就包括了他的MAC地址。以后的給這個IP地址的幀的目標MAC地址就被確定了。(其它的協議如IPX/SPX也有相應的協議完成這些操作)。
IP地址和MAC地址之間的關聯關系保存在主機系統里面,叫做ARP表。由驅動程序和操作系統完成。
以太網MAC芯片的一端接計算機PCI總線,另外一端就接到PHY芯片上,它們之間是通過MII接口鏈接的。一個MAC的結構圖如下圖所示:

PHY((Physical Layer,PHY))是IEEE802.3中定義的一個標準模塊,STA(station management entity,管理實體,一般為MAC或CPU)通過SMI(Serial Manage Interface)對PHY的行為、狀態進行管理和控制,而具體管理和控制動作是通過讀寫PHY內部的寄存器實現的。一個PHY的基本結構如下圖:

PHY是物理接口收發器,它實現OSI模型的物理層。
IEEE-802.3標準定義了以太網PHY。包括MII/GMII(介質獨立接口)子層、PCS(物理編碼子層)、PMA(物理介質附加)子層、PMD(物理介質相關)子層、MDI子層。它符合IEEE-802.3k中用于10BaseT(第14條)和100BaseTX(第24條和第25條)的規范。
注:PHY寄存器在IEEE802.3標準的 22.2.4 Management functions 節有介紹,但不涉及所有的寄存器,個別寄存器需要到其它章節中看,當然,文檔里面也提到該在哪里找到哪個寄存器。
MII(Media Independent Interface)即媒體獨立接口,MII 接口是 MAC 與 PHY 連接的標準接口。它是 IEEE-802.3 定義的以太網行業標準。MII 接口提供了 MAC 與 PHY 之間、PHY 與 STA(Station Management)之間的互聯技術,該接口支持 10Mb/s 與 100Mb/s 的數據傳輸速率,數據傳輸的位寬為 4 位。MII 接口如下圖所示:

MII接口主要包括四個部分。一是從MAC層到PHY層的發送數據接口,二是從PHY層到MAC層的接收數據接口,三是從PHY層到MAC層的狀態指示信號,四是MAC層和PHY層之間傳送控制和狀態信息的MDIO接口。

MII 包括一個數據接口,以及一個 MAC 和 PHY 之間的管理接口:
PHY 里面的部分寄存器是 IEEE 定義的,這樣PHY把自己的目前的狀態反映到寄存器里面。
MAC 通過 SMI 總線不斷的讀取PHY 的狀態寄存器以得知目前 PHY 的狀態。例如連接速度、雙工的能力等。
當然也可以通過 SMI 設置 PHY的寄存器達到控制的目的。例如流控的打開關閉、自協商模式還是強制模式等。
不論是物理連接的MII總線和 SMI 總線,還是 PHY 的狀態寄存器和控制寄存器都是由IEEE的規范的。因此不同公司的 MAC 和 PHY 一樣可以協調工作。當然為了配合不同公司的 PHY 的自己特有的一些功能,驅動需要做相應的修改。
MII 支持 10Mbps 和 100Mbps 的操作,一個接口由 14 根線組成,它的支持還是比較靈活的。但是有一個缺點是因為它一個端口用的信號線太多,如果一個 8 端口的交換機要用到 112 根線,16 端口就要用到 224 根線,到 32 端口的話就要用到 448 根線。一般按照這個接口做交換機是不太現實的。所以現代的交換機的制作都會用到其它的一些從 MII 簡化出來的標準,比如 RMII、SMII、GMII等。
簡化媒體獨立接口是標準的以太網接口之一,比 MII 有更少的 I/O 傳輸。RMII 口是用兩根線來傳輸數據的,MII 口是用 4 根線來傳輸數據的,GMII 是用 8 根線來傳輸數據的。MII/RMII 只是一種接口,對于10Mbps 線速,MII 的時鐘速率是 2.5MHz 就可以了,RMII 則需要 5MHz;對于 100Mbps 線速,MII 需要的時鐘速率是 25MHz,RMII 則是 50MHz。
MII/RMII 用于傳輸以太網包,在 MII/RMII 接口是 4/2bit 的,在以太網的PHY里需要做串并轉換,編解碼等才能在雙絞線和光纖上進行傳輸,其幀格式遵循IEEE 802.3(10M)/IEEE 802.3u(100M)/IEEE 802.1q(VLAN)。
以太網幀的格式為:前導符 + 開始位 + 目的 mac 地址 + 源 mac 地址 + 類型/長度 + 數據 + padding(optional) + 32bitCRC。如果有 vlan,則要在類型/長度后面加上 2 個字節的 vlan tag,其中 12bit 來表示vlan id,另外,4bit 表示數據的優先級!
GMII是千兆網的MII接口,這個也有相應的RGMII接口,表示簡化了的GMII接口。GMII 采用 8 位接口數據,工作時鐘125MHz,因此傳輸速率可達 1000Mbps。同時兼容 MII 所規定的10/100 Mbps工作方式。GMII 接口數據結構符合IEEE以太網標準,該接口定義見 IEEE 802.3-2000。

RGMII(Reduced Gigabit Media Independant Interface),精簡GMII接口。相對于GMII相比,RGMII具有如下特征:
信號定義如下:

雖然RGMII信號線減半,但TXC/RXC時鐘仍為125Mhz,為了達到1000Mbit的傳輸速率,TXD/RXD信號線在時鐘上升沿發送接收GMII接口中的TXD[3:0]/RXD[3:0],在時鐘下降沿發送接收TXD[7:4]/RXD[7:4],并且信號TX_CTL反應了TX_EN和TX_ER狀態,即在TXC上升沿發送TX_EN,下降沿發送TX_ER,同樣的道理試用于RX_CTL,下圖為發送接收的時序:

SMI:串行管理接口(Serial Management Interface),通常直接被稱為MDIO接口(Management Data Input/Output Interface)。MDIO最早在IEEE 802.3的第22卷定義,后來在第45卷又定義了增強版本的MDIO,其主要被應用于以太網的MAC和PHY層之間,用于MAC層器件通過讀寫寄存器來實現對PHY層器件的操作與管理。
MDIO主機(即產生MDC時鐘的設備)通常被稱為STA(Station Management Entity),而MDIO從機通常被稱為MMD(MDIO Management Device)。通常STA都是MAC層器件的一部分,而MMD則是PHY層器件的一部分。
MDIO接口包括兩條線,MDIO和MDC,其中MDIO是雙向數據線,而MDC是由STA驅動的時鐘線。MDC時鐘的最高速率一般為2.5MHz,MDC也可以是非固定頻率,甚至可以是非周期的。MDIO接口只是會在MDC時鐘的上升沿進行采樣,而并不在意MDC時鐘的頻率(類似于I2C接口)。如下圖所示。

網卡工作在osi的最后兩層,物理層和數據鏈路層,物理層定義了數據傳送與接收所需要的電與光信號、線路狀態、時鐘基準、數據編碼和電路等,并向數據鏈路層設備提供標準接口.物理層的芯片稱之為PHY.
數據鏈路層則提供尋址機構、數據幀的構建、數據差錯檢查、傳送控制、向網絡層提供標準的數據接口等功能.以太網卡中數據鏈路層的芯片稱之為MAC控制器.
很多網卡的這兩個部分是做到一起的.他們之間的關系是pci總線接mac總線,mac接phy,phy接網線(當然也不是直接接上的,還有一個變壓裝置).
通過IEEE定義的標準的MII/GigaMII(Media Independed Interfade,介質獨立界面)界面連接MAC和PHY。這個界面是IEEE定義的。MII界面傳遞了網絡的所有數據和數據的控制。
而MAC對PHY的工作狀態的確定和對PHY的控制則是使用SMI(Serial Management Interface)界面通過讀寫PHY的寄存器來完成的。PHY里面的部分寄存器也是IEEE定義的,這樣PHY把自己的目前的狀態反映到寄存器里面,MAC通過SMI總線不斷的讀取PHY的狀態寄存器以得知目前PHY的狀態,例如連接速度,雙工的能力等。當然也可以通過SMI設置PHY的寄存器達到控制的目的,例如流控的打開關閉,自協商模式還是強制模式等。
我們看到了,不論是物理連接的MII界面和SMI總線還是PHY的狀態寄存器和控制寄存器都是有IEEE的規范的,因此不同公司的MAC和PHY一樣可以協調工作。當然為了配合不同公司的PHY的自己特有的一些功能,驅動需要做相應的修改。
來源:汽車嵌入式


碼上報名
談思實驗室AutoSec智能汽車安全攻防實訓課程,10月,上海
更多文章
軟件如何「吞噬」汽車?
汽車信息安全 TARA 分析方法實例簡介
汽車FOTA信息安全規范及方法研究
聯合國WP.29車輛網絡安全法規正式發布
滴滴下架,我卻看到數據安全的曙光
從特斯拉被約談到車輛遠程升級(OTA)技術的合規
如何通過CAN破解汽
會員權益:?(點擊可進入)談思實驗室VIP會員

