Hi, I'm not entirely sure I understand the question, but this is an interesting topic; I'd been thinking about ICE in multihomed environments also. >From running ICE on my own multihomed host, STUN only gathers srflx candidates from one interface. Only ost candidates are listed for the other interfaces. I guess the default (lowest numbered) interface is the only one checked. On Mon, 2008-10-06 at 13:47 +0000, ext Guido Fischer wrote: > In my understanding ICE should examin which network and host interface > to use by executing ice-connectivity-checks. When testing pjsip/pjnath > all packets where routed via the default route. Yes, I think during the ICE connectivity checks, STUN requests are meant to go out of the interface associated with one half of the candidate pair being checked. I don't (yet) know how pjnath deals with this. But I can obviously see the utility in forcing packets out the correct interfaces if ICE is to be a totally general solution. > Is there a perferable way to use the interface linked to the ip of the > candidate on a multihomed host? The connectivity checks should then > use the candidates interface/ip, not the default route. Using > SO_BINDTODEVICE respectively SO_DONOTROUTE would implicate the usage > of one socket for each candidate. Well, certainly SO_BINDTODEVICE is Linux-only. On FreeBSD, I'm using bind() to attach a socket to a local interface, and ipfw rules to forward packets sent using that socket back out the interface I want. But that's a fairly brittle solution in an uncontrolled environment. Cheers, -S. On Mon, 2008-10-06 at 13:47 +0000, ext Guido Fischer wrote: > Hi, > I have a question on the pjnath ice-implementation. > I am trying to use pjsip with ice on a multihomed host. In my > understanding ICE should examin which network and host interface to > use by executing ice-connectivity-checks. When testing pjsip/pjnath > all packets where routed via the default route. > As far as I understand this implementation has only one STUN socket > for each Component(RTP/RTCP) and Dialog. This Socket is used by all > candidates for this component. > When executing the ice-connecitvity-checks the socket is still bound > to the broadcast ip 0.0.0.0 and a specific port. This means all > outgoing STUN-requests and traffic will be routed over the default > route rather then the candidates interface. Even if the the > nominated-pair tells us it uses host-ip IP1/interface IF1 it may send > the data over host-ip IP2/interface IF2 because of the default route? > Is there a perferable way to use the interface linked to the ip of the > candidate on a multihomed host? The connectivity checks should then > use the candidates interface/ip, not the default route. Using > SO_BINDTODEVICE respectively SO_DONOTROUTE would implicate the usage > of one socket for each candidate. > > regards, > Guido > > _______________________________________________ > Visit our blog: http://blog.pjsip.org > > pjsip mailing list > pjsip at lists.pjsip.org > http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org