Vrstvy ISO/OSI a teorie síťování

L1 a L2 - Ethernet, WiFi a PPP

Ethernetový síťový adaptér

Příkladem může být moderní ethernetová karta - ta má zpravidla L1 implementovanou v podobě čipu PHY, který zajišťuje vygenerování signálu z dat, která přicházejí přes *MII (Media Independent Interface) z čipu, který implementuje L2, do média a naopak převádí signál z média a na data na MII sběrnici. Sběrnice mezi PHY a zbytek síťové karty jsou podle rychlosti AUI, MII, GMII, RGMII, SGMII, XGMII a další. Alternativně může být síťová karta místo PHY vybavená SFP či SFP+ klecí pro optický, nebo jiný modul s rozhraním dle příslušného standardu.

L2 část síťové karty je zpravidla implementováná čipem, na kterém může být různě velká část funkcionality implementována firmwarem. Firmware lze zpravidla updatovat z operačního systému přes příslušný ovladač zařízení. V některých případech (ale to se týká zejména WiFi karet) je nutné firmware nahrát ze souboru do síťové karty při každém startu systému.

Mimo samotné MII rozhraní mezi PHY respektive mezi SFP modulem a L2 částí síťové karty je zpravidla použito ještě nezávislé pomalejší rozhraní pro přenos stavových informací a nastavení parametrů PHY. Zpravidla se pro PHY používá rozhraní MDIO. Do SFP modulu zase vede I2C sběrnice, která slouží k identifikaci modulu a správnému nastavení parametrů přenosu.

Metalická síťová karta tedy vypadá obvykle takto:

Metalická ethernetova karta

Naproti tomu stojí karta s optickým SFP modulem:

Metalická ethernetova karta

Odkazy:

Fyzická vrstva je přes rozhraní MDIO přístupná z linuxového userspacu pomocí nástroje mii-tool. Tímto nástrojem je možné zjistit stav a měnit nastavení fyzické vrstvy, tedy zejména rychlost, duplexitu, autonegotiation a podporu pause-rámců pro Ethernet flow control. Příklad:

$ sudo mii-tool -v enx34d0b8c0b534
enx34d0b8c0b534: negotiated 1000baseT-FD flow-control, link ok
  product info: vendor 00:07:32, model 0 rev 0
  basic mode:   autonegotiation enabled
  basic status: autonegotiation complete, link ok
  capabilities: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  advertising:  1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
  link partner: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control

Odkazy:

Nastavení parametrů L2 části síťové karty je specifické pro každý konkrétní typ karty a její ovladač. V Linuxu lze zobrazit stav a nastavovat nejrůznější parametry, které se nejvíce týkají akcelerace přenosu dat v síťové kartě pomocí nástroje ethtool. Příklad:

$ sudo ethtool enx34d0b8c0b534
Settings for enx34d0b8c0b534:
    Supported ports: [ TP MII ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Half 1000baseT/Full 
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Supported FEC modes: Not reported
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Advertised pause frame use: Symmetric Receive-only
    Advertised auto-negotiation: Yes
    Advertised FEC modes: Not reported
    Link partner advertised link modes:  10baseT/Half 10baseT/Full 
                                         100baseT/Half 100baseT/Full 
                                         1000baseT/Full 
    Link partner advertised pause frame use: Symmetric
    Link partner advertised auto-negotiation: Yes
    Link partner advertised FEC modes: Not reported
    Speed: 1000Mb/s
    Duplex: Full
    Port: MII
    PHYAD: 32
    Transceiver: internal
    Auto-negotiation: on
    Supports Wake-on: pumbg
    Wake-on: d
    Current message level: 0x00007fff (32767)
                   drv probe link timer ifdown ifup rx_err tx_err tx_queued intr tx_done rx_status pktdata hw wol
    Link detected: yes
$ sudo ethtool -k enx34d0b8c0b534
Features for enx34d0b8c0b534:
rx-checksumming: on
tx-checksumming: on
    tx-checksum-ipv4: on
    tx-checksum-ip-generic: off [fixed]
    tx-checksum-ipv6: on
    tx-checksum-fcoe-crc: off [fixed]
    tx-checksum-sctp: off [fixed]
scatter-gather: on
    tx-scatter-gather: on
    tx-scatter-gather-fraglist: on
tcp-segmentation-offload: on
    tx-tcp-segmentation: on
    tx-tcp-ecn-segmentation: off [fixed]
    tx-tcp-mangleid-segmentation: off
    tx-tcp6-segmentation: on
udp-fragmentation-offload: off
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off [fixed]
rx-vlan-offload: on
tx-vlan-offload: on
ntuple-filters: off [fixed]
receive-hashing: off [fixed]
highdma: off [fixed]
rx-vlan-filter: off [fixed]
vlan-challenged: off [fixed]
tx-lockless: off [fixed]
netns-local: off [fixed]
tx-gso-robust: off [fixed]
tx-fcoe-segmentation: off [fixed]
tx-gre-segmentation: off [fixed]
tx-gre-csum-segmentation: off [fixed]
tx-ipxip4-segmentation: off [fixed]
tx-ipxip6-segmentation: off [fixed]
tx-udp_tnl-segmentation: off [fixed]
tx-udp_tnl-csum-segmentation: off [fixed]
tx-gso-partial: off [fixed]
tx-sctp-segmentation: off [fixed]
tx-esp-segmentation: off [fixed]
tx-udp-segmentation: off [fixed]
fcoe-mtu: off [fixed]
tx-nocache-copy: off
loopback: off [fixed]
rx-fcs: off [fixed]
rx-all: off [fixed]
tx-vlan-stag-hw-insert: off [fixed]
rx-vlan-stag-hw-parse: off [fixed]
rx-vlan-stag-filter: off [fixed]
l2-fwd-offload: off [fixed]
hw-tc-offload: off [fixed]
esp-hw-offload: off [fixed]
esp-tx-csum-hw-offload: off [fixed]
rx-udp_tunnel-port-offload: off [fixed]
tls-hw-tx-offload: off [fixed]
tls-hw-rx-offload: off [fixed]
rx-gro-hw: off [fixed]
tls-hw-record: off [fixed]

Protože tato sekce pojednává o skutečné fyzické a linkové vrstvě, je ve virtuálním prostředí význam a obsah výpisů uvedených příkazů omezen. Proto jsou příklady také zachyceny z fyzické síťové karty.

Tyto parametry nás v tomto kurzu tolik zajímat nebudou, přesto jimi začínáme, protože v reálném nasazení na serverech jsou důležité pro vyladění výkonu a případné řešení problémů pod zátěží. Konkrétní použití však silně závisí na konkrétním čipu a ovladači síťového rozhraní a na případu užití.