Dispositivos de rede A descoberta dos nomes REDES de ?· 48 S | Dispositivos de rede Dispositivos de…

Download Dispositivos de rede A descoberta dos nomes REDES de ?· 48 S | Dispositivos de rede Dispositivos de…

Post on 18-Nov-2018

212 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • 48 www.linuxmagazine.com.br

    REDES | Dispositivos de rede

    Dispositivos de rede

    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

    Recentemente, um cliente me perguntou o que estava acon-tecendo com seu sistema. De repente, ele no tinha mais uma co-nexo eth0; em vez disso, ele estava vendo nomes estranhos como em1 ou p3p1 no console. Ele queria saber exa-tamente o que estava acontecendo. A explicao bastante simples. A re-gra 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. 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"

    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 arbi-trrio. 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

    este tambm o primeiro dispositivo de rede no sistema ainda no est cla-ro. 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.

    Perigo de confusoA situao agravada em instalaes de rede onde a solicitao de boot TFTP enviada em eth0, mas o instalador depois envia a mensagem DHCPDISCOVER atravs de uma conexo de rede diferente identificada como eth0. Esta situao muito propcia para a reso-luo de problemas. Queremos que o nome visto no sistema seja idntico ao nome da conexo para que possa-mos 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 ferra-menta chamada biosdevname, sob a GPL. O biosdevname garante que o sis-tema do BIOS detecte o arranjo dos dispositivos de rede e passa esta infor-mao para o sistema operacional. O sistema operacional sabe, portanto, se esta uma placa onboard ou um adap-tador PCI externo, e detecta a porta exata na placa-me ou na placa PCI. A nomenclatura, tambm conheci-da como Consistent Network Device Naming (Nomenclatura Consistente

    de Dispositivo de Rede), ento, segue esse padro, cujos nomes onboard so:

    emPortnumber_instance_of_ virtualFunction

    (por exemplo, em1 para a primeira placa onboard). A situao para pla-cas PCI externas :

    pSlotNumberpPortnumber_instance_

    of_virtual_function

    (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

    RE

    DE

    S

    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)

  • 49

    | REDESDispositivos de rede

    Linux Magazine #104 | Julho de 2013

    permite dividir um nico dispositivo PCI em vrios sistemas virtuais sem sacrifi-car 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 fun-o 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.

    Informaes do BIOSO 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 sim-plesmente 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 da-dos da tabela de roteamento PCI IRQ.

    As ferramentas dmidecode e biosdecode fornecem esta informao na requisio. Alternativamente, o script da listagem 2 pode ajudar.

    Novas regrasA figura 1 mostra o caminho de infor-maes do hardware para o aplicativo, que, em seguida, visualiza os nomes dos dispositivos definidos por biosdevname. 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"

    Podemos ver que o biosdevname atribui um novo nome ao dispositi-vo (%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 for-nece a informao desejada. Em seguida, exclua o arquivo /etc/udev/rules.d/70persistentnet.rules. Queremos que os nomes dos dispositivos venham de biosdevname e no que sejam definidos estaticamente pela udev.

    Finalmente, devemos renomear os arquivos de configurao para as placas de rede abaixo do diretrio /etc/sysconfig/networkscripts/ e alterar a entrada DEVICE para um novo nome. O Red Hat Enterpri-se 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 nomea-o, 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, poder reverter para o modo antigo usando o parmetro biosdevname=0 no momento do boot. n

    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 ][

    anaconda

    Espao do usurio

    Firmware do sistema

    ACPI SMBIOS

    Kernel

    sysfs

    udev

    biosdevname

    dmidecode

    em0, em1, p2p1...

    gerenciador de rede seu aplicativo

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

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

Recommended

View more >