Dydaktyka:
Feedback
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:
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 |
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:
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:
Tworzenie wirtualnego interface'u:
ip link
ip link add dev <nazwa> type bond help
ip link add dev bond0 type bond
ip link add dev bond0 type bond mode balance-alb xmit_hash_policy layer3+4 miimon 100
ip link del bond0
ip -d link
/ ip --details link
modprobe bonding mode=balance-alb xmit_hash_policy=layer3+4 miimon=100
modprobe -r bonding
Wyświetlanie ustawień i stanu:
cat /proc/net/bonding/bond0
/sys/class/net/bond0/bonding
Dodawanie/usuwanie łącz:
ip link
ip l set dev eth0 master bond0
ip l set dev eth0 nomaster
ifenslave
ifenslave bond0 eth0 eth1
ifenslave -d bond0 eth0 eth1
https://www.kernel.org/doc/Documentation/networking/bonding.txt
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:
ip link add dev bond0 type bond mode 802.3ad
ip link add dev bond0 type bond mode 802.3ad xmit_hash_policy layer2+3 miimon 100 ad_select bandwidth lacp_rate fast
modprobe bonding mode=802.3ad
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