我是靠谱客的博主 感性皮卡丘,最近开发中收集的这篇文章主要介绍组播问题分析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、知识介绍
   根据接收者对组播源处理方式的不同,组播模型分为以下三类:
   1)ASM 模型:Any-Source Multicast,任意信源组播
   2)SFM 模型:Source-Filtered Multicast,信源过滤组播
   3)SSM 模型:Source-Specific Multicast,指定信源组播

   解释:
   IGMPv3主机为接口上的每一个组播都维护一个表现信息:
   格式为:(组播地址,过滤模式,源列表)

   过滤模式包含INCLUDE和EXCLUDE:
   1)INCLUDE模式表示只接收来自源列表中列出的源发送的组播数据包;
   2)EXCLUDE模式表示只接收来自不在源列表中列出的组播源发送的组播数据包。

   源列表包含0个或多个IP单播地址,通常用集合形式来表示。


   可能存在的问题:对于某些交换机,可能对于不在组播组中的数据不进行发送。
   所以,可能需要将组播发送的源也进行组播注册,离开时发送leave。


2、如何实现主机发送IGMP的报文。
   若进程要加入到一个组播组中,用soket的setsockopt()函数发送该选项。
   该选项类型是ip_mreq结构,它的第一个字段imr_multiaddr指定了组播组的地址,
   第二个字段imr_interface指定了接口的IPv4地址。


   1)通过设置socket属性就可以相应的将IGMP的不同类型报文发送出去。
      对于IGMP的报文,设置的socket的属性有以下几个。下面具体说明。

 

 

3、如何在交换机上设置组播策略。
   在ASM/SFM/SSM模式中配置。可以不考虑,而只用设置加入源组播地址,从源组播地址中删除操作。
   这样可以测试被删除的地址能否将组播信息发送出来。
  

4、socket组播属性说明:(struct ip_mreq / struct ip_mreq_source)
 1)IP_ADD_MEMBERSHIP    struct ip_mreq
  若进程要加入到一个组播组中,用soket的setsockopt()函数发送该选项。
    该选项类型是ip_mreq结构,它的第一个字段imr_multiaddr指定了组播组的地址,第二个字段imr_interface指定了接口的IPv4地址。
 2)IP_DROP_MEMBERSHIP
  该选项用来从某个组播组中退出。数据结构ip_mreq的使用方法与上面相同。
 3)IP_MULTICAST_IF
  该选项可以修改网络接口,在结构ip_mreq中定义新的接口。
 4)IP_MULTICAST_TTL
  设置组播报文的数据包的TTL(生存时间)。默认值是1,表示数据包只能在本地的子网中传送。
  5)IP_MULTICAST_LOOP
  组播组中的成员自己也会收到它向本组发送的报文。这个选项用于选择是否激活这种状态。

  6)考虑使用的(struct ip_mreq_source)
   IP_BLOCK_SOURCE   :Removes the given source as a sender to the supplied multicast group and interface.   
   IP_UNBLOCK_SOURCE : 排除方式加入组播组

   IP_ADD_SOURCE_MEMBERSHIP  包含方式加入组播组
   IP_DROP_SOURCE_MEMBERSHIP

 实验:
分别设置socket属性,看发送的报文是哪些。

最后

以上就是感性皮卡丘为你收集整理的组播问题分析的全部内容,希望文章能够帮你解决组播问题分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(29)

评论列表共有 0 条评论

立即
投稿
返回
顶部