UDPでマルチキャストを使う(TTLを設定する)

ここでは、UDPでマルチキャストパケットを送信の際にTTL(Time To Live)を設定する方法を説明したいと思います。

TTLの設定

LinuxやWindowsの初期設定では、マルチキャストパケットはTTL 1で送信されます。 ローカルセグメントだけでマルチキャスト利用し、ルータを越える必要がない場合には問題はありませんが、ルータを越えるマルチキャストを行いたい場合には問題が発生します。

そのため、ルータを越える通信を行いたい場合には、マルチキャスト用TTLを変更しなくてはなりません。 以下に、TTLの設定例を示します。


#!/usr/bin/ruby

require "socket"
require "ipaddr"

udp = UDPSocket.open()

saddr = Socket.pack_sockaddr_in(10000, "239.192.1.2")

udp.setsockopt(Socket::IPPROTO_IP,
               Socket::IP_MULTICAST_TTL, [3].pack("i"))

mif = IPAddr.new("127.0.0.1").hton
udp.setsockopt(Socket::IPPROTO_IP, Socket::IP_MULTICAST_IF, mif)

udp.send("HELLO", 0, saddr)

udp.close

プロフェッショナルIPv6解説動画シリーズ再生リスト

動画で学ぶ「プロフェッショナルIPv6」を作っています。 もしよろしければご覧ください。お楽しみいただければ幸いです!