====== Warstwa łącza danych ====== ===== Warstwa łącza danych ===== Pozwala wysłać **ramki** do konkretnego urządzenia (lub urządzeń) do których nadawca jest połączony bezpośrednio (na warstwie fizycznej). Dla typowych rozwiązań w sieciach komputerowych podzielona na: * MAC ("dolna" część warstwy 2) http://en.wikipedia.org/wiki/Media_access_control * wprowadza adresację * obsługuje wielodostęp - rozwiązywanie konfliktów * eliminuje zniekształcone ramki (liczy [[http://pl.wikipedia.org/wiki/Cykliczny_kod_nadmiarowy|CRC]]) * implementacja zależna od warstwy fizycznej; w ethernecie opisana w [[http://en.wikipedia.org/wiki/IEEE_802.3|IEEE 802.3]] * LLC ("górna" część warstwy 2) http://en.wikipedia.org/wiki/Logical_link_control * przekazuje informacje o protokole warstwy wyższej * jeśli trzeba, dba o multileksację ramek * może korygować błędy i kontrolować przepływ * zdefiniowane w [[http://en.wikipedia.org/wiki/IEEE_802.2|IEEE 802.2]] * jednolita dla wielu rozwiązań na warstwie fizycznej Adres MAC - zapis, budowa adresu, OUI http://en.wikipedia.org/wiki/MAC_address \\ Założenie unikalności adresów   [[http://standards.ieee.org/develop/regauth/oui/|"przydział" adresów]]   [[http://standards.ieee.org/develop/regauth/oui/oui.txt|zajęte adresy]] \\ Adresy multicastowe (pierwszy oktet nieparzysty) i rozgłoszeniowe (broadcast, ff:ff:ff:ff:ff:ff) \\ IPv4 multicast: ''01:00:5e:…''   IPv6 multicast: ''33:33:…'' W Linuksie do zarządzania warstwą łącza danych (data //link// layer) służy komenda ''ifconfig'' (i inne) / ''ip link'' * odczyt adresu MAC: ''ifconfig eth0''   /   '' ip link'' * zmiana adresu MAC: ''ifconfig eth0 hw ether 12:34:56:78:90:ab''   /   '' ip link set dev eth0 address 12:34:56:78:90:ab'' ++++ Przykłady poleceń wyświetlających adres MAC: |
/ # ip l
2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP mode DEFAULT group default qlen 1000
    link/ether 5c:f9:dd:78:3d:88 brd ff:ff:ff:ff:ff:ff
3: p4p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 90:e2:ba:1a:4d:48 brd ff:ff:ff:ff:ff:ff
5: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 08:ed:b9:4c:31:8b brd ff:ff:ff:ff:ff:ff

/ # ifconfig -a
em1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 5c:f9:dd:78:3d:88  txqueuelen 1000  (Ethernet)
        RX packets 2702  bytes 355076 (346.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 523  bytes 53668 (52.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 20  memory 0xddf00000-ddf20000  

p4p1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.2  netmask 255.255.255.0  broadcast 0.0.0.0
        inet6 fe80::92e2:baff:fe1a:4d48  prefixlen 64  scopeid 0x20<link>
        ether 90:e2:ba:1a:4d:48  txqueuelen 1000  (Ethernet)
        RX packets 293  bytes 60122 (58.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 286  bytes 26478 (25.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0xdd420000-dd43ffff  

wlan0: flags=4098<BROADCAST,MULTICAST>  mtu 1500
        ether 08:ed:b9:4c:31:8b  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
++++ Domena rozgłoszeniowa http://en.wikipedia.org/wiki/Broadcast_domain [[http://soisk.info/index.php?title=Domena_kolizyjna_i_rozg%C5%82oszeniowa|[1]]] [[http://study-ccna.com/collision-broadcast-domain|[2]]] Urządzenia warstwy łącza danych to **mostki** (bridge) i **przełączniki** (switch) ===== Ethernet ===== * IEEE 802.3 * Ethernet obejmuje zarówno warstwę fizyczną jak i łącza danych * http://pl.wikipedia.org/wiki/Ethernet * Budowa ramki http://en.wikipedia.org/wiki/Ethernet_frame * Ramki Ethernet II / IEEE 802.2 LLC * Pole długość ramki / typ ramki, http://en.wikipedia.org/wiki/EtherType ===== Przełącznik (switch) ===== Wybór portu, tablica adresów MAC, pamięć CAM http://en.wikipedia.org/wiki/Content-addressable_memory Pętle \\ Protokoły drzewa rozpinającego: http://en.wikipedia.org/wiki/Spanning_tree_protocol (STP, RSTP, PVSTP (cisco), MSTP) Cut-through / fragment-free / store-and-forward Przełączniki zarządzalne / wielowarstwowe http://en.wikipedia.org/wiki/Multilayer_switch ===== Mierzenie prędkości ===== * Do mierzenia prędkości na jednym urządzeniu musi działać program czekający na połączenie (serwer), na drugim należy uruchomić program który łączy się z serwerem i mierzy prędkość (klient) * [[https://github.com/HewlettPackard/netperf|netperf]] [[https://hewlettpackard.github.io/netperf/doc/netperf.html|[1]]] * serwer: ''netserver -N'' * klient: ''netperf -H '' * [[https://iperf.fr/|iperf]] * serwer: ''iperf3 -s'' * klient: ''iperf3 -c '' Opcje programu netperf: * ''netperf -h'' – pomoc ogólna * ''netperf [-t {TCP_STREAM|…}] -- -h'' – pomoc dla wybranego testu * ''netperf -D //1// …'' – wyniki pośrednie co 1 sekundę * ''netperf -l //15// …'' – test o długości 15 sekund * ''netperf -t UDP_STREAM …'' – test wykorzystujący protokół UDP * ''netperf -t UDP_STREAM -H -- -m //1400//'' – test "dużych" wiadomości * ''netperf -t UDP_STREAM -H -- -m //22//'' – test "małych" wiadomości Instalacja w/w programów w OpenSUSE: ''zypper install netperf'' / iperf: ''zypper install iperf'' Przepustowość: bandwidth ≥ throughput ≥ goodput [[https://en.wikipedia.org/wiki/Goodput|[1]]] \\ Jednostki bps i pps ===== Slajdy ===== ''[[http://www.cs.put.poznan.pl/mlibuda/urzadzenia.pdf|Urządzenia sieciowe technologii Ethernet]]'' \\