概述
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属性,看发送的报文是哪些。
最后
以上就是感性皮卡丘为你收集整理的组播问题分析的全部内容,希望文章能够帮你解决组播问题分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复