AX.25 protokoll

A HamWiki wikiből
(AX.25 szócikkből átirányítva)

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.

Története

  • Az AX.25 protokoll múltja 1978-ra tekint vissza. A szabványos X.25 csomagkapcsolt hálózati protokoll alapján fejlesztették ki (Amateur X.25).
  • 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. Az AX.25 a CRC-CCITT hibadetektáló kódot fűzi a keret végéhez.

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
    1. RR: Receive Ready, azaz minden oké, a vevő vételkész. Ez egyben az adott keretszámra minden oké nyugta is.
    2. RNR: Receive Not Ready, azaz a vevő (TNC) vételi puffere teli, ne küldjön az adó több adatot
    3. 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ő.
    4. 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:
    1. 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.
    2. 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.
    3. DISC: lecsatlakozás kérelem (Disconnect). Kapcsolat lebontásakor küldi a terminálszoftver.
    4. DM: (Disconnect Mode) - disconnect parancs hatására ez a válasz.
    5. 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:

  1. I (Information) információs keret; A TCP/IP TCP csomagjához hasonlítható, de keret szinten.
  2. 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.
  3. U (Unnumbered) sorszámozatlan keret. A TCP/IP UDP csomagjához hasonlítható, de keret szinten. Ugyanakkor ez a csomag készíti elő az I kerettípust, azaz U keretben közlekedik a SABM (csatlakozás kérelem) és a DISC (disconnect = lebontás kérelem) parancs is.
S és U keret felépítése
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
I keret felépítése
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.