カーネルの更新後にUDPマルチキャストがハングする

カーネルの更新後にUDPマルチキャストがハングする

手動で構築したカーネルを使用して単純なGentooユーザー領域を実行する組み込みシステムがあります。システムはPCIカードからデータを取得し、UDPマルチキャストグループに送信します。

これらはすべて古いカーネル(2.6.11)でうまく動作します。これで、再起動中にボードがハングする別の問題を解決するために、少し若いカーネル(2.6.15)にアップデートしました。これにより、再起動時に中断の問題が解決されますが、UDPマルチキャストグループにデータを送信できません。

2.6.15でsendtoを呼び出すと、ENOTCONNエラーが発生します。ただし、リンクが接続されているため、問題なくTCP経由でデータを送信できます。私のプログラムは変更されていません。実際には再コンパイルしませんでした。両方のカーネルでifconfig eth0を呼び出すと、同じ出力が得られます。

2.6.15 カーネルを構築する際に設定が間違っている可能性があることをご存知ですか?それとも2.6.15にバグやAPIの変更がありますか? 2.6.15より低いバージョンでは更新できません。なぜなら、バージョン2.6.15は、システムのPCIカード用の不都合なドライバがサポートする最新のカーネルだからです。

ベストアンサー1

15時間デバッグした後に問題が見つかりました。プログラムは非常に大きなパケットを送信しようとしましたが、sendtoに渡されたサイズが最大許容UDPパケットサイズである2 ^ 16バイトを超えることが多かったです。 sendtoに渡される最大パケットサイズを50000に設定するロジックを追加すると、すべてが正常に戻ります。これは本当に奇妙です。以前のカーネルとWindows XPと7で動作しました。

おすすめ記事