Hello all,
We are facing an issue while configuring TOPOS in Kamailio P-CSCF (running under Docker). Our objective is to strip Via, Record-Route, and Route headers for both INVITE and 180 Ringing responses. However, we observe unexpected behavior when handling the 180 Ringing/200 OK responses.
Call Flow & Issue Description:
Note: Public IP and Private IP mapping using the below configuration.
listen=udp:Local_IP:5060 name "internal"
listen=udp:Local_IP:6070 advertise Public_IP:6070 name "external"
Call Flow (INVITE): A-Party --> Kamailio P-CSCF (Public IP) --> Kamailio P-CSCF (Private IP) --> Kamailio S-CSCF (Private IP) --> Kamailio P-CSCF (Private IP) --> Kamailio P-CSCF (Public IP) --> B-Party
For an incoming INVITE (A-Party → B-Party), TOPOS successfully strips the headers when the message flows through the P-CSCF, ensuring proper privacy of routing information.
Issue : When B-Party sends a 180 Ringing, we observe that Kamailio P-CSCF (Private IP) adds a Record-Route header before forwarding the message to A-Party.
Call Flow (180 Ringing): B-Party --> Kamailio P-CSCF (Public IP) --> Kamailio P-CSCF (Private IP) --> Kamailio S-CSCF (Private IP)
We need to ensure that the Record-Route and Via headers are stripped properly in both directions.
Please guide us how to achieve and what we are doing wrong.
TOPOS module is configured as follows:
modparam("ndb_redis", "server", "name=srv1;addr=127.0.0.1;port=6379")
modparam("topos_redis", "serverid", "srv1")
modparam("topos", "storage", "redis")
modparam("topos", "contact_mode", 1)
modparam("topos", "rr_update", 1)
RR module is configured as follows:
modparam("rr", "enable_full_lr", 1)
modparam("rr", "append_fromtag", 1)
configured the below event_route:
event_route[topos:msg-outgoing] {
xlog("L_INFO","[topos:msg-outgoing]");
if(is_request() and $sndto(ip)=="SCSCF_PRIVATE_IP") {
xlog("L_INFO","[topos:msg-outgoing] TOPOS \n");
drop;
}
}
Thanks,
Vinayak Makwana