Eyepea / aiosip

SIP support for AsyncIO (DEPRECATED)
Apache License 2.0
82 stars 41 forks source link

Doesn't work nicely when internal network doesn't match external ip #93

Closed vodik closed 6 years ago

vodik commented 6 years ago

Nat traversal is always a pain, but aiosip currently has some issues when run behind docker.

It can properly start and send new transactions and send new out traffic, but returned traffic isn't routed properly back and rejected.

This is because the dialog established for the outbound traffic is bound to internal addressing which we fail to find when handling inbound traffic.

vodik commented 6 years ago

So, from a friend:

matching a transaction within a dialog should be matter of matching the via branch parameter matching a dialog is the from/to tags and call-id

ludovic-gasc commented 6 years ago

Thanks a lot for your contribution, a better NAT support is always good idea.

However, for your use case, why you don't disable NAT with docker ?

vodik commented 6 years ago

I actually don't have control over that. We deploy with docker swarm at the moment, which relies on port mapping.

But NAT traversal aside, this is closer to what the SIP RFC sites as expected behaviour. Especially once we move to using tags.

I will try and restore stats on the peer and the proxy stuff before merging this.

I can't see how we'd handle situation like sip forking or dialogs where the IP traffic arrives from doesn't match the contact header without getting dialog tracking right. -- Sent from my Android device with K-9 Mail. Please excuse my brevity.