在 Contiki 中通过边界路由器使用多播的任何方式?

物联网 康提基
2021-05-29 01:33:04

我正在尝试通过边界路由器将数据包从我的 PC 发送到多个节点。节点和边界路由器是使用 Contiki 开发的。问题是我无法发送多播消息,因为边界路由器不会将它们转发到节点。有没有办法解决这个问题?

编辑:我使用 IPv6 进行路由,并且使用 UDP 协议发送多猫数据包。此外,边界路由器接口是以太网或 SLIP(可以双向连接到 PC)和 802.15.4 上的 6lowpan(与节点连接)。

2个回答

很可能你必须包含一个像IGMP这样的协议——假设你使用的是 IPv4。Internet 协议中的标准多播在路由器边界结束是有充分理由的。不幸的是,我没有 Contiki 经验来帮助您了解实施的细节。

无论您如何解决问题,您都需要为多播建立适当的边界。IGMP 通过创建跨路由器边界的多播组来实现这一点。

用于类似目的的 IPv6 协议是MLD——多播侦听器发现

多播路由与单播路由非常不同。多播路由需要多播路由协议,例如 PIM,并使用 IGMP (IPv4) 和 MLD (IPv6) 为主机通知多播路由器它需要特定多播组的流量。

单播路由基于单一目标地址,因此从源到目标获取数据包非常简单。组播发送到一个组地址,组播路由是为了防止组播去不想要的地方,去已经请求的地方,所以比单播路由复杂得多。

您需要在源和目标之间的每个路由器上配置多播路由,这就是您不能在公共 Internet 上多播的原因。您可以通过支持多播的隧道在公共 Internet 上多播(并非所有人都支持)。隧道将多播数据包封装在单播数据包中,允许它穿越 Internet 到达目标网络,目标网络也必须配置为多播路由。