Transaction Capabilities Application Part
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ě.
OSI vrstva | SS7 protokoly |
---|---|
Aplikační | TCAP, MAP, IS-41, INAP, CAP |
Síťová | SCCP, SIGTRAN (IP7) |
Linková | MTP Level 2 |
Fyzická | MTP Level 1 |
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:
Komponenta | Význam |
---|---|
Invoke | dotaz |
Return Result | odpověď – úspěch |
Return Error | odpověď – neúspěch |
Reject | odmí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ávy | ITU zpráva | ANSI package type |
---|---|---|
Zahájení dialogu | Begin | Query |
Ukončení dialogu | End | Response |
Vnořený dotaz | Continue | Conversation |
Odmítnutí dialogu | Abort | Abort |
Jednosměrná komunikace | Unidirectional | Unidirectional |
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áva | Orig. TID | Dest. TID | P-Abort Cause | Komponent. část | Dialogová část | |
---|---|---|---|---|---|---|
Typ | 0x48 | 0x49 | 0x4A | 0x6C | 0x6B | |
Unidirectional | 0x61 | - | - | - | + | O |
Begin | 0x62 | + | - | - | O | O |
Continue | 0x65 | + | + | - | O | O |
End | 0x64 | - | + | - | O | O |
Abort | 0x67 | - | + | 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 type | Orig. TID Resp. TID | Posloupnost komponent | Dialogová část | |
---|---|---|---|---|
Typ | 0xC7 | 0xE8 | 0xF9 | |
Query With Permission | 0xE2 | + - | O | O |
Query Without Permission | 0xE3 | + - | O | O |
Conversation With Permission | 0xE5 | + + | O | O |
Conversation Without Permission | 0xE6 | + + | O | O |
Response | 0xE4 | - + | O | O |
Abort | 0xF6 | - + | O | O |
Unidirectional | 0xE1 | - - | + | 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:
APDU | Typ | Význam |
---|---|---|
AARQ | 0x60 | Žá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. |
AARE | 0x61 | Dialogue 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". |
ABRT | 0x64 | Násilné ukončení dialogu (dialogue abort). Posílán v primitivu Abort. |
AUDT | 0x60 | Jednosměrný dialog (unidirectional dialogue). Posílán v primitivu Unidirectional. |
Struktura komponentové části
Komponentová část obsahuje jednu z komponent:
Komponenta | Význam | ITU typ | ANSI typ |
---|---|---|---|
Invoke | dotaz | 0xA1 | 0xE9 |
Return Result (Last) | odpověď – úspěch | 0xA2 | 0xEA |
Return Error | odpověď – neúspěch | 0xA3 | 0xEB |
Reject | odmítnutí komunikace (např. špatně zformátované zprávy) | 0xA4 | 0xEC |
Invoke (Not Last) | dotaz, který nebylo možné poslat najednou | ---- | 0xED |
Return Result (Not Last) | odpověď, kterou nebylo možné poslat najednou | 0xA7 | 0xEE |
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:
- Intermediate Services Part (ISP) – měly pokrývat vrstvy transportní, relační a prezentační; ve standardu však nebyly blíže definovány
- Transaction Capabilities Application Part (TCAP) – aplikační vrstva TC
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í
- série Q doporučení ITU-T
- ITU-T doporučení Q.771: Functional description of transaction capabilities
- ITU-T doporučení Q.772: Transaction capabilities information element definitions
- ITU-T doporučení Q.773: Transaction capabilities formats and encoding
- ITU-T doporučení Q.774: Transaction capabilities procedures
- ITU-T doporučení Q.775: Guidelines for using transaction capabilities
- TCAP ASN1 specification
- SS7 Tutorial – SS7 Tutorial, včetně popisu MTP.