组播学习笔记(二)IGMP协议

2018年6月28日21:59:24 发表评论 658 views

IGMP:互联网组管理协议,主要用在最后一条路由器(LH)和接收者(host)之间同步信息。主要作用为:

1、告知LH,那些host加入了哪些组,哪些host离开了哪些组

2、LH用于查询host关于组播的信息

目前IGMP有version1,version2.主流为version2;本文仅讨论version2

 

IGMP V2一共有4种报文:

1、离组消息(last host离组须通报)

2、特定组查询(LH查询某个host是否加入某个组)

3、request(LH查询某个组是否还有剩余host)

4、report(host向LH回应加组消息)

 

两种机制:

1、查询者机制:当链路中存在多个LH,选举一个查询LH,ip 地址小的获胜

2、查询间隔:LH可要求host的响应时间。

 

 

组播拓扑:

LH------------host1
|
|----host2
|
|----host3

 

对于LH而言,只需要知道底下链路需要哪些组播流信息,即底下需要加入哪些组播组。假设host1,host2,host3都加入了224.1.1.1这个组播组,那么只需要其中某个host发出report信息请求224.1.1.1的流量即可,其余的host保持静默。

假设host1率先发出report发送到224.0.0.1(本地链路组播地址),所有的其他host包括LH都收到了report信息

1、于是其余的host知道已经有人告知LH我们需要加入224.1.1.1这个组播组了,我们只需要保持静默

2、LH知道了此链路需要224.1.1.1的组播流,且LH将host1标记为last host

 

Q1:host如何得知自己是last host,以便自己离组时发送离组消息?

last host发送report,在60秒内再无收到其他的report则表明自己为last host

 

补充:

LH收到了last host的离组消息后会向last host所在的组播组连续发送2次query,若无人回应则删除相应的组播表项。

 

易混淆点:

last host并不一定是组播链路上最后一个host,仅仅是链路上多个host的时候,最后一个向LH发送report的host。比如链路上存在host1,host2.....host10;host1率先发送了report给LH,对于LH而言,host1就是last host;

host1离组时需要发送离组消息,此时LH会向last host所在组播组发送query消息,询问是否有其他host在此组播组。此时,假设host2率先进行回应,那么LH将last host修改为host 2,一段时间间隔之后,组播组中的host又开始周期向LH发送report报文,假设这次是host10率先发送report报文,则此时LH的last host标记为host10

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: