You are on page 1of 2

REDES| Dispositivos de rede

Dispositivos de rede

REDES

A descoberta dos nomes de dispositivos


Dispositivos Ethernet no Linux sempre foram chamados de eth0 e nada mais. De repente, essa verdade universal perdeu a validade e os administradores Linux precisam entender o porqu disso ter acontecido. por Thorsten Scherf

ecentemente, um cliente me perguntou o que estava acontecendo com seu sistema. De repente, ele no tinha mais uma conexo eth0; em vez disso, ele estava vendo nomes estranhos como em1 ou p3p1 no console. Ele queria saber exatamente o que estava acontecendo. A explicao bastante simples. A regra do subsistema udev responsvel pela nomeao. Se todos os critrios para uma regra corresponderem a um dispositivo de rede encontrado no momento de boot, o dispositivo geralmente adota o nome definido, como eth<X>. Um exemplo seria:
# grep eth0 /etc/udev/rules.d/ 70persistentnet.rules SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="f0:de:f1:d5 :c1:25", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

este tambm o primeiro dispositivo de rede no sistema ainda no est claro. Para administradores de sistema, esta situao sempre foi uma grande preocupao. Se o usurio j ficou na frente de um servidor com uma dzia de portas de rede procurando por eth0, saber exatamente o que queremos dizer.

de Dispositivo de Rede), ento, segue esse padro, cujos nomes onboard so:
emPort-number_instance_of_ virtualFunction

(por exemplo, em1 para a primeira placa onboard). A situao para placas PCI externas :
pSlotNumberpPortnumber_ instance_ of_virtual_function

Perigo de confuso

A regra diz que um dispositivo de rede com o endereo MAC declarado deve nomear um dispositivo como eth0 e, assim, ser o primeiro dispositivo visvel no sistema. O nome do arquivo arbitrrio. Se quisermos, podemos chamar esta conexo de pblica ou privada. Este princpio funciona em determinadas situaes. A desvantagem que no sabemos exatamente qual conexo de rede ser esta no sistema. A nica coisa que fica clara que se trata da conexo com o endereo MAC declarado; se
48

A situao agravada em instalaes de rede onde a solicitao de boot TFTP enviada em eth0, mas o instalador depois envia a mensagem DHCPDISCO VER atravs de uma conexo de rede diferente identificada como eth0. Esta situao muito propcia para a resoluo de problemas. Queremos que o nome visto no sistema seja idntico ao nome da conexo para que possamos visualizar diretamente se trata-se de uma porta de rede onboard ou de uma porta na placa PCI externa. No incio de 2011, alguns desenvolvedores da Dell publicaram uma nova ferramenta chamada biosdevname, sob a GPL. O biosdevname garante que o sistema do BIOS detecte o arranjo dos dispositivos de rede e passa esta informao para o sistema operacional. O sistema operacional sabe, portanto, se esta uma placa onboard ou um adaptador PCI externo, e detecta a porta exata na placa-me ou na placa PCI. A nomenclatura, tambm conhecida como Consistent Network Device Naming (Nomenclatura Consistente

(por exemplo, p2p1 para a primeira porta do NIC externo no slot 2). Recursos virtuais so usados quando a placa de rede suporta Single Root I/O Virtualization (SR-IOV). Este recurso

Listagem 1: Interfaces virtuais de rede


# lspci | grep i ether 07:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01) # modprobe r igb # modprobe igb max_vfs=2 # lspci | grep i ether 07:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01) 07:10.0 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01) 07:10.1 Ethernet controller: Intel Corporation 82576 Virtual Function (rev 01)

www.linuxmagazine.com.br

Dispositivos de rede | REDES

anaconda

gerenciador de rede em0, em1, p2p1... udev

seu aplicativo

Novas regras

biosdevname

Espao do usurio Kernel sysfs

dmidecode

A figura 1 mostra o caminho de informaes do hardware para o aplicativo, que, em seguida, visualiza os nomes dos dispositivos definidos por biosdev name. A regra udev que implementa os nomes de dispositivo se parece com:
# grep PROGRAM /lib/udev/ rules.d/71biosdevname.rules PROGRAM="/sbin/biosdevname smbios 2.6 policy physical i %k", NAME="%c", OPTIONS+="string_escape=replace"

Firmware do sistema ACPI SMBIOS

Figura 2 Do hardware, via udev, para o aplicativo.

permite dividir um nico dispositivo PCI em vrios sistemas virtuais sem sacrificar o desempenho. ento atribuda uma funo virtual do dispositivo a um sistema virtual. Por exemplo, uma placa de rede com uma porta nica aparece com mltiplas entradas na sada lspci no hypervisor (listagem 1). A primeira entrada refere-se funo fsica da placa, e as outras duas referem-se s funes virtuais, cada uma das quais podendo ser passada para um sistema virtual com uma simples atribuio de PCI. Em um sistema com biosdevname habilitado, os

seguintes nomes de dispositivo existiro para a placa de rede j mencionada no slot do PCI 3: p3p1, p3p1_0, p3p1_1. A designao para a tecnologia de rede, tais como VLAN ou aliases, mantida. Por exemplo, p3p1:0 designa um alias para o dispositivo de rede p3p1 com mais de um endereo IPv4.

Podemos ver que o biosdevname atribui um novo nome ao dispositivo (%c) logo aps o driver do kernel detect-lo (%k). Se quisermos usar a nova nomenclatura no sistema, devemos primeiro executar o script acima para ver se o hardware fornece a informao desejada. Em seguida, exclua o arquivo /etc/
udev/rules.d/70persistentnet. rules. Queremos que os nomes dos dispositivos venham de bios devname e no que sejam definidos

Informaes do BIOS

Listagem 2: Verificao de hardware


# curl s https:// fedoraproject.org/w/ uploads/3/38/ Biosdevnamesupportcheck. sh | bash Checking hardware requirements [ OK ] Checking for SMBIOS type 41 support [ OK ] Checking for SMBIOS type 9 support [ OK ] Checking for PCI Interrupt Routing support [ OK ][

O que informa ao sistema operacional em qual slot uma placa est conectada ou quais portas uma placa oferece? A resposta bastante simples: o BIOS (nos sistemas atuais Dell e HP) armazena essas informaes em duas tabelas: 9 (para placas PCI externas) e 41 (para placas onboard). O biosdevname simplesmente acessa as tabelas e grava as entradas correspondentes a uma nova regra udev. A regra , ento, responsvel pelos novos nomes das placas de rede. Se o sistema no possuir uma verso atual do SMBIOS, ou se a informao estiver ausente das tabelas correspondentes, o biosdevname tambm pode acessar os dados da tabela de roteamento PCI IRQ. As ferramentas dmidecode e bios decode fornecem esta informao na requisio. Alternativamente, o script da listagem 2 pode ajudar.

estaticamente pela udev. Finalmente, devemos renomear os arquivos de configurao para as placas de rede abaixo do diretrio /etc/sysconfig/network-scripts/ e alterar a entrada DEVICE para um novo nome. O Red Hat Enterprise Linux, a partir da verso 6.1, e o Fedora, a partir da verso 15, e as verses atuais do openSUSE, SUSE Linux Enterprise Server e Ubuntu j usam o novo critrio de nomeao, e o instalador usa esses novos nomes durante a instalao. Se o usurio no puder ou no quiser mudar os scripts que apontam para eth<X>, poder reverter para o modo antigo usando o parmetro biosde vname=0 no momento do boot. n

Gostou do artigo?
Queremos ouvir sua opinio. Fale conosco em: cartas@linuxmagazine.com.br Este artigo no nosso site: http://lnm.com.br/article/8693

Linux Magazine #104 | Julho de 2013

49

You might also like