Linux网络端口命名规则,一致性网络设备命名
参考文档:
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网络端口命名规则,一致性网络设备命名的更多相关文章
- C语言中变量名及函数名的命名规则与驼峰命名法
一.C语言变量名的命名规则:(可以字母,数字,下划线混合使用) 1. 只能以字母或下划线开始:2. 不能以数字开始:3. 一般小写:4. 关键字不允许用(eg:int float=2//error ...
- CSS命名规则和如何命名
CSS命名规则 头:header 内容:content/containe 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrapper 左右中:l ...
- JavaScript变量命名规则:匈牙利命名法
匈牙利命名法语法 变量名=类型+对象描述 类型指变量的类型 对象描述指对象名字全称或名字的一部分,要求有明确含义,命名要容易记忆容易理解. 提示 虽然JavaScript变量表面上没有类型,但是Jav ...
- Centos 7中的网卡一致性命名规则
一致性网络设备命名,即Consistent Network Device Naming 一.为什么需要这个 服务器通常有多块网卡,有板载集成的,同时也有插在PCIe插槽的. Linux系统的命名原来是 ...
- centos7中的网卡一致性命名规则、网卡重命名方法
一致性网络设备命名(Consistent Network Device Naming) 背景介绍: 在centos5的时候,我们习惯了eth0这样的网络设备命名,在centos6发现网络设备变成了em ...
- JavaWeb 命名规则
命名规范命名规范命名规范命名规范 本规范主要针对java开发制定的规范项目命名项目命名项目命名项目命名 项目创建,名称所有字母均小写,组合方式为:com.company.projectName.com ...
- javascript中变量命名规则
前言 变量的命名相对而言没有太多的技术含量,今天整理有关于变量命名相关的规则,主要是想告诉大家,虽然命名没有技术含量,但对于个人编码,或者说一个团队的再次开发及阅读是相当有用的.良好的书写规范可以让你 ...
- 2.6 C#的标识符命名规则
C#标识符的命名规则 程序中的变量名.常量名.类名.方法名,都叫做标识符.C#有一套标识符的命名规则,如果命名时不遵守规则,就会出错.这套规则简单说有下面三条: ①标识符只能由英文字母.数字和下划线组 ...
- C--变量的命名规则
规则1.标识符最好采用英文单词或其组合,不允许使用拼音. 规则3.当标识符由多个词组成时,每个词的第1个字母大写,其余全部小写: int CurrentVal; 规则5.对在多个文件之间共同使用的 ...
随机推荐
- 从后台获取的数据渲染到页面中的dom操作
很多情况下页面dom都是从后台拼接字符串添加生成的新的dom元素,在编辑器中不能看到,只能通过检查看到页面的dom结构,但是这时候会发生一个问题,就是如果使用jQuery无法进行dom操作,事件和方法 ...
- 简单的实现微信获取openid
微信公众平台获取openid在公众号的开发中有很多用途,前段时间为实现用户使用公众号在登录一次以后可以免密登陆而使用了openid.开发过程中遇到了一些问题,在这里向需要且还没有获取到openid的米 ...
- 大型运输行业实战_day11_2_事务理论与实际生产配置事务管理
1.什么是事务(Transaction:tx) 数据库的某些需要分步完成,看做是一个整体(独立的工作单元),不能分割,要么整体成功,要么整体生效.“一荣俱荣,一损俱损”,最能体现事务的思想.案例:银行 ...
- Redis原子计数器incr
一.前言在一些对高并发请求有限制的系统或者功能里,比如说秒杀活动,或者一些网站返回的当前用户过多,请稍后尝试.这些都是通过对同一时刻请求数量进行了限制,一般用作对后台系统的保护,防止系统因为过大的流量 ...
- cakephp 如何在一个模型里调用另一个模型
$admin_users = ClassRegistry::init('AdminUsers'); $admin_name = $admin_users->find('list',array( ...
- Animator状态快速切换问题
[Animator状态快速切换问题] 事情是这样的,我尝试在一帧内多次切换一些状态(当前状态为Idle的情况下): public Animator animator; void OnEnable() ...
- cdh 安装系列1-- manager 6.01 安装
一.如果是远程centos安装,请参考我得博客,通过xmanager 链接centos桌面 二.Non-production Installation Ideal for trying Clouder ...
- Django 之多对多关系
1. 多对多关系 作者 <--> 书籍 1. 表结构设计 1. SQL版 -- 创建作者表 create table author( id int primary key auto_inc ...
- 【nginx】大文件下载
nginx自带文件读取功能,而且实现地很好. 比如直接读取txt文件,png图片等,用chrome可以直接获取到内容. 但是对于很大的文件,比如有2个G的视频,nginx如何吐出2G的内容呢? 实验: ...
- SQL那些事儿(十一)--ODBC,OLE-DB,ADO.NET区别[转]
一.ODBC ODBC的由来 1992年Microsoft和Sybase.Digital共同制定了ODBC标准接口,以单一的ODBC API来存取各种不同的数据库.随后ODBC便获得了许多数据库厂 ...