...
| Блок кода | ||
|---|---|---|
| ||
INVITE sip:24000@192.168.114.129:5460 SIP/2.0 Via: SIP/2.0/UDP 192.168.114.130:5460;rport;branch=z9hG4bKPj-fvzSQlwN2zoMaGUR5JCLMkjmkBV3Vz1 Max-Forwards: 70 From: "Simple UAC send bye" <sip:24001@192.168.114.130>;tag=l2jkRSMeumV03IdhjPntOt7l0XBKy-Ln To: "24000" <sip:24000@192.168.114.129> Contact: <sip:24001@192.168.114.130:5460;transport=udp> Call-ID: P-W.2oee.2vJw0JoaFbNkRDvnxY40FoP CSeq: 30738 INVITE Allow: PRACK, SUBSCRIBE, NOTIFY, REFER, INVITE, ACK, BYE, CANCEL, UPDATE Supported: timer, 100rel, replaces Session-Expires: 1800 Min-SE: 90 #Добавленный через таблицу модификаторов заголовок: Test_header: example string Content-Type: application/sdp Content-Length: 157 v=0 o=tester 3927594021 3927594021 IN IP4 192.168.114.130 s=A conversation c=IN IP4 192.168.114.130 t=0 0 m=audio 8062 RTP/AVP 8 a=rtpmap:8 PCMA/8000 |
| Scroll Pagebreak |
|---|
Модификатор передачи заголовка (transit)
Схема:
В конфигурации настроено два транка и настроена маршрутизация из транка TRUNK_IN в TRUNK_OUT. Требуется предать заголовок "User-Agent" из входящего INVITE, только если в нем указано значение "TestUA".
| Примечание |
|---|
По умолчанию, все необязательные и пользовательские заголовки удаляются на входящем плече и не передаются на исходящее плечо. |
Решение:
Создаем таблицу модификации MODTABLE_IN:
| Блок кода | ||
|---|---|---|
| ||
vesbc#
vesbc# configure
vesbc(config)# esbc
#Создаем модификаторов MODTABLE_IN:
vesbc(config-esbc)# mod-table sip MODTABLE_IN
vesbc(esbc-mod-table)#
#Добавляем в таблицу модификаторов правила для транзита заголовков:
vesbc(esbc-mod-table)# mod 0 transit
vesbc(esbc-mod-table-modification)#
#Выбираем метод, в котором будет осуществляться поиск заголовка (по условиям задачи - INVITE):
vesbc(esbc-mod-table-modification)# sip method type Invite
#Указываем паттерн для выбора названия заголовка, который необходимо передавать (по условиям задачи - User-Agent):
vesbc(esbc-mod-table-modification)# sip header-pattern User-Agent
#Указать содержимое заголовка, при совпадении с которым заголовок будет передан (по условиям задачи - TestUA):
vesbc(esbc-mod-table-modification)# value-pattern TestUA
vesbc(esbc-mod-table-modification)# exit
vesbc(esbc-mod-table)# exit |
Используем созданную таблицу в качестве IN для транка TRUNK_IN:
| Блок кода |
|---|
vesbc(config-esbc)# trunk sip TRUNK_IN
vesbc(config-esbc-trunk-sip)# mod-table sip in MODTABLE_IN
vesbc(config-esbc-trunk-sip)# do commit
vesbc(config-esbc-trunk-sip)# do confirm |
В резултате, когда в транке TRUNK_IN будет получен INVITE, содержащий заголовок "User-Agent" со значением "TestUA", в исходящем INVITE также будет присутствовать этот заголовок:
| Блок кода |
|---|
# INVITE полученный в TRUNK_IN:
INVITE sip:23002@192.168.23.199:5070 SIP/2.0
Via: SIP/2.0/UDP 192.168.23.200:5070;rport;branch=z9hG4bK-1763439-1-1
From: sipp <sip:24001@192.168.23.200:5070>;tag=1
To: sut <sip:23002@192.168.23.199:5070>
Call-ID: 1-1763439@192.168.23.200
Cseq: 1 INVITE
Contact: <sip:24001@192.168.23.200:5070>
Max-Forwards: 70
Subject: Performance Test
Allow: INVITE, ACK, BYE, CANCEL, PRACK, REGISTER, INFO, REFER, NOTIFY, OPTIONS, SUBSCRIBE, MESSAGE, UPDATE, PUBLISH
Content-Type: application/sdp
User-Agent: TestUA
Content-Length: 240
[SDP]
# INVITE отправленный c TRUNK_OUT:
INVITE sip:23002@192.168.80.26:5080 SIP/2.0
Via: SIP/2.0/UDP 192.168.80.129:5080;rport;branch=z9hG4bKPj88572ec4-0af0-4323-abc6-fe1db1ea6e37
Max-Forwards: 70
From: "sipp" <sip:24001@192.168.80.129>;tag=7da4c833-38da-4523-89d7-adc88b581397
To: "sut" <sip:23002@192.168.80.26>
Contact: <sip:24001@192.168.80.129:5080;transport=udp>
Call-ID: d21bdedb499dbfe992a939a27255c536
CSeq: 6199 INVITE
Allow: INVITE, ACK, BYE, CANCEL, PRACK, REGISTER, INFO, REFER, NOTIFY, OPTIONS, SUBSCRIBE, MESSAGE, UPDATE
Supported: 100rel, replaces, ice
User-Agent: TestUA
Content-Type: application/sdp
Content-Length: 241
[SDP] |
| Примечание |
|---|
Данный модификатор сработает только в случае когда значение заголовка User-Agent будет "TestUA". Если значение отличается, то заголовок User-Agent не будет передаваться на второе плечо. Для передачи заголовка с любым значением не следует использовать команду value-pattern в модификаторе, или указать в ней все возможные варианты, например - value-pattern .* |
Модификатор удаления заголовка (no-transit)
...
