This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/AM5726: IPv6 Multicast outgoing message issue

Part Number: AM5726


Tool/software: Linux

Hi,

I currently have an issue sending ipv6 multicast messages using ti-sdk-linux-rt-am57xx-evm-04.03.00.05. I have two eval boards, one running from an SD card created using  ti-sdk-linux-rt-am57xx-evm-04.03.00.05, and one board running with an SD card created with ti-sdk-linux-rt-am57xx-evm-03.01.00.06.

The software I am using creates multiple multicast addresses, with each address sending out a beacon message via eth0. The board using SDK 3.1.0.6 works as intended, and the messages can be seen via tcpdump and received and processed by software on the board using SDK 4.3.0.5. 

When using the SDK 4.3.0.5 board to send, the addresses are created successfully, but no outgoing multicast messages are being seen via tcpdump on eth0. I have swapped the SD cards, and the problem is not board dependent.

Any help or direction would be appreciated.

Nick

  • Hi,
    Can you please post the steps that you are doing to create the multicast messages? Are these the same steps used on both SDKs?
    Best Regards,
    Schuyler
  • Schuyler,
    Sure! Both SDK's are using the same application, with the same config file which supplies interface and port numbers. The application uses standard ipv6 structs; in6_addr, sockaddr_in6. 6 addresses are created and bind() is called for each. Message data is added to buffer, then sent using:

    ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
    const struct sockaddr *dest_addr, socklen_t addrlen);

    In both SDK's, when the application is started, ifconfig shows all 6 inet6 addresses, with correct addresses. mDNS messages are seen via wireshark for both.

    The 3.1.0.6 SDK application then starts showing the UDP messages outgoing on eth0 via tcpdump. I have both eval boards and my windows machine (with vmware Ubuntu machine) connected to a switch. Wireshark on Ubuntu and windows both see the UDP messages being sent to the proper multicast destination address, and received by applications listening on that multicast group. The 4.3.0.5 SDK shows the the multicast messages on tcpdump, and a client application is able to receive and process the messages.

    When the server application is running on the 4.3.0.5 SDK, the mDNS messages are seen leaving via tcpdump on the same board, but no UDP messages are ever passed through the eth0 interface. I have used ethtool -S eth0 to view tx multicast packets, and the only packets shown being sent are the mDNS messages.

    I have compared both /etc/network/interfaces files, and both are identical with the exception of the static ipv4 address, which are both on the same subnet. scp works between all nodes via ipv4. ifconfig shows both eth0 as being identical, with the exception of hardware address. In each inet6 address, the only difference is the scope id(?) which is a different number. One is address%763860/64, and the other is address%132688/64.

    I am relatively new to networking and working with the TI sdk. Any help would be greatly appreciated.

    Thanks,
    Nick
  • Update: The issue appears to be fixed with the newest 5.0 SDK, but significant rework would be required to transition to the newest version. Is it possible a patch was introduced and incorporated in the latest SDK concerning ipv6 multicast?
  • Hi,

    Thanks for posting the steps and the update on the issue. I looked through the driver git log, checked with the driver developer and there have not been any patches to the driver to fix a IPv6 issue. That may mean (but not necessarily) that something in the Linux network core may have been fixed. TI only supports the cpsw at the driver since that code was written by TI. Above the driver the issue is in the domain of the Linux community.

    We also won't be able to help with this recommendation but if you are familiar with git the TI driver developer recommended trying a bisect between the two LTS kernel versions to see a set of patches can be identified in the kernel network area.

    Best Regards,
    Schuyler
  • Thanks Schuyler, I will look at the recommended action and see if there were any Linux patches that could be applied. Thanks again for your help, and I'll mark this as resolved.

    Nick