Transaction Capabilities Application Part

Signalizační systém č. 7
OSI vrstvaSS7 protokoly
AplikačníTCAP, MAP, IS-41, INAP, CAP

TUP, ISUP, BSSAP

SíťováSCCP, SIGTRAN (IP7)

MTP Level 3

LinkováMTP Level 2
FyzickáMTP Level 1

Transaction Capabilities Application Part (TCAP) je protokol aplikační vrstvy v Signalizačním systému č. 7, který umožňuje současné vedení několika dialogů mezi jednotlivými prvky mobilní, případně i pevné telefonní sítě.

Pro přenos TCAP se používá protokol SCCP (resp. SUA), který zajišťuje adresování a směrování zpráv. TCAP slouží pro přenos MAP protokolu v mobilních sítích, pro přenos protokolu IS-41 v ANSI sítích a pro přenos protokolů INAP a CAP v Intelligent Networks. Uvedené protokoly fungují jako TC-uživatelé (TC User).

Protokol TCAP je založen na OSI protokolu Remote Operations Service Element (ROSE) a je definován doporučeními ITU-T Q.771-Q.775; ANSI varianta standardem T1.114.

Varianty TCAP

TCAP existuje ve dvou variantách:

  • ITU TCAP popsaný v Q.771 až Q.775 se používá v sítích GSM/UMTS pro přenos MAP, CAP a INAP zpráv
  • ANSI TCAP popsaný v T1.114 se používá v sítích CDMA2000 (v minulosti AMPS a TDMA, cdmaOne) pro přenos IS-41 zpráv

Obě varianty jsou definovány pomocí ASN.1, kódovány pomocí Basic Encoding Rules (BER) a slouží k podobným účelům, ale jsou vzájemně nekompatibilní. ANSI varianta je navržena s důrazem na jednoduchost a snadnou rozšiřitelnost pouhým přidáváním nových parametrů (tagů), případně definováním nových typů zpráv, ITU varianta používá poměrně komplikovaný mechanismus aplikačních kontextů. Obě varianty se v telekomunikačních sítích zřídkakdy setkávají, ale pokud k tomu dojde, je možné je rozlišit pomocí BER typů; zatímco ITU TCAP používá BER tagy aplikační, univerzální, případně kontextově závislé třídy (s hodnotami 0x00-0xBF), ANSI TCAP preferuje privátní tagy (s hodnotami 0xC0-0xFF), ve vnořených strukturách doplněné tagy kontextově závislé (s hodnotami 0x80-0xBF).

Struktura TCAP

TCAP lze rozdělit na dvě podvrstvy:

  • podvrstva komponent (Component Sublayer – CSL) – vyšší podvrstva, která využívá služeb TSL
  • podvrstva transakcí (Transaction Sublayer – TSL)

Funkce TCAP

TCAP umožňuje současné vedení několika dialogů neboli transakcí mezi stejnými subsystémy na stejných strojích (pro rozlišení strojů lze použít jejich point kódy nebo IP adresy, pro rozlišení subsystémů jejich Subsystem Number).

Komponenty

Komunikace pomocí TCAP se uskutečňuje předáváním dotazů a odpovědí (souhrnně nazývaných komponenty). Existují následující typy komponent:

KomponentaVýznam
Invokedotaz
Return Resultodpověď – úspěch
Return Errorodpověď – neúspěch
Rejectodmítnutí komunikace (např. špatně zformátované zprávy)

Každá komponenta může (ale nemusí) nést data vyšší vrstvy – protokolu MAP, CAP nebo INAP. U některých operací stačí jako výsledek pouze informace o tom, že operace skončila úspěchem nebo chybou (a jakou), takže odpovědi často data vyšší vrstvy nenesou.

Reject znamená, že komponenta byl z nějakého důvodu odmítnuta (např. opakované vyvolání, chybné InvokeID, neznámá operace nebo chybný argument).

Dialogy

Každá výměna komponent se uskutečňuje v rámci dialogu.

TCAP podporuje různé druhy dialogů:

  • jednoduché dialogy typu dotaz-odpověď nebo dotaz-odmítnutí; tyto dialogy se mohou řetězit za sebou
  • dialogy s vnořenými dotazy ve stylu „odpovím ti, ale napřed se tě taky na něco zeptám“
  • jednosměrná komunikace – zaslání dat bez čekání na odpověď; tento druh komunikace lze těžko považovat za dialog, ale TCAP jej nazývá nestrukturovaný dialog nebo unidialog; GSM MAP nestrukturované dialogy nepoužívá

TCAP zprávy

Sítí se nepřenáší samotné komponenty, ale celé TCAP zprávy. Jejich typy shrnuje následující tabulka:

Účel zprávyITU zprávaANSI package type
Zahájení dialoguBeginQuery
Ukončení dialoguEndResponse
Vnořený dotazContinueConversation
Odmítnutí dialoguAbortAbort
Jednosměrná komunikaceUnidirectionalUnidirectional

V případě ANSI zpráv Query a Conversation se rozlišuje, zda je protistraně dovoleno při odpovědi uzavřít dialog (transakci), proto existují varianty Query With Permission, Query Without Permission, Conversation With Permission a Conversation Without Permission.

ITU TCAP kromě zpráv definuje také tak zvaná primitiva. Každá zpráva je zároveň primitivem, ale existuje primitivum, které není zprávou, protože se nepředává mezi komunikujícími stroji. Jedná se o primitivum Cancel, které signalizuje, že odpověď nepřišla do zadaného časového limitu.

Identifikace dialogů a operací v TCAP

Dialog je identifikován jedním nebo dvěma Identifikátory transakce (Transaction ID, TID), z nichž jeden volí stroj, který zahajuje dialog, a druhý druhý účastník dialogu s vloženými dotazy. Operace (dotaz) v rámci dialogu je identifikován Identifikátorem vyvolání (InvokeId).

Identifikátor transakce

Identifikátory transakcí používá TCAP pro rozlišení jednotlivých dialogů.

Identifikátor transakce (Transaction ID) je čtyřbytové číslo. Pokud stroj A zahájí TCAP dialog se strojem B, stroj A pošle stroji B zprávu Begin. Tato zpráva Begin obsahuje Originating Transaction ID, což je identifikátor transakce pro stroj A. Zpráva Continue, kterou stroj B odpoví stroji A bude obsahovat Transaction ID použité strojem A jako Destination Transaction ID. Stroj B navíc do zprávy vloží vlastní Transaction ID jako Originating Transaction ID.

V pokračujícím TCAP dialogu každá zpráva Continue obsahuje Transaction ID cílového stroje jako Destination Transaction ID a Transaction ID odesílajícího stroje jako Originating Transaction ID. Když chce jeden ze strojů ukončit dialog, pošle druhému stroji zprávu End nebo Abort. Tato zpráva obsahuje pouze Destination Transaction ID.

Identifikátor vyvolání

Každá komponenta Invoke obsahuje InvokeId (8bitové číslo v rozsahu −128 až 127), pomocí kterého se všechny následující komponenty odvolávají na původní Invoke v rámci jedné transakce (dialogu). Identifikátor vyvolání (InvokeId) je odkaz na určitou TCAP operaci a umožňuje v rámci dialogu párovat dotazy a odpovědi.

Pokud je potřeba se v jednom Invoke odvolat na jiný Invoke, používá se volitelný parametr LinkedId.

Dialogová část

Dialogovou část (Dialogue Portion) zavedl TCAP ve verzi z roku 1993 (tzv. White Book). Dialogová část může být přítomna pouze v první a ve druhé zprávě dialogu a může obsahovat následující informace:

  • Verzi protokolu TCAP (protocol version)
  • Aplikační kontext (application context) – určuje protokol vyšší vrstvy (MAP, CAP nebo INAP) a jeho verzi
  • Bezpečnostní kontext (security context) – udává, jak má být interpretována informace o utajení zprávy
  • Důvěrnostní kontext (confidentiality context) – určuje použitý šifrovací algoritmus a jeho parametry

V praxi se dialogová část používá pouze u ITU TCAP, kde slouží k předání nebo dojednání aplikačního kontextu a tím i výběru aplikačního protokolu a jeho verze.

Aplikační kontexty

Aplikační protokoly (MAP, CAP, INAP, atd.) se postupně vyvíjejí, což může vést k problémům s kompatibilitou. ANSI se těmto problémům vyhýbá přidáváním nových typů aplikačních zpráv a zaváděním nových typů jednoznačně identifikovatelných (pomocí různých ASN.1 typů) parametrů.

V ITU TCAP se pro určení verze aplikačních zpráv používá tak zvaný aplikační kontext (Application Context – AC). Aplikační kontext je identifikátor objektu (Object identifier), který se předává v dialogové části v první nebo druhé zprávě dialogu. Každý aplikační kontext obsahuje po jedné verzi jedné nebo více typů zpráv. Pokud byl na začátku dialogu dojednán aplikační kontext, lze z něj jednoznačně určit verzi vyměňovaných aplikačních zpráv. Pokud aplikační kontext nebyl dojednán, používá se protokol MAP verze 1 (MAP protokol byl vyvinut dříve, než byly zavedeny aplikační kontexty a dialogové části TCAP).

Formát TCAP zpráv

TCAP zprávy jsou formátovány podle pravidel Basic Encoding Rules (BER) – mají tvar vnořených trojic Type-Length-Value (typ, délka, hodnota). ITU používá pro Type název Tag, ANSI název Identifier. Jak Type tak Length mohou být jedno- i vícebytové; vícebytový typ začíná bytem 0x1F, 0x5F, 0x9F nebo 0xFF a končí bytem s hodnotou menší než 0x80; vícebytová délka začíná bytem s hodnotou větší než 0x80; tato hodnota zmenšená o 0x80 udává počet dalších bytů obsahujících údaj o délce. U složených struktur se objevuje nedefinovaná délka (0x80); struktura pak musí být zakončena dvojicí bytů s nulovou hodnotou, která představuje koncovou značku (EOC) – viz Basic Encoding Rules.

ITU TCAP zprávy mají následující strukturu (+ musí být přítomné, O může být přítomné, - nesmí být přítomné):

ZprávaOrig. TIDDest. TIDP-Abort CauseKomponent. částDialogová část
Typ0x480x490x4A0x6C0x6B
Unidirectional0x61---+O
Begin0x62+--OO
Continue0x65++-OO
End0x64-+-OO
Abort0x67-+O-O

V ITU TCAP je Originating Transaction ID v jednom parametru s BER type 0x48, Destination Transaction ID v druhém parametru s BER type 0x49. Jejich přítomnost v TCAP zprávách je patrná z tabulky ITU TCAP zpráv.

ANSI TCAP zprávy:

ANSI package typeOrig. TID Resp. TIDPosloupnost komponentDialogová část
Typ0xC70xE80xF9
Query With Permission0xE2+ -OO
Query Without Permission0xE3+ -OO
Conversation With Permission0xE5+ +OO
Conversation Without Permission0xE6+ +OO
Response0xE4- +OO
Abort0xF6- +OO
Unidirectional0xE1- -+O

ANSI TCAP zprávy obsahují vždy jeden parametr Transaction ID s BER typem 0xC7. V Unidirectional zprávách je tento parametr prázdný (má délku 0), ve zprávách Conversation With Permission a Conversation Without Permission obsahuje dva Transaction ID (má délku 8), v ostatních zprávách obsahuje jediný Transaction ID (má délku 4).

Struktura dialogové části

Dialogová část v ITU TCAP nese data protokolu (Application Protocol Data Unit – APDU), který řídí dialog nebo unidialog. Pro MAP a INAP slouží dialogové APDU k vytváření a ukončování (uvolňování) dialogů pro aplikační kontext zadaný v primitivech. Pro dialogové APDU jsou definována následující primitiva:

APDUTypVýznam
AARQ0x60Žádost o dialog (dialogue request). Pro MAP a INAP je obecně AARQ posíláno v primitivu Begin s komponentou Invoke a s aplikačním kontextem pro package příslušející MAP/INAP operaci.
AARE0x61Dialogue response. Posílán v primitivu Continue nebo End jako odpověď na AARQ. Může být poslán i v primitivu Abort, pokud abort reason je "application-content-name-not-supported" nebo "dialogue-refused".
ABRT0x64Násilné ukončení dialogu (dialogue abort). Posílán v primitivu Abort.
AUDT0x60Jednosměrný dialog (unidirectional dialogue). Posílán v primitivu Unidirectional.

Struktura komponentové části

Komponentová část obsahuje jednu z komponent:

KomponentaVýznamITU typANSI typ
Invokedotaz0xA10xE9
Return Result (Last)odpověď – úspěch0xA20xEA
Return Errorodpověď – neúspěch0xA30xEB
Rejectodmítnutí komunikace (např. špatně zformátované zprávy)0xA40xEC
Invoke (Not Last)dotaz, který nebylo možné poslat najednou----0xED
Return Result (Not Last)odpověď, kterou nebylo možné poslat najednou0xA70xEE

ITU komponenta obsahuje Invoke ID s typem 0x02 a délkou 1, kód operace s typem 0x02 a sadu parametrů s typem 0x30.

ANSI komponenta obsahuje Invoke ID s typem 0xCF a délkou 1, kód operace s typem 0xD1 a sadu parametrů s typem 0xF2.

Dekódovaná TCAP zpráva

Následuje hexadecimální výpis TCAP zprávy, která obsahuje SMS odeslanou mobilním telefonem (MO-SMS) a transformovanou MSC na MAP zprávu:

 62 74 48 04 00 02 00 30 6B 1A 28 18 06 07 00 11
 86 05 01 01 01 A0 0D 60 0B A1 09 06 07 04 00 00
 01 00 19 02 6C 50 A1 4E 02 01 01 02 01 2E 30 46
 80 05 70 31 42 44 44 84 06 A1 70 91 92 55 55 04
 35 2F 09 00 70 97 92 62 23 04 00 90 20 11 80 01
 24 00 27 43 50 7A 0E A2 A3 CB 20 71 79 4E 07 B1
 C3 EE 73 3D 7C 2E 83 D2 20 74 D8 5E 06 95 ED 65
 39 68 5E 2E BB 01 00

Podle hodnot Tag-Length-Value lze zprávu dekódovat takto:

 '--> 62|74  ''<- Begin''
        |
        '--> 48|04:00 02 00 30    ''<- Transaction ID''
        |
        '--> 6B|1A   ''<- Začátek dialogové části'' 
               |
               '--> 28|18   ''<- External Constructor''
                      |
                      '--> 06|07:00 11 86 05 01 01 01   ''<- id-as-dialogue''
                      |
                      '--> A0|0D
                             |
                             '--> 60|0B   ''<- AARQ APDU''
                                    |
                                    '--> A1|09   ''<- Aplikační kontext''
                                           |
                                           '--> 06|07:04 00 00 01 00 19 02   ''<- hodnota aplikačního kontextu''
        |
        '--> 6C|50     ''<- Začátek komponentové části''
               |
               '--> A1|4E     ''<- Invoke Component (Last)''
                      |
                      '--> 02|01:01    ''<- Component Id (invoke id)''
                      |
                      '--> 02|01:2E    ''<- Kód operace''
                      |
                      '--> 30|46       ''<- Začátek parametrů''
                             |
                             '--> 80|05:70 31 42 44 44        ''<- SM-RP-DA(BCD)''
                             |
                             '--> 84|06:A1 70 91 92 55 55     ''<- SM-RP-OA(BCD)''
                             |
                             '--> 04|35:2F 09 00 70 97 92 62 23 04 00 90 20 11 80 01 24 00 27 43 50 7A 0E A2 A3 CB 20 71 79 4E 07 B1 C3 EE 73 3D 7C 2E 83 D2 20 74 D8 5E 06 95 ED 65 39 68 5E 2E BB 01   ''<- SM-RP-UI''

Dekódovaná ANSI TCAP zpráva

Následuje hexadecimální výpis ANSI TCAP zprávy, která obsahuje SMS odeslanou mobilním telefonem (MO-SMS) a transformovanou MSC na IS-41 zprávu:

 E2 81 9F C7 04 90 00 FF 06 E8 81 96 E9 81 93 CF
 01 00 D1 02 09 35 F2 81 89 9F 74 02 10 02 9F 69
 62 00 03 20 05 70 01 4F 12 C5 ...
 88 05 19 95 22 29 78 9F 70 09 02 00 21 0A 19 25
 80 27 64 9F 6E 09 02 00 21 0A 19 75 13 54 15

Tuto ANSI zprávu lze dekódovat takto:

 '--> E2|81 9F  ''<- Query With Permission''
        |
        '--> C7|04:90 00 FF 06    ''<- Transaction ID''
        |
        '--> E8|81 96     ''<- Posloupnost komponent''
               |
               '--> E9|81 93     ''<- Invoke Component (Last)''
                      |
                      '--> CF|01:00    ''<- Component Id (invoke id)''
                      |
                      '--> D1|02:09 35    ''<- Kód operace''
                      |
                      '--> F2|81 89       ''<- Parameter set''
                             |
                             '--> 9F 74|02:10 02        ''<- SMS-Teleservice Identifier''
                             |
                             '--> 9F 69|62:00 03 20 05 70 01 4F 12 C5 ...    ''<- SMS-Bearer Data''
                             |
                             '--> 88|05:19 95 22 29 78    ''<- Mobile Identification Number''
                             |
                             '--> 9F 70|09:02 00 21 0A 19 25 80 27 64  ''<- SMS-OriginalOriginatingAddress''
                             |
                             '--> 9F 6E|09:02 00 21 0A 19 75 13 54 15  ''<- SMS-OriginalDestinationAddress''

Zranitelnost

Signalizační sítě byly díky svému oddělení od datových sítí považovány za bezpečné. S přechodem na SIGTRAN se zvyšuje nebezpečí průniku do těchto sítí. Protokol TCAP je zranitelný díky možnosti podvrhnout adresu odesilatele v datech, která přepravuje, čehož se zneužívá při SMS spoofingu. Této formě zranitelnosti lze předcházet použitím TCAP segmentace.

Historie TCAP

  • 1988 Blue Book – první verze
  • 1993 White Book – zavedlo dialogovou část
  • 1997 – pouze menší změny

Standard z roku 1988 dělil Transaction Capabilities (TC) na dvě části:

V pozdějších standardech už ISP chybí, čímž se TC stává synonymem pro TCAP.

Odkazy

Reference

V tomto článku byl použit překlad textu z článku Transaction Capabilities Application Part na anglické Wikipedii.

ITU-T doporučení

Související články