Description

When kamailio need to pass call from carrier to customer VoIP PBX in docker container on swarm cluster then it not possible.
Network interconnection.
In docker environment eth1 NIC of kamailio and VoIP PBX connected to internet via iptables masquerading. eth1 NIC of kamailio and VoIP PBX have random IP address and generally no way to pass message between kamailio and VoIP PBX via eth1 NIC.
Also both containers have eth0 NIC in same network with static IP. But network on eth0 NIC not connected to Internet.

SIP signaling is passed like
eth1-Kamailio-eth0 <-> eth0-VoIP PBX

In this network kamailio add/removes two Record-Route. For ACK message with two Route headers this rule does not work. Each Route headers for same kamailio instance and must be translated by one loose_route call

The proxy will inspect the URI in the topmost Route header
          field value.  If it indicates this proxy, the proxy removes it
          from the Route header field (this route node has been
          reached).

Really Route headers translated separately and second loose_route cannot be completed. Details in details.txt
details.txt

Wireshark pcap file and kamailio log with enabled debug attached of similar calls is attached.
full-call.zip

Reproduction

Create config when kamailio add two Record-Route headers and send ACK with two Route headers


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.