[Search for users]
[Overall Top Noters]
[List of all Conferences]
[Download this site]
Title: | FDDI - The Next Generation |
|
Moderator: | NETCAD::STEFANI |
|
Created: | Thu Apr 27 1989 |
Last Modified: | Thu Jun 05 1997 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 2259 |
Total number of notes: | 8590 |
1665.0. "fddi/dli packet loss" by BUDDIE::KENWORTHY () Fri Apr 28 1995 19:28
I have a customer that is losing packets using a DLI socket. they have given me
a complete problem description so I will put it in here.
Not all data packets are being delivered to an application which is reading
FDDI multicast data from a DLI socket. The frequency of missing data packets
increases with the load places on the recieving workstation.
The customer generates telemetry messages composed of multiple multicast
packets at a once per second rate on an FDDI network. The recieving
application assembles these multiple packets into a single telemetry
message for processing. Each multicast packet contains a header specifying
the message id, the total number of packets in the message and a packet
sequence number for this segment.
Below is an example of how the customer opens and closes the DLI socket:
/* Open Data Link Socket */
sd = socket( AF_DLI, SOCK_DGRAM, DLPROTO_DLI);
/* Set up Data Link address for Binding */
addr->dli_family = AF_DLI;
addr->dli_substructype = DLI_802;
addr->choose_addr_dli_devnumber = 0;
addr->choose_addr.dli_802addr.ioctl = DLI_DEFAULT;
addr->choose_addr_dli_802addr_svc = TYPE1;
addr->choose_addr_dli_802addr.eh_802.ctl.U_fmt = UI_NPCMD;
addr->choose_addr_dli_802addr.eh_802.ssap = source_sap;
/* Bind to the source address */
bind(sd, (struct sockaddr *)addr, sizeof(struct sockaddr_dl));
/*Enable reciept of the specified multicast address */
setsockopt(sd, DLPROTO_DLI, DLI_MULTICAST, multicast_add);
/* Loop to read all packets of a multicast message */
while( segments_to_be_read > 0)
bytes_read = recvfrom(sd, recv_buf, bufsize, NULL, &from_addr,
sizeof(from_addr));
/* Copy data to user's buffer */
}
Test Scenario
A 3000/500 was set up using a simple test tool to recieve the telemetry
packets from the network. This tool prints a list of recieved packet numbers
when an error is detected. A FDDI LAN analyzer was connected to the FDDI
network to monitor the telemetry packets.
Periodacally, the test tool would report a missing packet, but the LAN
analyzer would show that the packet was on the network. It was noticed that as
the average CPU utilization went up, the frequency of missing packets
increased. If the mouse was used to drive the CPU 0% idle, packets would be
missing from almost every telemetry message. Missing packets also occur more
frequently on a 3000/300.
The customer is running DEC OSF/1 v2.0 plus patches, the FDDI module is
a dual attached DEFTA
Any help or suggestions would be great. I am also posting this in the
DIGITAL_UNIX notes file.
regards
jimk
T.R | Title | User | Personal Name | Date | Lines |
---|
1665.1 | | NETRIX::thomas | The Code Warrior | Mon May 01 1995 10:06 | 1 |
| Use SO_RCVBUF to increase the amount of space used to store receive buffers.
|
1665.2 | set to 64k | BUDDIE::KENWORTHY | | Mon May 01 1995 18:27 | 7 |
| I talked to the customer and they had in fact set the SO_RCVBUF and the
SO_SNDBUF to 64k for the setsockopt system call.
Thanks for the quick response. Any other ideas?
regards
jimk
|