参考文档:

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. linux 安装nexus3

    准备工作: 环境:linux 系统:centos6.4-x86-x64 安装工具:nexus-3.14 软件下载:nexus-3.14 官网下载地址:点击打开链接 将下载的压缩包通过xft5上传至/o ...

  2. 安装 gradle

    Gradle是一种现在很流程的构建工具,目前基本和Maven平分天下,而且大有取而代之的趋势.这篇教程教大家怎么在linux上安装Gradle. 一.获得一台linux服务器 要在linux下安装gi ...

  3. MySQL 事务 隔离级别

    前两天面试,问到了四种隔离级别,当时觉得大多数数据库都为read committed,结果没想到mysql是个例外.在此做一下隔离级别和各种数据库锁的使用. 首先说一下ACID四大特性: 四大特性   ...

  4. 【OpenGL】第一个窗口

    包含头文件: #include <GL/glew.h> // GLFW #include <GLFW/glfw3.h> 初始化与配置GLFW: glfwInit(); //初始 ...

  5. SML + NL + HJ

    Join是一种试图将两个表结合在一起的谓词,一次只能连接2个表,表连接也可以被称为表关联.在后面的叙述中,我们将会使用”row source”来代替”表”,因为使用row source更严谨一些,并且 ...

  6. overflow属性的用法

    <style type="text/css">div{ background-color:#00FFFF; width:150px; height:150px; ove ...

  7. 缩点+出入度 poj1236

    题目链接:https://vjudge.net/contest/219056#problem/H 题意:先输入n,代表接下来有n个点,接下来n行,第i行里面的数(假设是)a,b...0(到0表示结束) ...

  8. Oracle触发器用法实例详解

    转自:https://www.jb51.net/article/80804.htm. 本文实例讲述了Oracle触发器用法.分享给大家供大家参考,具体如下: 一.触发器简介 触发器的定义就是说某个条件 ...

  9. Unity3D研究院之设置自动旋转屏幕默认旋转方向

    如下图所示,在处理屏幕默认旋转方向的时候可以在这里进行选择,上下左右一共是4个方向. 策划的需求是游戏采用横屏,但是要求支持两个方向自动旋转,如下图所示,我的设置是这样的. Default Orien ...

  10. python——线程相关

    使用python的threading中的Thread 下面是两种基本的实现线程的方式: 第一种方式———— #coding=utf-8 """ thread的第一种声明及 ...