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.对在多个文件之间共同使用的 ...
随机推荐
- idea 这样 会快点
最近使用IDEA来开发JAVA应用,对IDEA的界面很有爱,但是缺受不了它的运行速度.每次运行都要编译,所以就有了这边文章 总感觉IDEA的编译速度比eclipse慢,eclipse每次保存都自动 ...
- go module 命令
项目目录下,执行以下命令初始化 go mod init 执行以下命令会自动分析项目里的依赖关系同步到go.mod文件中,同时创建go.sum文件 go mod tidy 以上的管理依赖管理操作,所以依 ...
- js 生成随机颜色
var getRandomColor = function(){ return '#'+(Math.random()*0xffffff<<0).toString(16); } <&l ...
- Gradle 在Eclipse中的使用
eclipse上gradle插件的安装 1)在Eclipse中选择Help -> Eclipse Marketplace…,输入buildship点击Go,然后选择Install安装Gradle ...
- java 集合 Se HashTreeSet
Set接口 Set是Collection的子接口,与List相对 Set集合中的元素的特点是1,无序性 2,无下标3,无重复的元素 Set是个接口,所以无法直接创建对象,要依赖它的实现类来创建对象 ...
- Android学习路-activity活动
activity即活动,是一种包含用户界面的组件,用于与用户进行交换 创建activity类 1.类继承Activity, activity传递一个bundle对象,可以获得onSaveInsta ...
- python3替换文件的内容
目标:替换文件中的字符串内容 方法1:使用fileinput包 import fileinput for line in fileinput.input(“要修改的文件名", inp ...
- Idea单元测试Junit Generator设置
0. setting--->plugins--->brose repostories-->输入JUnitGenerator V2.0 1.junit generator自动生成测试代 ...
- zabbix web 配置
一.汉化 1.在windows中找一些自己喜欢的字体: 2.将字体上传至/var/www/html/zabbix/fonts 目录下(我上传的字体为:simhei.ttf) 3.在/var/www/h ...
- 【收藏】UI自动化测试基本规则与设计模式
总体规则 所有模块设计均遵循page object结构 用例层:测试人员编写测试用例代码的地方,可以调用page层和封装层. page层:一个页面一个类,包含该页面的业务逻辑封装以及部分控件定义. 封 ...