• Nie Znaleziono Wyników

Wykorzystanie notacji ASN.1 do kodowania danych sygnalizacyjnych w sieciach ISDN

N/A
N/A
Protected

Academic year: 2022

Share "Wykorzystanie notacji ASN.1 do kodowania danych sygnalizacyjnych w sieciach ISDN"

Copied!
22
0
0

Pełen tekst

(1)

ZESZYTY NAUKOW E POLITECHNIKI ŚLĄSKIEJ Seria: ELEKTRONIKA z. 12

2000 Nr kol. 1492

Jerzy WOJTUSZEK

Politechnika Śląska, Instytut Elektroniki

WYKORZYSTANIE NOTACJI A SN .l DO KODOWANIA DANYCH SYGNALIZACYJNYCH W SIECIACH ISDN

Streszczenie. Scharakteryzowano abstrakcyjną syntaktykę A SN .l oraz reguły kodo­

wania danych. Omówiono sposób określania struktury danych dla usług dodatkowych w sieciach ISDN. Przedstawiono przykład kodowania komponentu (jednostki danych proto- kołowych).

APPLICATION OF A S N .l NOTATION TO CODING OF SIGNALLING DATA IN ISDN NETWORKS

Summary. The ASN.l abstract syntax and rules o f data coding are characterized. The method o f defining structure o f data for supplementary services in ISDN networks is di­

scussed. An example o f component (protocol data unit) encoding is presented.

1. Wprowadzenie

Realizacja protokołów telekomunikacyjnych polega na przesyłaniu bloków danych zwanych jednostkam i danych protokołowych (Protocol Data Unit - PDU). Ważnym elemen­

tem specyfikacji każdego protokołu jest określenie struktury (formatu) poszczególnych PDU wykorzystywanych w tym protokole. W tradycyjnych metodach definiowania formatu PDU określa się zwykle znaczenie kolejnych oktetów lub bitów tworzących PDU. Używa się do tego celu rysunków podobnych do rys.l wspomaganych stosownym tekstem.

Pewną w adą tradycyjnych metod definiowania struktur PDU jest to, że jednocześnie definiowane są w nich typy danych tworzących PDU (np. liczby całkowite, łańcuchy znaków, itp.) oraz sposoby kodowania tych danych. W niektórych sytuacjach korzystne jest bowiem określanie budowy PDU jedynie na poziomie typów danych wchodzących w skład PDU (mogą to być typy o złożonej strukturze) bez określania sposobu kodowania tych danych

(2)

podczas przesyłania, czyli bez określania postaci transferowej danych. Potrzeba taka pojawia się np. podczas specyfikowania protokołów warstwy aplikacji [1]. Przyjmuje się wówczas, że postać transferowa danych zostanie wybrana jako jedna z wielu możliwych przez warstwę prezentacji na zasadzie dwustronnych negocjacji. Zasady kodowania danych na styku między warstwą aplikacji i prezentacji m ogą być wtedy zależne od specyfiki konkretnego systemu - m ogą się one różnić po stronie nadawczej i odbiorczej. Z przedstawionych rozważań wynika potrzeba poszukiwania nowej metody opisu formatu danych przesyłanych w sieciach teleko­

munikacyjnych. Metoda taka powinna rozdzielać opis na poziomie typów danych i opis zasad kodowania.

Prezentacja struktury przesyłanych danych na poziomie typów danych nazywana jest abstrakcyjną syntaktyką (syntaktyka abstrahująca od kodowania). Najbardziej znaczącym przykładem takiej syntaktyki jest notacja ASN.l (Abstract Syntax Notation One) przedsta­

wiona w standardzie X.208 [2]. Dla notacji tej opracowano standard X.209 [3], w którym przedstawiono sposoby kodowania poszczególnych typów danych. Zasady kodowania okre­

ślone w standardzie X.209 należy traktować jako jedne z wielu możliwych dla notacji ASN.l Notacja A SN .l oraz reguły kodowania określone w standardzie X.209 znalazły zasto­

sowanie m.in. w sieciach ISDN, gdzie wykorzystane są do opisu struktury danych sygnaliza­

cyjnych związanych z realizacją tzw. usług dodatkowych (funkcja warstwy aplikacji). W chwili obecnej dla sieci ISDN zdefiniowano kilkanaście takich usług, a ich przykładami mo­

gą być [4,5,6,12]:

- User-to-User Signalling (UUS) - przesyłanie danych między użytkownikami za pomocą wiadomości sygnalizacyjnych przesyłanych w kanale D (za darmo),

- Advice o f Charge (AOC) - informowanie użytkownika o taryfie dla zestawianego połącze­

nia oraz przekazywanie informacji o opłacie - w trakcie trwania połączenia i po jego zakoń­

czeniu,

- Completion o f Calls to Busy Subscriber (CCBS) - automatyczne zestawianie połączenia z wcześniej zajętym abonentem.

ISDN-owskie zasady opisu i kodowania danych związanych z usługami dodatkowymi przyjęte zostały w telefonii komórkowej GSM oraz w systemie łączności bezprzewodowej DECT. Zestaw usług dodatkowych oraz procedury ich realizacji są tam również wzorowane na sieciach ISDN.

Dla poszczególnych usług dodatkowych w sieci ISDN istnieją oddzielne standardy ETSI. Każdy z tych standardów zawiera rozdział, w którym za pomocą notacji ASN.l opisa­

na jest struktura danych sygnalizacyjnych (sterujących) specyficznych dla danej usługi do­

datkowej. Prawidłowa interpretacja tych opisów wymaga skojarzenia ze sobą kilku standar­

dów CCITT (ITU) i ETSI pochodzących z różnych okresów (co najmniej standardy wymie­

nione w spisie literatury). Standardy te nie zawsze w sposób jawny odwołują się do siebie (względnie odwołują się za pomocą notacji ASN. 1), co utrudnia ich studiowanie czytelnikom nie zajmującym się wcżeśniej omawianą dziedziną. Odczuwa się brak publikacji ujmujących

(3)

Wykorzystanie notacji A SN .l do kodowania. 265

w sposób syntetyczny problemy konkretnych zastosowań notacji A SN .l. Niniejszy artykuł jest próbą zapełnienia wspomnianej luki publikacyjnej w odniesieniu do zagadnień związa­

nych z wkorzystaniem notacji ASN.l do definiowania danych sygnalizacyjnych przesyłanych w sieciach ISDN w ramach procedur realizujących usługi dodatkowe.

2. Podstawowe zasady realizacji usług dodatkowych w sieciach ISDN

W łączach abonenckich sieci ISDN wszystkie dane sygnalizacyjne przesyłane są w kanale D wyodrębnionym na zasadzie podziału czasu i m ają postać wiadomości [7,8,9,12].

Wiadomości te przesyłane są w polu informacyjnym ramek protokołu warstwy drugiej, tj.

protokołu LAPD. Wiadomość składa się z nagłówka określającego m.in. typ tej wiadomości oraz z pewnej liczby (rzadko kiedy więcej niż 5) tzw. elementów informacyjnych zawierają­

cych właściwe dane sygnalizacyjne. Standard [9] definiuje 35 rodzajów elementów informa­

cyjnych dla wiadomości przesyłających dane sygnalizacyjne. Z punktu widzenia realizacji usług dodatkowych zasadnicze znaczenie ma element informacyjny typu FACILITY. Ele­

ment informacyjny FACILITY pojawia się najczęściej w wiadomości również nazywającej się FACILITY, ale może być on umieszczany także w innego rodzaju wiadomościach.

Dla każdej usługi dodatkowej określony jest w odpowiednim standardzie protokół przesyłania danych sygnalizacyjnych polegający na wymianie pomiędzy obiema stronami łącza abonenckiego jednostek danych protokołowych zwanych komponentami. Komponenty te przesyłane są w polu Komponent elementu informacyjnego FACILITY (rys. 1). W sieciach ISDN notacja A SN .l dotyczy głównie struktury komponentów przesyłanych za pomocą ele­

mentów informacyjnych FACILITY.

Każdej usłudze dodatkowej odpowiada zestaw elementarnych operacji. Dla każdej z tych operacji zdefiniowany jest z kolei komponent Invoke i ewentualnie komponenty Return result i Return error [11,13], Zdefiniowany jest również komponent typu Reject, którego struktura nie jest zależna od rodzaju operacji.

Każda elementarna operacja związana z realizacją określonej usługi dodatkowej ini­

cjowana jest przez jedną ze stron (abonent lub sieć) wysłaniem komponentu typu Invoke, na co zazwyczaj strona przeciwna odpowiada komponentem Return result, Return error lub Re­

ject.

(4)

8 7 6 5 1 4 1 3 1 2 1 1

0 0 0 1 1 1 0 0

Identyfikator elementu informacyjnego długość dalszej części

1 0 0 1 0 0 0 1

ext. Zapas dyskryminator usługi = supplementary service

pole Komponent

Rys. 1. Budowa elementu informacyjnego FAC1L1TY Fig. 1. The structure o f the FACILITY information element

3. Charakterystyka notacji A SN .l

3.1. Zasady ogólne

Idea notacji ASN .l polega na tym, że jednostka danych protokołowych (PDU, kom­

ponent) traktowana jest jako pewien typ danych skomponowany według określonych reguł (np. sekwencja) z danych prostszego typu. Dane te znowu muszą być dekomponowane na dane jeszcze prostszego typu, aż do sprowadzenia wszystkich danych do typów prostych (np.

liczby określonego rodzaju).

Standard X.208 definiuje kilkanaście typów danych, przy czym część z nich to typy proste, natomiast reszta to typy złożone komponowane z typów prostych. Dla każdego z po­

wyższych typów określono sposób zapisywania wartości.

Nazwy typów rozpoczynają się zawsze od dużej litery, przy czym nazwy typów zdefi­

niowanych w standardzie X.208 składają się z samych dużych liter. Nazwy typów czasami pojawiają się w zapisach zwanych „typami nazwanymi” (NamedType) o postaci

identyfikator Typ

Identyfikator rozpoczyriany jest zawsze od małej litery (w identyfikatorach i nazwach typów dopuszczalny jest znak „minus”). Często w praktyce nazwy identyfikatora i Typu różnią się tylko „rozmiarem” pierwszej litery (identyfikator - mała, Typ - duża). Identyfikator może być np. nazwą pola PDU, w którym przesyła się dane typu „Typ”. Zapis składający się tylko z nazwy typu (bez identyfikatora) też zaliczany jest do kategorii „typ nazwany”. Typom na­

zwanym odpowiadają „wartości nazwane” (NamedYalue) zapisywane w formie

(5)

Wykorzystanie notacji A SN .l do kodowania.. 267

identyfikator Wartość

Każdemu typowi danych odpowiada etykieta (tag) zastępująca podczas transferu na­

zwę typu. Etykieta składa się z klasy i numeru określającego typ w obrębie klasy. Rozróżnia­

ne są cztery klasy etykiet: universal - dla typów zdefiniowanych w standardzie X.208, appli­

cation - typy zdefiniowane w innych standardach ISO lub ITU, private - typy zdefiniowane przez inne niż ISO lub ITU organizacje, context-specific - etykiety interpretowane w zależno­

ści od kontekstu (znaczenie wartości etykiety zależne od miejsca, w którym jej użyto). W przypadku usług dodatkowych sieci ISDN praktyczne znaczenie m ają tylko klasy universal i context-specific. W tabeli 1 przedstawiono etykiety dla wybranych typów danych zdefinio­

wanych w X.20 8.

Tabela 1 Etykiety dla-wybranych typów danych zdefiniowanych w X.208

Etykieta (Klasa numer) Typ

UNIVERSAL 1 BOOLEAN

UNIVERSAL 2 INTEGER

UNIVERSAL 5 NULL

UNIVERSAL 6 OBJECT IDENTIFIER

UNIVERSAL 16 SEQUENCE i SEQUENCE OF

Zapisy A SN .l tw orzą bloki zwane modułami ^często ujmowane w ramkę). Moduł ASN.l zawiera kolejno:

- nazwę modułu - jej druga część (o ile istnieje) zapisywana jako wartość typu OBJECT IDENTIFIER,

- słow o DEFINITIONS,

- zapis informujący o domyślnym sposobie traktowania etykiet typów bazowych w typach etykietowanych podczas transferu danych (EXPLICIT TAGS - etykietowanie jawne lub IMPLICIT TAGS - etykietowanie niejawne, czyli możliwość pominięcia etykiety podczas transferu) - brak tego zapisu oznacza etykietowanie jawne,

-znaki

- słow o BEGIN,

- wykaz symboli eksportowanych do innych modułów rozpoczynający się od słowa EXPORTS,

- wykaz symboli importowanych z innych modułów rozpoczynający się od słowa IMPORTS;

nazwa modułu, z ktorego importowane są symbole poprzedzona jest słowem FROM, - definicje typów i definicje wartości (część zasadnicza),

- słow o END.

(6)

Definicjom typów i wartości odpowiadają zapisy zwane produkcjami o postaci:

Nazwa_nowego_typu ::= Typ_pierwotny lub nazwa wartości T y p w arto ści ::= Wartość

Typ pierwotny może być typem prostym lub złożonym. Etykieta typu pierwotnego przecho­

dzi na nowy typ.

W zapisach ASN. 1 można używać komentarzy rozpoczynających się od dwóch zna­

ków „minus”.

3.2. Typy danych

Poniżej omówione zostaną wybrane typy danych zdefiniowane w standardzie X.208.

Zmienne dwuwartościowe - BOOLEAN

Wartości zapisywane sąjako TRUE i FALSE.

Liczby całkowite - INTEGER

W praktyce najczęściej korzysta się z typów będących podzbiorami liczb całkowitych zapisywanych jako

INTEGER {listaw arto ści}

lub INTEGER(wartość_minimalna.. w artośćm aksy malna)

lub rNTEGER{lista_wartości}(wartość_minimalna..wartość_maksymalna) Dwa ostatnie zapisy należy traktować jako podtypy (Subtype) typu INTEGER. Każda z wartości występująca na liście wartości zazwyczaj ma postać

identyfikator( wartość)

Brzmienie identyfikatora zwykle kojarzy się ze znaczeniem określonej wartości. Przykłady:

INTEGER {service 1 (1 ),service2(2),service3(3)}

typ składający się z trzech liczb całkowitych o wartościach 1, 2 i 3 i o identyfikatorach od­

powiednio service 1, service2, service3.

INTEGER (-32768..32767)

typ składający się z kolejnych liczb całkowitych od -32768 do 32767.

INTEGER {service 1 (1 ),service2(2),service3(3)} (1 ..3)

jest to zapis takiego samego typu jak w pierwszym przykładzie, lecz rozszerzony (nadmiaro­

wo) o zakres liczb tworzących typ.

Wartości tpu INTEGER zapisuje się dziesiętnie z pomijaniem zer prowadzących.

Typ NULL

Jest to specyficzny typ zawierający tylko jedną wartość zapisywaną również jako NULL. Praktycznie rzecz biorąc typ ten pojawia się zwykle jako składnik typu złożonego CHOICE, gdzie wartość NULL jest wybierana jako wartość typu CHOICE wtedy, gdy żaden inny składnik nie może zostać wybrany.

(7)

Wykorzystanie notacji ASN .l do kodowania. 269

Identyfikator obiektu - OBJECT IDENTIFIER Podstawową form ą zapisu wartości jest {lista_składników}

Elementy listy składników rozdzielane są spacjami lub znakami nowego wiersza i najczęściej m ają jedną z następujących postaci: identyfikator, liczba lub identyfikator(liczba).

Wartości omawianego typu określają pewną docelową wartość liczbową poprzedzoną danymi identyfikującymi organizację, która wartości tej przypisała jakieś znaczenie oraz dokument, w którym tego dokonano. Dopuszczalne wartości dwóch pierwszych składników (początko­

we gałęzie drzewa identyfikatorów) określone są w standardzie X.208. Struktura dalszej czę­

ści listy składników definiowana jest przez dokumenty wydawane przez odpowiednie organi­

zacje standaryzacyjne (np. [10]), przy czym ostatnim składnikem jest zawsze docelowa war­

tość liczbowa. Każdemu składnikowi odpowiada liczba, która może być określona jawnie w zapisie składnika bądź też niejawnie za pomocą identyfikatora. W drugim z wymienionych przypadków liczby odpowiadające identyfikatorom określone są w odpowiednich standar­

dach.

W przypadku zapisu wartości typu OBJECT IDENTIFIER zdefiniowanych przez standardy ETSI [10] pełna lista składników składa się z sześciu pozycji. Przykładem takiego zapisu może być:

{ccitt identified-organization etsi(0) 359 operations-and-errors(l) 4}

Pierwsze trzy składniki m ają zawsze jednakową postać i określają ETSI jako organizację, która opracowała standard: Zgodnie z standardem X.208 pierwszemu składnikowi (ccitt) od­

powiada liczba 0, natomiast drugiemu (identified-organization) - liczba 4. Liczba odpowia­

dająca trzeciemu składnikowi (etsi(0)) podana jest jawnie i wynosi 0. Dalsze składniki ozna­

czają: końcówkę numeru standardu ETSI (359 - w celu uzyskania pełnego numeru należy dodać 300 000), moduł A SN .l w tym standardzie definiujący wartość docelową ( operations- and-errors(l)) i docelową wartość liczbową (4). Przedstawiony wyżej przykładowy zapis jest równoważny poniższemu zapisowi, w którym wszystkie składniki reprezentowane są przez liczby:

{0 4 0 359 1 4}

Inną często spotykaną formą zapisu wartości omawianego typu jest {nazwa_innej_wartości_typu_OBJECTJDENTIFIER listaskładników }

W takim przypadku początkowe składniki listy składników zastąpione są przez nazwę warto­

ści typu O B JE C T ID E N T IFIE R zdefiniowaną w innym miejscu modułu. Poniżej przedsta­

wiono przykład takigo zapisu.

Definicja wartości cCBSOID typu OBJECT IDENTIFIER:

cCBSOID OBJECT IDENTIFIER ::= {ccitt identified-organization etsi(0) 359 operations-and-errors( 1)}

(8)

Pełny zapis wartości docelowej ma wówczas postać:

{cCBSOID 4}

i jest równoważny zapisom omówionym wcześniej.

Sekwencja - SEQUENCE

Omawiany typ jest typem złożonym będącym uporządkowaną listą innych typów, przy czym niektóre z tych typów m ogą być opcjonalne - ich wartości m ogą być pomijane w czasie transferu. Zapis typu SEQUENCE ma postać:

SEQUENCE{lista_elementów}

W najczęstszych przypadkach składnikami listy elementów są typy nazwane, przy czym typy opcjonalne m ają dodane słowo OPTIONAL. Przykładem zapisu typu SEQUENCE może być:

SEQUENCE{

pierwszy INTEGER,

drugi BOOLEAN OPTIONAL,

trzeci OBJECT IDENTIFIER}

Niekiedy elementy listy są tzw. typami etykietowanymi (omówionymi dalej). Stosowanie tych typów umożliwia jednoznaczne rozpoznanie poszczególnych składników w sytuacji, gdy lista elementów zawiera składniki opcjonalne.

Zapis wartości typu SEQUENCE ma postać

{lista_wartości_elementów}

gdzie każdy składnik listy wartości elementów jest wartością nazwaną.

Sekwencja jednakowych typów - SEQUENCE OF Typ

Powyższy typ jest sekwencją, której składniki są jednakowego typu (typu „Typ”).

Często stosowany jest podtyp omawianego typu, dla którego określona jest minimalna i mak­

symalna liczba składników. Zapis tego podtypu ma postać:

SEQUENCE SIZE (min_składników..max_składników) OF Typ Zapisem wartości jest

{lista_wartości_elementów}

Wybór - CHOICE

Omawiany typ jest typem złożonym, będącym listą innych typów, przy czym jego wartością jest wartość jednego ze składników tej listy. Zapis typu CHOICE ma postać:

CHOICE{lista_altematywnych_typów}

(9)

Wykorzystanie notacji A SN .l do kodowania.. 271

Elementami listy alternatywnych typów są typy nazwane, przy czym typy te powinny się różnić etykietami. Z tego powodu często składnikami listy są typy etykietowane. Etykietę typu CHOICE należy traktować jak zmienną - jest ona równa etykiecie wybranego w danym przypadku składnika. Zapis wartości typu CHOICE ma postać wartości nazwanej wybranego składnika.

Typ etykietowany - tagged type

Powyższy typ występuje jako składnik typów złożonych (np. SEQUENCE, CHOICE). Jego stosowanie ma na celu jednoznaczne rozróżnienie składników w tych typach.

Typ etykietowany powstaje z innego typu (typ bazowy) poprzez przypisanie mu nowej ety­

kiety. Zapis omawianego typu ma postać:

[Klasa numer] Typ_bazowy

lub [Klasa numer] IMPLICIT T y pbazow y lub [Klasa numer] EXPLICIT Typ bazowy

gdzie „Klasa numer” jest now ą etykietą. W praktyce zapis klasy etykiety w nawiasach pro­

stokątnych jest zwykle pomijany, co odpowiada klasie context-specific. Słowo IMPLICIT oznacza, że etykieta typu bazowego nie musi być przesyłana podczas transferu danych (ety­

kietowanie niejawne), natomiast słowo EXPLICIT - że etykieta typu bazowego powinna być przesyłana (etykietowanie jawne). W przypadku braku powyższych słów (zapis pierwszy) o sposobie etykietowania podczas transferu decyduje informacja zawarta w nagłówku modułu ASN.l, przy czym dla typów CHOICE i ANY zawsze stosowane jest etykietowanie jawne niezależnie od tej informacji. Etykietowanie niejawne zmniejsza rozmiary postaci transfero­

wej danych.

Typ określony pośrednio - ANY DEFINED BY identyfikator

Powyższy typ może być używany tylko jako składnik typu SEQUENCE lub SET i tylko wtedy, gdy „identyfikator” pojawia się w typie nazwanym będącym innym nieopcjo- nalnym składnikiem tego samego typu SEQUENCE lub SET. W takim przypadku słowo ANY zostaje zastąpione typem wynikającym z wartości składnika określonego przez „identy­

fikator”. Sposób przypisania wartościom tego składnika typów zastępujących ANY określony jest za pomocą komentarza lub specjalnego dokumentu. Etykieta typu jest nieokreślona.

Przykładowo, omawiany typ może być użyty w następujący sposób:

SEQUENCE]

value INTEGER,

parameter ANY DEFINED BY value}

W takim przypadku typ odpowiadający identyfikatorowi „parameter” będzie wynikał z war­

tości składnika „value INTEGER” .

(10)

3.3. Makronotacje

Dodatkowym mechanizmem służącym do definiowania nowych typów danych i zapi­

sywania wartości tych typów są makronotacje. Podobnie jak w językach programowania ma- kronotacja jest pewnym zapisem tworzonym na bazie makrodefinicji. Makrodefinicja określa:

- sposób tworzenia zapisu definiującego nowy typ (notacja nowego typu), - sposób zapisywania wartości tego typu (notacja wartości nowego typu),

- wartości standardowego typu odpowiadające wartościom nowego typu (wartości zwracane).

Przykładowo [2], za pomocą makronotacji można zdefiniować nowe typy o postaci PAIR

TYPEX=xxx TYPEY =yyy z zapisami wartości w formie

(X=uuu, Y=vvv)

i wartościami zwracanymi standardowego typu S E Q U E N C E {xxx^}

gdzie xxx, yyy - stndardowe typy A SN .l, uuu, vvv - wartości typu odpowiednio xxx i yyy.

Słowo PAIR jest nazwą makronotacj i (nazwy makronotacji pisane są dużymi literami).

Odwołania do makronotacji można podzielić na notacje nowych typów i notacje war­

tości nowych typów. Notacja nowego typu składa się z nazwy makronotacji, po której nastę­

puje zapis składający się z tekstów stałych (np. TYPEX=, TYPEY=) i parametrów (np. xxx, yyy). Teksty stałe zwykle pełnią rolę nazw parametrów. W przypadku makronotacji PAIR

przykładem notacji nowego typu może być PAIR

TYPEX=INTEGER TYPEY=BOOLEAN

Dla tak zdefiniowanego nowego typu notacja wartości może mieć postać:

(X=3,Y=TRUE)

Standardowy typ wartości zwracanych nie musi mieć wyraźnego związku z notacją nowego typu. W rozpatrywanym przykładzie związek taki raczej istnieje - makronotacja PAIR jest właściwie inną formą zapisu typu SEQUENCE. Może się jednak zdarzyć, że no­

wemu typowi o dużej złożoności odpowiadać będą wartości np. typu INTEGER.

Notacja nowego typu może być umieszczana w miejscach, gdzie normalnie umiesz­

czane są nazwy typów standardowych, a więc np. w zapisach określających zawartości okre­

(11)

Wykorzystanie notacji ASN .l do kodowania.. 273

ślonych pól komponentu. W takich przypadkach w polu komponentu przesyłana będzie war­

tość typu standardowego zwracana przez nowy typ.

4. Zasady kodowania danych określone w standardzie X.209

W najczęstszych przypadkach każdy typ danych (prosty lub złożony) kodowany jest w sposób przedstawiony na rys.2 i w tabeli 2. Jeżeli kodowany typ jest typem złożonym (np.

SEQUENCE), to w polu „zawartość” znajdują się obszary o takiej samej strukturze odpowia­

dające poszczególnym składnikom tego typu. W przypadku typu prostego pole „zawartość”

określa wartość tego typu (np. jest zapisem liczby). Wartość zero bitu 8 oktetu 2 oznacza, że długość pola „zawartość” zapisana jest w jednym oktecie, tj. na bitach 1 + 7 oktetu 2 (wartość jeden oznacza zapis za pom ocą większej liczby oktetów).

8 7 6 5 | 4 | 3 | 2 | 1 oktet

Klasa etykiety P/C numer etykiety 1

0 długość dalszej części (zawartości) w oktetach 2

3 zawartość

P/C: 0 - typ prosty (primitive), 1 - typ złożony (constructed),

Rys. 2. Kodowanie pojedynczego typu danych Fig. 2. Coding o f a single data type

Tabela 2 Kodowanie klasy etykiety

Klasa Bit 8 Bit 7

Universal 0 0

Application 0 1

Context-specific 1 0

Private 1 1

Dla większości typów reguły kodowania wartości są proste i zgodne z intuicją. Wy­

jątkiem jest kodowanie wartości typu OBJECT IDENTIFIER oraz typu etykietowanego i typu NULL, które omówione zostanie poniżej.

(12)

W przypadku typu OBJECT IDENTIFIER w polu „zawartość” następują kolejno po sobie zapisy liczb zwanych subidentyfikatorami. Pierwszy subidentyfikator obliczany jest jako (X*40)+Y, gdzie X - wartość pierwszego składnika typu OBJECT IDENTIFIER, Y - wartość drugiego składnika (omawiany typ zawiera zawsze co najmniej dwa składniki, przy czym wartość drugiego składnika jest zawsze mniejsza od 40). Każdy następny subidentyfi­

kator jest równy składnikowi o numerze o jeden wyższym.

Pojedynczy subidentyfikator zależnie od wartości kodowany jest na jednym lub wielu oktetach, przy czym najbardziej znaczący bit wszystkich oktetów z wyjątkiem ostaniego ma wartość jeden. Pozostałe bity powyższych oktetów po połączeniu ze sobą tworzą wartość subidentyfikatora traktowaną jako liczba całkowita bez znaku, przy czym pierwszy oktet za­

wiera najbardziej znaczącą część tej liczby, natomiast ostatni oktet - najmniej znaczącą. Przy­

kładowo wartość

{0 4 0 359 1 4}

będzie reprezentowana przez następującą sekwencję oktetów (zapis szesnastkowy):

04, 00, 82, 6 7 ,0 1 ,0 4

Jeżeli w zapisie A SN .l typu etykietowanego zadeklarowano etykietowanie jawne, to w polu „zawartość” umieszcza się pełny zapis typu bazowego (jak na rys.2). W przeciwnym razie (etykietowanie niejawne) w polu „zawartość” znajduje się tylko „zawartość” typu bazo­

wego - pomija się dwa pierwsze oktety typu bazowego. Jeżeli typ bazowy jest typem złożo­

nym, to w omawianym przypadku bit P/C typu etykietowanego powinien mieć wartość jeden.

W przypadku typu NULL pole „zawartość” jest puste, tzn. długość zawartości okre­

ślona w drugim oktecie wynosi zero.

5. Opis struktury ogólnej komponentów za pomocą notacji A SN .l

Struktura ogólna komponentów (PDU) używanych do realizacji usług dodatkowych w sieciach ISDN przedstawiona została za pomocą notacji ASN.l w tabeli 3 zaczerpniętej z [11]. Zgodnie z tą tabelą 3 (definicja typu Components) i z wcześniejszymi ustaleniami roz­

różniane są cztery rodzaje komponentów: Invoke, Return result, Return error i Reject. Po­

wyższym komponentom odpowiadają typy odpowiednio: InvokeComponent, RetumResult- Component, RetumErrorComponent i RejectComponent. Każdy z wymienionych typów zde­

finiowany jest jako sekwencja danych innych typów. Poszczególne elementy tych sekwencji reprezentują pola komponentu. Postać transferowa komponentu zawierać będzie dodatkowe pole (nagłówek) identyfikujące rodzaj komponentu.

Jak wynika z tabeli 3, komponent Invoke składa się z następujących pól:

invokelD, linked-ID, operation-value, argument.

(13)

Wykorzystanie notacji A SN .l do kodowania. 275

Tabela 3 Struktura k o m p o n e n tó w

Facility-Inform ation-Elem ent-Com ponents {ccitt identified-organization etsi(O) 196 facility-inform ation-elem ent-com ponents(3)}

DEFINITIONS ::=

BEGIN

EXPORTS In vokelD T ype, Components;

IMPORTS O PER A TIO N , ERROR

FROM R em ote-O peration-Notation

(join t-iso-ccitt rem ote-operations(4) notation(O)};

Components ::= CHOICE {

invokeC om p [1] IMPLICIT InvokeCom ponent,

retumR esultCom p [2] IMPLICIT R etum R esultCom ponent, retumErrorComp [3] IMPLICIT RetumErrorComponent, rejectComp [4] IMPLICIT RejectCom ponent}

InvokeComponent ::= SEQ U E N C E {

in vok elD InvokelD T ype,

linked-ID [0] IMPLICIT InvokelD T ype O PTIONAL, operation-value OPERATION,

argument A N Y D EFIN ED BY operation-value OPTION AL}

— A N Y is filled by the single A S N .l data type fo llo w in g the

— keyword A R G U M E N T in the type definition o f a particular

— operation.

InvokelDType ::= INTEGER (-32768..327Ó 7) Retum ResultCom ponent ::= SEQ UENCE {

invok elD InvokelD T ype, S E Q U E N C E {

operation-value OPERATION,

result A N Y DEFIN ED B Y operation-value

— A N Y is filled by the single A S N .l data type follow in g - the keyword RESULT in the type definition o f -- a particular operation.

{O PTIO NAL}

RetumErrorComponent ::= SEQ U E N C E {

invok elD InvokelD T ype, error-value ERROR,

parameter A N Y D EFIN ED B Y error-value OPTION AL}

— A N Y is filled by the single A S N .l data type fo llo w in g the

— keyword PARAM ETER in the type definition o f a particular

— error.

RejectComponent ::= SEQ U E N C E {

invokelD CHOICE { InvokelD T ype, N U L L }, problem CHOICE {

[0] IMPLICIT GeneralProblem, [1] IMPLICIT InvokeProblem, [2] IMPLICIT RetumResuItProblem [3] IMPLICIT RetumErrorProblem}}

(14)

cd. tabeli 3 Struktura k o m p o n e n tó w

GeneralProblem ::= INTEGER { — ROSE-provider detected unrecognizedC om ponent (0),

m istypedC om ponent (1), badlyStructuredComponent (2)}

InvokeProblem ::= INTEGER { — ROSE-user detected - supplementary entity

duplicatelnvocation (0), unrecognizedOperation (1),

m istyped Argument (2), resourceLimitation (3), initiatorReleasing (4), unrecognizedLinkedID (5), linkedR esponseU nexpected (6),

unexpectedChildOperation (7)}

R etum R esultProblem ::= INTEGER { — ROSE-user detected unrecognizedlnvocation (0),

resultR esponseU nexpected (1), m istypedR esult (2)}

RetumErrorProblem ::= INTEGER { — ROSE-user detected

unrecognizedlnvocation (0), errorR esponseUnexpected (1), unrecognizedError (2), unexpectedError (3),

mistypedParameter (4)}

E N D — o f Facility-Inform ation-Elem ent-C om ponents

przy czym pola linked-ID i argument są opcjonalne. W polach invokelD oraz linked-ID prze­

syłane są liczby całkowite z przedziału od -32768 do 32767 (16-bitowe). Pole operation- value zawiera wartość zwracaną przez opisaną dalej makronotację OPERATION. Wartość ta może być typu INTEGER lub OBJECT IDENTIFIER. Struktura pola argument jest za­

leżna od wartości przesyłanej w polu operation-value i odpowiada ona typowi zdefiniowane­

mu po słowie ARGUMENT w odpowiednim odwołaniu do makronotacji OPERATION znaj­

dującym się w module A SN .l określającym typy danych dla poszczególnych operacji kon­

kretnej usługi dodatkowej.

Znaczenie poszczególnych pól komponentu nie odgrywa żadnej roli w opisie struktu­

ry przesyłanych danych, nie mniej wyjaśnimy krótko, że invokelD jest identyfikatorem ini­

cjowanej operacji umożliwiającym skojarzenie żądania z odpowiedzią, linked lD jest identy­

fikatorem wcześniej zainicjowanej operacji, do której nawiązuje aktualnie inicjowana opera­

cja (bardzo rzadko używany), operation-value określa rodzaj operacji, natomiast argument (często najbardziej rozbudowane pole) zawiera parametry inicjowanej operacji.

Komponent Return result tworzą pola:

invokelD, operation-value, result.

przy czym sekwencja operation-value, result jest opcjonalna. Pola invokelD i operation value mają taką samą postać i znaczenie, jak w komponencie Invoke. Struktura pola result, podob­

nie jak dla pola argument komponentu Invoke, jest zależna od wartości przesyłanej w polu operation-value i odpowiada ona typowi zdefiniowanemu po słowie RESULT w odpowied­

(15)

Wykorzystanie notacji A SN .l do kodowania.. 277

nim odwołaniu do makronotacji OPERATION znajdującym się w module A SN .l określają­

cym typy danych dla poszczególnych operacji konkretnej usługi dodatkowej.

Komponent Return error utworzony jest z pól:

invokelD, error-value, parameter.

przy czym pole parameter jest opcjonalne (w praktyce rzadko kiedy występuje). Pole invoke­

lD ma taką sam ą postać i znaczenie jak w poprzednio omówionych komponentach. Pole er­

ror-value zawiera wartość zwracaną przez opisaną dalej makronotację ERROR. Wartość ta może być typu INTEGER lub OBJECT IDENTIFIER. Struktura pola parameter jest zależna od wartości przesyłanej w polu error-value i odpowiada ona typowi zdefiniowanemu po sło­

wie PARAMETER w odpowiednim odwołaniu do makronotacji ERROR znajdującym się w module A SN .l określającym typy danych dla poszczególnych błędów konkretnej usługi do­

datkowej . Pole error-value określa rodzaj błędu, natomiast pole parameter zawiera dodatkowe dane dotyczące błędu.

Komponent Reject zawiera pola:

invokelD, problem.

Pole invokelD może zawierać wartość typu INTEGER (podobnie jak w poprzednich komponentach) lub wartość typu NULL (gdy nie jest możliwe zidentyfikowanie operacji, której dotyczy komponent). W polu problem znajduje się wartość jednego z czterech typów etykietowanych, dla których typem bazowym jest INTEGER etykietowany niejawnie. Ety­

kiety w poszczególnych typach etykietowanych odpowiadają różnym grupom problemów (błędów). Każdy problem reprezentowany jest przez wartość liczbową o identyfikatorze koja­

rzącym się z rodzajem problemu.

6. Definiowanie struktury danych sygnalizacyjnych dla konkretnych usług dodatkowych

Jak już wspomniano, dla każdej usługi dodatkowej określony jest zestaw elementar­

nych operacji. Dla każdej z tych operacji struktura danych sygnalizacyjnych definiowana jest za pom ocą makronotacji OPERATION i ERROR. Makrodefinicje dla powyższych makro­

notacji określone zostały w [13] (można je również znaleźć w [9,11]).

Obie makronotację zwracają wartość typu CHOICE {

local Value INTEGER,

global Value OBJECT IDENTIFIER }

(16)

czyli wartość typu INTEGER lub OBJECT IDENTIFIER o identyfikatorach odpowiednio

„localValue” lub „globalValue” (typy nazwane).

Każdej operacji odpowiada w standardach zapis wykorzystujący makronotację OPERATION (notacja nowego typu) mający postać:

Typ_rodząju_operacji::= OPERATION

ARGUMENT typ dla jp o la a rg u m e n t komponentu Invoke RESULT ty p d la _pola_result_komponentu_Return_reslt ERRORS {/ista błędów dla operacji}

LINKED {lista operacji_pochodnych}

Wartość zwracana przez makronotację OPERATION jest identyfikatorem operacji i umieszczana jest ona w polu „operation-value” komponentów Invoke i Return result. Nazwa

„Typ_rodzaju_operacji” dobierana jest zwykle tak, aby kojarzyła się z funkcją danej opera­

cji.

Zgodnie z wcześniejszymi ustaleniami zapisy po słowach ARGUMENT I RESULT określają typ danych dla pól „argument” i „result” komponentów odpowiednio Invoke i Re­

turn result.

Zapis po słowie ERRORS jest listą błędów sygnalizowanych za pomocą komponentu Return error. Elementami tej listy m ogą być nazwy wartości pojawiających się w polu „error- value” komponentu Return error, jak również nazwy typów odpowiadających tym warto­

ściom. Lista błędów może zawierać zarówno błędy specyficzne dla danej operacji lub usługi dodatkowej, jak i tzw. błędy ogólnego zastosowania (generally applicable errors) zdefiniowa­

ne w [11] (np. notSubscribed, notAvailable, notlmplemented).

Zapis po słowie LINKED jest listą operacji pochodnych w stosunku do danej operacji (child opérations). Elementami tej listy mogą być nazwy wartości pojawiających się w polu

„operation-value” komponentów Invoke i Return result operacji pochodnych, jak również nazwy typów odpowiadających tym wartościom.

Słowa ARGUMENT, RESULT, ERRORS, LINKED i zapisy po nich występujące m ogą być pomijane. Brak zapisu rozpoczynającego się od słów ARGUMENT lub RESULT oznacza brak pola „argument” lub „result” w komponencie Invoke lub Return result. Pomi­

nięcie zapisu RESULT może też oznaczać, że komponent Return result nie jest dla danej ope­

racji wykorzystywany. Brak zapisu rozpoczynającego się od słowa ERRORS oznacza, że żaden rodzaj błędu nie jest sygnalizowany za pomocą komponentu Return error. Brak zapisu rozpoczynającego się od słowa LINKED oznacza z kolei brak operacji pochodnych (dla aktu­

alnie realizowanych usług dodatkowych brak tego zapisu jest regułą).

Po zapisie odwołującym się do makronotacji OPERATION następują zwykle defini­

cje typów, do których odwołują się zapisy po słowach ARGUMENT i RESULT.

Określenie rodzaju operacji przesyłanego w polu „operation-value” realizowane jest za pomocą zapisu o postaci:

nazwa_wartości Typ_rodzaju_operacji ::= wartość

(17)

Wykorzystanie notacji ASN.l do kodowania. 279

przy czym nazwa wartości różni się od nazwy typu rodzaju operacji jedynie „rozmiarem”

pierwszej litery (nazwa wartości - mała litera, nazwa typu - duża litera).

Poniżej przedstawiono przykład omawianych zapisów dla operacji AOCEChargingU- nit realizowanej w ramach usługi Advice o f Charge (AOC) [5]. Celem operacji jest przesłanie do abonenta po zakończeniu rozmowy informacji o liczbie naliczonych impulsów oraz opcjonalnie - informacji o sposobie jej naliczania. Pominięte zostały zapisy definiujące typy opcjonalne. Dla omawianej operacji wykorzystuje się tylko komponent Invoke.

AOCEChargingUnit ::= OPERATION

ARGUMENT CHOICE {

chargeNotAvailable NULL, AOCEChargingUnitlnfo}

AOCEChargingUnitlnfo ::= SEQUENCE { CHOICE {

specificChargingUnits SEQUENCE {

recordedUnitsList [ 1 ] RecordedUnitsList,

aOCEBillingld [2] AOCEBillingld OPTION A L}, freeOfCharge [1] NULL},

chargingAssociation ChargingAssociation OPTIONAL}

RecordedUnitsList ::= SEQUENCE SIZE (1..32) OF RecordedUnits RecordedUnits ::= SEQUENCE {

CHOICE {

recordedNumberOfUnits NumberOfUnits,

not A vailable NULL},

recordedTypeOfUnits TypeOfUnit OPTIONAL } NumberOfUnits ::= INTEGER (0.. 16777215)

aOCEChargingUnit AOCEChargingUnit ::= 36

Pole argument komponentu Invoke zawiera normalnie sekwencję AOCEChargingU­

nitlnfo, której jedynym składnikiem w najprostszym przypadku (odrzucenie typów opcjonal­

nych i NULL) jest sekwencja specificChargingUnits. Jedynym obowiązkowym składnikiem tej sekwencji jest typ etykietowany [1] RecordedUnitsList będący sekwencją maksimum 32 typów RecordedUnits. Typ RecordedUnits jest znowu sekwencją, którą tworzy typ INTEGER reprezentujący liczbę naliczonych impulsów oraz (opcjonalnie) typ TypeOfUnit określający numer taryfy.

Rodzaj operacji określony jest przez wartość typu INTEGER rów ną 36. Typ wartości wynika ze sposobu jej zapisu. Definicja rodzaju operacji może w omawianym przypadku mieć alternatywną postać:

aOCEChargingUnit AOCEChargingUnit ::= localValue 36

(18)

W zapisie tym posłużono się wartością nazwaną.

W wielu przypadkach rodzaj operacji określony jest przez wartość typu OBJECT IDENTIFIER. Definicja tej wartości ma wówczas bardziej złożoną postać. Przykładowo, dla operacji CCBSRequest [6] może przedstawiać się ona następująco:

cCBSOID OBJECT IDENTIFIER ::= {ccitt identified-organization etsi (0) 359 operations-and-errors (1)}

cCBSRequest CCBSRequest ::= globalValue {cCBSOID 2}

Każdemu typowi występującemu w liście błędów makronotacji OPERATION (typ ten może być wykorzystywany przez wiele operacji związanych z daną usługą dodatkową) od­

powiada definicja odwołująca się do makronotacji ERROR. Ma ona w ogólnym przypadku postać jak niżej.

Typ błędu ::= ERROR

PARAMETER typ dla_pola_parameter_komponentu_Return_error

Dla aktualnie realizowanych usług dodatkowych pole „parameter” nie występuje w komponentach Return error. W związku z powyższym zapis rozpoczynający się od słowa PARAMETER jest pomijany. Wartości określające rodzaje błędów przesyłane w polu „error- value” komponentu Return error definiowane są na podobnych zasadach co wartości określa­

jące rodzaje operacji. Przykładowy zapis dotyczący określonego rodzaju błędu może mieć poniższą postać [5].

NoCharginglnfoAvailable ::= ERROR

noCharginglnfoAvailable NoCharginglnfo Available ::= 26

Tak więc dla błędu „NoCharginglnfoAvailable” w polu „error-value” komponentu Return result przesyłana jest wartość typu INTEGER równa 26.

7. Przykład kodowania komponentu przesyłanego w elemencie informacyjnym FACILITY

W tabeli 4 zaprezentowano postać transferową komponentu Invoke dla wcześniej omówionej operacji „AOCEChargingUnit” zarejestrowanego w łączu ISDN sieci T.P. S.A.

Komponent ten nie zawiera elementów opcjonalnych ani typów NULL.

W module ASN.l opisującym strukturę powyższego komponentu przyjęto domyślnie niejawny sposób etykietowania typów etykietowanych (IMPLICIT TAGS w nagłówku mo­

dułu).

Postać transferowa omawianego komponentu wynika z wcześniej podanych zapisów ASN.l i z reguł kodowania określonych w [3]. Oktety 1 i 2 stanowią nagłówek identyfikujący rodzaj komponentu. Znaczenie dalszych grup oktetów jest następujące:

(19)

Wykorzystanie notacji ASN.l do kodowania. 281

- oktety 3 -r 6 - pole „invokelD”, - oktety 7 + 9 - pole „operation-value”, - oktety 10 + 20 - pole „argument”.

Warto zwrócić uwagę, że ze względu na niejawny sposób etykietowania typów ety­

kietowanych nie są przesyłane etykiety typów InvokeComponent oraz RecordedUnitsList.

Zgodnie z wcześniejszymi definicjami, pierwszy typ jest w istocie inaczej nazwanym typem SEQUENCE, natomiast drugi - typem SEQUENCE OF. Zatem w razie jawnego etykietowa­

nia należałoby dla obu wymienionych typów dodatkowo przesłać etykietę typu SEQUENCE lub SEQUENCE OF.

8. Uwagi końcowe

Głównym celem notacji ASN.l jest uniezależnienie opisu struktury danych od reguł kodowania. Stosowanie abstrakcyjnej syntaktyki daje też pewne dodatkowe korzyści. Po pierwsze, zapis ASN .l jest przejrzysty dla danych o złożonej strukurze - gdy występuje alter­

natywna postać pól lub dopuszczalne jest pomijanie niektórych pól. W przypadku niektórych usług dodatkowych trudno sobie wręcz wyobrazić inny sposób opisywania danych sygnaliza­

cyjnych. Omawiana cecha sprawia, że sensowne może okazać się stosowanie notacji ASN.l również do opisu danych przesyłanych w niższych warstwach modelu OSI/ISO. Po drugie, notacja A SN .l wymusza uporządkowane i jednolite reguły kodowania danych, co z kolei ułatwia ich programową analizę. Z powyższych względów w standardach ETSI dla usług dodatkowych ISDN całkowicie zrezygnowano z tradycyjnych metod opisu struktury danych sygnalizacyjnych.

(20)

T abela 4 Budowa komponentu Invoke dla operacji AOCEChargingUnit

N r oktetu Pole Znaczenie Komentarz

oktetu

1 10--- klasa e t y k i e t y : c on te x t - s p e c i f i c

1--- P/C : typ złożony

00001 n u me r e t y k i e t y : [1] In vo k eC om po n en t 2 0 --- format dług oś c i : jeden oktet

__________ - 0 0 1 00 1 0 d ł u g o ś ć zawartości : 18 okte tó w _________________

3 0 0 --- klasa e t y k i et y : u n iv ersal

0 --- P/C : typ p r o s t y

0 0010 nu m er e t y ki et y : INTE GE R - in vo k e l D 4 0 --- format dłu go ś ci : jeden oktet

- 0 0 0 0 0 1 0 d ł ug oś ć zawartości : 2 ok tety

5 0 0 0 0 0 01 0 z aw ar t oś ć - o ktet 1 : i n v o ke l D - high

_______ 6 10001111 za w artość - oktet 2 : in vo k e l D - low____________

7 0 0 --- klasa e t y k ie ty : u ni versal

0 --- P/C : typ p r o s t y

00010 n u m e r e t y k i e t y : I N T EG ER - o pe r at ion-value 8 0 --- format dłu go śc i : j eden oktet

- 00 00 00 1 d ł u go ść zawart oś c i : 1 oktet

_9 0 0 1 0 01 00 za w artość____________________: aOCE C h ar g in gU ni t __________

10 0 0 --- klasa e t y k i e t y : uni ve rs a l

- - 1 --- P/C : typ złożony

10000 n um er e t y k i e t y : S EQUENCE

: - A O C E C h a r g i n g U n i t l n f o 11 0 --- format dłu g oś ci : jeden oktet

___________- 00 01 0 0 1 d ł ug oś ć zawartości : 9 o k t e t ó w _____________

12 0 0 --- klasa et yk i e t y : universal

— 1--- P/C : typ złożony

10000 n um e r et y ki e t y : SEQ UE NC E

: - s p e c i f i cC ha r gi ng Un i ts 13 0 --- format dłu go śc i : jeden oktet

__________ - 0 0 0 01 11 d ł u g o ś ć zawartości : 7 o k t e t ó w __________________

14 1 0 --- klasa e t y k i e t y : c on t e x t - s p e c i f i c

- - 1 --- P/C : typ złożony

00001 n um e r e t y k i e t y : [1] R ec or d e d U n i t s L i s t 15 0 --- format d łu g o ś c i : j eden oktet

_______ - 0 0 0 01 01 d ł ug oś ć zawartości : 5 o k t e tó w___________________

16 0 0 --- klasa e t y k i e t y : universal

1— ' P/C : typ złoż on y

10000 nu me r e t y k i e t y : SE QU E N C E - Re c or de dU n it s 17 0 --- format d ł u g o śc i : jeden oktet

- 0 0 0 00 11 d ł u g o ś ć z awartości : 3 oktet y___________________

18 0 0 --- klasa e t y k i e t y : u n iv ersal

0 --- P/C : typ p r o s t y

00010 n um e r e t y k i e t y : I N TE GE R - N u mb er O f U n i t s 19 0 --- format dłu g oś ci : jeden oktet

- 0 0 0 00 01 d ł u go ś ć zawartości : 1 oktet

20 0 0 0 00 01 0 z a wa rtość_____________ : liczba i m p u l s ó w = 2_______

(21)

Wykorzystanie notacji A SN .l do kodowania. 283

Literatura

1. CCITT (ITU-T): Recommendation X.200. Reference Model o f Open Systems Intercon­

nection for CCITT Applications. 1980.

2. CCITT (ITU-T): Recommendation X.208. Specification of Abstract Syntax Notation One (A SN .l). 1984.

3. CCITT (ITU-T): Recommendation X.209. Specification o f Basic Encoding Rules for Abstract Syntax Notation One (ASN.l). 1984.

4. ETSI: ETS 300 286. ISDN; User-to-User Signalling (UUS) supplementary service.

1996.

5. ETSI: ETS 300 182. ISDN; Advice-of-Charge (AOC) supplementary service. 1993.

6. ETSI: ETS 300 359. ISDN; Completion o f Calls to Busy Subscriber (CCBS) supple­

mentary service. 1995.

7. Kabaciński W.: Standaryzacja w sieciach ISDN. Wydawnictwo Politechniki Poznań­

skiej, Poznań 1996.

8. Kościelnik D.: ISDN cyfrowe sieci zintegrowane usługowo. WKŁ, Warszawa 1996.

9. ETSI: ETS 300 102. ISDN; User-network interface layer 3, Specifications for basic call control. 1990.

10. ETSI: ETS 300 351. ETSI object identifier tree; Rules and registration procedures. 1994.

11. ETSI: ETS 300 196. ISDN; Generic functional protocol for the support o f supplemen­

tary services. 1993.

12. Brzeziński K.M.: Istota sieci ISDN. Oficyna Wydawnicza Politechniki Warszawskiej, Warszawa 1999.

13. CCITT (ITU-T): Recommendation X.219. Remote Operations: Model, Notation and Service Definition. 1988.

Recenzent: Dr hab.inż.Krystyna Macek-Kamińska

Abstract

Defining the structure (format) o f protocol data units (PDU) is an important part of communication protocol specification. Traditional methods o f PDU format defining depend usually on defining the meaning o f subsequent octets or bits creating this PDU (like fig. 1). A drawback o f these methods is that they simultaneously define types o f data contained in the PDU and rules o f coding the data. In some situations it is profitable to define PDU structure

(22)

only on the level o f data types without defining the transfer syntax of the data. The need of such an approach appears, for example, in specifications o f application layer protocols.

Presentation o f transfered data structure on the level o f data types is called abstract syntax (syntax abstracting from coding). The ASN. 1 notation (Abstract Syntax Notation One) described in X.208 standard is an example o f such a syntax. For this notation the X.209 stan­

dard, that presents the rules o f coding particular types o f data, has been developed. The ASN. 1 notation and the rules o f coding defined in X.209 are adapted in ISDN networks and other telecommunications systems, where they are used in descriptions of signalling data re­

lated to supplementary services. This paper presents a synthetic conception o f problems, that concern application o f ASN .l notation to define such a kind o f data.

Basic rules o f supplementary services realization are presented. Then, the ASN.l no­

tation and the rules o f coding defined in X.209 are characterized. Kinds o f PDU (compo­

nents) used in supplementary services and their general structure are next described using A SN .l notation (table 3). The method o f defining formats of signalling data for particular supplementary services is discussed. An example of real component encoding is depicted in the end (table 4).

Cytaty

Powiązane dokumenty

[r]

2.4 Narysuj wykres zawierający dane (body, surface) z punktami o róż- nych kolorach dla grup equake i explosn.Narysuj na wykresie prostą dyskry- minacyjną, oddzielającą obie

Wykaza¢, »e spo±ród liczb pierwszych jest niesko«czenie wiele:.. (a) elementów nierozkªadalnych Z[i], (b) elementów

2 Wzoru umowy, prosimy o wyjaśnienie, czy uprawnienie to obejmuje również możliwość skrócenia terminu, a jeśli tak, to prosimy o modyfikację postanowienia w ten

Twoje dane przetwarzane na podstawie zgody będziemy przetwarzać do czasu wycofania przez Ciebie tej zgody. Twoje dane osobowe będą przechowywane tak długo, jak jest

Napiszcie proszę rozprawkę na temat: Czy zgadzasz się z twierdzeniem: „Miłość nie wyrządza zła bliźniemu”.. Uzasadnij swoje stanowisko na podstawie

Za pomocą kwerend można pobierać i tworzyć zestawienia danych które Cię aktualnie interesują.. Sortowanie polega na uporządkowanym układaniu

Po pierwsze, nie ograniczać się do opisu faktów (dotyczących np. leków czy instytucji), po drugie, nie traktować dziejów farmacji jako kolejnych odkryć, które doprowadziły do