Transaction Capabilities Application Part
| 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 |
Transaction Capabilities Application Part (TCAP) je protokol aplikační vrstvy v Signalling System 7, který umožňuje současné vedení několika dialogů mezi jednotlivými prvky mobilní, případně i pevné telefonní sítě.
TCAP se používá 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 Services Element (ROSE) a je definován doporučeními ITU-T Q.771-Q.775; ANSI varianta standardem T1.114.
Obsah |
Varianty TCAP [editovat]
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 CDMA (v minulosti AMPS a TDMA) 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í a používají se v jiných sítích. ANSI varianta je navržena s důrazem na jednoduchost a snadnou rozšiřitelnost. V telekomunikačních sítích se zřídkakdy setkávají, ale pokud k tomu dojde, je možné je rozlišit pomocí BER typů.
Struktura TCAP [editovat]
TCAP lze rozdělit na dvě podvrstvy:
- podvrstva komponent (Component Sublayer – CSL)
- podvrstva transakcí (Transaction Sublayer – TSL)
Funkce TCAP [editovat]
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 [editovat]
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 komponent byl z nějakého důvodu odmítnut (např. opakované vyvolání, chybné InvokeID, neznámá operace nebo chybný argument).
Dialogy [editovat]
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 [editovat]
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 [editovat]
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.
Identifikátor transakce [editovat]
Identifikátory transakcí používá TCAP pro rozlišení jednotlivých dialogů podobným způsobem jako TCP používá čísla portů pro rozlišení jednotlivých spojení mezi stejnou dvojicí strojů nebo jejich rozhraní definovaných IP adresou v Internetu.
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í [editovat]
Každý Invoke komponent obsahuje InvokeID (7-bitové číslo se znaménkem), pomocí kterého se všechny následující komponenty odvolávají na původní Invoke.
Identifikátor vyvolání (InvokeID) je odkaz na určitou TCAP operaci a umožňuje spárovat dotazy a odpovědi v rámci jednoho dialogu.
Dialogová část [editovat]
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 verzi protokolu vyšší vrstvy (MAP, CAP nebo INAP)
- 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.
Aplikační kontexty [editovat]
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 (MAP protokol byl vyvinut dříve než byly zavedeny aplikační kontexty a dialogové části TCAP), jedná se o nejstarší verzi protokolu – např. MAP 1.
Formát TCAP zpráv [editovat]
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.
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 | 0x64 | + | + | - | O | O |
| End | 0x65 | - | + | - | 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 [editovat]
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 Invoke komponentem 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 [editovat]
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 [editovat]
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 [editovat]
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
Historie TCAP [editovat]
- 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.
Související články [editovat]
- Signalling System 7
- Message Transfer Part
- Signalling Connection Control Part
- Stream Control Transmission Protocol
- SIGTRAN
- Mobile Application Part
- IS-41
- Abstract Syntax Notation One
- Basic Encoding Rules
Reference [editovat]
- 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.