SIP-Ausdrücke
Die Sprache für Richtlinienausdrücke von NetScaler Advanced enthält eine Reihe von Ausdrücken, die für SIP-Verbindungen (Session Initiation Protocol) verwendet werden. Diese Ausdrücke sollen in Richtlinien für jedes unterstützte Protokoll verwendet werden, das auf Anforderungs-/Antwortbasis arbeitet. Diese Ausdrücke können für Content Switching, Ratenbegrenzung, Responder und Umschreibrichtlinien verwendet werden.
Für SIP-Ausdrücke, die in Responder-Richtlinien verwendet werden, gelten bestimmte Einschränkungen. Auf einem virtuellen SIP-Lastausgleichsserver sind nur die Aktionen DROP, NOOP oder RESPONDWITH zulässig. Responder-Richtlinien können an einen virtuellen Lastausgleichsserver, einen globalen Override-Bindpunkt, einen globalen Standardbindpunkt oder ein sip_uddp-Richtlinienlabel gebunden werden.
Das vom SIP-Protokoll verwendete Header-Format ähnelt dem des HTTP-Protokolls, sodass viele der neuen Ausdrücke ähnlich wie ihre HTTP-Analoga aussehen und funktionieren. Jeder SIP-Header besteht aus einer Zeile, die die SIP-Methode, die URL und die Version enthält, gefolgt von einer Reihe von Name-Wert-Paaren, die wie HTTP-Header aussehen.
Im Folgenden finden Sie ein Beispiel für einen SIP-Header, auf den in den folgenden Ausdruckstabellen verwiesen wird:
INVITE sip:16@www.sip.com:5060;transport=udp SIP/2.0
Record-Route: <sip:200.200.100.22;lr=on>
Via: SIP/2.0/UDP 200.200.100.22;branch=z9hG4bK444b.c8e103d1.0;rport=5060;
received=10.102.84.18
Via: SIP/2.0/UDP 10.102.84.180:5060;branch=z9hG4bK03e76d0b;rport=5060;
received=10.102.84.160
From: "12" <sip:12@sip_example.com>;tag=00127f54ec85a6d90cc14f45-53cc0185
To: "16" <sip:16@sip_example.com>;tag=00127f54ec85a6d90cc14f45-53cc0185
Call-ID: 00127f54-ec850017-0e46f5b9-5ec149c2@10.102.84.180
Max-Forwards: 69CSeq: 101 INVITE
User-Agent: Cisco-CP7940G/8.0
Contact: <sip:12@10.102.84.180:5060;transport=udp>
Expires: 180
Accept: application/sdp
Allow: ACK,BYE,CANCEL,INVITE,NOTIFY,OPTIONS,REFER,REGISTER,UPDATE
Supported: replaces,join,norefersub
Content-Length: 277
Content-Type: application/sdp
Content-Disposition: session;handling=optiona
<!--NeedCopy-->
SIP-Referenztabellen
Die folgenden Tabellen enthalten Listen von Ausdrücken, die auf SIP-Headern ausgeführt werden. Die erste Tabelle enthält Ausdrücke, die für Anforderungsheader gelten. Die meisten antwortbasierten Ausdrücke sind fast identisch mit den entsprechenden anforderungsbasierten Ausdrücken. Um einen Antwortausdruck aus dem entsprechenden Anforderungsausdruck zu erstellen, ändern Sie die ersten beiden Abschnitte des Ausdrucks von SIP.REQ in SIP.RES und nehmen weitere offensichtliche Anpassungen vor. Die zweite Tabelle enthält die Antwortausdrücke, die nur für Antworten gelten und für die es keine Anforderungsäquivalente gibt. Sie können jedes Element in den folgenden Tabellen als eigenständigen vollständigen Ausdruck verwenden, oder Sie können verschiedene Operatoren verwenden, um diese Ausdruckselemente mit anderen zu kombinieren, um komplexere Ausdrücke zu bilden.
SIP-Anforderungsausdrücke
Ausdruck | Beschreibung |
---|---|
SIP.REQ.METHOD | Arbeitet nach der Methode der SIP-Anfrage. Die unterstützten SIP-Anforderungsmethoden sind ACK, BYE, CANCEL, INFO, INVITE, MESSAGE, NOTIFY, OPTIONS, PRACK, PUBLISH, REFER, REGISTER, SUBSCRIBE und UPDATE. Dieser Ausdruck ist eine Ableitung der Textklasse, sodass alle Operationen, die auf Text anwendbar sind, auf diese Methode anwendbar sind. Beispielsweise gibt dieser Ausdruck für eine SIP-Anfrage von INVITE sip:16@10.102.84.181:5060;transport=udp SIP/2.0 das Ergebnis INVITE zurück. |
SIP.REQ.URL | Arbeitet mit der SIP-Anforderungs-URL. Dieser Ausdruck ist eine Ableitung der Textklasse, sodass alle Operationen, die auf Text anwendbar sind, auf diese Methode anwendbar sind. For example, for a SIP request of INVITE sip:16@10.102.84.181:5060;transport=udp SIP/2.0, this expression returnssip:16@10.102.84.181:5060;transport=udp. |
SIP.REQ.URL.PROTOCOL | Gibt das URL-Protokoll zurück. For example, for a SIP URL ofsip:16@www.sip.com:5060;transport=udp, this expression returns sip. |
SIP.REQ.URL.HOSTNAME | Gibt den Hostnamen-Teil der SIP-URL zurück. For example, for a SIP URL ofsip:16@www.sip.com:5060;transport=udp, this expression returns www.sip.com:5060. |
SIP.REQ.URL.HOSTNAME.PORT | Gibt den Port-Teil des SIP-URL-Hostnamens zurück. Wenn kein Port angegeben ist, gibt dieser Ausdruck den Standard-SIP-Port 5060 zurück. For example, for a SIP hostname of www.sip.com:5060, this expression returns 5060. |
SIP.REQ.URL.HOSTNAME.DOMAIN | Gibt den Teil des Domainnamens des SIP-URL-Hostnamens zurück. Wenn der Host eine IP-Adresse ist, gibt dieser Ausdruck ein falsches Ergebnis zurück. Für den SIP-Hostnamen www.sip.com:5060 gibt dieser Ausdruck beispielsweise sip.com zurück. Für einen SIP-Hostnamen von 192.168.43. 15:5060 gibt dieser Ausdruck einen Fehler zurück. |
SIP.REQ.URL.HOSTNAME.SERVER | Gibt den Serverteil des Hosts zurück. Für den SIP-Hostnamen www.sip.com:5060 gibt dieser Ausdruck beispielsweise www zurück. |
SIP.REQ.URL.USERNAME | Gibt den Benutzernamen zurück, der dem Zeichen @ vorangeht. Für eine SIP-URL von sip: 16@www.sip.com:5060; transport=udp gibt dieser Ausdruck 16 zurück. |
SIP.REQ.VERSION | Gibt die SIP-Versionsnummer in der Anfrage zurück. For example, for a SIP request of INVITE sip:16@10.102.84.181:5060;transport=udp SIP/2.0, this expression returns SIP/2.0. |
SIP.REQ.VERSION.MAJOR | Gibt die Hauptversionsnummer zurück (die Zahl links neben dem Punkt). Für eine SIP-Versionsnummer von SIP/2.0 gibt dieser Ausdruck beispielsweise 2 zurück. |
SIP.REQ.VERSION.MINOR | Gibt die Nebenversionsnummer zurück (die Zahl rechts neben dem Punkt). Für eine SIP-Versionsnummer von SIP/2.0 gibt dieser Ausdruck beispielsweise 0 zurück. |
SIP.REQ.CONTENT_LENGTH | Gibt den Inhalt des Content-Length-Headers zurück. Dieser Ausdruck ist eine Ableitung der Klasse sip_header_t, sodass alle Operationen verwendet werden können, die für SIP-Header verfügbar sind. Für einen SIP-Content-Length-Header mit Content-Length: 277 gibt dieser Ausdruck beispielsweise 277 zurück. |
SIP.REQ.TO | Gibt den Inhalt des To Headers zurück. Beispiel: Bei einem SIP To-Header von To: “16” <sip:16@sip_example.com>;tag=00127f54ec85a6d90cc14f45-53cc0185 gibt dieser Ausdruck “16” <sip:16@sip_example.com>;tag=00127f54ec85a6d90cc14f45-53cc0185 zurück. |
SIP.REQ.TO.ADDRESS | Gibt die SIP-URI zurück, die sich im Objekt sip_url befindet. Alle Operationen, die für SIP-URIs verfügbar sind, können verwendet werden. Beispiel: Bei einem SIP To-Header von To: “16” <sip:16@sip_example.com>;tag=00127f54ec85a6d90cc14f45-53cc0185 gibt dieser Ausdruck sip:16@sip_example.com zurück. |
SIP.REQ.TO.DISPLAY_NAME | Gibt den Teil des Anzeigenamens des To -Headers zurück. Beispiel: Bei einem SIP To-Header von To: “16” <sip:16@sip_example.com>;tag=00127f54ec85a6d90cc14f45-53cc0185 gibt dieser Ausdruck 16 zurück. |
SIP.REQ.TO.TAG | Gibt den Wert des Tags aus dem “Tag”-Namen-Wertepaar im TO-Header zurück. Beispiel: Bei einem SIP To-Header von To: “16” <sip:16@sip_example.com>;tag=00127f54ec85a6d90cc14f45-53cc0185 gibt dieser Ausdruck 00127f54ec85a6d90cc14f45-53cc0185 zurück. |
SIP.REQ.FROM | Gibt den Inhalt des Frod-Headers zurück. For example, for a SIP From header of From: “12” <sip:12@sip_example.com>;tag=00127f54ec85a6d90cc14f45-53cc0185, this expression returns sip:12@sip_example.com. |
SIP.REQ.FROM.ADDRESS | Gibt die SIP-URI zurück, die sich im Objekt sip_url befindet. Alle Operationen, die für SIP-URIs verfügbar sind, können verwendet werden. For example, for a SIP From header of From: “12” <sip:12@sip_example.com>;tag=00127f54ec85a6d90cc14f45-53cc0185, this expression returns sip:12@sip_example.com. |
SIP.REQ.FROM.DISPLAY_NAME | Gibt den Teil des Anzeigenamens des To -Headers zurück. For example, for a SIP From header of From: “12” <sip:12@sip_example.com>;tag=00127f54ec85a6d90cc14f45-53cc0185, this expression returns 12. |
SIP.REQ.FROM.TAG | Gibt den Wert des Tags aus dem “Tag”-Namen-Wertepaar im TO-Header zurück. For example, for a SIP From header of From: “12” <sip:12@sip_example.com>;tag=00127f54ec85a6d90cc14f45-53cc0185, this expression returns 00127f54ec85a6d90cc14f45-53cc0185. |
SIP.REQ.VIA | Gibt den vollständigen Via-Header zurück. Wenn die Anfrage mehrere Via-Header enthält, wird der letzte Via-Header zurückgegeben. Für die beiden Via-Header im Beispiel-SIP-Header gibt dieser Ausdruck beispielsweise Via: SIP/2.0/UDP 10.102.84.180:5060;branch=z9hG4bK03e76d0b;rport=5060;received=10.102.84.160 zurück. |
SIP.REQ.VIA.SENTBY_ADDRESS | Gibt die Adresse zurück, von der die Anfrage gesendet wurde. For example, for the Via header Via: SIP/2.0/UDP 10.102.84.180:5060;branch=z9hG4bK03e76d0b;rport=5060;received=10.102.84.160, this expression returns 10.102.84.180. |
SIP.REQ.VIA.SENTBY_PORT | Gibt den Port zurück, der die Anfrage gesendet hat. For example, for the Via header Via: SIP/2.0/UDP 10.102.84.180:5060;branch=z9hG4bK03e76d0b;rport=5060;received=10.102.84.160, this expression returns 5060. |
SIP.REQ.VIA.RPORT | Gibt den Wert aus dem Paar Name/Wert des Berichts zurück. For example, for the Via header Via: SIP/2.0/UDP 10.102.84.180:5060;branch=z9hG4bK03e76d0b;rport=5060;received=10.102.84.160, this expression returns 5060. |
SIP.REQ.VIA.BRANCH | Gibt den Wert aus dem Zweigname/Wertepaar zurück. For example, for the Via header Via: SIP/2.0/UDP 10.102.84.180:5060;branch=z9hG4bK03e76d0b;rport=5060;received=10.102.84.160, this expression returns z9hG4bK03e76d0b. |
SIP.REQ.VIA.RECEIVED | Gibt den Wert aus dem empfangenen Name-Wert-Paar zurück. For example, for the Via header Via: SIP/2.0/UDP 10.102.84.180:5060;branch=z9hG4bK03e76d0b;rport=5060;received=10.102.84.160, this expression returns 10.102.84.160. |
SIP.REQ.CALLID | Gibt den Inhalt des Callid-Headers zurück. Dieser Ausdruck ist eine Ableitung der Klasse sip_header_t, sodass alle Operationen verwendet werden können, die für SIP-Header verfügbar sind. For example, for a SIP Callid header ofCall-ID: 00127f54-ec850017-0e46f5b9-5ec149c2@10.102.84.180, this expression returns00127f54-ec850017-0e46f5b9-5ec149c2@10.102.84.180. |
SIP.REQ.CSEQ | Gibt die CSEQ-Nummer aus dem CSEQ als Ganzzahl zurück. Für einen SIP-CSEQ-Header von CSeq: 101 INVITE gibt dieser Ausdruck beispielsweise 101 zurück. |
SIP.REQ.HEADER( |
Gibt den angegebenen SIP-Header zurück. Ersetzen Sie |
SIP.REQ.HEADER( |
Gibt die angegebene Instanz des angegebenen SIP-Headers zurück. Es können mehrere Instanzen desselben SIP-Headers auftreten. Wenn Sie eine bestimmte Instanz eines solchen SIP-Headers benötigen (z. B. einen bestimmten Via-Header), können Sie diesen Header angeben, indem Sie eine Zahl als die eingeben |
SIP.REQ.HEADER( |
Gibt den Inhalt der angegebenen Instanz des angegebenen SIP-Headers zurück. Die Verwendung ist fast dieselbe wie beim vorherigen Ausdruck. For example, if used on the SIP header example in the preceding table entry, SIP.REQ.HEADER(“Via”).VALUE(1) returns SIP/2.0/UDP 10.102.84.180:5060;branch=z9hG4bK03e76d0b;rport=5060. |
SIP.REQ.HEADER( |
Gibt die Anzahl der Instanzen eines bestimmten Headers als Ganzzahl zurück. Wenn es beispielsweise im obigen SIP-Header-Beispiel verwendet wird, gibt SIP.REQ.HEADER(“Via”).COUNT den Wert 2 zurück. |
SIP.REQ.HEADER( |
Gibt den booleschen Wert true oder false zurück, je nachdem, ob der angegebene Header existiert oder nicht. Wenn es beispielsweise im obigen SIP-Header-Beispiel verwendet wird, gibt SIP.REQ.HEADER(“Expires”).EXISTS den Wert true zurück, während SIP.REQ.HEADER(“Caller-ID”).EXISTS den Wert false zurückgibt. |
SIP.REQ.HEADER( |
Gibt die kommagetrennte Parameterliste im angegebenen Header zurück. Wenn SIP.REQ.HEADER(“Allow”).LIST beispielsweise für das obige SIP-Header-Beispiel verwendet wird, gibt sie ACK,BYE,CANCEL,INVITE,NOTIFY,OPTIONS,REFER,REGISTER,UPDATE zurück. Sie können die Zeichenfolge .GET ( |
SIP.REQ.HEADER( |
Typecasts |
SIP.REQ.HEADER( |
Gibt boolean true zurück, wenn die angegebene Textzeichenfolge in einer Instanz des angegebenen Headers vorhanden ist. Funktioniert auf allen Instanzen des angegebenen Headers. Header-Instanzen werden vom letzten (0) bis zum ersten zugeordnet. |
SIP.REQ.HEADER( |
Gibt den booleschen Wert true zurück, wenn ein mit |
SIP.REQ.HEADER( |
Gibt den booleschen Wert true zurück, wenn ein mit |
SIP.REQ.HEADER( |
Gibt den Index des übereinstimmenden Musters zurück, das mit |
SIP.REQ.HEADER( |
Gibt den Index des übereinstimmenden Musters zurück, das mit |
SIP.REQ.HEADER( |
Wenn die angegebene Zeichenfolge in einer Instanz des angegebenen Headers vorhanden ist, gibt dieser Ausdruck diese Zeichenfolge zurück. For example, for the SIP header Via: SIP/2.0/UDP 10.102.84.180:5060;branch=z9hG4bK03e76d0b;rport=5060;received=10.102.84.160”,SIP.REQ.HEADER(“Via”).SUBSTR(“rport=5060”) returns “rport=5060”.SIP.REQ.HEADER(“Via”).SUBSTR(“rport=5061”) returns an empty string. |
SIP.REQ.HEADER( |
Wenn die angegebene Zeichenfolge in einer Instanz des angegebenen Headers vorhanden ist, gibt dieser Ausdruck die Zeichenfolge unmittelbar hinter dieser Zeichenfolge zurück. For example, for the SIP header Via: SIP/2.0/UDP 10.102.84.180:5060;branch=z9hG4bK03e76d0b;rport=5060;received=10.102.84.160, the expression SIP.REQ.HEADER(“Via”).AFTER_STR(“rport=”) returns 5060. |
SIP.REQ.HEADER( |
Gibt boolean true zurück, wenn der angegebene reguläre Ausdruck (Regex) mit einer Instanz des angegebenen Headers übereinstimmt. Sie müssen den regulären Ausdruck im folgenden Format angeben: re |
SIP.REQ.HEADER( |
Wenn die angegebene Regex mit einem beliebigen Text in einer Instanz der angegebenen Kopfzeile übereinstimmt, gibt dieser Ausdruck den Text zurück. Zum Beispiel für den SIP-Header Via: SIP/2.0/UDP 10.102.84.180:5060;branch=z9hG4bK03e76d0b;rport=5060;received=10.102.84.160 gibt der Ausdruck SIP.REQ.HEADER(“Via”).REGEX_SELECT(“received=[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}”) Folgendes zurück: received=10.102.84.160. |
SIP.REQ.HEADER( |
Wenn der angegebene Regex mit einem Text in einer beliebigen Instanz des angegebenen Headers übereinstimmt, gibt dieser Ausdruck die Zeichenfolge unmittelbar nach diesem Text zurück. Für den SIP-Header Via: SIP/2.0/UDP 10.102.84.180:5060;branch=z9hG4bK03e76d0b;rport=5060;received=10.102.84.160 gibt der Ausdruck SIP.REQ.HEADER(“Via”).AFTER_REGEX(“received=”) Folgendes zurück: 10.102.84.160. |
SIP.REQ.HEADER( |
Wenn der angegebene Regex mit einem Text in einer beliebigen Instanz des angegebenen Headers übereinstimmt, gibt dieser Ausdruck die Zeichenfolge unmittelbar vor diesem Text zurück. Zum Beispiel für den SIP-Header Via: SIP/2.0/UDP 10.102.84.180:5060;branch=z9hG4bK03e76d0b;rport=5060;received=10.102.84.160 gibt der Ausdruck SIP.REQ.HEADER(“Via”).BEFORE_REGEX(“[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}”) Folgendes zurück: received=. |
SIP.REQ.FULL_HEADER | Gibt den gesamten SIP-Header zurück, einschließlich des abschließenden CR/LF. |
SIP.REQ.IS_VALID | Gibt den booleschen Wert true zurück, wenn das Anforderungsformat gültig ist. |
SIP.REQ.BODY( |
Gibt den Anforderungstext bis zur angegebenen Länge zurück. Wenn die angegebene Länge größer als die Länge des Anforderungstexts ist, gibt dieser Ausdruck den gesamten Anforderungstext zurück. |
SIP.REQ.LB_VSERVER | Gibt den Namen des virtuellen Load-Balancing-Servers (LB vserver) zurück, der die aktuelle Anfrage bedient. |
SIP.REQ.CS_VSERVER | Gibt den Namen des virtuellen Content Switching-Servers (CS vserver) zurück, der die aktuelle Anfrage bedient. |
SIP-Antwortausdrücke
Ausdruck | Beschreibung |
---|---|
SIP.RES.STATUS | Gibt den SIP-Antwortstatuscode zurück. Wenn die erste Zeile der Antwort beispielsweise SIP/2.0 100 Trying lautet, gibt dieser Ausdruck 100 zurück. |
SIP.RES.STATUS_MSG | Gibt die SIP-Antwortstatusmeldung zurück. Lautet die erste Zeile der Antwort beispielsweise SIP/2.0 100 Trying, gibt dieser Ausdruck Trying zurück. |
SIP.RES.IS_REDIRECT | Gibt den booleschen Wert true zurück, wenn der Antwortcode eine Weiterleitung ist. |
SIP.RES.METHOD | Gibt die Antwortmethode zurück, die aus der Anforderungsmethodenzeichenfolge im CSEq-Header extrahiert wurde. |