参考文档:

https://www.cnblogs.com/pipci/p/9229571.html

一致性网络设备命名,即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) 。

方案 1
合并固件或者 BIOS 的名称为板载设备提供索引号的名称,例如:eno1。如果固件信息适用且可用,则 systemd 默认情况下根据这个方案命名接口,同时使用方案 2 作为备选。
方案 2
合并固件或者 BIOS 的名称提供 PCI 快捷热插拔插槽索引号的名称,例如 ens1。如果固件信息适用且可用,则 systemd 默认情况下根据这个方案命名接口,同时使用方案 3 作为备选。
方案 3
合并硬件连接器物理位置的名称,例如:enp2s0。如果固件信息适用且可用,则 systemd 默认情况下根据这个方案命名接口,同时使用方案 5 作为备选。
方案 4
合并接口 MAC 地址的名称,例如:enx78e7d1ea46da。默认情况下 systemd 不会根据这个方案命名接口,但如果需要可以启用这个功能。
方案 5
传统的不可预测内核属性 ethX 命名,例如:eth0。如果其他所有方法都失败,systemd 就根据这个方案命名接口。

更多内容可参考:

https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/

Linux网络端口命名规则,一致性网络设备命名的更多相关文章

  1. C语言中变量名及函数名的命名规则与驼峰命名法

    一.C语言变量名的命名规则:(可以字母,数字,下划线混合使用) 1. 只能以字母或下划线开始:2. 不能以数字开始:3. 一般小写:4. 关键字不允许用(eg:int float=2//error  ...

  2. CSS命名规则和如何命名

    CSS命名规则 头:header 内容:content/containe 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrapper 左右中:l ...

  3. JavaScript变量命名规则:匈牙利命名法

    匈牙利命名法语法 变量名=类型+对象描述 类型指变量的类型 对象描述指对象名字全称或名字的一部分,要求有明确含义,命名要容易记忆容易理解. 提示 虽然JavaScript变量表面上没有类型,但是Jav ...

  4. Centos 7中的网卡一致性命名规则

    一致性网络设备命名,即Consistent Network Device Naming 一.为什么需要这个 服务器通常有多块网卡,有板载集成的,同时也有插在PCIe插槽的. Linux系统的命名原来是 ...

  5. centos7中的网卡一致性命名规则、网卡重命名方法

    一致性网络设备命名(Consistent Network Device Naming) 背景介绍: 在centos5的时候,我们习惯了eth0这样的网络设备命名,在centos6发现网络设备变成了em ...

  6. JavaWeb 命名规则

    命名规范命名规范命名规范命名规范 本规范主要针对java开发制定的规范项目命名项目命名项目命名项目命名 项目创建,名称所有字母均小写,组合方式为:com.company.projectName.com ...

  7. javascript中变量命名规则

    前言 变量的命名相对而言没有太多的技术含量,今天整理有关于变量命名相关的规则,主要是想告诉大家,虽然命名没有技术含量,但对于个人编码,或者说一个团队的再次开发及阅读是相当有用的.良好的书写规范可以让你 ...

  8. 2.6 C#的标识符命名规则

    C#标识符的命名规则 程序中的变量名.常量名.类名.方法名,都叫做标识符.C#有一套标识符的命名规则,如果命名时不遵守规则,就会出错.这套规则简单说有下面三条: ①标识符只能由英文字母.数字和下划线组 ...

  9. C--变量的命名规则

    规则1.标识符最好采用英文单词或其组合,不允许使用拼音. 规则3.当标识符由多个词组成时,每个词的第1个字母大写,其余全部小写: int   CurrentVal; 规则5.对在多个文件之间共同使用的 ...

随机推荐

  1. JAVA集合操作异常 ---------Collections.unmodifiableCollection

    1.问题原因 这两天在做开发的时候,在一个首页的列表哪里操作了ArrayList集合,在做递归删除的时候用的是Iterator对象(至于为什么用,来个链接https://blog.csdn.net/m ...

  2. hibernateTemplate API

    https://docs.spring.io/spring-framework/docs/2.5.x/api/org/springframework/orm/hibernate3/HibernateT ...

  3. 通过网址request到response经历的过程

    前言当我们在浏览器中输入一个网址,比如www.google.cn,浏览器就会加载出百度的主页.那么浏览器背后完成的具体是怎么样的呢? 总结起来大概的流程是这样的: (1)浏览器本身是一个客户端,当你输 ...

  4. 03_java基础(四)之方法的创建与调用

    import org.junit.Test; public class Main { public static void main(String[] args) { System.out.print ...

  5. Avatar

    [Avatar] 1.Retargeting of Humanoid animations Retargeting is only possible for humanoid models, wher ...

  6. IN_ORDER_PLANNING、IN_BOM_CHANGE

    一.IN_ORDER_PLANNING 新增一个IN表(IN_ORDER_PLANNING,把ZFP037和ZFP026整合成一张表,标示哪些订单的是真验货/假验货.VIP真验货/假验货订单) ORD ...

  7. VIM常见命令

    1.删除所有数据 进入到第1行按下d,然后输入G回车,此时内容被全部清除 2.替换 :s/vivian/sky/ 替换当前行第一个 vivian 为 sky:s/vivian/sky/g 替换当前行所 ...

  8. Numpy 数组操作

    Numpy 数组操作 Numpy 中包含了一些函数用于处理数组,大概可分为以下几类: 修改数组形状 翻转数组 修改数组维度 连接数组 分割数组 数组元素的添加与删除 修改数组形状 函数 描述 resh ...

  9. layer数据表格换行

    在使用layer数据表格的时候,默认是不可以换行的.这样显示 改动后 数据格式为   aa<br>bb就会显示为换行 比如我们的字符串是    a<br>b 这样的字符串浏览器 ...

  10. Android模拟器故障:waiting for target deviceto come online

    关闭再打开模拟器.删除再新建模拟器均无效. 解决办法:在AVD Manager中,选择立即冷启动(Cold Boot Now)模拟器.