przejście do zawartości
Jan Kończak
Narzędzia użytkownika
Zaloguj
Narzędzia witryny
Narzędzia
Pokaż stronę
Poprzednie wersje
Odnośniki
Ostatnie zmiany
Menadżer multimediów
Indeks
Zaloguj
Ostatnie zmiany
Menadżer multimediów
Indeks
Jesteś tutaj:
start
»
sk1
»
bridge_bonding
sk1:bridge_bonding
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
===== 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: * tunele * maszyny wirtualne (np. qemu) <html><small></html> Komendy: * ''ip tuntap add dev <ifname> [mode {tun|tap}] [user <username>]'' * ''tunctl [-n|-t] [-u <user>] [-t <ifname>]'' Interfejs programistyczny: * https://www.kernel.org/doc/Documentation/networking/tuntap.txt <html></small></html> ===== 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: * zwiększenia wydajności, lub * uodpornienia na awarie 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: * agregacja łączy nie stwarza jednego łącza o większej przepustowości (tylko pozwala użyć wielu łączy naraz) * w wielu rozwiązaniach ruch przychodzący wchodzi tylko jednym łączem * sprawdza się przy połączeniach z wieloma komputerami ==== Linux bonding driver ==== Kilka trybów pracy (http://en.wikipedia.org/wiki/Link_aggregation), przykładowo: * balance-rr, * active-backup * balance-alb 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: - stwórz urządzenie typu bond - dodaj do niego łącza - skonfiguruj urządzenie typu bond (włącz, nadaj adres etc.) Tworzenie wirtualnego interface'u: * Używając ''ip link'' * wyświetlenie pomocy: ''ip link add dev <nazwa> type bond help'' * dodanie (gorszy przykład): ''ip link add dev bond0 type bond'' * dodanie (lepszy przykład):\\ ''ip link add dev bond0 type bond mode balance-alb xmit_hash_policy layer3+4 miimon 100'' * usunięcie (przykład): ''ip link del bond0'' * wyświetlanie szczegółów w ip link: ''ip -d link'' / ''ip --details link'' * Używając tradycyjnych mechanizmów: * załadowanie modułu jądra systemu operacyjnego, w momencie załadowania dodawane jest urządzenie:\\ ''modprobe bonding mode=balance-alb xmit_hash_policy=layer3+4 miimon=100'' * usunięcie modułu: ''modprobe -r bonding'' * <html><small></html> automatyzacja (1) dodanie aliasu modułu (2) ustawienie opcji dla aliasu (3) [opcjonalnie] ładowanie przy starcie modułu przez nazwę aliasu https://wiki.archlinux.org/index.php/kernel_modules <html></small></html> Wyświetlanie ustawień i stanu: * ''cat /proc/net/bonding/bond0'' * katalog ''/sys/class/net/bond0/bonding'' Dodawanie/usuwanie łącz: * używając ''ip link'' * dodanie: ''ip l set dev eth0 master bond0'' * usunięcie: ''ip l set dev eth0 nomaster'' * używając ''ifenslave'' * dodanie: ''ifenslave bond0 eth0 eth1'' * usuniięcie: ''ifenslave -d bond0 eth0 eth1'' 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: * ''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: <code> 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 </code> 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''
sk1/bridge_bonding.txt
· ostatnio zmienione: 2018/11/18 13:23 przez
jkonczak
Narzędzia strony
Pokaż stronę
Poprzednie wersje
Odnośniki
Złóż / rozłóż wszystko
Do góry