一致性網絡設備命名,即Consistent Network Device Naming.
一、服務器通常有多塊網卡,有板載集成的,同時也有插在PCIe插槽的。
Linux系統的網卡命名原來是eth0,eth1這樣的形式,但是這個編號往往不一定能准確的對應網卡接口的物理順序,你的桌面可能有一個以太網端口,命名為 eth0。如果你僅有一個網絡端口,這樣毫無問題,但如果出現在服務器的情況,四個以太網端口該怎么辦?它們被命名為 eth0、eth1、eth2、eth3,分 別對應機箱背面的標簽 1、2、3、4。某些時候確實如此。除了從 0 開始,而不是從 1 開始導致明顯的命名混亂外,還可能出現其他的混亂情況,如每個端口在每次啟用時可能無法獲得相同的名稱,此外它們的命名順序可能是任意的。如果將網卡添加到 PCI 插槽,情況可能還會更糟,主板上的端口和新添加卡上的端口命名可能相互混雜,為解決這類問題,dell開發了biosdevname方案。Biosdevname是一款udev(udev 是Linux kernel 2.6系列的設備管理器。它主要的功能是管理/dev目錄底下的設備節點)輔助應用,它可以將設備原先的ethn名稱,映射到該設備基於物理位置的名稱上。這在部署多台服務器時用處尤為明顯,特別是在要求所有以太網設備都采用相同的命名規則的情況下。嵌入式插槽設備的名稱格式為“eX_vf”,而PCI插槽上的NIC名稱格式則是“pXpY_vf”。
自從 v197 systemd/udev 開始,系統可以為本地的Ethernet、WLAN和WWAN接口自動地分配可預測的、穩定的網絡接口名稱。該規范脫離了傳統的命名機制(eth0,eth1,wlan0等),但是修復了許多問題。
二、命名方案層級結構
默認情況下, systemd 會使用以下策略, 采用支持的命名方案為接口命名:
方案 1:如果固件或 BIOS 信息適用且可用, 則使用整合了為板載設備提供索引號的固件或 BIOS 的名稱( 例如:eno1) , 否則請使用方案 2。
方案 2:如果固件或 BIOS 信息適用且可用, 則使用整合了為 PCI 快速熱插拔插槽提供索引號的固件或BIOS 名稱( 例如 ens1) , 否則請使用方案 3。
方案 3:如果硬件連接器物理位置信息可用, 則使用整合了該信息的名稱( 例如:enp2s0) , 否則請使用方案 5。
方案 4: 默認不使用整合接口 MAC 地址的名稱( 例如:enx78e7d1ea46da) , 但用戶可選擇使用此方案。
方案 5:傳統的不可預測的內核命名方案, 在其他方法均失敗后使用( 例如: eth0) 。
這個策略( 如上所述) 是默認策略。 如果該系統已啟用 biosdevname, 則會使用該方案。 注:啟用
biosdevname 需要添加 biosdevname=1 作為命令行參數( Dell 系統除外) , 此時只要安裝
biosdevname, 就會默認使用該方案。 如果用戶已添加 udev 規則, 該規則會更高內核設備名稱, 則會優先使
用這些規則。
三、了解可預期網絡接口設備名稱
根據接口類型以兩個字母開頭:
1. en 代表以太網,
2. wl 代表無線局域網( WLAN) ,
3. ww 代表無線廣域網( WWAN) 。
名稱有以下類型:
設備名稱類型:
格式 描述 如圖:
所有多功能 PCI 設備都在其設備名稱中包含 [f<function>] 號, 其中包括 function 0 設備。
在 USB 設備中會組成集線器端口號完整鏈。 如果該名稱超過 15 個字符上限, 則無法導出該名稱。
已取消 USB configuration descriptors == 1 和 USB interface descriptors == 0( 如果只有一個 USB 配置或
接口存在, 則默認值為 configuration == 1 及 interface == 0) 。
更多內容可參考:
https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/