Połącznie TCP/IP i kompresja

Adam Jurkiewicz a.jurkiewicz w herc.com.pl
Pią, 2 Kwi 2004, 10:39:53 CEST


Dnia czwartek 01 kwiecień 2004 17:03, Andrzej Zawadzki napisał:
> Witam.
> Czy jest możliwość w połączeniu point-to-point permanentna kompresja
> pakietów (coś jak w PPP)?

Oto coś, co dostałem od znajomka - autorstwa Sergiusza
| Sergiusz Rozanski                           
| e-mail  serek w jola.from.pl                  
Mam nadzieję, że się nie obrazi, że przytaczam tu jego info jako pomoc dla 
innych.

===[tu zaczyna sie cytowany artykuł] ====
isdn_raw.txt


Aby wykonac polacznie na rawip trzeba spelnic kilka warunkow:
1. stale ip
2. staly nr telefonu
3. wspolpraca z providerem

Takie polaczenie jest mozliwe z tego co wiem tylko jako linux-linux,
dlatego niewielu dostawcow sie na nie decyduje. Jest ono idealne w modnych
ostatnio centreksach
Co mamy w zamian:
1. Prosta konfiguracja
2. Automatyczne dodawanie kanalow B
3. Odchudzone jadro
4. Brak dodatkowych procesow w systemie
5. Blyskawiczny connect - brak handshejkingu
6. Security wg. identyfikacji numery telefonu
7. Proste sterowanie 

Co tracimy:
1. Kompresje

Jak to zrobic:
1. Kompilujemy jadro jak dla ISDN tylko bez ppp, kompresorow itp. 
   tylko sama karta isdn
2. Ladujemy karte - modprobe typ, protocol irq, io i _koniecznie_ id ! 
   Jesli nie podamy id to nie skonfigurujemy lacza (u mnie jest to id=Hisx)
3. Karta musi sie prawidlowo zainstalowac i uruchomic
4. Instalujemy isdn4linux, a na malych dyskach mozemy je odrazu wywalic. 
   Zostawiamy tylko 1 plik isdnctrl i urzadzenia w /dev/
5. Piszemy plik w /etc/init.d po obu stronach prawie identyczny:

file: isdnstart
---------------------------------------------------------
#!/bin/sh
isdnctrl reset force
#
isdnctrl verbose 0
#
isdnctrl addif ippp0
isdnctrl bind ippp0 Hisx,0
isdnctrl busreject Hisx,0 off
isdnctrl addphone ippp0 in <nr telefonu zdalnego>
isdnctrl addphone ippp0 out <nr telefonu zdalnego>
isdnctrl eaz ippp0 <lokalny nr telefonu lub 4 ostatnie cyfry trzeba probowac>                                                           
isdnctrl
isdnctrl huptimeout ippp0 300
isdnctrl ihup ippp0 off
isdnctrl chargehup ippp0 off
isdnctrl secure ippp0 off
isdnctrl callback ippp0 off
isdnctrl encap ippp0 rawip
isdnctrl l2_prot ippp0 hdlc
isdnctrl l3_prot ippp0 trans
isdnctrl sdelay ippp0 10
isdnctrl trigger ippp0 4000                                                                                                             

isdnctrl addslave ippp0 ippp1
isdnctrl bind ippp1 Hisx,1
isdnctrl busreject Hisx,1 off
isdnctrl addphone ippp1 out <zdalny>
isdnctrl addphone ippp1 in <zdalny>
isdnctrl eaz ippp1 <lokalny>
isdnctrl huptimeout ippp1 300
isdnctrl ihup ippp1 off
isdnctrl chargehup ippp1 off
isdnctrl secure ippp1 off
isdnctrl callback ippp1 off
isdnctrl encap ippp1 rawip
isdnctrl l2_prot ippp1 hdlc
isdnctrl l3_prot ippp1 trans
isdnctrl sdelay ippp1 1
isdnctrl trigger ippp1 4000
ifconfig ippp0 <lokalne ip> pointopoint <zdalne ip>
# linia ponizej tylko na koncu lacza u providera zaremowac
route add default gw <zdalny ip> ippp0
------------------------------------------------------

potem robimy link w katalogu /etc/rcS.d o nazwie S99isdn do tego pliku i
dajemy mu prawa: 700 root root
Po uruchomieniu tych plikow wystarczy 1 ping w obojetnie ktora strone i
komputery sie polacza. Jesli bandwith wzrosnie powyzej 4000cps polaczy sie
2 kanal. Jesli lacze nie bedzie wykozystywane to polaczenia sie po kilku
minutach pozamykaja. 
Lacze zestwia ten komputer ktory ma cokolwiek do nadania. Polaczenie
zastawiane jest w ulamku sekundy takze nie ma znaczenia czy jestesmy
polaczeni na stale czy nie. 
Sterowanie reczne:
isdnctrl system off - komputery sie rozlaczaja
isdnctrl system on  - zezwala na zestawianie polaczeni
Kontrola transmisji:
imon - stan lacza 'ncurses'
imontty - terminal
isdnctrl verbose 4 - w logu 'kernel' mamy ilosc wyslanych bajtow w ciagu
sekundy z podzialem na interface (smieci w logu takze wlaczac tylko dla
testow). Wylaczenie to 'isdnctrl verbose 0' oczywiscie. 

Zauwarzone bledy:
Czasami zdarza sie ze po rozlaczeniu drugiego kanalu przez pierwszy
interface nie leci nic mimo fizycznego polaczenia. Co dziwne nie jest
to regula tylko przypadek! 
Pomaga na to skrypcik w cronie:

---------------------------------------------------------------
if ping -c 1 <zdalny ip> >/dev/null 2>/dev/null
then
date ;
else
date ;
echo "error: hangup pppd"
/usr/sbin/isdnctrl hangup ippp0
fi
----------------------------------------------------------------

Robie nim przy okazji log lacza
Szybkosc transmisji (glownie ftp):
1B bezposrednio host-w-host: 6kcps
2B bezposrednio host-w-host: 10kcps
te 2 wyniki zmierzylem, choc moga byc zaklucone (u mnie normalnie chodzi
na tym poczta named www itp.)
Polska srednio 7-9kcps. 
Swiat heheheh roznie :)))

====[koniec]===

-- 
Adam Jurkiewicz : Inżynier Serwisu Linux
HERC : Linuksowe Systemy Sprzedaży Detalicznej
[ http://www.linux.herc.com.pl ]
Numer Gadu-Gadu : 302315   



Więcej informacji o liście dyskusyjnej pld-users-pl