Kamailio IMS - Handling 2 SIP transports in an IMS client
by Haggerty, Paul (phaggert)
Hi,
Our client registers with the IMS core using UDP but uses TCP when the packet size is over 1300 bytes. When the client sends the TCP reques, the PCSCF replies with 403 Forbidden "you need to reg with the SCSCF"
We've traced this back to the code in the PCSCF and it looks like it is checking the via headers and the received ip/port combinations for a match. The actual contact header looks like it matches the registered client.
Question is what do we need to do in the client to ensure that the PCSCF recognizes the request as one from a registered client?
We've tried the config options is_registered_fallback2ip , ignore_contact_rxport_check and they don't seem to be used.
I'm attaching a network trace and included here are some debug messages from the PCSCF. In the network trace the client is 10.8.0.6.
PCSCF Trace messages -------------------------------------------
34207) DEBUG: ims_registrar_pcscf [service_routes.c:208]: getContactP():
This is a request - using first via to find contact
10(34207) DEBUG: ims_registrar_pcscf [service_routes.c:216]:
getContactP(): searching for contact with host:port:proto contact [2://10.8.0.6:49946]
10(34207) DEBUG: ims_usrloc_pcscf [udomain.c:457]: get_pcontact():
Searching for contact with AOR
[sip:mcpttuser1@10.8.0.6:44580;ob;alias=10.8.0.6~44580~1;alias=10.8.0.6~49946~2]
in P-CSCF usrloc based on VIA [2://10.8.0.6:49946] Received [2://10.8.0.6:49946], Search flag is 0
10(34207) DEBUG: ims_usrloc_pcscf [udomain.c:463]: get_pcontact(): Have an AOR to search for
10(34207) DEBUG: ims_usrloc_pcscf [udomain.c:468]: get_pcontact():
checking for rinstance10(34207) DEBUG: ims_usrloc_pcscf [udomain.c:480]:
get_pcontact(): no rinstance param
10(34207) DEBUG: ims_usrloc_pcscf [usrloc.c:148]: get_aor_hash():
Returning hash: [1662767777]
10(34207) DEBUG: ims_usrloc_pcscf [udomain.c:503]: get_pcontact():
get_pcontact slot is [161]
10(34207) DEBUG: ims_usrloc_pcscf [udomain.c:507]: get_pcontact():
comparing contact with aorhash [1662767777], aor [sip:mcpttuser1@10.8.0.6:44580;ob;alias=10.8.0.6~44580~1]
10(34207) DEBUG: ims_usrloc_pcscf [udomain.c:508]: get_pcontact():
contact host [10.8.0.6:44580]
10(34207) DEBUG: ims_usrloc_pcscf [udomain.c:509]: get_pcontact(): contact received [1:10.8.0.6:44580]
10(34207) DEBUG: ims_usrloc_pcscf [udomain.c:543]: get_pcontact(): contact not found in memory
10(34207) INFO: ims_registrar_pcscf [service_routes.c:258]: getContactP():
Contact not found based on Contact-header, trying IP/Port/Proto
10(34207) DEBUG: ims_usrloc_pcscf [udomain.c:457]: get_pcontact():
Searching for contact with AOR
[sip:mcpttuser1@10.8.0.6:44580;ob;alias=10.8.0.6~44580~1;alias=10.8.0.6~49946~2]
in P-CSCF usrloc based on VIA [2://10.8.0.6:49946] Received [2://10.8.0.6:49946], Search flag is 1
10(34207) DEBUG: ims_usrloc_pcscf [udomain.c:463]: get_pcontact(): Have an AOR to search for
10(34207) DEBUG: ims_usrloc_pcscf [udomain.c:468]: get_pcontact():
checking for rinstance10(34207) DEBUG: ims_usrloc_pcscf [udomain.c:480]:
get_pcontact(): no rinstance param
10(34207) DEBUG: ims_usrloc_pcscf [usrloc.c:148]: get_aor_hash():
Returning hash: [1662767777]
10(34207) DEBUG: ims_usrloc_pcscf [udomain.c:503]: get_pcontact():
get_pcontact slot is [161]
10(34207) DEBUG: ims_usrloc_pcscf [udomain.c:507]: get_pcontact():
comparing contact with aorhash [1662767777], aor [sip:mcpttuser1@10.8.0.6:44580;ob;alias=10.8.0.6~44580~1]
10(34207) DEBUG: ims_usrloc_pcscf [udomain.c:508]: get_pcontact():
contact host [10.8.0.6:44580]
10(34207) DEBUG: ims_usrloc_pcscf [udomain.c:509]: get_pcontact(): contact received [1:10.8.0.6:44580]
10(34207) DEBUG: ims_usrloc_pcscf [udomain.c:543]: get_pcontact(): contact not found in memory
10(34207) DEBUG: ims_registrar_pcscf [service_routes.c:263]:
getContactP(): No entry in usrloc for 10.8.0.6:49946 (Proto 2) found!
10(34207) DEBUG: ims_registrar_pcscf [service_routes.c:300]:
getContactP(): Asserted identity not set10(34207) ERROR: *** cfgtrace:request_route=[Orig_Initial] c=[/opt/OpenEPC/etc/pcscf2.cfg]
l=975 a=26 n=xlog
10(34207) WARNING: <script>: 2.1
10(34207) ERROR: *** cfgtrace:request_route=[Orig_Initial]
c=[/opt/OpenEPC/etc/pcscf2.cfg] l=976 a=26 n=send_reply
Appreciate any help we can get,
- Paul