lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lwip-users] Joining and keeping in multicast groups


From: Tomas Daujotas
Subject: [lwip-users] Joining and keeping in multicast groups
Date: Fri, 25 May 2012 09:46:30 +0300

Hello,
I have problems with IGMP messages sending.
Situation:
I am using Altera FPGA with Nios II software CPU running at 62.5MHz.
LwIP 1.4.0
NO_SYS_NO_TIMERS = 1, so no RTOS
LWIP_RAND() is defined to use rand().
I am doing UDP packets processing in hardware (total of 7 UDP streams
on gigabit interface), but I need LwIP to keep all multicast
connections alive and send appropriate IGMP messages to the Ethernet.
Some IGMP settings:
#define LWIP_IGMP 1
#define MEMP_NUM_IGMP_GROUP 8 // This is actually strange and I am not
sure if I set this correctly for 7 channels. Tried 16 - same problems
IGMP_TMR_INTERVAL = 100 (also tried 50)
Now the problem:
I need to join 7 multicast groups, so for tests, in main() program
before while(1) I do igmp join:
ret = igmp_joingroup(&alteraTseNetif.ip_addr,&IP0);
to...
ret = igmp_joingroup(&alteraTseNetif.ip_addr,&IP6);
Those IPs are prepared structures using IP4_ADDR(), everything there's
fine. When I printf the structure data, all the IPs are correct.
The software returns igmp_joingroup() = 0, which is a successful
result, but when I am sniffing data on WireShark, I see totally
different result and sometimes it's completely random.
Example:
System starts, I do joingroup to addresses:
IP0 = 239.2.3.61
IP1 = 239.2.3.74
IP2 = 239.2.3.85
IP3 = 239.2.3.93
IP4 = 239.2.3.94
IP5 = 239.2.3.55
IP6 = 239.2.3.25
All joins are reported as successful (returns 0)
The WireShark sniffer reports:
Membership report / Join group 239.2.3.93
And that's it.(Sometimes I see join to address 239.2.3.25 and then
239.2.3.61 (how can it be? buffering?))
After 1 minute and 30 seconds I see another join:
Membership report / Join group 239.2.3.55
After another 40 seconds:
Membership report / Join group 239.2.3.61
Now silence for 2 minutes and I see:
Membership report / Join group 239.2.3.55

I am totally lost, what's happening here, the stack even doesn't send
all the join messages. Sometimes it joins all the groups, but later I
get timeout, so the stream stops. Sometimes after another 2 minutes,
the stack rejoins the group, but timeout accours on other groups.
Maybe someone could help me out here? Maybe I am out of buffers or
doing something too fast?

Thank You.

Sincerely,
Tomas D.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]