Re: Multicast and TTL - Again
Tom Anwyll <[email protected]> Fri, 15 Sep 2006 06:39:43 -0700 (PDT)
| Newsgroups | gmane.comp.gnu.ccrtp.devel |
|---|---|
| Message-ID | <[email protected]> |
Hi Frederico, Thanks for the reply and a great software library. --- Federico Montesino Pouzols <[email protected]> wrote: <snip> > Do I suppose it right that RTP packets are being > sent with TTL=32? Agreed. This is probably "bad form" for Internet apps. However, for internal networks that span multiple subnets, it is a programming requirement to have the ability to change it. > If so, I think the problem could be sorted out by > moving the setMulticastTTL > method (in the RTPSession base classes) to the > protected or public > sections. Then, you would just have to do > s->setMulticastTTL(32) (or > setMulticastTTL(32) within a derived class). This is > a bug that should > be fixed for the next release. Could you confirm if > this works for you? Agreed. I think unhiding the method is proper and eases programming complexity. I can confirm that using a SymmetricRTPSession type the TTL's were set (and routed) correctly, however, using a RTPSession type the TTL's were set incorrectly and not routed to the different subnets. I haven't dug into the ccRTP/CommonC++ code deep enough to figure out why this is. I suspect it's in the CommonC++ code. Any ideas why this might be? > As an alternative to allow for setting multicast > parameters of the control > (RTCP) socket, a "getCSO" method could be added, but > I think the first > solution is tidier. IMHO (I'm not the author!), I would think a getCSO method is a requirement. As it stands now, multicast RTCP packets will not traverse multiple subnets. Hence, SDES info will not accompany multicast RTP streams outside of the local network. For my custom RTP player/client, this is not an issue, but I imagine it might cause some flakiness in "standardized" apps such as JMStudio, etc. I'm not an expert on MBone, but I thought it was a multicast based network topology and "the next cool thing". But in it's present implementation, ccRTP/CommonC++ will have only limited functionality on it due to the multicast RTP/RTCP/TTL issue. Obviously, the multicast TTL issue is relatively insignificant due to the limited number of real world situations it is encountered in. And that's cool, I just desired to get some advice/howto, and if there are intentions to make changes, otherwise, I will need to manage my own customized/hacked version. Thanks again, Tom > > On Wed, September 13, 2006 8:45 pm, Tom Anwyll > wrote: > > Not sure if anyone is following this thread. Not > much > > discussion on this. > > > > FWIW, here's where I'm at so far: > > > > I guess no one has ever used ccRTP multicast > across > > subnets, becuase as it stands, it does not work. > Using > > an RTPSession object (as in the example code), the > RTP > > packets TTL field WILL ALWAYS be 1, despite doing > a > > getDSO()->setTimeToLive(ttl)call. So, in essence, > > ccRTP multicast is broken outside of the local > > network. > > > > If you want to do multicast across networks, *I > think* > > one must use a SymmetricRTPSession object. The > code > > snippet below does set the TTL correctly: > > > > SymmetricRTPSession* s = new > > SymmetricRTPSession(InetHostAddress("0.0.0.0")); > > > s->addDestination(InetHostAddress("235.1.1.1"),18800); > > s->getDSO()->setMulticast(true); > > s->getDSO()->setTimeToLive(32); > > > > However, the RTCP packets TTL's are still set to > 1, so > > I suppose that RTCP information will never travel > > beyond the local network. I assume RTP will work > > without RTCP. > > > > If anybody has some advice or good ideas, please > feel > > free to chime in. > > > > Thanks, > > Tom > > > > > > --- Tom Anwyll <[email protected]> wrote: > > > >> Hello RTP Gurus, > >> > >> I am having trouble setting the TTL on a > multicast > >> socket. Despite my best efforts, ethereal still > >> shows the TTL field of my packets set to 1. > >> > >> FYI, I'm using ccRTP 1.3.6 and commoncpp 1.3.22 > >> > >> code snippet > >> > >> RTPSession* s = new RTPSession( > >> INetHostAddress("0.0.0.0")); > >> s->addDestination( > >> InetHostAddress("235.1.1.1"),18800); > >> s->getDSO()->setMulticast(true); // <-- This was > >> needed to avoid crash on next line -- not sure if > >> this is right > >> s->getDSO()->setTimeToLive(32); > >> > >> Any ideas about what I am doing wrong or how to > set > >> multicast TTL's > 1? > >> > >> TIA, > >> Tom > >> > >> > >> --------------------------------- > >> All-new Yahoo! Mail - Fire up a more powerful > email > >> and get things done faster.> > > _______________________________________________ > >> Ccrtp-devel mailing list > >> [email protected] > >> http://lists.gnu.org/mailman/listinfo/ccrtp-devel > >> > > > > __________________________________________________ > > Do You Yahoo!? > > Tired of spam? Yahoo! Mail has the best spam > protection around > > http://mail.yahoo.com > > > > > > _______________________________________________ > > Ccrtp-devel mailing list > > [email protected] > > http://lists.gnu.org/mailman/listinfo/ccrtp-devel > > > > > __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com