Apa arti eno dalam nama antarmuka jaringan 'eno16777736' untuk CentOS 7 atau RHEL 7?

16

Di bawah skema penamaan perangkat jaringan yang konsisten, apa arti 'eno' dalam nama antarmuka jaringan eno16777736untuk CentOS 7 atau RHEL 7?

Andy Huang
sumber

Jawaban:

18

Hmmm. Lebih dari "en" dan "o", saya akan lebih peduli tentang "16777736".

Kecuali, Anda secara tidak sengaja berkeliaran di Google, dan mendapati diri Anda duduk di server dengan arsitektur PCI khusus, saya tidak benar-benar melihat bagaimana 16777736 bisa menjadi nilai yang mungkin. Ini mungkin petunjuk untuk masalah yang lebih serius.

Di bawah skema saat ini, suatu sistem tidak akan dapat mengatasi lebih dari 256 bus PCI (dengan 32 perangkat di bawah setiap bus dan maksimum 8 fungsi di bawah setiap perangkat). Ini juga dikenal sebagai Bus: Device.Function addressing. Sistem modern menggunakan Domain: Bus: Device.Function untuk mendapatkan batasan 256 Bus. Tapi bagaimanapun, kembali ke masalah Anda ...

Bisakah Anda melakukan:

ls -la /sys/class/net | grep eno16777736

Jika Anda melihat sesuatu yang sangat mirip dengan:

eno16777736 -> ../.../devices/pci0000:00/0000:00:11.0/0000:1000208:01.0/net/eno16777736

Maka saya sarankan Anda berlari cepat sebelum Google menangkap Anda bermain-main dengan server mereka.

/(0000:1000208:01.0)/ di atas adalah Domain: Bus: Device. Alamat fungsi dengan nilai bus, "1000208", menjadi representasi heksadesimal 16777736. Namun, "0x100" (256) Harus menjadi nilai maksimum yang dapat Anda miliki untuk "Bus."

Di sisi lain, jika Anda mendapatkan nilai di bawah 0x100 untuk "Bus", seperti:

eno16777736 -> ../.../devices/pci0000:00/0000:00:11.0/0000:1c:01.0/net/eno16777736

Kemudian, saya akan berpikir masalahnya akan terkait dengan bagaimana Bios / Firmware Anda mengirim informasi ke udev (systemd) saat startup. Untuk mengetahui penyebab potensial, pertama periksa nilai-nilai yang udev dikembalikan kembali ke sana.

Biasanya ada tiga tempat permintaan udev untuk membuat PIN (Predictable Interface Name)

  1. ACPI_DSM
  2. Tabel SMBIOS [khusus mencatat tipe "slot" [9], dan tipe 41]
  3. Tabel Routing IRQ PCI

[dalam urutan itu]

Kami dapat menguji (1) dengan:

udevadm info --path=/sys/class/net/eno16777736 --attribute-walk | grep acpi

Jika ini memberi Anda 16777736 maka kemungkinan besar sistem Anda tidak mendukung Spesifikasi PCI Firmware 3.1 yang diperlukan untuk mendukung ACPI_DSM

Jadi sekarang kita harus menguji (2). Jadi mari kita periksa catatan tipe 41 di Tabel SMBIOS terlebih dahulu (tipe 41 adalah yang paling relevan):

dmidecode -t 41 | more

Jika tidak ada yang ditampilkan, atau versi SMBIOS kurang dari "2,62" maka itu berarti udev akan bergantung pada PCI IRQ Routing Table untuk membuat PIN.

Jadi kita harus periksa (3)

biosdecode

Perhatikan entri slot maksimum Anda ... itu harus dalam bentuk:

Slot Entry X: ID 00:00, (slot number X| status)

Jika X adalah 25, demi argumen, NIC Anda harus berada pada slot yang lebih rendah dari atau sama dengan 25. Jika tidak, udev akan terus merujuk nilai placeholder sebesar 16777736.

Dalam kebanyakan kasus, Anda dapat memeriksa nomor slot nic Anda dengan:

lspci -bv | grep -i -A10 ether

Dan lagi Dalam kebanyakan kasus, dalam BDF (Bus: Device.Function), Perangkat harus sama dengan nomor port Fisik (setelah mengubahnya dari hex ke desimal). Dalam kasus lain (jika tidak), lspci akan mencantumkan Slot Fisik pada baris terpisah dalam output dari mengeksekusi perintah lspci di atas.

Jadi, jika nomor Slot Fisik yang tercantum lebih besar dari X (jumlah maksimum yang kami temukan dalam tabel Routing IRQ PCI kami) kami kemungkinan besar telah mengisolasi masalahnya.

Ada 5 kemungkinan solusi yang dapat saya pikirkan dalam kasus ini ...

  1. Peretasan kernel ... Membangun kembali kernel dengan tabel Routing PCI IRQ baru. Lihatlah /arch/x86/pci/irq.c

[Ini adalah solusi saya-perlu-untuk-menemukan-kegunaan-ke-waktu-saya]

  1. Memetakan perangkat ke nama yang berbeda dengan membuat aturan baru

oleh:

vi /etc/udev/rules.d/70-my-net-names.rules

kemudian tambahkan yang berikut ini:

ACTION=="add", SUBSYSTEM=="net", ENV{ID_BUS}=="pci", 
KERNELS=="{Domain:Bus:Device.Function}", NAME="{name: i.e. eno1 or eth0}" 

[Saya menyebut ini solusi mari-kita-abaikan-masalah-dan-sekadar-buat-hal-cantik-cantik]

  1. Anda bisa menambahkan net.ifnames = 0 ke opsi boot kernel untuk menonaktifkan fitur ini sama sekali

[Ini tentu saja solusi if-it-is-broken-turn-it-off-and-cry-in-solour] (bukan benar-benar solusi) ...

  1. Dan jika Anda menjalankan VM ... VMWare / VirtualBox, dll ... buka file konfigurasi dan ubah "pciSlotNumber" menjadi sesuatu di bawah X.

[Tapi ini adalah solusi sementara-hack-sampai-software-saya-diperbarui]

  1. Beli komputer baru. [dan akhirnya solusi jika-kamu-tidak bisa mengalahkan mereka bergabung]
Dominic Williams
sumber
3
Saya percaya bahwa angka ganjil cocok dengan perangkat bersih di VMWare BIOS. Sepertinya OP menggunakan CentOS 7 VM.
Ini tidak selalu sama, baik - saya punya eno16780032. Apa yang menyakitkan di pantat.
Dan Pritts
1
Jawaban ini sangat melelahkan sehingga dalam menjawab pertanyaan OP Anda berhasil menghasilkan referensi singkat tentang cara mengidentifikasi perangkat dengan indeks mereka.
Konrads
Nama-nama semacam ini untuk VMware tampaknya tidak biasa. Misalnya, perangkat saya dinamai eno16777732.
Stefan Lasiewski
Masalah yang saya alami tentang VMWare adalah sepertinya tidak ada cara untuk mendapatkan acpi_index dari kartu jaringan yang diberikan dari VSphere API.
Danny
14

Hanya dengan menambahkan detail ke jawaban sebelumnya:

Dua awalan karakter berdasarkan jenis antarmuka:

*   en -- ethernet
*   sl -- serial line IP (slip)
*   wl -- wlan
*   ww -- wwan
*   ib -- Infiniband

Jenis nama:

*   b<number>                             -- BCMA bus core number
*   ccw<name>                             -- CCW bus group name
*   o<index>                              -- on-board device index number
*   s<slot>[f<function>][d<dev_port>]     -- hotplug slot index number
*   x<MAC>                                -- MAC address
*   [P<domain>]p<bus>s<slot>[f<function>][d<dev_port>]
                                          -- PCI geographical location
*   [P<domain>]p<bus>s<slot>[f<function>][u<port>][..]1[i<interface>]
                                          -- USB port number chain

Sumber: http://ask.xmodulo.com/change-network-interface-name-centos7.html

Sumid
sumber