AX.25 protokoll
Az AX.25 a legelterjedtebb amatőrrádiós adatátviteli csomagkapcsolt (packet) protokoll. A protokoll részletes angol nyelvű leírása a http://www.tapr.org/pdf/AX25.2.2.pdf címen érhető el. Alábbiakban ennek legfontosabb elemei kerülnek ismertetésre.
Tartalomjegyzék
Története
- Az AX.25 protokoll múltja 1978-ra tekint vissza.
- Az AX.25 protokoll 2.0-ás változatát 1984-ben adták ki. Ez a verzió terjedt el nagyon széles körben.
- 1997-ben apró finomításokkal kijött az AX.25 protokoll 2.2-es változata.
Mi az AX.25 protokoll
Az AX.25 protokoll adatkapcsolati réteg protokollja. Az alábbi ábra szemlélteti, hogy hol helyezkedik el.
4. Alkalmazások (alkalmazási réteg) | Mai napig formázó nyelv mentesen, egyszerű szöveges alapon ragadt. |
3. Útvonalválasztás vagy egyszerű üzenetszórás (Hálózati réteg) | Néha az alkalmazáson keresztüli CALL-al van helyettesítve. |
2. AX.25 (adatkapcsolati réteg) | Feladata a adatok keretezése és hibás adatátvitel esetén az alacsonyszintű keretismétlés megvalósítása. Érdekes, hogy a DAMA protokoll nem lett szerves része az AX.25 protokollnak. |
1. modulátor (Fizikai réteg) | 1984 óta változatlanul az 1200 bps-es AFSK a legelterjedtebb. De létezik FSK és QAM modulátor is. Utóbbi sajnos igen ritkán látható. |
AX.25 keretezés
Az AX.25 protokoll bitbeszúrásos technikát használ, a keretező bitminta 0111 1110, amely a csomag elején és végén egyaránt megtalálható. Azonban belátható, hogy az adatcsomagban is előfordulhat 0x7e értékű byte, ami problémát okozhatna. Ezért adó oldalon 5 db egymás utáni 1-es érték után egy "parazita" 0 értéket szúrnak be. Vétel során 5 db egymás után következő 1-es utáni karaktert egyszerűen eldobja a vevő.
A bitszintű modulátornál mellesleg a jelszint helyett állandó jel illetve a jelátmenet jelzi az 0-át illetve az 1 értéket. Ezt NRZI kódolűsnak nevezik. Előnye: polaritásfüggetlen. Továbbá a statikus/dinamikus megkülönböztetés sokkal célszerűbb megoldás kommunikációs rendszerek esetén. Az NRZI kódolás alkalmazásával sem az AX.25 specifikáció foglalkozik.
Az AX.25 csomagot felépítése alább kerül ismertetésre. A legelső (baloldali) byte legalsó (0.) bitjével kezdődik az adat továbbítása.
Adatcsomag felépítése
Az adatcsomag általánosságban az alábbiak szerint épül fel:
Keretezés | Címzés | Vezérlő | Csomagtípus függő rész | Ellenőrző kód | Keretezés |
---|---|---|---|---|---|
01111110 | 112/224(560)bit | 8/16 bit | (PID,) adat | 16bit | 01111110 |
- Keretezés (Flag, jelzőzászló): A keret elejét és végét jelző bitsorozat, 1 byte hosszú és mindig 0111 1110 alakú. Két egymást követő keret használhat közös flag-et, ebben az esetben ugyanaz a flag jelzi az első keret végét és a következő keret elejét.
- Címzés (Address): Itt található a címzett és a feladó továbbá a közbenső ismétlőállomások hívójelei. A hívójel 6 karakteres + fél byte-ban egy úgynevezett SSID, amely 0..15-ig terjedő értékkel 16 független csatlakozást tesz lehetővé ugyanazon címzett és feladó között. Bővebben erről a Címzés részben.
- Vezérlő (Control): A vezérlő mező határozza meg, hogy milyen típusú keretről van szó (I, U, S - lásd következő részben), illetve sorszámozott keretek esetén a keret sorszámát és még egyéb információkat, pl Poll (kérés) illetve Final (a pollra adott válasz).
- Kerettípusfüggő rész: Lásd alább a kerettípusok ismertetésénél.
- Keret ellenőrző kód (FCS Frame-Check Sequence): A HDLC ajánlása alapján számolt sorozat, amelyet mind az adó és a vevő is előállít annak érdekében, hogy megállapítsa vajon az adott keretben előfordult-e hiba.
Címzés mező kódolása és működése
A címzés mező definiálja mind a címzett és a feladó címét. Ezen túlmenően lehetőséget biztosítottak arra, hogy közvetítő állomáson keresztül legyen címezve az adatcsomag. Ekkor a címzett és a feladó hívójelén kívül a közvetítőállomások is szerepelnek a címzés mezőben. A válaszcsomag szintén ezeken a közvetítőállomásokon keresztül tér vissza, csak fordított sorrendben. Eredetileg 8 közbenső állomást engedett meg az AX.25-2.0 protokoll leírás, azonban az AX.25 2.2-es protokoll leírása 2-ben maximalizálta a közbeékelhető közvetítőállomások számát.
A címzett, a feladó illetve a közbenső állomás címe mindig 7 byte hosszú, ahol a első 6 byte hívójel nagybetűvel írva. 6-nál rövidebb hívójel esetén a maradék helyre szóköz kerül. Mindez 1 bittel balra tolva lett belekódolva a csomagba. A hetedik byte alsó 1..4 bitje az ún. SSID (Secondary Station Identifier), azaz másodlagos állomás azonosító amely ugyanazon hívójel 0..15-ig számozott al-állomásait jelöli. Ez azt jelenti, hogy egyazon címzett egyazon feladó közt 16 db virtuális kapcsolat építhető fel egyidejűleg egymástól függetlenül.
Példa egy címmezőre:
Címzett | Feladó | |
---|---|---|
Logikailag: | HA5OB-0 | HG2ECZ-4 |
Csomagba kódolva: | 0x90 0x82 0x6a 0x9e 0x84 0xE0 | 0x90 0x8e 0x64 0x8a 0x86 0xb4 0x69 |
Mint a fenti táblázatból látszik, a hívójel minden bitje eggyel balra van csúsztatva. Az SSID-t hordozó byte azonban érdekesebb.
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|---|---|---|---|---|---|---|
C | R R | SSID | 0 | ||||
H | R R | SSID | 1 |
Ahol:
- C: parancs vagy válasz (command/response) - ha a legalsó bit 0
- H: ha a legalsó bit 1, akkor a H bitet az ismétlőállomás állítja 1-re a saját hívójelénél, amikor megismételte.
- R: fentartott jövőbeli fejlesztésre (reserved), a két bit értéke 11.
- SSID: itt van az SSID 0000 (= 0) ... 1111 (= 15) értékkel.
- Ha nincs átjátszás, akkor a feladó mező legalsó bitje 1 értékű.
Az átjátszó tehát csak a H bitet állítja 1-re, illetve a CRC-t számolja újra. Az utolsó átjátszót az átjátszó címének SSID-jében az 0001-es érték jelöli.
Vezérlő byte felépítése
Vezérlő típusa | vezérlő bitjei | |||||||
---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
I keret | N(R) | P | N(S) | 0 | ||||
S keret | N(R) | P/F | S S | 0 1 | ||||
U keret | M M M | P/F | M M | 1 1 |
A táblázatból látható, hogy 3 féle kerettípus létezik. A típusokat alább a Kerettípusok részben lesznek részletesen ismertetve. Azonban figyeljük meg, hogy a legalsó illetve a legalsó 2 bit jelzi a kerettípust.
Az AX.25 érdekessége, hogy I illetve S keretek esetén van alacsony szintű sorszámozás és I csomag továbbítása esetén alacsonyszintű ismétléskérés. Az I keret esetén távolról vett( N(R) ) és küldendő ( N(S) ) keretsorszám egyaránt megtalálható, míg szolgálati keret esetén csak távolról vett ( N(R) ) van. Itt a parancsduplikáció elkerülésére szolgál. Az I keret esetében azonban az átviteli késleltetésből eredő lassulást hivatott csökkenteni, ugyanis maximum 8 keret lehet a „levegőben”, amelyre csoportos nyugta is adható. Igen ritka esetben a 8 helyett 128 keretenként nyugtázható „ablakot” használnak, amit az AX.25 protokoll szintén leír.
- S keret esetén 2 bit (S S) jelzi a parancsot, amely lehet
- RR: Receive Ready, azaz minden oké, a vevő vételkész. Ez egyben az adott keretszámra minden oké nyugta is.
- RNR: Receive Not Ready, azaz a vevő (TNC) vételi puffere teli, ne küldjön az adó több adatot
- REJ: Reject: Ez a keretsorszámig már nem érkezett meg rendesen, csak az előző 1-8. Innentől tehát ismétlést kér a vevő.
- SREJ: Selective Reject: Egy adott sorszámú keret ismétlésének kérelme.
- U keret esetén 5 bitnyi (MMM MM) vezérlőkód lehetséges, amely az alábbi fontos dolgokat szállítja:
- UI: Sorszámozatlan keret (Unnumbered Information) - hasonló a TCP/IP UDP csomagjához. Nyugtázatlan böfögött csomag, amely vagy megérkezik, vagy nem. Erre a csomagtípusra épít az APRS.
- SABM: I csomaghoz csatlakozáskérelem és csomagszámláló nullázás (Set Async Ballanced Mode). Létezik SABME parancs is, amely esetén a csatlakozás nem 3 bites keretszámlálóval, hanem 7 bites keretszámlálóval történik. Ez ritkábban használt mód.
- DISC: lecsatlakozás kérelem (Disconnect). Kapcsolat lebontásakor küldi a terminálszoftver.
- DM: (Disconnect Mode) - disconnect parancs hatására ez a válasz.
- UA: Nyugta (Unnumbered Acknowledge) - általános nyugta. Normál esetben ezek a nyugták röpködnek a számítógépek közt az I csomagok mellett.
Poll/Final bit szerepe az előzőekben lett ismertetve. Érdekességként megemlítendő, hogy Disconnect Mode esetén a SABME és UI csomagok kivételével mindegyikre "1" értékkel válaszol, jelezve hogy félig lecsatlakozott állapotban van a kliens.
Kerettípusok
Az AX.25 három féle csomagtípust ún. keretet (frame) definiál:
- I (Information) információs keret; A TCP/IP TCP csomagjához hasonlítható, de keret szinten.
- S (Supervisory) felügyelő keret; Adatot nem szállít (nulla byte-os az info mezője), csak RR, RNR, REJ, SREJ jelzésre használatos.
- U (Unnumbered) sorszámozatlan keret. A TCP/IP UDP csomagjához hasonlítható, de keret szinten.
Keretezés | Címzés | Vezérlő | Adat | Ellenőrző kód | Keretezés |
01111110 | 112/224(560)bit | 8/16bit | N*8bit | 16bit | 01111110 |
Keretezés | Címzés | Vezérlő | PID | Adat | Ellenörző kód | Keretezés |
01111110 | 112/224(560)bit | 8/16bit | 8bit | N*8bit | 16bit | 01111110 |
- PID - Protokoll azonosító (Protocol Identifier): A 3-as rétegben használt protokollt azonosítja. Lásd később a PID leírásánál.
- Adat (Info, információ): Maga a hasznos információ, amit át akarunk vinni. Maximum 256 byte hosszú, és a byte egész számú többszöröse lehet. Ez a két feltétel a bit beszúrás előtti állapotban érvényes.
PID
A protokoll azonosító írja le, hogy az adat (info) rész milyen jellegű információt szállít. Ennek értékei közül néhány fontosabb:
- 0x06: tömörített TCP/IP csomag
- 0x08: szétdarabolt csomag. Amennyiben nem fért bele az összetartozó információs blokk egyetlen adatcsomagba.
- 0xc4: link quality protokoll - linkek adatveszteségeinek monitorozásához, útvonalválasztás meghatározásához.
- 0xce: FlexNet
- 0xcf: NET/ROM
- 0xcd: ARPA ARP (tömörítetlen)
- 0xcc: ARPA IP (tömörítetlen)
- 0xf0: nincs Layer 3 protokoll implementálva. Ez csak szöveges terminálra menő adat.