SIP-Ausdrücke
Die Citrix ADC Advanced Richtlinienausdruckssprache enthält eine Reihe von Ausdrücken, die auf SIP-Verbindungen (Session Initiation Protocol) ausgeführt werden. Diese Ausdrücke sollen in Richtlinien für alle unterstützten Protokolle verwendet werden, die auf Anforderung/Antwortbasis ausgeführt werden. Diese Ausdrücke können für Content Switching, Ratenbegrenzung, Responder und Umschreibrichtlinien verwendet werden.
Bestimmte Einschränkungen gelten für SIP-Ausdrücke, die mit Responder-Richtlinien verwendet werden. Nur die Aktionen DROP, NOOP oder RESPONDWITH sind auf einem virtuellen SIP-Load Balancing Server zulässig. Responderrichtlinien können an einen virtuellen Lastausgleichsserver, einen globalen Überschreibungspunkt, einen globalen Standardbindungspunkt oder eine sip_udp-Richtlinienbezeichnung gebunden werden.
Das Header-Format, das vom SIP-Protokoll verwendet wird, ähnelt dem vom HTTP-Protokoll, so dass 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.
Es folgt ein Beispiel SIP-Header, die in den Ausdruckstabellen darunter 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 andere offensichtliche Anpassungen vor. Die zweite Tabelle enthält die Antwortausdrücke, die für Antworten eindeutig sind und keine Anforderungsäquivalente aufweisen. Sie können jedes Element in den folgenden Tabellen selbst als vollständiger 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 auf der Methode der SIP-Anforderung. Unterstützte SIP-Anforderungen sind ACK, BYE, CANCEL, INFO, INVITE, MESSAGE, NOTIFY, OPTIONS, PRACK, PUBLISH, REFER, REGISTER, SUBSCRIBE und UPDATE. Dieser Ausdruck ist eine Ableitung der Textklasse, so dass alle Vorgänge, die auf Text anwendbar sind, auf diese Methode anwendbar sind. Beispielsweise gibt dieser Ausdruck für eine SIP-Anforderung von INVITE sip:16@10.102.84.181:5060;transport=udp SIP/2.0 INVITE zurück. |
SIP.REQ.URL | Funktioniert mit der SIP-Anforderungs-URL. Dieser Ausdruck ist eine Ableitung der Textklasse, so dass alle Vorgänge, die auf Text anwendbar sind, auf diese Methode anwendbar sind. Beispiel: Für eine SIP-Anforderung von INVITE sip:16@10.102.84.181:5060;transport=udp SIP/2.0 gibt dieser Ausdruck sip:16@10.102.84.181:5060;transport=udp zurück. |
SIP.REQ.URL.PROTOCOL | Gibt das URL-Protokoll zurück. Beispiel: Für eine SIP-URL von sip:16@www.sip.com:5060;transport=udp gibt dieser Ausdruck sip zurück. |
SIP.REQ.URL.HOSTNAME | Gibt den Hostname-Teil der SIP-URL zurück. Beispiel: Für eine SIP-URL von sip:16@www.sip.com:5060;transport=udp gibt dieser Ausdruck www.sip.com:5060 zurück. |
SIP.REQ.URL.HOSTNAME.PORT | Gibt den Port-Teil des SIP-URL-Hostnamens zurück. Wenn kein Port angegeben wird, gibt dieser Ausdruck den Standard-SIP-Port 5060 zurück. Beispielsweise gibt dieser Ausdruck für den SIP-Hostnamen www.sip.com:5060 den Wert 5060 zurück. |
SIP.REQ.URL.HOSTNAME.DOMAIN | Gibt den Domänennamenteil des SIP-URL-Hostnamens zurück. Wenn der Host eine IP-Adresse ist, gibt dieser Ausdruck ein falsches Ergebnis zurück. Beispiel: Für einen SIP-Hostnamen www.sip.com:5060 gibt dieser Ausdruck sip.com zurück. Bei einem SIP-Hostnamen 192.168.43. 15:5060 gibt dieser Ausdruck einen Fehler zurück. |
SIP.REQ.URL.HOSTNAME.SERVER | Gibt den Serverteil des Hosts zurück. Beispiel: Für einen SIP-Hostnamen www.sip.com:5060 gibt dieser Ausdruck www zurück. |
SIP.REQ.URL.USERNAME | Gibt den Benutzernamen zurück, der dem Zeichen @ vorausgeht. Beispielsweise gibt dieser Ausdruck für eine SIP-URL von sip: 16@www.sip.com:5060; transport=udp 16 zurück. |
SIP.REQ.VERSION | Gibt die SIP-Versionsnummer in der Anforderung zurück. Beispiel: Für eine SIP-Anforderung von INVITE sip:16@10.102.84.181:5060;transport=udp SIP/2.0 gibt dieser Ausdruck SIP/2.0 zurück. |
SIP.REQ.VERSION.MAJOR | Gibt die Hauptversionsnummer zurück (die Nummer links vom Punkt). Beispielsweise gibt dieser Ausdruck für eine SIP-Versionsnummer von SIP/2.0 2 zurück. |
SIP.REQ.VERSION.MINOR | Gibt die Nebenversionsnummer zurück (die Zahl rechts vom Punkt). Beispielsweise gibt dieser Ausdruck für eine SIP-Versionsnummer von SIP/2.0 0 zurück. |
SIP.REQ.CONTENT_LENGTH | Gibt den Inhalt des Content-Length-Headers zurück. Dieser Ausdruck ist eine Ableitung der Klasse thesip_header_t, so dass alle Operationen, die für SIP-Header verfügbar sind, verwendet werden können. Für einen SIP-Content-Length-Header von Content-Length: 277 gibt dieser Ausdruck beispielsweise 277 zurück. |
SIP.REQ.TO | Gibt den Inhalt des To Headers zurück. Beispiel: Für einen 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 den SIP-URI zurück, der im Objekt sip_url gefunden wird. Alle Vorgänge, die für SIP-URIs verfügbar sind, können verwendet werden. Beispiel: Für einen 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 Anzeigenamen Teil der To Header zurück. Beispiel: Für einen 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 “tag” aus dem Namenspaar “tag” im TO Header zurück. Beispiel: Für einen 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 der From Header zurück. Beispiel: Für einen SIP From Header von From: “12” <sip:12@sip_example.com>;tag=00127f54ec85a6d90cc14f45-53cc0185, gibt diese Ausdruck sip:12@sip_example.com zurück. |
SIP.REQ.FROM.ADDRESS | Gibt den SIP-URI zurück, der im Objekt sip_url gefunden wird. Alle Vorgänge, die für SIP-URIs verfügbar sind, können verwendet werden. Beispiel: Für einen SIP From Header von From: “12” <sip:12@sip_example.com>;tag=00127f54ec85a6d90cc14f45-53cc0185, gibt diese Ausdruck sip:12@sip_example.com zurück. |
SIP.REQ.FROM.DISPLAY_NAME | Gibt den Anzeigenamen Teil der To Header zurück. Beispiel: Für einen SIP From Header von From: “12” <sip:12@sip_example.com>; Tag = 00127f54ec85a6d90cc14f45-53cc0185 gibt dieser Ausdruck 12 zurück. |
SIP.REQ.FROM.TAG | Gibt den “tag” -Wert aus dem “tag” Name/Wert-Paar im TO Header zurück. Für einen SIP-Fom-Header von From: “12”<sip:12@sip_example.com>; tag=00127f54ec85a6d90cc14f45-53cc0185 gibt dieser Ausdruck beispielsweise 00127f54ec85a6d90cc14f45-53cc0185 zurück. |
SIP.REQ.VIA | Gibt den vollständigen Via Header zurück. Wenn mehrere Via Header in der Anfrage vorhanden sind, gibt die letzte Via Header zurück. Beispielsweise gibt dieser Ausdruck für die beiden Va-Header im Beispiel-SIP-Header Via zurück: SIP/2.0/UDP 10.102.84. 180:5060; Branch=Z9hg4bk03e76d0b; rport=5060; received=10.102.84.160. |
SIP.REQ.VIA.SENTBY_ADDRESS | Gibt die Adresse zurück, die die Anforderung gesendet hat. Beispiel: Für den Via Header Via: SIP/2.0/UDP 10.102.84.180:5060; Branch=Z9hg4bk03e76d0b; rport=5060; received=10.102.84.160 gibt dieser Ausdruck 10.102.84.180 zurück. |
SIP.REQ.VIA.SENTBY_PORT | Gibt den Port zurück, der die Anforderung gesendet hat. Beispiel: Für den Via Header Via: SIP/2.0/UDP 10.102.84.180:5060;branch=z9hG4bK03e76d0b;rport=5060;received=10.102.84.160 gibt dieser Ausdruck 5060 zurück. |
SIP.REQ.VIA.RPORT | Gibt den Wert aus dem Rport-Name/Wert-Paar zurück. Beispiel: Für den Via Header Via: SIP/2.0/UDP 10.102.84.180:5060;branch=z9hG4bK03e76d0b;rport=5060;received=10.102.84.160 gibt dieser Ausdruck 5060 zurück. |
SIP.REQ.VIA.BRANCH | Gibt den Wert aus dem Zweigname/Wert-Paar zurück. Beispiel: Für den Via Header Via: SIP/2.0/UDP 10.102.84.180:5060; Branch=Z9hg4bk03e76d0b; rport=5060; received=10.102.84.160 gibt dieser Ausdruck Z9hg4bk03e76d0b zurück. |
SIP.REQ.VIA.RECEIVED | Gibt den Wert aus dem empfangenen Name/Wert-Paar zurück. Beispiel: Für den Via Header Via: SIP/2.0/UDP 10.102.84.180:5060; Branch=Z9hg4bk03e76d0b; rport=5060; received=10.102.84.160 gibt dieser Ausdruck 10.102.84.160 zurück. |
SIP.REQ.CALLID | Gibt den Inhalt des Callid-Headers zurück. Dieser Ausdruck ist eine Ableitung der Klasse sip_header_t, so dass alle Operationen, die für SIP-Header verfügbar sind, verwendet werden können. Beispielsweise gibt dieser Ausdruck für einen SIP-Callid-Header der Call-ID: 00127f54-ec850017-0e46f5b9-5ec149c2@10.102.84.180 den Wert 00127f54-ec850017-0e46f5b9-5ec149c2@10.102.84.180 zurück. |
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. |
SIP.REQ.HEADER( |
Gibt die angegebene Instanz des angegebenen SIP-Headers zurück. Mehrere Instanzen desselben SIP-Headers können auftreten. Wenn Sie eine bestimmte Instanz eines solchen SIP-Headers wünschen (z. B. einen bestimmten Va-Header), können Sie diesen Header angeben, indem Sie eine Nummer als eingeben |
SIP.REQ.HEADER( |
Gibt den Inhalt der angegebenen Instanz des angegebenen SIP-Headers zurück. Die Verwendung ist fast die gleiche wie der vorherige Ausdruck. Beispiel: Wenn SIP-Header-Beispiel im vorherigen Tabelleneintrag verwendet wird, gibt SIP.REQ.HEADER (“Via”) .VALUE (1) SIP/2.0/UDP 10.102.84 zurück. 180:5060; Branch=Z9HG4BK03E76D0b; rport=5060. |
SIP.REQ.HEADER( |
Gibt die Anzahl der Instanzen eines bestimmten Headers als Ganzzahl zurück. Beispiel: Wenn SIP-Header-Beispiel oben verwendet wird, gibt SIP.REQ.HEADER (“Via”) .COUNT 2 zurück. |
SIP.REQ.HEADER( |
Gibt einen booleschen Wert von true oder false zurück, abhängig davon, ob der angegebene Header existiert oder nicht. Beispiel: Wenn SIP-Header Beispiel oben verwendet wird, gibt SIP.REQ.HEADER (“Expires”) .EXISTS “true” zurück, während SIP.REQ.HEADER (“Caller-ID”).EXISTS “false” zurückgibt. |
SIP.REQ.HEADER( |
Gibt die durch Kommas getrennte Parameterliste im angegebenen Header zurück. Wenn SIP.REQ.HEADER (“Zulassen”) verwendet wird, gibt SIP.REQ.HEADER (“Zulassen”) .LIST zurück: ACK,BYE,CANCEL,INVITE,NOTIFY,OPTIONS,REFER,REGISTER,UPDATE. Sie können die Zeichenfolge anhängen. GET ( |
SIP.REQ.HEADER( |
Typumwandlung |
SIP.REQ.HEADER( |
Gibt boolean true zurück, wenn die angegebene Textzeichenfolge in einer beliebigen Instanz der angegebenen Kopfzeile vorhanden ist. Funktioniert auf allen Instanzen des angegebenen Headers. Header-Instanzen werden vom letzten (0) bis zum ersten zugeordnet. |
SIP.REQ.HEADER( |
Gibt boolean true zurück, wenn ein Muster zugeordnet mit einem |
SIP.REQ.HEADER( |
Gibt boolean true zurück, wenn ein Muster zugeordnet mit einem |
SIP.REQ.HEADER( |
Gibt den Index des übereinstimmenden Musters zurück |
SIP.REQ.HEADER( |
Gibt den Index des übereinstimmenden Musters zurück |
SIP.REQ.HEADER( |
Wenn die angegebene Zeichenfolge in einer Instanz des angegebenen Headers vorhanden ist, gibt dieser Ausdruck diese Zeichenfolge zurück. 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”, SIP.REQ.HEADER (“Via”) .SUBSTR (“rport=5060”) gibt “rport=5060”.sip.req.sip.req.header (“Via”) .SUBSTR (“rport=5061”) gibt einen leeren String zurück. |
SIP.REQ.HEADER( |
Wenn die angegebene Zeichenfolge in einer Instanz des angegebenen Headers vorhanden ist, gibt dieser Ausdruck die Zeichenfolge unmittelbar nach dieser Zeichenfolge zurück. 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”) .AFTER_STR (“rport=”) 5060 zurück. |
SIP.REQ.HEADER( |
Gibt boolean true zurück, wenn der angegebene reguläre Ausdruck (regex) mit einer beliebigen 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; empfangen=10.102.84.160, der Ausdruck SIP.REQ.HEADER (“Via”) .REGEX_SELECT (“erhalten =[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}”) gibt Received=10.102.84.160 zurück. |
SIP.REQ.HEADER( |
Wenn die angegebene Regex mit einem beliebigen Text in einer Instanz der angegebenen Kopfzeile übereinstimmt, gibt dieser Ausdruck die Zeichenfolge unmittelbar nach diesem Text zurück. 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”).AFTER_REGEX(“received=”) den Wert 10.102.84.160 zurück. |
SIP.REQ.HEADER( |
Wenn die angegebene Regex mit einem beliebigen Text in einer Instanz der angegebenen Kopfzeile übereinstimmt, gibt dieser Ausdruck die Zeichenfolge unmittelbar vor diesem Text zurück. Beispielsweise für den SIP-Header Via: SIP/2.0/UDP 10.102.84.180:5060; Branch=Z9hg4bk03e76d0b; rport=5060; received=10.102.84.160, der Ausdruck SIP.REQ.HEADER (“Via”) .BEFORE_REGEX (“[0-9]{1,3}. [0-9]{ 1,3}. [0-9]{ 1,3}. [0-9]{ 1,3}”) gibt empfangen= zurück. |
SIP.REQ.FULL_HEADER | Gibt den gesamten SIP-Header zurück, einschließlich des abschließenden CR/LF. |
SIP.REQ.IS_VALID | Gibt boolean true zurück, wenn das Anforderungsformat gültig ist. |
SIP.REQ.BODY( |
Gibt den Anforderungskörper bis zur angegebenen Länge zurück. Wenn die angegebene Länge größer als die Länge des Anforderungskörpers ist, gibt dieser Ausdruck den gesamten Anforderungskörper zurück. |
SIP.REQ.LB_VSERVER | Gibt den Namen des virtuellen Lastenausgleichsservers (LB vserver) zurück, der die aktuelle Anforderung bedient. |
SIP.REQ.CS_VSERVER | Gibt den Namen des virtuellen Content Switching-Servers (CS vserver) zurück, der die aktuelle Anforderung bedient. |
SIP-Antwortausdrücke
Ausdruck | Beschreibung |
---|---|
SIP.RES.STATUS | Gibt den SIP-Antwortstatuscode zurück. Wenn beispielsweise die erste Zeile der Antwort SIP/2.0 100 versucht ist, gibt dieser Ausdruck 100 zurück. |
SIP.RES.STATUS_MSG | Gibt die SIP-Antwortstatusmeldung zurück. Wenn die erste Zeile der Antwort beispielsweise SIP/2.0 100 Versuchen lautet, gibt dieser Ausdruck Versuchen zurück. |
SIP.RES.IS_REDIRECT | Gibt boolean true zurück, wenn der Antwortcode eine Umleitung ist. |
SIP.RES.METHOD | Gibt die Antwortmethode zurück, die aus der Anforderungsmethodenzeichenfolge im CSEq-Header extrahiert wurde. |