Le reti H.323 hanno diversi tipi di configurazioni e flussi di chiamate. In questo documento viene descritta la maggior parte dei problemi relativi alla sicurezza delle reti H.323 che coinvolgono i gatekeeper. Questo documento riepiloga il funzionamento di ciascuna funzione e come risolverla con una spiegazione sulla maggior parte dei debug. Questo documento non affronta la sicurezza complessiva del VoIP.
Nel documento vengono descritte le seguenti caratteristiche:
Intradomain Gateway to Gatekeeper Security: questa sicurezza è basata su H.235, in cui le chiamate H.323 vengono autenticate, autorizzate e instradate da un gatekeeper. Il gatekeeper è considerato un'entità nota e attendibile, nel senso che il gateway non lo autentica quando tenta di eseguire la registrazione.
Interdomain Gatekeeper to Gatekeeper Security: questa sicurezza copre l'autenticazione e l'autorizzazione delle chiamate H.323 tra i domini amministrativi dei provider di servizi telefonici Internet (ITSP) tramite InterZone Clear Token (IZCT). Questo documento copre solo la parte in cui il gatekeeper terminante invia un token nel messaggio LCF (Location CONFIRMation) in modo da autenticare la richiesta ARQ (Answer Call Admission Request). La convalida LRQ (Location Request) non è inclusa in questa funzionalità. La convalida LRQ è una funzionalità pianificata per una versione futura del software Cisco IOS®.
Definizioni
Acronimo | Definizione |
---|---|
ARQ | Richiesta di ammissione - Messaggio RAS (Registration, Admission, Status Protocol) inviato da un endpoint H.323 a un gatekeeper che richiede l'ammissione per stabilire una chiamata. |
ACF | Conferma ammissione—Messaggio RAS inviato dal gatekeeper all'endpoint che conferma l'accettazione di una chiamata. |
ARJ | Rifiuto ammissione: un messaggio RAS inviato dal gatekeeper all'endpoint che rifiuta la richiesta di ammissione. |
GATTO | Cisco Access Token: H.235 Clear Token. |
CHAP | Challenge Handshake Authentication Protocol: protocollo di autenticazione in cui viene utilizzata una richiesta di verifica. |
GCF | Gatekeeper Confirm - Messaggio RAS inviato da un gatekeeper all'endpoint H.323 che conferma la scoperta del gatekeeper. |
GRQ | Richiesta Gatekeeper (Gatekeeper Request) - Messaggio RAS inviato da un endpoint H.323 per individuare il gatekeeper. |
H.235 | ITU consiglia sicurezza e codifica per i terminali multimediali serie H (H.323 e altri basati su H.245). |
IZCT | InterZone Clear Token - Viene generato un IZCT nel gatekeeper di origine quando viene avviato un LRQ o sta per essere inviato un ACF per una chiamata intrazone all'interno del dominio amministrativo ITSP. |
LRQ | Richiesta posizione (Location Request) - Messaggio RAS inviato da un gatekeeper al gatekeeper dell'hop successivo o alla gamba di chiamata per tracciare e instradare la chiamata. |
RAS | Registrazione, ammissione e stato: un protocollo che consente a un gatekeeper di eseguire la registrazione, l'ammissione e i controlli di stato dell'endpoint. |
RCF | Conferma registrazione—Messaggio RAS inviato dal gatekeeper all'endpoint che conferma la registrazione. |
RRJ | Rifiuto registrazione: messaggio RAS inviato dal gatekeeper per rifiutare la richiesta di registrazione. |
RQ | Richiesta di registrazione: messaggio RAS inviato dall'endpoint al gatekeeper che richiede la registrazione. |
RIP | Richiesta in corso: messaggio RAS inviato da un gatekeeper al mittente che indica che la chiamata è in corso. |
H.323 è una raccomandazione dell'ITU che riguarda la sicurezza delle comunicazioni in tempo reale su reti non sicure. Ciò comporta due principali motivi di preoccupazione: autenticazione e privacy. Secondo H.235 esistono due tipi di autenticazione:
Autenticazione basata su crittografia simmetrica che non richiede alcun contatto precedente tra le entità in comunicazione.
In base alla possibilità di disporre di alcuni segreti condivisi in precedenza (a cui si fa riferimento come basati su sottoscrizione), sono disponibili due forme di autenticazione basata su sottoscrizione:
password
certificato
L'indicatore di data e ora viene utilizzato per impedire attacchi di tipo replay. Pertanto, è necessario per un riferimento reciprocamente accettabile al tempo (da cui derivare i timestamp). La quantità di sfasamento temporale accettabile è una questione di implementazione locale.
Cisco utilizza uno schema di autenticazione tipo CHAP (Challenge Handshake Authentication Protocol) come base per il gateway dell'implementazione H.235 del gatekeeper. In questo modo è possibile utilizzare le funzionalità di autenticazione, autorizzazione e accounting (AAA), utilizzando le funzionalità esistenti per eseguire l'autenticazione effettiva. Significa anche che il gatekeeper non deve avere accesso a un database di ID gateway, numeri di account utente, password e PIN. Lo schema è basato su H.235, sezione 10.3.3. È descritto come password basata su abbonamento con hashing.
Tuttavia, invece di utilizzare H.225 cryptoTokens, questo metodo utilizza H.235 clearTokens con campi popolati in modo appropriato per l'uso con RADIUS. Questo token è noto come Cisco Access Token (CAT). È sempre possibile eseguire l'autenticazione localmente sul gatekeeper anziché utilizzare un server RADIUS.
L'uso di cryptoTokens richiede che il gatekeeper conservi o abbia un modo per acquisire le password per tutti gli utenti e i gateway. Infatti, il campo token di cryptoToken è specificato in modo che l'entità di autenticazione necessiti della password per generare il proprio token con cui confrontare quello ricevuto.
I gatekeeper Cisco ignorano completamente i cryptoToken. Tuttavia, i gatekeeper vocalTek e altri utenti che supportano la sezione 10.3.3 del protocollo H.235 utilizzano cryptoTokens per autenticare il gateway. I gatekeeper Cisco utilizzano il protocollo CAT per autenticare il gateway. Poiché il gateway non sa a quale tipo di gatekeeper parla, invia entrambi nella RQ. La funzione authenticationCapability in GRQ è per cryptoToken e indica che l'hashing MD5 è il meccanismo di autenticazione (anche se CAT utilizza anche MD5).
per ulteriori informazioni, fare riferimento a Cisco H.323 Gateway Security and Accounting Enhancements.
Sicurezza a livello di endpoint o registrazione
Se la funzione di sicurezza della registrazione è abilitata sul gatekeeper, il gateway deve includere un CAT in tutti i messaggi RQ per dispositivi pesanti. Il CAT, in questo caso, contiene informazioni che autenticano il gateway stesso per il gatekeeper. Il gatekeeper formatta un messaggio per un server RADIUS che autentica le informazioni contenute nel token. Risponde al gatekeeper con un comando Access-Accept o Access-Reject. Ciò, a sua volta, risponde al gateway con una RCF o una RRJ.
Se viene effettuata una chiamata da un gateway autenticato correttamente, il gateway genera un nuovo CAT alla ricezione di un ACF dal gatekeeper utilizzando la password del gateway. Questo CAT è identico a quello generato durante la registrazione, ad eccezione del timestamp. Viene inserito nel messaggio SETUP in uscita. Il gateway di destinazione estrae il token dal messaggio SETUP e lo inserisce nella destinazione ARQ. Il gatekeeper utilizza RADIUS per autenticare il gateway di origine prima di inviare l'ACF sul lato destinazione. In questo modo si impedisce a un endpoint non autenticato che conosce l'indirizzo di un gateway di utilizzarlo per aggirare lo schema di sicurezza e accedere alla rete PSTN (Public Switched Telephone Network).
Pertanto, a questo livello, non è necessario includere alcun token negli ARQ originari.
Digitare [no] token di sicurezza richiesto per la registrazione dall'interfaccia della riga di comando (CLI) del gatekeeper per configurare il gatekeeper. L'opzione no del comando impedisce al gatekeeper di controllare più i token nei messaggi RAS.
Digitare [no] l'endpoint di livello password di protezione <PASSWORD> dalla CLI del gateway per configurare il gateway. L'opzione no del comando impedisce al gateway di generare più token per i messaggi RAS.
Sicurezza a livello di singola chiamata
La sicurezza per chiamata si basa sulla sicurezza a livello di registrazione. Oltre a soddisfare i requisiti di sicurezza della registrazione, un gateway deve includere i token di accesso in tutti i messaggi ARQ lato origine quando la sicurezza per chiamata è abilitata sul gatekeeper. In questo caso, il token contiene informazioni che identificano l'utente del gateway per il gatekeeper. Queste informazioni vengono ottenute utilizzando uno script IVR (Interactive Voice Response) sul gateway. In questo modo, gli utenti dovranno inserire l'ID utente e il PIN specificati sulla tastiera prima di effettuare una chiamata.
Il CAT contenuto nell'ARQ di origine viene autenticato da RADIUS nello stesso modo descritto in precedenza in Sicurezza a livello di endpoint o di registrazione. Dopo aver ricevuto l'ACF, il gateway genera un nuovo CAT utilizzando la relativa password e lo invia tramite il messaggio H.225 SETUP al gateway terminante.
Digitare [no] security token required-for all dalla CLI del gatekeeper per configurare il gatekeeper. L'opzione no del comando impedisce al gatekeeper di controllare più i token nei messaggi RAS.
Digitare [no] password di protezione <PASSWORD> livello per chiamata dalla CLI del gateway per configurare il gateway. L'opzione no del comando impedisce al gateway di generare più token per i messaggi RAS.
Sicurezza totale
In questo modo, il gateway può includere un CAT in tutti i messaggi RAS necessari per la registrazione e per le chiamate. Pertanto, si tratta di una combinazione dei due livelli sopra indicati. Con questa opzione, la convalida dei messaggi CAT in ARQ si basa sul numero di account e sul PIN dell'utente che effettua la chiamata. La convalida del CAT inviato in tutti gli altri messaggi RAS si basa sulla password configurata per il gateway. Pertanto, è simile al livello Per chiamata.
Digitare [no] security token required-for all dalla CLI del gatekeeper per configurare il gatekeeper. L'opzione no del comando impedisce al gatekeeper di controllare più i token nei messaggi RAS.
Digitare [no] security password <PASSWORD> level all dalla CLI del gateway per configurare il gateway. L'opzione no del comando impedisce al gateway di generare più token per i messaggi RAS.
H.235 non può essere usato a livello di chiamata senza IVR. Se non è disponibile alcun IVR per raccogliere un account e un PIN, il gateway deve inviare l'ARQ senza un token Clear (ma con un token crypto). Poiché il gatekeeper Cisco accetta solo token Clear, la chiamata viene rifiutata dal gatekeeper per motivi di sicurezza.
Nell'esempio vengono mostrati i debug h225 asn1 raccolti da un gateway di origine (OGW) che non è configurato per un IVR per raccogliere l'account e il PIN. Il messaggio RQ ha un token Clear, a differenza del messaggio ARQ. Viene inviato un messaggio ARJ al gateway.
Mar 4 01:31:24.358: H235 OUTGOING ENCODE BUFFER::= 61 000100C0 2B955BEB 08003200 32003200 32000006 006F0067 00770000 Mar 4 01:31:24.358: Mar 4 01:31:24.358: RAS OUTGOING PDU ::= value RasMessage ::= registrationRequest : { requestSeqNum 29 protocolIdentifier { 0 0 8 2250 0 3 } discoveryComplete FALSE callSignalAddress { } rasAddress { ipAddress : { ip 'AC100D0F'H port 57514 } } terminalType { mc FALSE undefinedNode FALSE } gatekeeperIdentifier {"ogk1"} endpointVendor { vendor { t35CountryCode 181 t35Extension 0 manufacturerCode 18 } } timeToLive 60 tokens !--- Clear Token is included in the RRQ message. { { tokenOID { 1 2 840 113548 10 1 2 1 } timeStamp 731208684 challenge 'F57C3C65B59724B9A45C93F98CCF9E45'H random 12 generalID {"ogw"} } } cryptoTokens { cryptoEPPwdHash : { alias h323-ID : {"ogw"} timeStamp 731208684 token { algorithmOID { 1 2 840 113549 2 5 } paramS { } hash "D7F85666AF3B881ADD876DD61C20D5D9" } } } keepAlive TRUE endpointIdentifier {"81F5E24800000001"} willSupplyUUIEs FALSE maintainConnection TRUE } Mar 4 01:31:24.370: RAS OUTGOING ENCODE BUFFER::= 0E 40001C06 0008914A 00030000 0100AC10 0D0FE0AA 0003006F 0067006B 003100B5 00001212 EF000200 3B2F014D 000A2A86 4886F70C 0A010201 C02B955B EB10F57C 3C65B597 24B9A45C 93F98CCF 9E45010C 06006F00 67007700 002A0104 02006F00 670077C0 2B955BEB 082A8648 86F70D02 05008080 D7F85666 AF3B881A DD876DD6 1C20D5D9 0180211E 00380031 00460035 00450032 00340038 00300030 00300030 00300030 00300031 01000180 Mar 4 01:31:24.378: h323chan_dgram_send:Sent UDP msg. Bytes sent: 173 to 172.16.13.35:1719 Mar 4 01:31:24.378: RASLib::GW_RASSendRRQ: 3640-1#debug RRQ (seq# 29) sent to 172.16.13.35 Mar 4 01:31:24.462: h323chan_chn_process_read_socket Mar 4 01:31:24.462: h323chan_chn_process_read_socket: fd (2) of type CONNECTED has data Mar 4 01:31:24.462: h323chan_chn_process_read_socket: h323chan accepted/connected Mar 4 01:31:24.462: h323chan_dgram_recvdata:rcvd from [172.16.13.35:1719] on so ck[2] Mar 4 01:31:24.466: RAS INCOMING ENCODE BUFFER::= 12 40001C06 0008914A 00030006 006F0067 006B0031 1E003800 31004600 35004500 32003400 38003000 30003000 30003000 30003000 310F8A01 0002003B 01000180 Mar 4 01:31:24.466: Mar 4 01:31:24.466: RAS INCOMING PDU ::= value RasMessage ::= registrationConfirm : { requestSeqNum 29 protocolIdentifier { 0 0 8 2250 0 3 } callSignalAddress { } gatekeeperIdentifier {"ogk1"} endpointIdentifier {"81F5E24800000001"} alternateGatekeeper { } timeToLive 60 willRespondToIRR FALSE maintainConnection TRUE } Mar 4 01:31:24.470: RCF (seq# 29) rcvd Mar 4 01:32:00.220: H225 NONSTD OUTGOING PDU ::= value ARQnonStandardInfo ::= { sourceAlias { } sourceExtAlias { } callingOctet3a 129 interfaceSpecificBillingId "ISDN-VOICE" } Mar 4 01:32:00.220: H225 NONSTD OUTGOING ENCODE BUFFER::= 80 000008A0 01810B12 4953444E 2D564F49 4345 Mar 4 01:32:00.220: Mar 4 01:32:00.220: H235 OUTGOING ENCODE BUFFER::= 61 000100C0 2B955C0F 08003200 32003200 32000006 006F0067 00770000 Mar 4 01:32:00.224: Mar 4 01:32:00.224: RAS OUTGOING PDU ::= value RasMessage ::= admissionRequest : { requestSeqNum 30 callType pointToPoint : NULL callModel direct : NULL endpointIdentifier {"81F5E24800000001"} destinationInfo { e164 : "3653" } srcInfo { e164 : "5336", h323-ID : {"ogw"} } bandWidth 1280 callReferenceValue 5 nonStandardData { nonStandardIdentifier h221NonStandard : { t35CountryCode 181 t35Extension 0 manufacturerCode 18 } data '80000008A001810B124953444E2D564F494345'H } conferenceID 'E1575DA6175611CC8014A6051561649A'H activeMC FALSE answerCall FALSE canMapAlias TRUE callIdentifier { guid 'E1575DA6175611CC8015A6051561649A'H } cryptoTokens !--- Only cryptoTokens are included, no clear ones. { cryptoEPPwdHash : { alias h323-ID : {"ogw"} timeStamp 731208720 token { algorithmOID { 1 2 840 113549 2 5 } paramS { } hash "105475A4C0A833E7DE8E37AD3A8CDFF" } } } willSupplyUUIEs FALSE } Mar 4 01:32:00.236: RAS OUTGOING ENCODE BUFFER::= 27 88001D00 F0003800 31004600 35004500 32003400 38003000 30003000 30003000 30003000 31010180 69860201 80866940 02006F00 67007740 05000005 40B50000 12138000 0008A001 810B1249 53444E2D 564F4943 45E1575D A6175611 CC8014A6 05156164 9A056120 01801100 E1575DA6 175611CC 8015A605 1561649A 2A010402 006F0067 0077C02B 955C0F08 2A864886 F70D0205 00808010 5475A4C0 A833E7DE 8E370AD3 A8CDFF01 00 Mar 4 01:32:00.240: h323chan_dgram_send:Sent UDP msg. Bytes sent: 170 to 172.16.13.35:1719 Mar 4 01:32:00.240: RASLib::GW_RASSendARQ: ARQ (seq# 30) sent to 172.16.13.35 Mar 4 01:32:00.312: h323chan_chn_process_read_socket Mar 4 01:32:00.312: h323chan_chn_process_read_socket: fd (2) of type CONNECTED has data Mar 4 01:32:00.312: h323chan_chn_process_read_socket: fd (2) of type CONNECTED has data Mar 4 3640-1#01:32:00.312: h323chan_chn_process_read_socket: h323chan accepted/connected Mar 4 01:32:00.312: h323chan_dgram_recvdata:rcvd from [172.16.13.35:1719] on so ck[2] Mar 4 01:32:00.312: RAS INCOMING ENCODE BUFFER::= 2C 001D8001 00 Mar 4 01:32:00.312: Mar 4 01:32:00.312: RAS INCOMING PDU ::= value RasMessage ::= admissionReject : !--- ARQ is rejected with a security denial reason. { requestSeqNum 30 rejectReason securityDenial : NULL } Mar 4 01:32:00.312: ARJ (seq# 30) rcvd
I principali problemi da affrontare includono:
Configurazione del gateway e del gatekeeper
Configurazione RADIUS sul gatekeeper e sul server RADIUS
Protocollo NTP (Network Time Protocol) - È necessario disporre della stessa ora su tutti i gateway e i gatekeeper. Poiché le informazioni di autenticazione includono un timestamp, è importante sincronizzare tutti i Cisco H.323 Gateway e i Gatekeeper (o un'altra entità che esegue l'autenticazione). I gateway Cisco H.323 devono essere sincronizzati con NTP.
Errore software causato da un bug
Poiché tutti i livelli di sicurezza coprono sia le richieste di registrazione che quelle per chiamata, per questa esercitazione il laboratorio viene impostato con lo stesso livello di sicurezza. I flussi di chiamata per la parte di registrazione e una normale chiamata VoIP sono spiegati nella configurazione qui.
Nota: la configurazione qui non è completa. Tra gli output del comando debug sono disponibili altri comandi. È progettato per mostrare i problemi che possono verificarsi se non si verificano tutti gli elementi, ad esempio la configurazione, NTP e RADIUS. Inoltre, il gateway viene autenticato sul gatekeeper localmente, in modo che sia possibile vedere quali valori sono impostati per l'ID e la password del gateway. Questa configurazione viene frammentata in modo da visualizzare solo la configurazione correlata.
! interface Ethernet0/0 ip address 172.16.13.15 255.255.255.224 half-duplex h323-gateway voip interface h323-gateway voip id gka-1 ipaddr 172.16.13.35 1718 !--- The gatekeeper name is gka-1. h323-gateway voip h323-id gwa-1@cisco.com !--- The gateway H323-ID is gwa-1@cisco.com. h323-gateway voip tech-prefix 1# ! ! gateway ! line con 0 exec-timeout 0 0 logging synchronous line aux 0 line vty 0 4 exec-timeout 0 0 password ww logging synchronous end !--- No NTP is configured. !--- The snipped gatekeeper configuration is like this: ! aaa new-model aaa authentication login default local aaa authentication login h323 local aaa authorization exec default local aaa authorization exec h323 local aaa accounting connection h323 start-stop group radius ! username gwa-1 password 0 2222 username gwa-2 password 0 2222 ! gatekeeper zone local gka-1 cisco.com 172.16.13.35 security token required-for all !--- The gatekeeper is configured for the "All level security". no shutdown ! ! line con 0 exec-timeout 0 0 line aux 0 line vty 0 4 password ww line vty 5 15 ! no scheduler max-task-time no scheduler allocate ntp master !--- This gatekeeper is set as an NTP master. ! end
Nell'esempio riportato di seguito sono attivati i seguenti debug:
La prima cosa che si verifica è che il gateway invia una risposta GRQ al gatekeeper, il gatekeeper invia un messaggio GCF al gateway. Il gateway invia quindi una richiesta di offerta e attende una richiesta RCF o RJ.
Nella configurazione precedente, il gateway non è impostato per alcun livello di sicurezza in modo che il relativo GRQ non sia dotato della funzionalità di autenticazione necessaria per i token. Tuttavia, il gatekeeper restituisce comunque un GCF, come mostra questo output:
*Mar 2 13:32:45.413: RAS INCOMING ENCODE BUFFER::= 00 A0000006 0008914A 000200AC 100D0FD2 C6088001 3C050401 00204002 00006700 6B006100 2D003102 400E0067 00770061 002D0031 00400063 00690073 0063006F 002E0063 006F006D 0080CC *Mar 2 13:32:45.421: *Mar 2 13:32:45.425: RAS INCOMING PDU ::= value RasMessage ::= gatekeeperRequest : { requestSeqNum 1 protocolIdentifier { 0 0 8 2250 0 2 } rasAddress ipAddress : { ip 'AC100D0F'H port 53958 } endpointType { gateway { protocol { voice : { supportedPrefixes { { prefix e164 : "1#" } } } } } mc FALSE undefinedNode FALSE } gatekeeperIdentifier {"gka-1"} endpointAlias { h323-ID : {"gwa-1@cisco.com"}, !--- The H.323-ID of the gateway is gwa-1@cisco.com. e164 : "99" } } *Mar 2 13:32:45.445: RAS OUTGOING PDU ::= value RasMessage ::= gatekeeperConfirm : { requestSeqNum 1 protocolIdentifier { 0 0 8 2250 0 3 } gatekeeperIdentifier {"gka-1"} rasAddress ipAddress : { ip 'AC100D23'H port 1719 } } !--- The gateway sends an RRQ message to the gatekeeper with the !--- IP address sent in the GCF. This RRQ does not carry any Token information !--- because security is not configured on the gateway. *Mar 2 13:32:45.477: RAS INCOMING ENCODE BUFFER::= 0E C0000106 0008914A 00028001 00AC100D 0F06B801 00AC100D 0FD2C608 80013C05 04010020 40000240 0E006700 77006100 2D003100 40006300 69007300 63006F00 2E006300 6F006D00 80CC0800 67006B00 61002D00 3100B500 00120E8A 02003B01 000100 *Mar 2 13:32:45.489: *Mar 2 13:32:45.493: RAS INCOMING PDU ::= value RasMessage ::= registrationRequest : { requestSeqNum 2 protocolIdentifier { 0 0 8 2250 0 2 } discoveryComplete TRUE callSignalAddress { ipAddress : { ip 'AC100D0F'H port 1720 } } rasAddress { ipAddress : { ip 'AC100D0F'H port 53958 } } terminalType { gateway { protocol { voice : { supportedPrefixes { { prefix e164 : "1#" } } } } } mc FALSE undefinedNode FALSE } terminalAlias { h323-ID : {"gwa-1@cisco.com"}, e164 : "99" } gatekeeperIdentifier {"gka-1"} endpointVendor { vendor { t35CountryCode 181 t35Extension 0 manufacturerCode 18 } } timeToLive 60 keepAlive FALSE willSupplyUUIEs FALSE } !--- Since the gateway does not include !--- any tokens and the gatekeeper is set to authenticate !--- all endpoints and calls, the gatekeeper rejects the gateway request. !--- It sends an RRJ with the securityDenial reason. *Mar 2 13:32:45.525: RAS OUTGOING PDU ::= value RasMessage ::= registrationReject : { requestSeqNum 2 protocolIdentifier { 0 0 8 2250 0 3 } rejectReason securityDenial : NULL !--- Gatekeeper rejects the RRQ with security denial reason. gatekeeperIdentifier {"gka-1"} } *Mar 2 13:32:45.529: RAS OUTGOING ENCODE BUFFER::= 14 80000106 0008914A 00038301 00080067 006B0061 002D0031 *Mar 2 13:32:45.533: !--- Configure the security password 2222 level all command on the gateway. !--- The configuration of the gateway appears like this: ! gateway security password 0356095954 level all !--- The password is hashed. ! !--- As soon as you make this change the gateway !--- sends a new GRQ to the gatekeeper. !--- You see the authenticationCapability and algorithmOIDs. *Mar 2 13:33:15.551: RAS INCOMING ENCODE BUFFER::= 02 A0000206 0008914A 000200AC 100D0FD2 C6088001 3C050401 00204002 00006700 6B006100 2D003102 400E0067 00770061 002D0031 00400063 00690073 0063006F 002E0063 006F006D 0080CC0C 30020120 0A01082A 864886F7 0D0205 *Mar 2 13:33:15.563: *Mar 2 13:33:15.567: RAS INCOMING PDU ::= value RasMessage ::= gatekeeperRequest : { requestSeqNum 3 protocolIdentifier { 0 0 8 2250 0 2 } rasAddress ipAddress : { ip 'AC100D0F'H port 53958 } endpointType { gateway { protocol { voice : { supportedPrefixes { { prefix e164 : "1#" } } } } } mc FALSE undefinedNode FALSE } gatekeeperIdentifier {"gka-1"} endpointAlias { h323-ID : {"gwa-1@cisco.com"}, e164 : "99" } authenticationCapability { pwdHash : NULL } algorithmOIDs { { 1 2 840 113549 2 5 } } }
Questo spiega alcuni messaggi del GRQ:
authenticationCapability: questo campo ha solo il valore pwdHash. Indica che l'hashing MD5 è il meccanismo di autenticazione.
algorithmOIDs - ID oggetto dell'algoritmo. In questo caso porta il valore (1 2 840 113549 2 5) che è l'ID oggetto per l'hashing del Message Digest 5.
(1 2 840 113549 2 5) è convertito in iso(1) member-body(2) US(840) rsadsi(113549) digestAlgorithm(2) md5(5). Pertanto, Cisco esegue l'hashing della password MD5.
Rsadsi sta per RSA data security Inc. L'identificatore oggetto OSI (Open Systems Interconnection) di RSA Data Security, Inc. è 1.2.840.113549 (0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d in formato esadecimale), come registrato dall'American National Standards Institute (ANSI).
Il gatekeeper invia nuovamente un GCF come messaggio precedente. Il gateway invia quindi una richiesta di offerta con determinati campi per descrivere i token utilizzati per l'autenticazione. Nell'esempio viene mostrato il messaggio asn1 RQ inviato.
*Mar 2 13:33:15.635: RAS INCOMING ENCODE BUFFER::= 0E C0000306 0008914A 00028001 00AC100D 0F06B801 00AC100D 0FD2C608 80013C05 04010020 40000240 0E006700 77006100 2D003100 40006300 69007300 63006F00 2E006300 6F006D00 80CC0800 67006B00 61002D00 3100B500 00120EEA 02003B47 014D000A 2A864886 F70C0A01 0201C02B 92A53610 B9D84DAE 58F6CB4B 5EE5DFB6 B92DD281 01011E00 67007700 61002D00 31004000 63006900 73006300 6F002E00 63006F00 6D000042 01040E00 67007700 61002D00 31004000 63006900 73006300 6F002E00 63006F00 6DC02B92 A536082A 864886F7 0D020500 80802B21 B94F3980 ED12116C 56B79F4B 4CDB0100 0100 *Mar 2 13:33:15.667: *Mar 2 13:33:15.671: RAS INCOMING PDU ::= value RasMessage ::= registrationRequest : { requestSeqNum 4 protocolIdentifier { 0 0 8 2250 0 2 } discoveryComplete TRUE callSignalAddress { ipAddress : { ip 'AC100D0F'H port 1720 } } rasAddress { ipAddress : { ip 'AC100D0F'H port 53958 } } terminalType { gateway { protocol { voice : { supportedPrefixes { { prefix e164 : "1#" } } } } } mc FALSE undefinedNode FALSE } terminalAlias { h323-ID : {"gwa-1@cisco.com"}, e164 : "99" } gatekeeperIdentifier {"gka-1"} endpointVendor { vendor { t35CountryCode 181 t35Extension 0 manufacturerCode 18 } } timeToLive 60 tokens !--- Clear Token, or what is called CAT. { { tokenOID { 1 2 840 113548 10 1 2 1 } timeStamp 731030839 challenge 'B9D84DAE58F6CB4B5EE5DFB6B92DD281'H random 1 generalID {"gwa-1@cisco.com"} } } cryptoTokens !--- CryptoToken field. { cryptoEPPwdHash : { alias h323-ID : {"gwa-1@cisco.com"} timeStamp 731030839 token { algorithmOID { 1 2 840 113549 2 5 } paramS { } hash "2B21B94F3980ED12116C56B79F4B4CDB" } } } keepAlive FALSE willSupplyUUIEs FALSE }
Prima di esaminare la risposta, in questa sezione vengono illustrati alcuni dei campi correlati nel messaggio di richiesta di offerta sopra riportato. Esistono due tipi di token: un token clear (CAT) e un token crypto.
Come accennato in precedenza, i gatekeeper Cisco ignorano i token di crittografia. Tuttavia, il gateway continua a inviare entrambi perché non sa a quale tipo di gatekeeper sta parlando. Poiché altri fornitori potrebbero utilizzare i token di crittografia, il gateway li invia entrambi.
In questo documento viene illustrata la sintassi di ClearToken.
tokenOID: l'ID oggetto per identificare il token.
timeStamp: l'ora UTC (Coordinated Universal Time) corrente del gateway. Secondi da 00:00 1/1/1970 UTC.
Viene utilizzato come CHAP-Challenge implicita come se fosse inizialmente proveniente dal gatekeeper.
challenge: un digest del messaggio MD5 da 16 byte generato dal gateway utilizzando i seguenti campi:
challenge = [ random + password GW/utente + timestamp ] Hash MD5
RADIUS esegue questo calcolo (poiché conosce il numero casuale, la password del gateway e la richiesta di verifica CHAP) per determinare la richiesta di verifica: Risposta CHAP = [ ID CHAP + Password utente + Richiesta CHAP ] Hash MD5
random - Valore a un byte utilizzato da RADIUS per identificare la richiesta specifica.
Il gateway incrementa un modulo variabile di 256 per ogni richiesta di autenticazione per soddisfare questo requisito RADIUS.
generalID: l'ID gateway H323 o il numero di account utente in base al livello di sicurezza e al tipo di messaggio RAS.
Nota: tutti questi campi sono importanti. Tuttavia, viene prestata maggiore attenzione sia all'indicatore orario che all'ID generale. In questo caso, l'indicatore orario è 731030839 e l'ID generale è gwa-1@cisco.com.
Il cryptoToken nella RRQ contiene informazioni sul gateway che genera il token. inclusi l'ID del gateway (ovvero l'ID H.323 configurato sul gateway) e la password del gateway.
Questo campo contiene uno dei tipi cryptoToken definiti per il campo CryptoH323Token specificato in H.225. Attualmente, l'unico tipo di cryptoToken supportato è cryptoEPPwdHash.
Questi campi sono contenuti nel campo cryptoEPPwdHash:
alias: l'alias del gateway, ovvero l'ID H.323 del gateway.
timestamp - Indica il timestamp corrente.
token: PwdCertToken con codifica MD5 (Message Digest 5). Questo campo contiene i seguenti elementi:
timestamp - Equivale al timestamp di cryptoEPPwdHash.
password: la password del gateway.
generalID: lo stesso alias del gateway incluso in cryptoEPPwdHash.
tokenID: l'ID oggetto.
Visualizzare la risposta dal gatekeeper in questo esempio.
*Mar 2 13:33:15.723: RAS OUTGOING PDU ::= value RasMessage ::= registrationReject : { requestSeqNum 4 protocolIdentifier { 0 0 8 2250 0 3 } rejectReason securityDenial : NULL !--- The gatekeeper rejects the RRQ with securityDenial reason. gatekeeperIdentifier {"gka-1"} } *Mar 2 13:33:15.727: RAS OUTGOING ENCODE BUFFER::= 14 80000306 0008914A 00038301 00080067 006B0061 002D0031 *Mar 2 13:33:15.731:
La richiesta di offerta viene rifiutata dal gatekeeper. Ciò si verifica perché non è stato impostato alcun NTP nella configurazione del gateway. Il gatekeeper controlla l'indicatore orario del token per verificare che si trovi in una finestra accettabile in relazione al proprio tempo. Attualmente questa finestra si trova a circa 30 secondi dall'ora UTC del gatekeeper.
Un token esterno a questa finestra determina l'eliminazione del messaggio da parte del gatekeeper. In questo modo si evitano attacchi di tipo replay da parte di chi tenta di riutilizzare un token snooped. In pratica, tutti i gateway e i gatekeeper devono utilizzare il protocollo NTP per evitare questo problema di distorsione temporale. Il gatekeeper rileva che il timestamp nel token rientra nella finestra accettabile dell'ora. Pertanto, non esegue il controllo con RADIUS per autenticare il gateway.
Il gateway viene quindi configurato per il NTP che punta al gatekeeper come master NTP, in modo che sia il gateway che il gatekeeper abbiano la stessa ora. In questo caso, il gateway invia una nuova RQ e questa volta il gatekeeper risponde alla nuova RQ con una RJ.
Questi debug vengono dal gatekeeper. I debug vengono eseguiti per verificare se il gatekeeper passa alla fase di autenticazione.
Mar 2 13:57:41.313: RAS INCOMING ENCODE BUFFER::= 0E C0005906 0008914A 00028001 00AC100D 0F06B801 00AC100D 0FD2C608 80013C05 04010020 40000240 0E006700 77006100 2D003100 40006300 69007300 63006F00 2E006300 6F006D00 80CC0800 67006B00 61002D00 3100B500 00120EEA 02003B47 014D000A 2A864886 F70C0A01 0201C02B 9367D410 7DD4C637 B6DD4E34 0883A7E5 E12A2B78 012C1E00 67007700 61002D00 31004000 63006900 73006300 6F002E00 63006F00 6D000042 01040E00 67007700 61002D00 31004000 63006900 73006300 6F002E00 63006F00 6DC02B93 67D4082A 864886F7 0D020500 8080ED73 946B13E9 EAED6F4D FED13478 A6270100 0100 Mar 2 13:57:41.345: Mar 2 13:57:41.349: RAS INCOMING PDU ::= value RasMessage ::= registrationRequest : { requestSeqNum 90 protocolIdentifier { 0 0 8 2250 0 2 } discoveryComplete TRUE callSignalAddress { ipAddress : { ip 'AC100D0F'H port 1720 } } rasAddress { ipAddress : { ip 'AC100D0F'H port 53958 } } terminalType { gateway { protocol { voice : { supportedPrefixes { { prefix e164 : "1#" } } } } } mc FALSE undefinedNode FALSE } terminalAlias { h323-ID : {"gwa-1@cisco.com"}, e164 : "99" } gatekeeperIdentifier {"gka-1"} endpointVendor { vendor { t35CountryCode 181 t35Extension 0 manufacturerCode 18 } } timeToLive 60 tokens { { tokenOID { 1 2 840 113548 10 1 2 1 } timeStamp 731080661 challenge '7DD4C637B6DD4E340883A7E5E12A2B78'H random 44 generalID {"gwa-1@cisco.com"} } } cryptoTokens { cryptoEPPwdHash : { alias h323-ID : {"gwa-1@cisco.com"} timeStamp 731080661 token { algorithmOID { 1 2 840 113549 2 5 } paramS { } hash "ED73946B13E9EAED6F4DFED13478A627" } } } keepAlive FALSE willSupplyUUIEs FALSE } Mar 2 13:57:41.401: AAA: parse name=<no string> idb type=-1 tty=-1 Mar 2 13:57:41.405: AAA/MEMORY: create_user (0x81416060) user='gwa-1@cisco.com' ruser='NULL' ds0=0port='NULL' rem_addr='NULL' authen_type=CHAP service=LOGIN priv=0 initial_task_id='0' Mar 2 13:57:41.405: AAA/AUTHEN/START (2845574558): port='' list='h323' action=LOGIN service=LOGIN Mar 2 13:57:41.405: AAA/AUTHEN/START (2845574558): found list h323 Mar 2 13:57:41.405: AAA/AUTHEN/START (2845574558): Method=LOCAL Mar 2 13:57:41.405: AAA/AUTHEN (2845574558): User not found, end of method list Mar 2 13:57:41.405: AAA/AUTHEN (2845574558): status = FAIL !--- Authentication fails. The user is not found on the list. Mar 2 13:57:41.405: voip_chapstyle_auth: astruct.status = 2 Mar 2 13:57:41.405: AAA/MEMORY: free_user (0x81416060) user='gwa-1@cisco.com' ruser='NULL' port='NULL' rem_addr='NULL' authen_type=CHAP service=LOGIN priv=0 Mar 2 13:57:41.409: RAS OUTGOING PDU ::= value RasMessage ::= registrationReject : { requestSeqNum 90 protocolIdentifier { 0 0 8 2250 0 3 } rejectReason securityDenial : NULL gatekeeperIdentifier {"gka-1"} }
Dopo aver configurato NTP, il gatekeeper rifiuta ancora la richiesta di offerta. Questa volta, tuttavia, viene eseguito il processo di autenticazione per il gateway. Il gatekeeper rifiuta la richiesta di offerta perché l'utente (in questo caso l'ID gateway) non è presente nell'elenco degli utenti validi nel RADIUS. Il gateway viene autenticato localmente nella configurazione del gatekeeper. Nell'elenco degli utenti è presente gwa-1. Tuttavia, non è l'utente corretto in quanto nella RQ è presente gwa-1@cisco.com.
Inoltre, dopo aver configurato il comando username gwa-1@cisco.com password 0 222 sul gatekeeper, il gatekeeper conferma la RQ e il gateway viene registrato.
In questa esercitazione viene registrato un altro gateway (gwa-2) per lo stesso gatekeeper (gka-1). Viene effettuata una chiamata da gwa-1@cisco.com a gwa-2 per verificare l'aspetto dei messaggi ARQ, ACF e setup.
I debug raccolti provengono dal gateway di origine e di destinazione (gwa-2).
Una spiegazione di alcuni messaggi di debug è inclusa.
Prima di stampare i debug dal gateway di origine/chiusura, questo testo spiega il flusso di chiamata:
Quando si riceve un messaggio SETUP dalla PSTN, il gateway invia un ARQ a e riceve un ACF dal gatekeeper.
Quando il gateway riceve l'ACF, genera un CAT utilizzando la password del gateway, l'alias H323-ID e l'ora corrente. Il token viene inserito nel Call Control Block (CCB).
Quando il gateway invia il messaggio SETUP al gateway terminante, recupera il token di accesso dal CCB e lo inserisce nel campo nonStandardParameter di un clearToken all'interno del messaggio SETUP.
Il gateway terminante rimuove il token dal messaggio SETUP, lo converte da un parametro non standard in un CAT e lo inserisce nell'ARQ.
Il gatekeeper controlla l'indicatore orario del token per verificare che si trovi in una finestra accettabile in relazione al proprio tempo. Attualmente questa finestra si trova a circa 30 secondi dall'ora UTC del gatekeeper. Un token esterno a questa finestra determina l'eliminazione del messaggio da parte del gatekeeper. In questo modo la chiamata verrà rifiutata.
Se il token è accettabile, il gatekeeper formatta un pacchetto di richiesta di accesso RADIUS, inserisce gli attributi appropriati per verificare una richiesta di verifica CHAP e lo invia a un server RADIUS.
In base al presupposto che l'alias del gateway sia noto nel server, quest'ultimo individua la password associata all'alias e genera la propria risposta CHAP utilizzando l'alias, la password e la richiesta CHAP del gatekeeper. Se la risposta CHAP corrisponde a quella ricevuta dal gatekeeper, il server invia un pacchetto di accettazione dell'accesso al gatekeeper. Se non corrispondono o se l'alias del gateway non è presente nel database del server, il server invia un pacchetto di rifiuto di accesso al gatekeeper.
Il gatekeeper risponde al gateway con un ACF se riceve un'accettazione di accesso o con un ARJ con cause code securityDenial se riceve un rifiuto di accesso. Se il gateway riceve un ACF, la chiamata è connessa.
Nell'esempio viene mostrato come eseguire il debug dal gateway di origine.
Nota: i debug h225 asn1 per l'installazione non sono riportati in questo esempio, in quanto sono gli stessi dell'esempio del gateway di terminazione che segue l'esempio del gateway di origine.
Mar 2 19:39:07.376: cc_api_call_setup_ind (vdbPtr=0x6264AB2C, callInfo={called=3653,called_oct3=0x81,calling=,calling_oct3=0x81,calling_oct3a=0x0, calling_xlated=false,subscriber_type_str=RegularLine,fdest=1,peer_tag=5336, prog_ind=3},callID=0x61DDC2A8) Mar 2 19:39:07.376: cc_api_call_setup_ind type 13 , prot 0 Mar 2 19:39:07.376: cc_process_call_setup_ind (event=0x6231F0C4) Mar 2 19:39:07.380: >>>>CCAPI handed cid 30 with tag 5336 to app "DEFAULT" Mar 2 19:39:07.380: sess_appl: ev(24=CC_EV_CALL_SETUP_IND), cid(30), disp(0) Mar 2 19:39:07.380: sess_appl: ev(SSA_EV_CALL_SETUP_IND), cid(30), disp(0) Mar 2 19:39:07.380: ssaCallSetupInd Mar 2 19:39:07.380: ccCallSetContext (callID=0x1E, context=0x6215B5A0) Mar 2 19:39:07.380: ssaCallSetupInd cid(30), st(SSA_CS_MAPPING),oldst(0), ev(24)ev->e.evCallSetupInd.nCallInfo.finalDestFlag = 1 Mar 2 19:39:07.380: ssaCallSetupInd finalDest cllng(1#5336), clled(3653) Mar 2 19:39:07.380: ssaCallSetupInd cid(30), st(SSA_CS_CALL_SETTING),oldst(0), ev(24)dpMatchPeersMoreArg result= 0 Mar 2 19:39:07.380: ssaSetupPeer cid(30) peer list: tag(3653) called number (3653) Mar 2 19:39:07.380: ssaSetupPeer cid(30), destPat(3653), matched(4), prefix(), peer(62664554), peer->encapType (2) Mar 2 19:39:07.380: ccCallProceeding (callID=0x1E, prog_ind=0x0) Mar 2 19:39:07.380: ccCallSetupRequest (Inbound call = 0x1E, outbound peer =3653, dest=, params=0x62327730 mode=0, *callID=0x62327A98, prog_ind = 3) Mar 2 19:39:07.380: ccCallSetupRequest numbering_type 0x81 Mar 2 19:39:07.380: ccCallSetupRequest encapType 2 clid_restrict_disable 1 null_orig_clg 1 clid_transparent 0 callingNumber 1#5336 Mar 2 19:39:07.380: dest pattern 3653, called 3653, digit_strip 0 Mar 2 19:39:07.380: callingNumber=1#5336, calledNumber=3653, redirectNumber= display_info= calling_oct3a=0 Mar 2 19:39:07.384: accountNumber=, finalDestFlag=1, guid=6aef.3a87.165c.11cc.8040.d661.b74f.9390 Mar 2 19:39:07.384: peer_tag=3653 Mar 2 19:39:07.384: ccIFCallSetupRequestPrivate: (vdbPtr=0x621B2360, dest=, callParams={called=3653,called_oct3=0x81, calling=1#5336,calling_oct3=0x81, calling_xlated=false, subscriber_type_str=RegularLine, fdest=1, voice_peer_tag=3653},mode=0x0) vdbPtr type = 1 Mar 2 19:39:07.384: ccIFCallSetupRequestPrivate: (vdbPtr=0x621B2360, dest=, callParams={called=3653, called_oct3 0x81, calling=1#5336,calling_oct3 0x81, calling_xlated=false, fdest=1, voice_peer_tag=3653}, mode=0x0, xltrc=-5) Mar 2 19:39:07.384: ccSaveDialpeerTag (callID=0x1E, dialpeer_tag=0xE45) Mar 2 19:39:07.384: ccCallSetContext (callID=0x1F, context=0x621545DC) Mar 2 19:39:07.384: ccCallReportDigits (callID=0x1E, enable=0x0) Mar 2 19:39:07.384: cc_api_call_report_digits_done (vdbPtr=0x6264AB2C, callID=0x1E, disp=0) Mar 2 19:39:07.384: sess_appl: ev(52=CC_EV_CALL_REPORT_DIGITS_DONE), cid(30),disp(0) Mar 2 19:39:07.384: cid(30)st(SSA_CS_CALL_SETTING)ev(SSA_EV_CALL_REPORT_DIGITS_DONE) oldst(SSA_CS_MAPPING)cfid(-1)csize(0)in(1)fDest(1) Mar 2 19:39:07.384: -cid2(31)st2(SSA_CS_CALL_SETTING)oldst2(SSA_CS_MAPPING) Mar 2 19:39:07.384: ssaReportDigitsDone cid(30) peer list: (empty) Mar 2 19:39:07.384: ssaReportDigitsDone callid=30 Reporting disabled. Mar 2 19:39:07.388: H225 NONSTD OUTGOING PDU ::= value ARQnonStandardInfo ::= { sourceAlias { } sourceExtAlias { } interfaceSpecificBillingId "ISDN-VOICE" } Mar 2 19:39:07.388: H225 NONSTD OUTGOING ENCODE BUFFER::= 80 00000820 0B124953 444E2D56 4F494345 Mar 2 19:39:07.388: Mar 2 19:39:07.388: H235 OUTGOING ENCODE BUFFER::= 61 000100C0 2B93B7DA 08003200 32003200 3200001E 00670077 0061002D 00310040 00630069 00730063 006F002E 0063006F 006D0000 Mar 2 19:39:07.392: Mar 2 19:39:07.392: RAS OUTGOING PDU ::= value RasMessage ::= admissionRequest : !--- The ARQ is sent to the gatekeeper. { requestSeqNum 549 callType pointToPoint : NULL callModel direct : NULL endpointIdentifier {"8155346000000001"} destinationInfo { e164 : "2#3653" } srcInfo { e164 : "1#5336", h323-ID : {"gwa-1@cisco.com"} } bandWidth 640 callReferenceValue 15 nonStandardData { nonStandardIdentifier h221NonStandard : { t35CountryCode 181 t35Extension 0 manufacturerCode 18 } data '80000008200B124953444E2D564F494345'H } conferenceID '6AEF3A87165C11CC8040D661B74F9390'H activeMC FALSE answerCall FALSE canMapAlias TRUE callIdentifier { guid '6AEF3A87165C11CC8041D661B74F9390'H } tokens !--- Token is included since there is an all level of security. { { tokenOID { 1 2 840 113548 10 1 2 1 } timeStamp 731101147 challenge '1CADDBA948A8291C1F134035C9613E3E'H random 246 generalID {"gwa-1@cisco.com"} } } cryptoTokens { cryptoEPPwdHash : { alias h323-ID : {"gwa-1@cisco.com"} timeStamp 731101147 token { algorithmOID { 1 2 840 113549 2 5 } paramS { } hash "5760B7B4877335B7CD24BD24E4A2AA89" } } } willSupplyUUIEs FALSE } Mar 2 19:39:07.408: RAS OUTGOING ENCODE BUFFER::= 27 88022400 F0003800 31003500 35003300 34003600 30003000 30003000 30003000 30003000 31010280 50698602 02804086 69400E00 67007700 61002D00 31004000 63006900 73006300 6F002E00 63006F00 6D400280 000F40B5 00001211 80000008 200B1249 53444E2D 564F4943 456AEF3A 87165C11 CC8040D6 61B74F93 9004E320 01801100 6AEF3A87 165C11CC 8041D661 B74F9390 48014D00 0A2A8648 86F70C0A 010201C0 2B93B7DA 101CADDB A948A829 1C1F1340 35C9613E 3E0200F6 1E006700 77006100 2D003100 40006300 69007300 63006F00 2E006300 6F006D00 00420104 0E006700 77006100 2D003100 40006300 69007300 63006F00 2E006300 6F006DC0 2B93B7DA 082A8648 86F70D02 05008080 5760B7B4 877335B7 CD24BD24 E4A2AA89 0100 Mar 2 19:39:07.412: h323chan_dgram_send:Sent UDP msg. Bytes sent: 291 to 172.16.13.35:1719 Mar 2 19:39:07.416: RASLib::GW_RASSendARQ: ARQ (seq# 549) sent to 172.16.13.35 Mar 2 19:39:07.432: h323chan_dgram_recvdata:rcvd from [172.16.13.35:1719] on sock[1] Mar 2 19:39:07.432: RAS INCOMING ENCODE BUFFER::= 2B 00022440 028000AC 100D1706 B800EF1A 00C00100 020000 Mar 2 19:39:07.432: Mar 2 19:39:07.432: RAS INCOMING PDU ::= value RasMessage ::= admissionConfirm : !--- Received from the gatekeeper with no tokens. { requestSeqNum 549 bandWidth 640 callModel direct : NULL destCallSignalAddress ipAddress : { ip 'AC100D17'H port 1720 } irrFrequency 240 willRespondToIRR FALSE uuiesRequested { setup FALSE callProceeding FALSE connect FALSE alerting FALSE information FALSE releaseComplete FALSE facility FALSE progress FALSE empty FALSE } } Mar 2 19:39:07.436: ACF (seq# 549) rcvd
Nell'esempio vengono mostrati i debug del gateway terminante (TGW). Notare che il TGW ha impostato la seconda gamba da quando ha ottenuto ACF, e la chiamata è collegata.
Mar 2 19:39:07.493: PDU DATA = 6147C2BC value H323_UserInformation ::= { h323-uu-pdu { h323-message-body setup : { protocolIdentifier { 0 0 8 2250 0 2 } sourceAddress { h323-ID : {"gwa-1@cisco.com"} !--- Setup is sent from gwa-1@cisco.com gateway. } sourceInfo { gateway { protocol { voice : { supportedPrefixes { { prefix e164 : "1#" } } } } } mc FALSE undefinedNode FALSE } activeMC FALSE conferenceID '6AEF3A87165C11CC8040D661B74F9390'H conferenceGoal create : NULL callType pointToPoint : NULL sourceCallSignalAddress ipAddress : { ip 'AC100D0F'H port 11032 } callIdentifier { guid '6AEF3A87165C11CC8041D661B74F9390'H } tokens !--- Setup includes the Clear Token (CAT). { { tokenOID { 1 2 840 113548 10 1 2 1 } timeStamp 731101147 challenge 'AFBAAFDF79446B9D8CE164DB8C111A87'H random 247 generalID {"gwa-1@cisco.com"} nonStandard { nonStandardIdentifier { 0 1 2 4 } data '2B93B7DBAFBAAFDF79446B9D8CE164DB8C111A87...'H } } } fastStart { '0000000C6013800A04000100AC100D0F4673'H, '400000060401004C6013801114000100AC100D0F...'H } mediaWaitForConnect FALSE canOverlapSend FALSE } h245Tunneling TRUE nonStandardControl { { nonStandardIdentifier h221NonStandard : { t35CountryCode 181 t35Extension 0 manufacturerCode 18 } data 'E001020001041504039090A31803A983811E0285...'H } } } } RAW_BUFFER::= E0 01020001 04150403 9090A318 03A98381 1E028583 70058133 36353302 80060004 00000003 Mar 2 19:39:07.509: PDU DATA = 6147F378 value H323_UU_NonStdInfo ::= { version 2 protoParam qsigNonStdInfo : { iei 4 rawMesg '04039090A31803A983811E028583700581333635...'H } progIndParam progIndIEinfo : { progIndIE '00000003'H } } PDU DATA = 6147F378 value ARQnonStandardInfo ::= { sourceAlias { } sourceExtAlias { } } RAW_BUFFER::= 00 0000 Mar 2 19:39:07.517: RAW_BUFFER::= 61 000100C0 2B93B7DA 08003200 32003200 3200000A 00670077 0061002D 00320000 Mar 2 19:39:07.517: PDU DATA = 6147C2BC value RasMessage ::= admissionRequest : !--- An answer ARQ is sent to the gatekeeper to authenticate the caller. { requestSeqNum 22 callType pointToPoint : NULL callModel direct : NULL endpointIdentifier {"81F5989C00000002"} destinationInfo { e164 : "2#3653" } srcInfo { e164 : "1#5336" } srcCallSignalAddress ipAddress : { ip 'AC100D0F'H port 11032 } bandWidth 640 callReferenceValue 2 nonStandardData { nonStandardIdentifier h221NonStandard : { t35CountryCode 181 t35Extension 0 manufacturerCode 18 } data '000000'H } conferenceID '6AEF3A87165C11CC8040D661B74F9390'H activeMC FALSE answerCall TRUE canMapAlias FALSE callIdentifier { guid '6AEF3A87165C11CC8041D661B74F9390'H } tokens !--- CAT is included. { { tokenOID { 0 4 0 1321 1 2 } timeStamp 731101147 challenge 'AFBAAFDF79446B9D8CE164DB8C111A87'H random 247 generalID {"gwa-1@cisco.com"} } } cryptoTokens { cryptoEPPwdHash : { alias h323-ID : {"gwa-2"} timeStamp 731101147 token { algorithmOID { 1 2 840 113549 2 5 } paramS { } hash "8479E7DE63AC17C6A46E9E19659568" } } } willSupplyUUIEs FALSE } RAW_BUFFER::= 27 98001500 F0003800 31004600 35003900 38003900 43003000 30003000 30003000 30003000 32010280 50698601 02804086 6900AC10 0D0F2B18 40028000 0240B500 00120300 00006AEF 3A87165C 11CC8040 D661B74F 939044E3 20010011 006AEF3A 87165C11 CC8041D6 61B74F93 9044014D 00060400 8A290102 C02B93B7 DA10AFBA AFDF7944 6B9D8CE1 64DB8C11 1A870200 F71E0067 00770061 002D0031 00400063 00690073 0063006F 002E0063 006F006D 00002E01 04040067 00770061 002D0032 C02B93B7 DA082A86 4886F70D 02050080 808479E7 0DE63AC1 7C6A46E9 E1965905 680100 Mar 2 19:39:07.533: h323chan_dgram_send:Sent UDP msg. Bytes sent: 228 to 172.16.13.35:1719 Mar 2 19:39:07.533: RASLib::GW_RASSendARQ: ARQ (seq# 22) sent to 172.16.13.35 Mar 2 19:39:07.549: h323chan_dgram_recvdata:rcvd from [172.16.13.35:1719] on sock[1] RAW_BUFFER::= 2B 00001540 028000AC 100D1706 B800EF1A 00C00100 020000 Mar 2 19:39:07.549: PDU DATA = 6147C2BC value RasMessage ::= admissionConfirm : !--- ACF is received from the gatekeeper. { requestSeqNum 22 bandWidth 640 callModel direct : NULL destCallSignalAddress ipAddress : { ip 'AC100D17'H port 1720 } irrFrequency 240 willRespondToIRR FALSE uuiesRequested { setup FALSE callProceeding FALSE connect FALSE alerting FALSE information FALSE releaseComplete FALSE facility FALSE progress FALSE empty FALSE } } Mar 2 19:39:07.553: ACF (seq# 22) rcvd Mar 2 19:39:07.553: cc_api_call_setup_ind (vdbPtr=0x61BC92EC, callInfo={called=2#3653,called_oct3=0x81,calling=1#5336,calling_oct3=0x81, calling_oct3a=0x0,subscriber_type_str=Unknown, fdest=1 peer_tag=5336, prog_ind=3},callID=0x6217CC64) Mar 2 19:39:07.553: cc_api_call_setup_ind type 0 , prot 1 Mar 2 19:39:07.553: cc_api_call_setup_ind (vdbPtr=0x61BC92EC, callInfo={called=2#3653, calling=1#5336, fdest=1 peer_tag=5336}, callID=0x6217CC64) Mar 2 19:39:07.553: cc_process_call_setup_ind (event=0x61E1EAFC) Mar 2 19:39:07.553: >>>>CCAPI handed cid 9 with tag 5336 to app "DEFAULT" Mar 2 19:39:07.553: sess_appl: ev(25=CC_EV_CALL_SETUP_IND), cid(9), disp(0) Mar 2 19:39:07.553: sess_appl: ev(SSA_EV_CALL_SETUP_IND), cid(9), disp(0) Mar 2 19:39:07.553: ssaCallSetupInd Mar 2 19:39:07.553: ccCallSetContext (callID=0x9, context=0x62447A28) Mar 2 19:39:07.553: ssaCallSetupInd cid(9), st(SSA_CS_MAPPING),oldst(0), ev(25)ev->e.evCallSetupInd.nCallInfo.finalDestFlag = 1 Mar 2 19:39:07.553: ssaCallSetupInd finalDest cllng(1#5336), clled(2#3653) Mar 2 19:39:07.553: ssaCallSetupInd cid(9), st(SSA_CS_CALL_SETTING),oldst(0), ev(25)dpMatchPeersMoreArg result= 0 Mar 2 19:39:07.557: ssaSetupPeer cid(9) peer list: tag(3653) called number (2#3653) Mar 2 19:39:07.557: ssaSetupPeer cid(9), destPat(2#3653), matched(5), prefix(21), peer(620F1EF0), peer->encapType (1) Mar 2 19:39:07.557: ccCallProceeding (callID=0x9, prog_ind=0x0) Mar 2 19:39:07.557: ccCallSetupRequest (Inbound call = 0x9, outbound peer =3653, dest=, params=0x61E296C0 mode=0, *callID=0x61E299D0, prog_ind = 3) Mar 2 19:39:07.557: ccCallSetupRequest numbering_type 0x81 Mar 2 19:39:07.557: dest pattern 2#3653, called 2#3653, digit_strip 1 Mar 2 19:39:07.557: callingNumber=1#5336, calledNumber=2#3653, redirectNumber=display_info= calling_oct3a=0 Mar 2 19:39:07.557: accountNumber=, finalDestFlag=1, guid=6aef.3a87.165c.11cc.8040.d661.b74f.9390 Mar 2 19:39:07.557: peer_tag=3653 Mar 2 19:39:07.557: ccIFCallSetupRequestPrivate: (vdbPtr=0x61E4473C, dest=, callParams={called=2#3653,called_oct3=0x81, calling=1#5336,calling_oct3=0x81, subscriber_type_str=Unknown, fdest=1, voice_peer_tag=3653},mode=0x0) vdbPtr type = 6 Mar 2 19:39:07.557: ccIFCallSetupRequestPrivate: (vdbPtr=0x61E4473C, dest=, callParams={called=2#3653, called_oct3 0x81, calling=1#5336,calling_oct3 0x81, fdest=1, voice_peer_tag=3653}, mode=0x0, xltrc=-4) Mar 2 19:39:07.557: ccSaveDialpeerTag (callID=0x9, dialpeer_tag= Mar 2 19:39:07.557: ccCallSetContext (callID=0xA, context=0x6244D9EC) Mar 2 19:39:07.557: ccCallReportDigits (callID=0x9, enable=0x0)
Nello stesso laboratorio, l'immagine IOS 12.2(6a) viene caricata sull'OGW. Quando viene effettuata una chiamata, si nota che il GW invia ancora un Clear Token basato sulla sua password anche se il gateway non è configurato per l'IVR per raccogliere l'account/il PIN. Inoltre, il gatekeeper configurato per il livello all accetta tale chiamata. Questa condizione è documentata nell'ID bug Cisco CSCdw43224 (solo utenti registrati).
Come accennato in precedenza in questo documento, la sicurezza delle chiamate end-to-end viene fornita con l'uso di token di accesso inviati nel campo clearTokens nei messaggi RAS/H.225. Quando si abilita questa sicurezza, il gateway di origine inoltra il token di accesso ricevuto dal gatekeeper in un ACF all'endpoint H.323 di destinazione nel messaggio SETUP H.225. L'endpoint H.323 di destinazione inoltra quindi il token di accesso ricevuto nel messaggio SETUP al gatekeeper nella richiesta di ammissione. In questo modo, il gatekeeper remoto può ammettere le chiamate in base alla validità del token di accesso. Il contenuto del token di accesso dipende dall'entità che lo genera. Per ridurre al minimo i fori di sicurezza e per proteggersi da attacchi man-in-the-middle, i gatekeeper possono codificare le informazioni specifiche della destinazione nel token di accesso. Ciò significa che quando in un ACF sono forniti elementi alternateEndpoint, il gatekeeper può fornire un token di accesso separato per ogni elemento alternateEndpoint specificato.
Quando tenta di stabilire una connessione per la prima volta, il gateway Cisco invia il token di accesso ricevuto nel campo clearToken dell'ACF con l'indirizzo specificato nel campo destCallSignalAddress. Se il tentativo ha esito negativo e il gateway Cisco prosegue nel tentativo di connessioni con un endpoint alternativo, utilizza il token di accesso associato (se disponibile) dall'elenco alternateEndpoints. Se l'elenco alternateEndpoints ricevuto nell'ACF non include token di accesso, ma l'ACF include un token di accesso, il gateway Cisco include questo token di accesso in tutti i tentativi di connessione con un endpoint alternativo.
Al momento, il protocollo OSP (Open Settlement Protocol) e i relativi token sono supportati solo sui gateway Cisco. Il gatekeeper non è supportato. Il gateway riconosce i token OSP ricevuti da un server di regolamento e li inserisce nel messaggio di installazione Q.931 per un gateway terminante.
Al momento non è possibile configurare diversi livelli di sicurezza per ciascun endpoint o zona. Il livello di protezione è valido per tutte le zone gestite dal gatekeeper. È possibile aprire una richiesta di funzionalità per un problema di questo tipo.
La sicurezza da gatekeeper a gatekeeper interdominio consente di convalidare le richieste da gatekeeper a gatekeeper intradomino e interdominio per hop. Ciò significa che il gatekeeper di destinazione termina il CAT e ne genera uno nuovo se il gatekeeper decide di inoltrare l'LRQ in avanti. Se il gatekeeper rileva una firma LRQ non valida, risponde inviando un LRJ (Location Reject).
Il gatekeeper di origine genera un comando IZCT quando viene avviato un LRQ o quando sta per essere inviato un ACF in caso di chiamata all'interno di una zona. Il token viene attraversato nel relativo percorso di routing. Lungo il percorso, ciascun gatekeeper aggiorna l'ID del gatekeeper di destinazione e/o l'ID del gatekeeper di origine, se necessario, per riflettere le informazioni sulla zona. Il gatekeeper terminante genera un token con la relativa password. Questo token viene trasferito nei messaggi LCF (Location Conferencing) e passato a OGW. L'OGW include questo token nel messaggio H.225 SETUP. Quando il TGW riceve il token, viene inoltrato nella chiamata di risposta ARQ e convalidato dal gatekeeper di terminazione (TGK) senza bisogno di un server RADIUS.
Il tipo di autenticazione è basato sulla password con hashing come descritto in ITU H.235. In particolare, il metodo di cifratura è MD5 con hashing della password.
Lo scopo dell'IZCT è sapere se l'LRQ è arrivato da un dominio straniero, da quale zona e da quale vettore. Viene anche utilizzato per passare un token all'OGW nella LCF dal TGK. Nel formato IZCT, queste informazioni sono obbligatorie:
srcCarrierID—Identificazione vettore di origine
dstCarrierID—Identificazione vettore di destinazione
intCarrierID—Identificazione vettore intermedio
srcZone: zona di origine
dstZone: zona di destinazione
tipo interzona
INTRA_DOMAIN_CISCO
INTER_DOMAIN_CISCO
INTRA_DOMAIN_TERM_NOT_CISCO
INTER_DOMAIN_ORIG_NOT_CISCO
Questa funzione funziona correttamente senza la necessità di un ID vettore dal gateway o di un server CSR (Carrier Sensitive Routing). In questo caso, i campi relativi all'ID vettore sono vuoti. Gli esempi non includono alcun ID vettore. Per un flusso di chiamate dettagliato, il supporto per release e piattaforme e le configurazioni, fare riferimento al miglioramento della sicurezza Gatekeeper interdominio.
La funzione IZCT richiede questa configurazione sul gatekeeper.
Router(gk-config)# [no] security izct password
La password deve contenere da sei a otto caratteri. Identificare la zona in un dominio esterno come il seguente:
Router(config-gk)# zone remote other-gatekeeper-name other-domain-name other-gatekeeper-ip-address [port-number] [cost cost-value [priority priority-value]] [foreign-domain]
Questo diagramma mostra il flusso IZCT.
In questa configurazione, i nomi dei gateway e dei gatekeeper sono gli stessi utilizzati nel diagramma del flusso di chiamate IZCT, ma con lettere minuscole. Il flusso di chiamata viene spiegato dopo la configurazione, con le spiegazioni di debug.
Per spiegare la funzione IZCT e il flusso di chiamate, il primo esempio non ha il gateway intradomino per la sicurezza gatekeeper. In seguito, ci sono esempi in cui il TGW non è in grado di generare la connessione IZCT in modo che il TGK1 rifiuti la chiamata. In questo modo viene dimostrato che la feature funziona come previsto. Tutte queste impostazioni sono basate sulla topologia nel diagramma del flusso di chiamate IZCT.
Esempio 1: Flusso di chiamate solo da gatekeeper a gatekeeper security
In questo esempio vengono mostrate le configurazioni correlate di tutti i gateway e gatekeeper.
Configurazione OGW | Configurazione TGW |
---|---|
! hostname ogw !controller E1 3/0 pri-group timeslots 1-2,16 ! interface Ethernet0/0 ip address 172.16.13.15 255.255.255.224 half-duplex h323-gateway voip interface h323-gateway voip id ogk1 ipaddr 172.16.13.35 1718 h323-gateway voip h323-id ogw h323-gateway voip tech-prefix 1# ! voice-port 3/0:15 ! dial-peer voice 5336 pots incoming called-number . destination-pattern 5336 direct-inward-dial port 3/0:15 prefix 21 ! dial-peer voice 3653 voip incoming called-number . destination-pattern 3653 session target ras dtmf-relay h245-alphanumeric codec g711ulaw ! gateway ! ntp clock-period 17178791 ntp server 172.16.13.35 end |
hostname tgw ! controller E1 0 clock source line primary ds0-group 0 timeslots 1-2 type r2-digital r2-compelled ! interface Ethernet0 ip address 172.16.13.23 255.255.255.224 h323-gateway voip interface h323-gateway voip id tgk1 ipaddr 172.16.13.41 1718 h323-gateway voip h323-id tgw h323-gateway voip tech-prefix 2# ! voice-port 0:0 compand-type a-law ! dial-peer voice 3653 pots application test1 incoming called-number . destination-pattern 3653 port 0:0 prefix 21 ! dial-peer voice 5336 voip incoming called-number . destination-pattern 5336 session target ras dtmf-relay h245-alphanumeric codec g711ulaw ! gateway ! ntp clock-period 17179814 ntp server 172.16.13.35 end |
Configurazione di OGK1 | Configurazione TGK1 |
---|---|
! hostname ogk1 ! interface Ethernet0/0 ip address 172.16.13.35 255.255.255.224 half-duplex ! gatekeeper zone local ogk1 domainA.com 172.16.13.35 zone remote ogk2 domainA.com 172.16.13.14 1719 zone prefix ogk2 36* zone prefix ogk1 53* security izct password 111222 gw-type-prefix 1#* default- technology no shutdown ! ! no scheduler max-task-time no scheduler allocate ntp master ! end |
! hostname tgk1 ! interface Ethernet0/0 ip address 172.16.13.41 255.255.255.224 ip directed-broadcast half-duplex ! gatekeeper zone local tgk1 domainB.com 172.16.13.41 zone remote tgk2 domainB.com 172.16.13.16 1719 zone prefix tgk1 36* zone prefix tgk2 53* security izct password 111222 gw-type-prefix 2#* default- technology no shutdown ! ntp clock-period 17179797 ntp server 172.16.13.35 ! end |
Configurazione OGK2 | Configurazione TGK2 |
---|---|
! hostname ogk2 ! interface Ethernet0/0 ip address 172.16.13.14 255.255.255.224 full-duplex ! gatekeeper zone local ogk2 domainA.com zone remote ogk1 domainA.com 172.16.13.35 1719 zone remote tgk2 domainB.com 172.16.13.16 1719 foreign-domain zone prefix tgk2 36* zone prefix ogk1 53* security izct password 111222 lrq forward-queries no shutdown ! ntp clock-period 17208242 ntp server 172.16.13.35 ! end |
! hostname tgk2 ! interface Ethernet0/0 ip address 172.16.13.16 255.255.255.224 half-duplex ! gatekeeper zone local tgk2 domainB.com zone remote tgk1 domainB.com 172.16.13.41 1719 zone remote ogk2 domainA.com 172.16.13.14 1719 foreign-domain zone prefix tgk1 36* zone prefix ogk2 53* security izct password 111222 lrq forward-queries no shutdown ! ntp clock-period 17179209 ntp server 172.16.13.35 ! end |
In questi esempi vengono utilizzati i debug per spiegare il flusso di chiamate.
Un utente sul vettore E chiama un utente sul vettore D.
Mar 4 15:31:19.989: cc_api_call_setup_ind (vdbPtr=0x6264ADF0, callInfo={called=3653, called_oct3=0x80,calling=4085272923,calling_oct3=0x21,calling_oct3a=0x80 calling_xlated=false,subscriber_type_str=RegularLine,fdest=1,peer_tag=5336, prog_ind=0},callID=0x6219F9F0) Mar 4 15:31:19.993: cc_api_call_setup_ind type 13 , prot 0 Mar 4 15:31:19.993: cc_process_call_setup_ind (event=0x6231A6B4) Mar 4 15:31:19.993: >>>>CCAPI handed cid 7 with tag 5336 to app "DEFAULT" Mar 4 15:31:19.993: sess_appl: ev(24=CC_EV_CALL_SETUP_IND), cid(7), disp(0) Mar 4 15:31:19.993: sess_appl: ev(SSA_EV_CALL_SETUP_IND), cid(7), disp(0) Mar 4 15:31:19.993: ssaCallSetupInd Mar 4 15:31:19.993: ccCallSetContext (callID=0x7, context=0x621533F0) Mar 4 15:31:19.997: ssaCallSetupInd cid(7), st(SSA_CS_MAPPING),oldst(0), ev(24) ev->e.evCallSetupInd.nCallInfo.finalDestFlag = 1 Mar 4 15:31:19.997: ssaCallSetupInd finalDest cllng(4085272923), clled(3653) Mar 4 15:31:19.997: ssaCallSetupInd cid(7), st(SSA_CS_CALL_SETTING),oldst(0), ev(24)dpMatchPeersMoreArg result= 0 Mar 4 15:31:19.997: ssaSetupPeer cid(7) peer list: tag(3653) called number (3653) Mar 4 15:31:19.997: ssaSetupPeer cid(7), destPat(3653), matched(4), prefix(), peer(626640B0), peer->encapType (2) Mar 4 15:31:19.997: ccCallProceeding (callID=0x7, prog_ind=0x0) Mar 4 15:31:19.997: ccCallSetupRequest (Inbound call = 0x7, outbound peer=3653, dest=, params=0x62327730 mode=0, *callID=0x62327A98, prog_ind = 0) Mar 4 15:31:19.997: ccCallSetupRequest numbering_type 0x80 Mar 4 15:31:19.997: ccCallSetupRequest encapType 2 clid_restrict_disable 1 null _orig_clg 0 clid_transparent 0 callingNumber 4085272923 Mar 4 15:31:19.997: dest pattern 3653, called 3653, digit_strip 0 Mar 4 15:31:19.997: callingNumber=4085272923, calledNumber=3653, redirectNumber = display_info= calling_oct3a=80 Mar 4 15:31:19.997: accountNumber=, finalDestFlag=1, guid=221b.686c.17cc.11cc.8010.a049.e052.4766 Mar 4 15:31:19.997: peer_tag=3653 Mar 4 15:31:19.997: ccIFCallSetupRequestPrivate: (vdbPtr=0x621B2360, dest=, callParams={called=3653,called_oct3=0x80, calling=4085272923,calling_oct3=0x21, calling_xlated=false, subscriber_type_str=RegularLine, fdest=1, voice_peer_tag=365 3},mode=0x0) vdbPtr type = 1 Mar 4 15:31:19.997: ccIFCallSetupRequestPrivate: (vdbPtr=0x621B2360, dest=, callParams={called=3653, called_oct3 0x80, calling=4085272923,calling_oct3 0x21, calling_xlated=false, fdest=1, voice_peer_tag=3653}, mode=0x0, xltrc=-5) Mar 4 15:31:20.001: ccSaveDialpeerTag (callID=0x7, dialpeer_tag=0xE45) Mar 4 15:31:20.001: ccCallSetContext (callID=0x8, context=0x6215388C) Mar 4 15:31:20.001: ccCallReportDigits (callID=0x7, enable=0x0)
Poiché il dialpeer del gateway di origine (tag=3653) è configurato per RAS, invia un ARQ a OGK1.
Mar 4 15:31:20.001: H225 NONSTD OUTGOING PDU ::= value ARQnonStandardInfo ::= { sourceAlias { } sourceExtAlias { } callingOctet3a 128 interfaceSpecificBillingId "ISDN-VOICE" } Mar 4 15:31:20.005: H225 NONSTD OUTGOING ENCODE BUFFER::= 80 000008A0 01800B12 4953444E 2D564F49 4345 Mar 4 15:31:20.005: Mar 4 15:31:20.005: RAS OUTGOING PDU ::= value RasMessage ::= admissionRequest : !--- ARQ is sent out to ogk1. { requestSeqNum 1109 callType pointToPoint : NULL callModel direct : NULL endpointIdentifier {"81567A4000000001"} destinationInfo { e164 : "3653" } srcInfo { e164 : "4085272923", h323-ID : {"ogw"} } bandWidth 640 callReferenceValue 4 nonStandardData { nonStandardIdentifier h221NonStandard : { t35CountryCode 181 t35Extension 0 manufacturerCode 18 } data '80000008A001800B124953444E2D564F494345'H } conferenceID '221B686C17CC11CC8010A049E0524766'H activeMC FALSE answerCall FALSE canMapAlias TRUE callIdentifier { guid '221B686C17CC11CC8011A049E0524766'H } willSupplyUUIEs FALSE } Mar 4 15:31:20.013: RAS OUTGOING ENCODE BUFFER::= 27 88045400 F0003800 31003500 36003700 41003400 30003000 30003000 30003000 30003000 31010180 69860204 8073B85A 5C564002 006F0067 00774002 80000440 B5000012 13800000 08A00180 0B124953 444E2D56 4F494345 221B686C 17CC11CC 8010A049 E0524766 04E02001 80110022 1B686C17 CC11CC80 11A049E0 52476601 00 Mar 4 15:31:20.017: h323chan_dgram_send:Sent UDP msg. Bytes sent: 130 to 172.16.13.35:1719 Mar 4 15:31:20.017: RASLib::GW_RASSendARQ: ARQ (seq# 1109) sent to 172.16.13.35
Quando OGK1 riceve l'ARQ, determina che la destinazione è servita dalla zona remota OGK2. Identifica quindi che è necessario un IZCT ( tramite CLI: security izct password <pwd>). OGK1 procede alla creazione di IZCT prima dell'invio di LRQ. Quindi invia l'IZCT e l'LRQ a OGK2 e invia un messaggio RIP a OGW.
Mar 4 15:31:19.927: H225 NONSTD OUTGOING PDU ::= value LRQnonStandardInfo ::= { ttl 6 nonstd-callIdentifier { guid '221B686C17CC11CC8011A049E0524766'H } callingOctet3a 128 gatewaySrcInfo { e164 : "4085272923", h323-ID : {"ogw"} } } Mar 4 15:31:19.935: H225 NONSTD OUTGOING ENCODE BUFFER::= 82 86B01100 221B686C 17CC11CC 8011A049 E0524766 01801002 048073B8 5A5C5640 02006F00 670077 Mar 4 15:31:19.939: Mar 4 15:31:19.939: PDU ::= value IZCToken ::= !--- The gatekeeper creates and sends out the IZCT. { izctInterZoneType intraDomainCisco : NULL !--- The destination is in the same domain, it is intraDomainCisco type. izctSrcZone "ogk1" !--- The source zone is ogk1. ) Mar 4 15:31:19.943: ENCODE BUFFER::= 07 00C06F67 6B310473 72630464 73740469 6E74 Mar 4 15:31:19.947: Mar 4 15:31:19.947: RAS OUTGOING PDU ::= value RasMessage ::= locationRequest : !--- LRQ is sent out to ogk2. { requestSeqNum 2048 destinationInfo { e164 : "3653" } nonStandardData { nonStandardIdentifier h221NonStandard : { t35CountryCode 181 t35Extension 0 manufacturerCode 18 } data '8286B01100221B686C17CC11CC8011A049E05247...'H } replyAddress ipAddress : { ip 'AC100D23'H port 1719 } sourceInfo { h323-ID : {"ogk1"} } canMapAlias TRUE tokens !--- The IZCT is included. { { tokenOID { 1 2 840 113548 10 1 0 } nonStandard { nonStandardIdentifier { 1 2 840 113548 10 1 0 } data '0700C06F676B31047372630464737404696E74'H } } } } Mar 4 15:31:19.967: RAS OUTGOING ENCODE BUFFER::= 4A 8007FF01 01806986 40B50000 12288286 B0110022 1B686C17 CC11CC80 11A049E0 52476601 80100204 8073B85A 5C56400 2 006F0067 007700AC 100D2306 B70BA00B 01400300 6F006700 6B003101 802B0100 80092A 86 4886F70C 0A010009 2A864886 F70C0A01 00130700 C06F676B 31047372 63046473 74046 96E 74 Mar 4 15:31:19.983: Mar 4 15:31:19.987: IPSOCK_RAS_sendto: msg length 122 from 172.16.13.35:1719 to 172.16.13.14: 1719 Mar 4 15:31:19.987: RASLib::RASSendLRQ: LRQ (seq# 2048) sent to 172.16.13.14 Mar 4 15:31:19.987: RAS OUTGOING PDU ::= value RasMessage ::= requestInProgress : !--- RIP message is sent back to OGW. { requestSeqNum 1109 delay 9000 } Mar 4 15:31:19.991: RAS OUTGOING ENCODE BUFFER::= 80 05000454 2327 Mar 4 15:31:19.991: Mar 4 15:31:19.991: IPSOCK_RAS_sendto: msg length 7 from 172.16.13.35:1719 to 172.16.13.15: 57076 Mar 4 15:31:19.991: RASLib::RASSendRIP: RIP (seq# 1109) sent to 172.16.13.15
Quando OGK2 riceve l'LRQ, controlla l'IZCT. Dalla configurazione risulta che LRQ contiene anche un componente IZCT. OGK2 crea quindi un nuovo IZCT modificando izctSrcZone e izctDstZone in ogk2 e inoltra LRQ a TGK2. Dopo aver inviato LRQ a TGK2, invia un messaggio RIP a OGK1.
Se i gatekeeper fanno parte di un cluster, il nome del cluster viene utilizzato per SrcZone o DstZone.
Mar 4 15:31:20.051: RAS OUTGOING PDU ::= value RasMessage ::= requestInProgress : !--- RIP message is sent back to OGK1. { requestSeqNum 2048 delay 6000 } Mar 4 15:31:20.055: RAS OUTGOING ENCODE BUFFER::= 80 050007FF 176F Mar 4 15:31:20.055: Mar 4 15:31:20.055: IPSOCK_RAS_sendto: msg length 7 from 172.16.13.14:1719 to 172.16.13.35: 1719 Mar 4 15:31:20.059: RASLib::RASSendRIP: RIP (seq# 2048) sent to 172.16.13.35 Mar 4 15:31:20.059: H225 NONSTD OUTGOING PDU ::= value LRQnonStandardInfo ::= { ttl 5 nonstd-callIdentifier { guid '221B686C17CC11CC8011A049E0524766'H } callingOctet3a 128 gatewaySrcInfo { e164 : "4085272923", h323-ID : {"ogw"} } } Mar 4 15:31:20.063: H225 NONSTD OUTGOING ENCODE BUFFER::= 82 06B01100 221B686C 17CC11CC 8011A049 E0524766 01801002 048073B8 5A5C5640 02006F00 670077 Mar 4 15:31:20.072: Mar 4 15:31:20.072: PDU ::= value IZCToken ::= { izctInterZoneType intraDomainCisco : NULL !--- This is still intraDomain since message OGK1 is !--- not a foreign domain. izctSrcZone "ogk2" !--- ScrZone and DstZone become ogk2. izctDstZone "ogk2" } Mar 4 15:31:20.076: ENCODE BUFFER::= 47 00C06F67 6B32066F 676B3204 73726304 64737404 696E74 Mar 4 15:31:20.080: Mar 4 15:31:20.080: RAS OUTGOING PDU ::= value RasMessage ::= locationRequest : !--- The LRQ is forwarded to TGK2. { requestSeqNum 2048 destinationInfo { e164 : "3653" } nonStandardData { nonStandardIdentifier h221NonStandard : { t35CountryCode 181 t35Extension 0 manufacturerCode 18 } data '8206B01100221B686C17CC11CC8011A049E05247...'H } replyAddress ipAddress : { ip 'AC100D23'H port 1719 } sourceInfo { h323-ID : {"ogk1"} } canMapAlias TRUE tokens !--- IZCT is included. { { tokenOID { 1 2 840 113548 10 1 0 } nonStandard { nonStandardIdentifier { 1 2 840 113548 10 1 0 } data '4700C06F676B32066F676B320473726304647374...'H } } } } Mar 4 15:31:20.104: RAS OUTGOING ENCODE BUFFER::= 4A 8007FF01 01806986 40B50000 12288206 B0110022 1B686C17 CC11CC80 11A049E0 52476601 80100204 8073B85A 5C564002 006F0067 007700AC 100D2306 B70BA00B 01400300 6F006700 6B003101 80300100 80092A86 4886F70C 0A010009 2A864886 F70C0A01 00184700 C06F676B 32066F67 6B320473 72630464 73740469 6E74 Mar 4 15:31:20.120: Mar 4 15:31:20.120: IPSOCK_RAS_sendto: msg length 127 from 172.16.13.14:1719 to 172.16.13.16: 1719 Mar 4 15:31:20.124: RASLib::RASSendLRQ: LRQ (seq# 2048) sent to 172.16.13.16
TGK2 determina che l'LRQ proviene da un dominio esterno. Aggiorna il dstZone di IZCT con il proprio ID e interZoneType come INTER_DOMAIN_CISCO. Quindi crea un nuovo CAT e passa l'IZCT aggiornato e l'LRQ a TGK1.
TGK2 tratta la zona da cui un LRQ viene ricevuto come zona di dominio esterno in uno di questi due scenari:
L'elenco delle zone remote del TGK2 non contiene la zona da cui viene ricevuto un LRQ.
L'elenco delle zone remote del TGK2 contiene la zona da cui viene ricevuto un LRQ. La zona è contrassegnata con un flag di dominio esterno.
Quindi invia un messaggio Request In Progress a OGK1.
Mar 4 15:31:20.286: RAS OUTGOING PDU ::= value RasMessage ::= requestInProgress : !--- The RIP message is sent back to !--- OGK1 since lrq-forward queries are configured on OGK2 and TGK2. { requestSeqNum 2048 delay 6000 } Mar 4 15:31:20.286: RAS OUTGOING ENCODE BUFFER::= 80 050007FF 176F Mar 4 15:31:20.286: Mar 4 15:31:20.286: IPSOCK_RAS_sendto: msg length 7 from 172.16.13.16:1719 to 172.16.13.35: 1719 Mar 4 15:31:20.286: RASLib::RASSendRIP: RIP (seq# 2048) sent to 172.16.13.35 Mar 4 15:31:20.286: H225 NONSTD OUTGOING PDU ::= value LRQnonStandardInfo ::= { ttl 4 nonstd-callIdentifier { guid '221B686C17CC11CC8011A049E0524766'H } callingOctet3a 128 gatewaySrcInfo { e164 : "4085272923", h323-ID : {"ogw"} } } Mar 4 15:31:20.290: H225 NONSTD OUTGOING ENCODE BUFFER::= 81 86B01100 221B686C 17CC11CC 8011A049 E0524766 01801002 048073B8 5A5C5640 02006F00 670077 Mar 4 15:31:20.290: Mar 4 15:31:20.290: PDU ::= value IZCToken ::= !--- The IZCT information. { izctInterZoneType interDomainCisco : NULL !--- The zone type is interDomain since the OGK2 !--- in a foreign domain is configured in TGK2. izctSrcZone "ogk2" !--- SrcZone is still ogk2. izctDstZone "tgk2" !--- DstZone changed to tgk2. } Mar 4 15:31:20.294: ENCODE BUFFER::= 47 20C06F67 6B320674 676B3204 73726304 64737404 696E74 Mar 4 15:31:20.294: Mar 4 15:31:20.294: RAS OUTGOING PDU ::= value RasMessage ::= locationRequest : !--- LRQ is sent to TGK1. { requestSeqNum 2048 destinationInfo { e164 : "3653" } nonStandardData { nonStandardIdentifier h221NonStandard : { t35CountryCode 181 t35Extension 0 manufacturerCode 18 } data '8186B01100221B686C17CC11CC8011A049E05247...'H } replyAddress ipAddress : { ip 'AC100D23'H port 1719 } sourceInfo { h323-ID : {"ogk1"} } canMapAlias TRUE tokens !--- The IZCT is included. { { tokenOID { 1 2 840 113548 10 1 0 } nonStandard { nonStandardIdentifier { 1 2 840 113548 10 1 0 } data '4720C06F676B320674676B320473726304647374...'H } } } } Mar 4 15:31:20.302: RAS OUTGOING ENCODE BUFFER::= 4A 8007FF01 01806986 40B50000 12288186 B0110022 1B686C17 CC11CC80 11A049E0 52476601 80100204 8073B85A 5C564002 006F0067 007700AC 100D2306 B70BA00B 01400300 6F006700 6B003101 80300100 80092A86 4886F70C 0A010009 2A864886 F70C0A01 00184720 C06F676B 32067467 6B320473 72630464 73740469 6E74 Mar 4 15:31:20.306: Mar 4 15:31:20.306: IPSOCK_RAS_sendto: msg length 127 from 172.16.13.16:1719 to 172.16.13.41: 1719 Mar 4 15:31:20.306: RASLib::RASSendLRQ: LRQ (seq# 2048) sent to 172.16.13.41
Normalmente TGK1 aggiorna il valore dstCarrierID di IZCT al valore Carrier E, che viene determinato dal processo di routing. Tuttavia, poiché non viene utilizzato alcun vettore, non è possibile visualizzarlo. TGK1 genera un token hash con la password di IZCT. Invia un LCF contenente l'IZCT aggiornato a OGK1. Questo izctHash viene utilizzato per autenticare la answerCall ARQ che TGK1 riceve dal TGW quando quest'ultimo riceve il messaggio di installazione VoIP da OGW.
Mar 4 15:31:20.351: PDU ::= value IZCToken ::= !--- IZCT with a hash is generated to be sent back to TGK2. { izctInterZoneType interDomainCisco : NULL izctSrcZone "ogk2" izctDstZone "tgk2" izctTimestamp 731259080 izctRandom 3 izctHash '5A7D5E18AA658A6A4B4709BA5ABEF2B9'H } Mar 4 15:31:20.355: ENCODE BUFFER::= 7F 20C06F67 6B320674 676B32C0 2B9620C7 0103105A 7D5E18AA 658A6A4B 4709BA5A BEF2B904 73726304 64737404 696E74 Mar 4 15:31:20.355: Mar 4 15:31:20.355: RAS OUTGOING PDU ::= value RasMessage ::= locationConfirm : !--- LCF is sent back to OGK1 since lrq-forward queries !--- are configured on OGK2 and TGK2. { requestSeqNum 2048 callSignalAddress ipAddress : { ip 'AC100D17'H port 1720 } rasAddress ipAddress : { ip 'AC100D17'H port 55762 } nonStandardData { nonStandardIdentifier h221NonStandard : { t35CountryCode 181 t35Extension 0 manufacturerCode 18 } data '000140020074006700770600740067006B003101...'H } destinationType { gateway { protocol { voice : { supportedPrefixes { } } } } mc FALSE undefinedNode FALSE } tokens !--- The IZCT is included. { { tokenOID { 1 2 840 113548 10 1 0 } nonStandard { nonStandardIdentifier { 1 2 840 113548 10 1 0 } data '7F20C06F676B320674676B32C02B9620C7010310...'H } } } } Mar 4 15:31:20.367: RAS OUTGOING ENCODE BUFFER::= 4F 07FF00AC 100D1706 B800AC10 0D17D9D2 40B50000 122F0001 40020074 00670077 06007400 67006B00 31011001 40020074 00670077 00AC100D 1706B800 00000000 00000000 00104808 0880013C 05010000 48010080 092A8648 86F70C0A 0100092A 864886F7 0C0A0100 307F20C0 6F676B32 0674676B 32C02B96 20C70103 105A7D5E 18AA658A 6A4B4709 BA5ABEF2 B9047372 63046473 7404696E 74 Mar 4 15:31:20.371: Mar 4 15:31:20.371: IPSOCK_RAS_sendto: msg length 154 from 172.16.13.41:1719 to 172.16.13.35: 1719 Mar 4 15:31:20.371: RASLib::RASSendLCF: LCF (seq# 2048) sent to 172.16.13.35
OGK1 estrae l'IZCT dalla LCF e lo invia in un ACF all'OGW.
Mar 4 15:31:20.316: PDU ::= value IZCToken ::= !--- The extracted IZCT. { izctInterZoneType interDomainCisco : NULL izctSrcZone "ogk2" izctDstZone "tgk2" izctTimestamp 731259080 izctRandom 3 izctHash '5A7D5E18AA658A6A4B4709BA5ABEF2B9'H } Mar 4 15:31:20.324: ENCODE BUFFER::= 7F 20C06F67 6B320674 676B32C0 2B9620C7 0103105A 7D5E18AA 658A6A4B 4709BA5A BEF2B904 73726304 64737404 696E74 Mar 4 15:31:20.328: Mar 4 15:31:20.332: RAS OUTGOING PDU ::= value RasMessage ::= admissionConfirm : !--- ACF is sent back to OGW with the hashed IZCToken. { requestSeqNum 1109 bandWidth 640 callModel direct : NULL destCallSignalAddress ipAddress : { ip 'AC100D17'H port 1720 } irrFrequency 240 tokens !--- The IZCT is included. { { tokenOID { 1 2 840 113548 10 1 0 } nonStandard { nonStandardIdentifier { 1 2 840 113548 10 1 0 } data '7F20C06F676B320674676B32C02B9620C7010310...'H } } } willRespondToIRR FALSE uuiesRequested { setup FALSE callProceeding FALSE connect FALSE alerting FALSE information FALSE releaseComplete FALSE facility FALSE progress FALSE empty FALSE } } Mar 4 15:31:20.352: RAS OUTGOING ENCODE BUFFER::= 2B 00045440 028000AC 100D1706 B800EF1A 08C04801 0080092A 864886F7 0C0A0100 092A8648 86F70C0A 0100307F 20C06F67 6B320674 676B32C0 2B9620C7 0103105A 7D5E18AA 658A6A4B 4709BA5A BEF2B904 73726304 64737404 696E7401 00020000 Mar 4 15:31:20.364: Mar 4 15:31:20.364: IPSOCK_RAS_sendto: msg length 97 from 172.16.13.35:1719 to 172.16.13.15: 57076 Mar 4 15:31:20.368: RASLib::RASSendACF: ACF (seq# 1109) sent to 172.16.13.15
L'OGW invia l'IZCT al TGW nel messaggio H.225 SETUP.
Mar 4 15:31:20.529: H225.0 OUTGOING PDU ::= value H323_UserInformation ::= { h323-uu-pdu { h323-message-body setup : !--- H.225 SETUP message is sent to TGW. { protocolIdentifier { 0 0 8 2250 0 2 } sourceAddress { h323-ID : {"ogw"} } sourceInfo { gateway { protocol { voice : { supportedPrefixes { { prefix e164 : "1#" } } } } } mc FALSE undefinedNode FALSE } activeMC FALSE conferenceID '221B686C17CC11CC8010A049E0524766'H conferenceGoal create : NULL callType pointToPoint : NULL sourceCallSignalAddress ipAddress : { ip 'AC100D0F'H port 11003 } callIdentifier { guid '221B686C17CC11CC8011A049E0524766'H } tokens !--- The hashed IZCT information is included in the setup message. { { tokenOID { 1 2 840 113548 10 1 0 } nonStandard { nonStandardIdentifier { 1 2 840 113548 10 1 0 } data '7F20C06F676B320674676B32C02B9620C7010310...'H } } } fastStart { '0000000C6013800A04000100AC100D0F4125'H, '400000060401004C6013801114000100AC100D0F...'H } mediaWaitForConnect FALSE canOverlapSend FALSE } h245Tunneling TRUE nonStandardControl { { nonStandardIdentifier h221NonStandard : { t35CountryCode 181 t35Extension 0 manufacturerCode 18 } data '6001020001041F04038090A31803A983816C0C21...'H } } } }
Il TGW passa l'IZCT al TGK1 in una chiamata di risposta ARQ.
Mar 4 15:31:20.613: Mar 4 15:31:20.613: RAS OUTGOING PDU ::= value RasMessage ::= admissionRequest : !--- ARQ answerCall type is sent to TGK1. { requestSeqNum 78 callType pointToPoint : NULL callModel direct : NULL endpointIdentifier {"617D829000000001"} destinationInfo { e164 : "3653" } srcInfo { e164 : "4085272923", h323-ID : {"ogw"} } srcCallSignalAddress ipAddress : { ip 'AC100D0F'H port 11003 } bandWidth 1280 callReferenceValue 3 nonStandardData { nonStandardIdentifier h221NonStandard : { t35CountryCode 181 t35Extension 0 manufacturerCode 18 } data '80000008800180'H } conferenceID '221B686C17CC11CC8010A049E0524766'H activeMC FALSE answerCall TRUE canMapAlias TRUE callIdentifier { guid '221B686C17CC11CC8011A049E0524766'H } tokens !--- The hashed IZCToken information is included. { { tokenOID { 1 2 840 113548 10 1 0 } nonStandard { nonStandardIdentifier { 1 2 840 113548 10 1 0 } data '7F20C06F676B320674676B32C02B9620C7010310...'H } } } willSupplyUUIEs FALSE }
TGK1 autentica la destinazione IZCT correttamente. Infatti, il TGK1 genera l'hash nell'IZCT e invia un ACF al TGW.
Mar 4 15:31:20.635: Mar 4 15:31:20.635: PDU ::= value IZCToken ::= !--- The extracted IZCT from the ARQ to be validated. { izctInterZoneType interDomainCisco : NULL izctSrcZone "ogk2" izctDstZone "tgk2" izctTimestamp 731259080 izctRandom 3 izctHash '5A7D5E18AA658A6A4B4709BA5ABEF2B9'H } Mar 4 15:31:20.639: RAS OUTGOING PDU ::= value RasMessage ::= admissionConfirm : !--- After the IZCT is validated, ACF is sent back to TGW. { requestSeqNum 78 bandWidth 1280 callModel direct : NULL destCallSignalAddress ipAddress : { ip 'AC100D17'H port 1720 } irrFrequency 240 willRespondToIRR FALSE uuiesRequested { setup FALSE callProceeding FALSE connect FALSE alerting FALSE information FALSE releaseComplete FALSE facility FALSE progress FALSE empty FALSE } }
Il TGW stabilisce la chiamata verso il vettore D dopo aver ricevuto l'ACF.
Esempio 2: Chiamata non riuscita perché TGW non è in grado di estrarre la connessione IZCT dal messaggio di installazione ricevuto.
Questo esempio si basa sulla stessa topologia e configurazione dell'esempio 1. In questo esempio, il software del TGW viene modificato in una versione in cui IZCT non è supportato. In questo caso, il TGW non è in grado di estrarre la connessione IZCT dal messaggio di installazione. In questo modo, il TGK1 rifiuta la chiamata con un motivo di disconnessione o di rifiuto della sicurezza.
In questo esempio vengono visualizzati solo il messaggio di impostazione ARQ e l'ARJ sul TGW, poiché il flusso di chiamata è uguale all'esempio 1.
Mar 4 19:50:32.346: PDU DATA = 6147C2BC value H323_UserInformation ::= { h323-uu-pdu { h323-message-body setup : !--- H.225 SETUP message is received with a token included. { protocolIdentifier { 0 0 8 2250 0 2 } sourceAddress { h323-ID : {"ogw"} } sourceInfo { gateway { protocol { voice : { supportedPrefixes { { prefix e164 : "1#" } } } } } mc FALSE undefinedNode FALSE } activeMC FALSE conferenceID '56CA67C817F011CC8014A049E0524766'H conferenceGoal create : NULL callType pointToPoint : NULL sourceCallSignalAddress ipAddress : { ip 'AC100D0F'H port 11004 } callIdentifier { guid '56CA67C817F011CC8015A049E0524766'H } tokens !--- Hashed IZCT is included. { { tokenOID { 1 2 840 113548 10 1 0 } nonStandard { nonStandardIdentifier { 1 2 840 113548 10 1 0 } data '7F20C06F676B320674676B32C02B965D85010410...'H } } } fastStart { '0000000C6013800A04000100AC100D0F45D9'H, '400000060401004C6013801114000100AC100D0F...'H } mediaWaitForConnect FALSE canOverlapSend FALSE } h245Tunneling TRUE nonStandardControl { { nonStandardIdentifier h221NonStandard : { t35CountryCode 181 t35Extension 0 manufacturerCode 18 } data '6001020001041F04038090A31803A983816C0C21...'H } } } } RAW_BUFFER::= 60 01020001 041F0403 8090A318 03A98381 6C0C2180 34303835 32373239 32337005 80333635 33 Mar 4 19:50:32.362: PDU DATA = 6147F378 value H323_UU_NonStdInfo ::= { version 2 protoParam qsigNonStdInfo : { iei 4 rawMesg '04038090A31803A983816C0C2180343038353237...'H } } PDU DATA = 6147F378 value ARQnonStandardInfo ::= { sourceAlias { } sourceExtAlias { } callingOctet3a 128 } RAW_BUFFER::= 80 00000880 0180 Mar 4 19:50:32.366: PDU DATA = 6147C2BC value RasMessage ::= admissionRequest : !--- ARQ is sent out. There is no token in it. { requestSeqNum 23 callType pointToPoint : NULL callModel direct : NULL endpointIdentifier {"617D829000000001"} destinationInfo { e164 : "3653" } srcInfo { e164 : "4085272923" } srcCallSignalAddress ipAddress : { ip 'AC100D0F'H port 11004 } bandWidth 640 callReferenceValue 1 nonStandardData { nonStandardIdentifier h221NonStandard : { t35CountryCode 181 t35Extension 0 manufacturerCode 18 } data '80000008800180'H } conferenceID '56CA67C817F011CC8014A049E0524766'H activeMC FALSE answerCall TRUE canMapAlias FALSE callIdentifier { guid '56CA67C817F011CC8015A049E0524766'H } willSupplyUUIEs FALSE } RAW_BUFFER::= 27 98001600 F0003600 31003700 44003800 32003900 30003000 30003000 30003000 30003000 31010180 69860104 8073B85A 5C5600AC 100D0F2A FC400280 000140B5 00001207 80000008 80018056 CA67C817 F011CC80 14A049E0 52476644 E0200100 110056CA 67C817F0 11CC8015 A049E052 47660100 Mar 4 19:50:32.374: h323chan_dgram_send:Sent UDP msg. Bytes sent: 117 to 172.16.13.41:1719 Mar 4 19:50:32.374: RASLib::GW_RASSendARQ: ARQ (seq# 23) sent to 172.16.13.41 Mar 4 19:50:32.378: h323chan_dgram_recvdata:rcvd from [172.16.13.41:1719] on sock[1] RAW_BUFFER::= 2C 00168001 00 Mar 4 19:50:32.378: PDU DATA = 6147C2BC value RasMessage ::= admissionReject : !--- ARJ is received with a reason of security denial. { requestSeqNum 23 rejectReason securityDenial : NULL } Mar 4 19:50:32.378: ARJ (seq# 23) rcvd
Revisione | Data di pubblicazione | Commenti |
---|---|---|
1.0 |
22-Jan-2002 |
Versione iniziale |