Spis treści

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