AR2C-LP-PROXY

NAZWA
SKŁADNIA
OPIS
KONTROLA DOSTĘPU
PRZYKŁADY
ROZSZERZENIA PROTOKOŁU
SZEREGOWANIE ZADAŃ
USTERKI
UWAGI
AUTHOR
SEE ALSO

NAZWA

ar2c−lp−proxy − serwer proxy dla protokołu AR-2c LP

SKŁADNIA

ar2c−lp−proxy

[opcje]

OPIS

ar2c−lp−proxy jest wielopołączeniowym serwerem proxy z cache dla protokołu AR-2c LP.

Obecna wersja implementuje wszystkie podstawowe komendy. Wśród podstawowych komend ustawianie czasu jest domyślnie zablokowane.

Domyślnie ar2c−lp−proxy używa standardowego wejścia i standardowego wyjścia do komunikacji.

Opcje:
−−cache−dir=DIRECTORY

Określa katalog używany jako cache na dysku. Katalog musi istnieć.

−−client−nodelay

używa TCP_NODELAY przy połączeniach z klientami,

−−diskcache−compress=LEVEL

Powoduje użycie kompresji w cache na dysku. Wartość LEVEL określa poziom kompresji w zakresie 1 do 9, gdzie większa wartość oznacza wolniejszą kompresję.

−−semi−coherent

Powoduje działanie jako cache w którym średzone jest tylko powstawanie nowych minut w rejestratorze. Usunięte na rejestratorze minuty mogą być cały czas widzane w cache. Jest to domyślny tryb.

−−coherent

Powoduje działanie jako spójny cache. Zmiany na rejestratorze są śledzone i są nanoszone na cache. Dodanie lub usunięcie warstwy wiąże się praktycznie z usunięciem wszystkich danych w cache.

Opcja ta powinna być używana w przypadku, gdy klienci nieświadomie używają tego cache. Dla lokalnego cache - tylko by przyspieszyć przeglądanie Loggerem opcja ta nie jest najlepsza.

Opcja ta wymaga implementacji przez serwer komendy 0xe1, która nie jest wymagana przez protokół Loggera.

−−non−coherent

Powoduje działanie jako niespójny cache. Zmiany na rejestratorze nie koniecznie muszą być widoczne w cache. Jest to cachowanie domyślne.

−−fenable=CECHA

powoduje włączenie jakiejś cechy protokołu Loggera. Zobacz sekcję ROZSZERZENIA PROTOKOŁU.

−−fdisable=CECHA

powoduje wyłącznie jakiejś cechy protokołu Loggera. Zobacz sekcję ROZSZERZENIA PROTOKOŁU.

−−lifetime=LIFETIME

Czas życia elementów w cache na dysku w sekundach.

−−nodelay

używa TCP_NODELAY do połączenia z serwerem.

−−prefetch=LEVEL

włącza wcześniejsze pobieranie danych. LEVEL określa jak szybko mają być pobierane dane (obecnie ogranicza to ilość równoczesnych komend). Wymaga użycia opcji −−coherent.

−−reliable−link

zakłada że połączenie z serwerem jest niezawodne.

−−unreliable−link

zakłada że połączenie z serwerem jest zawodne. Powoduje potwierdzanie danych w cache. Dopiero trzecie żądanie jakiejś minuty może być z cache.

−−sched=SCHED

powoduje użycie schedulera SCHED. Domyślnym jest fifo. Zobacz sekcję SZEREGOWANIE ZADAŃ.

−−sched_opts=OPT

określa opcje schedulera.

−−syslog

używa sysloga jako wyjście z informacjami i błędami.

−3

udostępnia 3-bajtową wersję komendy 0xa5.

−4

udostępnia 4-bajtową wersję komendy 0xa5.

−a, −−acl plik

Powoduje wczytanie pliku z listą kontroli dostępu (ACL). Format jest opisany w punkcie KONTROLA DOSTĘPU.

−b, −−bitrate szybkość

Opcja ta powoduje wybranie docelowej prędkości transmisji na porcie szeregowym. Obecnie opcja ta działa tylko na urządzeniach. Jeżeli podstawowa prędkość transmisji jest różna od tej wartości ar2c−lp−proxy poprosi drugą stronę o zmianę prędkości transmisji na ta wartość oraz dokona wszystkich kluczowych operacji w tej szybkości transmisji.

Szybkość transmisji jest oczywiście w bps.

−−bbitrate szybkość

Ustawia podstawowa szybkość transmisji. Jest ona ustawiana w celu pierwszego połączenia z rejestratorem. Jeżeli nie ustawiono rbitrate to ta wartość jest automatycznie traktowana także jako szybkość na którą należy przełączyć rejestrator po zakończeniu działania.

Szybkość transmisji jest oczywiście w bps.

−−rbitrate szybkość

Ustawia powrotną prędkość transmisji. Jest ona ustawiana po zakończeniu korzystania z rejestratora.

Szybkość transmisji jest oczywiście w bps.

−c, −−ht_size rozmiar

Zmienia rozmiar tablicy używanej do szukania w cache. Domyślnie 31713.

−d, −−device nazwa

Do komunikacji z rejestratorem używa następującego urządzenia. Może być to również socket lub fifo znajdujące się na filesystemie. Może nawet być to zwykły plik.

−e, −−max_entries rozmiar

Zmienia maksymalną ilość wpisów w cache. Domyślnie 32768. Jest to dość duża wartość (prawie 23 dni). Jest ona dostosowana do rejestratorów AR−2c. W przypadku rejestratorów z dużymi minutami wartość ta powinna być zmniejszona (dla minut o rozmiarze 10kB występujących w AR-3c taki cache zajmuje 320MB w pamięci).

−f, −−fifo nazwa

Do komunikacji z rejestratorem używa podwójnego fifo. Podana tu nazwa jest nazwa pliku używanego do komunikacji do rejestratora. Należy użyć także opcji -d by określić skąd mają być dane czytane.

−h, −−help

Pokazuje informacje o wywołaniu.

−l, −−lport port

Zmienia port na którym nasłuchuje ar2c−lp−proxy na ‘port’.

−s, −−host nazwa

Opcja ta ustawia nazwę hosta z którym program ma się połączyć. Do tego celu wykorzystywany jest protokół TCP/IP. Domyślnie jest to localhost.

−m, −−model model

Ustawia model rejestratora. Domyślnie 2.

−n, −−conn_limit ilość

Ostawia limit połączeń. Domyślnie 20.

−p, −−port numer

Opcja ta ustawia numer portu z którym program ma się połączyć. Domyślnie jest to port 2000. Jest to domyślny port zarówno dla AR−3c jak i dla programu RejSerw.

−−pipe

Tworzy proces zajmujący się odbieraniem danych, który następnie wysyła te dane do socketu (dawniej był to pipe) z którego czyta dopiero program główny. Tryb ten jest workaroundem dla problemów wydajnościowych związanych z używaniem ar2c−lp−proxy na serialu pod Cygwin.

−q, −−quiet

Zmniejsza gadatliwość.

−r, −−rlimit limit

Zmienia limit ilości żądań równocześnie realizowanych przez jednego klienta. Domyślnie 8. W praktyce ilość realizowanych żądań może być wyższa od tego limitu (maksymalnie o 16 w obecnej implementacji, o 4 żądania minuty więcej). Większa wartość daje wyższą wydajność dla jednego klienta, ale zwiększa opóźnienie. Jeżeli u klientów występują timeouty należy zmniejszyć ten limit.

−−stats_interval wartość

Zmienia wartość określającą do ile sekund mają być wyświetlane statystyki. Wartość 0 wyłącza je.

−−timesync

Włącza synchronizację czasu serwera za pomocą protokołu Loggera. Jeżeli różnica pomiędzy czasem lokalnym, a czasem serwera jest większa jak próg wykonywana jest zmiana czasu serwera. Domyślnie próg wynosi 10 sekund w przypadku, gdy czas lokalny jest większy jak czas serwera lub 30 sekund w przeciwnym przypadku.

−v, −−verbose

Zwiększa gadatliwość.

−V, −−version

Wyświetla wersję ar2c−lp−proxy na standardowe wyjście oraz kończy pracę.

KONTROLA DOSTĘPU

ar2c−lp−proxy potrafi kontrolować dostęp na poziomie adresów IP. Służy do tego plik z listą ładowany za pomocą opcji ‘-a’. Jeżeli opcja ta nie została użyta lub plik jest pusty każdy ma prawo dostępu. Jeżeli plik jest niepusty domyślnym zachowaniem jest odrzucenie połączenia.

W pliku z listą dostępu każda linia traktowany jest traktowana jako osobny wpis o następującej strukturze:

allow/deny ip[/maska]

Maska jest pojedynczą liczbą określającą ilość jedynek na początku w masce. Określenie maski jest opcjonalne (domyślnie 32).

Allow powoduje natychmiastowe dopuszczenie klienta, a deny jego odrzucenie. Lista jest przeglądana kolejno.

Przykładowa lista może wyglądać następująco:

−−− cut here −−−
deny 192.168.2.100
allow 192.168.2.0/24
allow 192.168.10.1/32
allow 172.16.4.0/16
−−− cut here −−−

PRZYKŁADY

ar2c−lp−proxy może służyć do udostępnienia rejestratora AR-2c/AR-2c+/AR-3c połączonego przez łącze szeregowe. Można to zrobić poprzez:

$ ar2c−lp−proxy -d /dev/ttyS0 -b 9600

W przypadku rejestratora AR-3c możemy użyć większej prędkości transmisji:

$ ar2c−lp−proxy -d /dev/ttyS0 -b 115200

W przypadku rejestratora AR-2c pracującego z inną prędkością transmisji należy używać --bbitrate zamiast -b:

$ ar2c−lp−proxy -d /dev/ttyS0 --bbitrate 19200

W przypadku komunikacji z rejestratorem po TCP/IP przeważnie wywołanie wygląda mniej więcej tak:

$ ar2c−lp−proxy -s 192.168.2.100 -p 2000

ROZSZERZENIA PROTOKOŁU

Protokół Loggera ma bardzo wiele rozszerzeń. ar2c−lp−proxy daje możliwość wyboru, które z nich mają być włączone.

Z powodu tego, że ustawianie czasu jest bardzo niebezpieczne ar2c−lp−proxy daje także możliwość włączenia lub wyłączenie tej funkcji. Domyślnie jest ona wyłączona.

Obsługiwane rozszerzenia:

setdate − ustawienie czasu. Domyślnie wyłączone. lpinfo − rozszerzenie lpinfo. Domyślnie włączone.

Włączać lub wyłączać rozszerzenia można za pomocą opcji −−fenable oraz −−fdisable

SZEREGOWANIE ZADAŃ

Domyślnie ar2c−lp−proxy stosuje domyślną kolejkę libar2clp−cli którą jest fifo.

Kolejna ta w przypadku wielu klientów jest bardzo niesprawiedliwa oraz powoduje duże opóźnienia. Zalecana kolejką jest rr.

Kolejka rr przyjmuje następujące opcje: max_reqs:max_reqs_pc:max_creqs[:idle_limit].

max_reqs określa maksymalna ilość żądań w kolejce. max_reqs_pc określa maksymalną ilość żądań dla pojedynczego klienta. max_creqs określa maksymalną ilość żądań aktualnie wykonywanych. idle_limit określa maksymalną ilość żądań aktualnie wykonywanych przy szeregowaniu żądanie o priorytecie IDLE. Domyślne parametry to 1000:16:1:1.

Rejestratory AR-2c działają dobrze, gdy realizują równocześnie dwie komendy. Jedną aktualnie wykonują, a na poprzednią mogą w tym samym czasie wysyłać odpowiedź.

Rejestratory AR-3c z powodu dostępu przez dużo wydajniejszą sieć wymagają równoczesnej realizacji większej ilości komend.

USTERKI

Na cygwin ar2c−lp−proxy działa bardzo wolno, gdy używa komunikacji po serialu. Opcja --pipe została wprowadzona by poprawić tą sytuację.

W przypadku Windows 98 opcja --pipe nie działa i należy odpalić serwer proxy dwa razy. Jeden korzystający z seriala i drugi korzystający z pierwszego.

UWAGI

ar2c−lp−proxy naprawdę cachuje odpowiedzi! Odpowiedzi na pytania z cache są naprawdę bardzo szybkie. Jeżeli twierdzisz inaczej to używasz zapewne Loggera 4.x (sprawdzane na 4.1-0.11). Zainwestuj w Loggera 3.x i zobacz jak cache działa naprawdę. Jeżeli chcesz tylko ściągać dane powinieneś zainteresować się programem mklaf z pakietu ar2c−lp−utils.

Wydajność na cygwin jest dużo mniejsza jak na GNU/Linux.

ar2c−lp−proxy nie jest odporny na wymianę rejestratora w trakcie pracy. Jak na razie nie jest to traktowane jako jakaś poważna wada.

AUTHOR

Krzysztof Mazur

SEE ALSO

ar2cinfo(1), mklaf(1),