Table of Contents

TUN / TAP

TUN i TAP to rozwiązania w Linuksie które pozwalają zastąpić protokoły warstwy łącza danych i fizycznej programem
https://en.wikipedia.org/wiki/TUN/TAP

Porównaj:
'' '' Interface sieciowy mający z jednego końca system operacyjny, z drugiego – kabel / fale radiowe.
TUN lub TAP Interface sieciowy mający z jednego końca system operacyjny, z drugiego – program.

TAP działa na warstwie łącza danych (program dostaje i generuje ramki ethernetowe)
TUN działa bezpośrednio na warstwie sieci (program dostaje i generuje pakiety IP)

Zastosowania:

Komendy:

  • ip tuntap add dev <ifname> [mode {tun|tap}] [user <username>]
  • tunctl [-n|-t] [-u <user>] [-t <ifname>]

Interfejs programistyczny:

Mostki

System Linux może emulować zwykły przełącznik sieciowy (switch).

W tym celu należy stworzyć wirtualne urządzenie - mostek (bridge). (Mostek to switch na 2 porty.) Wirtualne mostki pozwalają na podpięcie dowolnej liczby urządzeń.

W efekcie kilka kart w systemie Linux zostanie zastąpione jedną - tzn, karty podpięte do wirtualnego mostka nie mogą mieć adresu IP.

Mostek działa na warstwie 2, więc nie potrzebuje adresu IP. Dodanie adresu IP do mostka jest równoznaczne z podłączeniem komputera do przełącznika.

iproute2 bridge-utils
stworzenie mostka ip link add <nazwa> type bridge
// ip link add br0 type bridge //
brctl addbr <nazwa>
// brctl addbr br0 //
usunięcie mostka ip link del dev br0 brctl delbr br0
włączenie mostka ip link set dev br0 up ifconfig br0 up
dodanie adresu
do mostka
ip addr add <adres>/<maska> br0 ifconfig br0 <adres> [netmask <maska>]
dodanie
urządzenia
do mostka
ip link set dev <urzadzenie> master <mostek>
// ip link set dev eth0 master br0 //
brctl addif <mostek> <urzadzenie>
// brctl addif br0 eth0 //
usunięcie
urządzenia
z mostka
ip link set dev <urzadzenie> nomaster
// ip link set dev eth0 nomaster //
brctl delif <mostek> <urzadzenie>
// brctl delif br0 eth0 //

Agregacja łączy

Jeśli mamy więcej kart w 1 komputerze i więcej kabli w ścianach, to może by je użyć do:

Podstawowy cel - użyć (połączyć, zagregować, ang. aggregate) wielu połączeń (łącz, ang. link) tak, by reszta konfiguracji pozostała bez zmian – w szczególności nie dodaje się kolejnych adresów IP.

Dużo pomysłów jak to zrobić, część własnościowych:
http://en.wikipedia.org/wiki/Link_aggregation#Proprietary_link_aggregation

Czym jest a czym nie jest agregacja łączy:

Linux bonding driver

Kilka trybów pracy (http://en.wikipedia.org/wiki/Link_aggregation), przykładowo:

Jak zbalansować ruch wychodzący? Łatwo. Wiadomości z różnych połączeń mogą iść innym łączem.
Jak zbalansować ruch przychodzący? Trudno. Dlaczego? Patrz: protokół ARP.

Adaptive load balancing - oszukuje urządzenia w sieci podając każdemu inny (jeden z kilku) MAC jako swój.

Kroku do ustawienia agregacji pod Linuksem:

  1. stwórz urządzenie typu bond
  2. dodaj do niego łącza
  3. skonfiguruj urządzenie typu bond (włącz, nadaj adres etc.)

Tworzenie wirtualnego interface'u:

Wyświetlanie ustawień i stanu:

Dodawanie/usuwanie łącz:

https://www.kernel.org/doc/Documentation/networking/bonding.txt

LACP / 802.3ad / EtherChannel

EtherChannel - pierwszy pomysł agregacji portów, przejęty i rozwijany przez CISCO

802.3ad - przestarzały standard powstały w dużej mierze na EtherChannel, zastąpiony przez IEEE 802.1AX-2008

LACP - protokół realizujący EtherChannel/802.3ad - automatycznie "dogadujący" agregację

Do zadziałania obie strony muszą być skonfigurowane

Ze strony Linuksa - tryb 802.3ad, np:

Ze strony switcha CISCO, przykładowa konfiguracja:

Switch> enable
Switch# conf t
Switch(config)# interface Port-channel 1                       pozwala ustawiać parametry całego kanału   
Switch(config-if)# exit
Switch(config)# interface range GigabitEthernet 0/1-2          zmienia ustawienia wszystkich interfejsów z zakresu           
Switch(config-if-range)# channel-group 1 mode active           dodaje łącze do grupy; mode active wymusi wysyłanie wiadomości protokołu LACP   
Switch(config-if-range)# exit
Switch(config-if-range)# interface range GigabitEthernet 0/3-4      
Switch(config-if-range)# channel-group 2 mode active
Switch(config-if-range)# exit
Switch(config)# interface range GigabitEthernet 0/1-4
Switch(config-if-range)# no channel-group                      usunie interfejsy z kanału 

Uwaga! Tutaj nie uda się uzyskać lepszej prędkości między dwoma stacjami, potrzeba trzech do testów.
netperf -H 10.0.0.2 & netperf -H 10.0.0.3