RHEL 7 network interface naming
eno1… enp0s31f6…
rhel7부터 ethernet network card naming 방식이 바뀌었다.
이전에는 eth0,1,2,3…. 이렇게 순서대로 했었던 걸 좀더 직관적으로 바꿨단다. Manual에서…
일단 rhel7로 오면서 naming policy가 3종류가 있는데, systemd, biosdevname, system Z 에서의 naming 이렇게 3개의 방식이 있다. System Z 에서의 naming은 본적이 없다. System Z 를 본적이 없으므로 ㅋㅋ . 참고로 system Z 는 IBM system Z mainframe 을 뜻한다.
처음부터 살펴보면…
예측가능한 network interface device 의 naming
interface type 에 따라 접두어가 달라진다.
1. en 은 ethernet
2. wl 은 wireless lan
3. ww 는 wireless wan
systemd scheme 서열 policy
기본적으로 아래 5가지의 scheme policy 를 사용해서 naming을 하게된다.
Scheme 1. : firmware 나 bios 가 onboard 인 device 에 대해 제공하는 색인번호를 조합한 이름(예: eno1 ) 은 firmware나 bios로 부터의 정보를 적용가능한 경우는, 이것이 적용된다. 그렇지 않으면 scheme 2로 fallback 한다.
### bios로 부터의 정보를 적용가능한 경우라는 것은, smbios(system management basic input/output system) 에서 정보를 받을 수 있는경우를 뜻한다. Smbios 는 bios 내의 data 구조의 배치 및 access method에 관하는 수단이다. 흔히들 잘 쓰는 dmidecode 도 이 smbios 에서 정보를 가져와서 보여주는 것이다. 현재 3.0 까지 나와 있는데 2.6 이전 버전에서는 smbios 정보가 현재와는 틀려서 pci device의 정보가 없는경우가 있다. 이럴 경우 bios 로 부터 정보를 가져올 수 없으며, 다음 scheme로 넘어간다 는 뜻이다. ###
Scheme 2. : 1과 같은데 onboard가 아니라 pci express hotplug slot 에 꽂혀져 있는 network device일 경우 적용된다.(예: ens1) 마찬가지로 bios에서 정보를 못가져 오면 scheme 3으로 넘어간다.
Scheme 3. : hardware connector 의 물리적인 장소를 조합한 이름이다.(예: enp2s0) 이것이 적용 불가능한 경우 scheme 5로 넘어간다.
### Hardware connect 의 물리적인 장소라 함은 dev path를 뜻한다. 물리장치의 devpath name을 적용한다는 뜻.예를들어 내 pc에서 적용된 것을 살펴보면…
# lspci -vt
-[0000:00]-+ …
…
\-1f.6 Intel Corporation Ethernet Connection I219-V
enp<bus>s<slot>[f<function>][d<dev_id>]
이렇게 적용 되는데 저위의 정보대로 이름을 만들어 보자면…
enp0s31f6 이라는 이름이 만들어 진다.
실제로 # ip link command로 정보를 살펴 보면
2: enp0s31f6: <NO-CARRIER,BROADCAST,MULTICAST,UP>
요렇게 나와 있는것을 볼 수 있다. ###
Scheme 4. : interface 의 mac address를 조합하여 만든 이름이다. default로는 사용되지 않지만, user가 선택하면 적용가능하다. (예 : enx78e7d1ea46da)
### 나같은 경우는 usb network interface card 를 꽂으니까 이렇게 나오더라. 따로 선택하거나 하진 않았음. ###
Scheme 5. : 종래형의 예측 불가능한 커널 명명 scheme (예 : eth0 ), 모든 방법이 실패하면 이게 사용된다.
정리하면…
o<index> onboard device 의 색인번호
s<slot>[f<function>][d<dev_id>] hot plug slot 의 색인번호
x<MAC> mac address
p<bus>s<slot>[f<function>][d<dev_id>] pci 의 dev path
p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>] usb port number chain
system z 에서의 naming을 보면…
device type이 ethernet network interface 일 경우는…
ensccw0.0.1234 ensccw<bus-ID>
device type이 SLIP의 CTC network device인 경우는…
slccw0.0.1234 slccw<bus-ID>
이렇게 만들어진다.
VLAN interface 의 naming scheme
VLAN + VLAN ID
예 : vlan0005
VLAN + 패딩 없는 VALN ID
예 : vlan5
device name + VLAN ID
예 : eth0.0005
device name + 패딩 없는 VLAN ID
예 : eth0.5
biosdevname 을 사용한 일관성 있는 network device naming
# yum install -y biosdevname commnad 를 실행하여 biosdevname 을 install 하고, boot command line에 ‘biosdevname=1’ 이라고 지정해 줍니다. 무효로 하려면 0 을 지정하면 된다. Boot command line이란 grub.cfg file 내에서 booting option을 바꿔주라는 뜻.
Onboard network interface (Lan On Motherboard LOM 이라고도 함.) eth0123… → em1234…
pci card network interface eth0123… → p<slot>p<ethernet port> 예 : p3p4
가상기능 eth0123… → p<slot>p<ethernet port>_<virtual interface> 예 : p3p4_1
RHEL 7 network guide 참조함.