组播侦听发现协议详解RFC2710_第1页
组播侦听发现协议详解RFC2710_第2页
组播侦听发现协议详解RFC2710_第3页
组播侦听发现协议详解RFC2710_第4页
组播侦听发现协议详解RFC2710_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、中国地质大学江城学院组播侦听发现(MLDvl)协议详M_RFC2710学 部机械与电子信息学部班级11计网本1学号2320110102姓 名 王青指导教师辛 玲2013年11月16日目录Table of Contents TOC o 1-5 h z HYPERLINK l bookmark29 o Current Document 1 MLDvl简介3 HYPERLINK l bookmark32 o Current Document 2消息格式4 HYPERLINK l bookmark38 o Current Document 代码9ode) 4 HYPERLINK l bookmark4

2、1 o Current Document 校验和(Checksum) 4 HYPERLINK l bookmark44 o Current Document 最大响应延迟(MaximumResponse Delay) 5 HYPERLINK l bookmark48 o Current Document 保留(Reserved) 5 HYPERLINK l bookmark52 o Current Document 组播地址(Multicast Address) 5 HYPERLINK l bookmark56 o Current Document 其他区域(Other fields) 5 H

3、YPERLINK l bookmark60 o Current Document 3协议描述5 HYPERLINK l bookmark66 o Current Document 4节点状态转换图7 HYPERLINK l bookmark122 o Current Document 5路由器状态转换图9 HYPERLINK l bookmark218 o Current Document 6定时器及其缺省值列表13 HYPERLINK l bookmark221 o Current Document 健壮性变量(Robustness Variable) 13 HYPERLINK l book

4、mark225 o Current Document 查询间隔(Query Interval) 13 HYPERLINK l bookmark229 o Current Document 查询响应间隔(Query Response Interval) 13 HYPERLINK l bookmark233 o Current Document 组播侦听者间隔(Multicast Listener Interval) 14 HYPERLINK l bookmark237 o Current Document 其他查询器存在间隔(Other Querier Present Interval) 14

5、HYPERLINK l bookmark241 o Current Document 启动查询间隔(Startup Query Interval) 14 HYPERLINK l bookmark245 o Current Document 启动查询次数(Startup Query Count) 14 HYPERLINK l bookmark249 o Current Document 最后侦听者查询间隔(Last Listener Query Interval) 14 HYPERLINK l bookmark253 o Current Document 最后侦听者查询次数(Last Liste

6、ner Query Count) 14 HYPERLINK l bookmark256 o Current Document 主动报告间隔(Unsolicited Report Interval) 14 HYPERLINK l bookmark259 o Current Document 7消息目的地址14文档标题关键词Key words: IPv6、MLD、IGMPv2本文档介绍了1 Pv6路由器所使用的一种协议,用以发现在其直连网络上的组播侦听者 (即希望接收组播数据的节点)的存在,并且能明确发现这些邻居节点所感兴趣的组播地址。 这个协议就是组播侦听发现(MLD), MLD v1源于IPv

7、4的IGMPv2。二者之间一个比较重 要的区别是:MLD使用ICMPv6(IP协议号58)消息类型,不同于IGMP(IP协议号2)消息 类型。缩略语清单 List of abbreviations:Abbreviations缩略语Full spelling英文全名Chinese explanation 中文解释IPv6Internet Protocol version 6IP协议第6版MLDvlMulticast Listener Discovery version 1组播侦听发现版本1IGMPv2Internet GroupManagementProtocol, Version 2互联网组管

8、理协议版本21 MLDvl简介MLD的目的是使能每个I Pv6路由器发现在其直连网络上的组播侦听者(即希望接收组 播数据的节点)的存在,并且能明确发现这些邻居节点所感兴趣的组播地址。然后提供这些 消息给路由器所使用的组播路由协议,以确保组播数据转发至存在接收者的所有链接。MLD是非对称协议,明确了组播侦听者与路由器的不同行为。对路由器本身正在侦听 的组播地址来说,路由器扮演协议的两种角色,包括对自己的消息作出回应。如果路由器有不止一个接口在同一网络上,它只需要在其中一个接口上运行此协议。另 一方面,对侦听者来说,则必须在所有接口运行此协议以便应用中或上层协议从接口接收所 需要的组播数据。2消息

9、格式MLD是ICMPv6的一个子协议,也就是说,MLD消息类型是一系列ICMPv6消息的子系 列,在I Pv6报文中MLD消息以置下一报头值58作识别。本文档描述的所WMLD消息发送时 使用IPv6本地链路源地址,跳数限制值为1,并且在逐跳选项头中存在IPv6路由器告警选项 (RTR-ALERT)(路由器要鉴别其本身不感兴趣的组播地址的MLD消息,必须使用路由 器告警选项)。MLD消息的格式如图1下:0123+ - + -Type| Maximum Response Delay01234567890123456789012345678981Checksum|+-+-+-+-+-+-+-+-+-

10、+-+-+Reserued|4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4-4- +Code |Multicast Address图1类型(Type )MLD消息共有三种:组播侦听查询(类型值= 130)可分为两种子类型:普遍查询:用于获得在所连网络上具有侦听者的组播地址。特定组播地址查询:用于获得在所连网络上对一特定组播地址是否存在侦听者。组播侦听报告(类型值= 131)组播侦听离开(Multicast Listener Done)(类型值= 132)在本文档的剩余部分中,以上消息类型分别简称为“查询(Query)”、“报告(Report)”、 “离开(Done)”。2.

11、1 代码(Code)发送时设置为1;接收时忽略。2.2 校验和(Checksum)标准的ICMPv6校验和,覆盖所有MLD消息以及I Pv6首部区域中的伪首部。最大响应延迟(Maximum Response Delay)最大响应延迟值只在查询报文消息中有意义,它指定了发送响应报文的最大允许时间延 迟,单位为毫秒。在其他报文消息中,发送时设置为零,接收时忽略。改变其值大小可以调整离开潜伏期(leave latency)(即从链路上最后一个节点停止侦 听某一特定组播地址开始,到路由协议发现不存在该地址的侦听者为止的时间)。它也可以 用来调整一个链路上MLD协议报文流量的大量发送。保留(Reserv

12、ed)发送者设为零;接收者忽略。组播地址(Multicast Address)在查询报文中,当发送普遍查询时,组播地址值设为零;当发送特定组查询时,设为特 定的IPv6组播地址。在报告或离开报文中,组播地址值分别设为报文发送者要侦听或者停止 侦听的特定I Pv6组播地址。其他区域(Other fields)接收到的MLD报文长度是这样计算的:用I Pv6负载长度值减去位于I Pv6首部与MLD报 文之间的任何存在的IPv6扩展头的长度值。如果此长度值大于24字节,表明还有超出上面所 描述的区域存在,可能属于将来用来向后兼容的MLD版本。在本文档所描述MLD版本的实 现不允许发送长度超过24字节

13、的MLD报文,在接收MLD报文时,必须忽略任何超过前24字 节的报文部分。在所有情况中,MLD校验和的计算必须包含所有的MLD消息,而不仅仅是 前24字节。3协议描述本文档中,定时器的缺省值将在后面描述,定时器与计数器的名字出现在方括号中。路由器使用MLD学习在其每个相连链路上有侦听者的组播地址。每个路由器保存着一 系列在每个相连链路上的具有侦听者的组播地址以及与组播地址相联系的定时器。注意:路 由器需要知道的仅仅是在某一相连链路上某个组播地址存在侦听者;它不需要了解侦听者的 标识(如单播地址)或者存在多少侦听者。对每一个相连链路,路由器选择这个链接上的一个本地链路单播地址,用作在这个链路 上

14、发送的MLD报文的I Pv6源地址。对路由器上每一个运行MLD协议的接口,路由器必须配置此接口侦听所有IPv6组播产 生的链路层组播地址。例如:一个以太网连接的路由器必须设置它的以太网地址过滤接收所 有以3333IPv6-ETHER 开始的以太网组播地址;如果以太网接口不支持组播范围地址的过 滤,那么它必须配置接收所有以太网组播地址,以满WLD的需要。对于每一个相连的链路,路由器可以充当两种角色的一个:查询器或非查询器。每一个 链路上通常只有一个查询器。在每一个相连链路上,路由器都以查询器的角色开始。如果一 个路由器在某个链路上收到查询消息,并且查询消息的IPv6源地址小于此链路上选择的地 址

15、,那么在这个链路上,路由器就成为非查询器。如果在【其他查询器存在间隔(Other QuerierPresent Interval】的时间期间,非查询器在这个链路上没有收到更小地址的路由器查 询,那么在这个链路上路由器又恢复为查询器角色。在某个链路上,查询器周期性【查询间隔(Query Interval)】发送普遍查询,以主动请 求在此链路上所有感兴趣的组播地址的报告。在启动时,一个路由器应该在所有相连链路上 发送【启动查询计数(Startup Query Count)普遍查询,时间间隔为【启动查询间隔(StartupQuery Interval),以便快速可靠的发现在这些链路上组播侦听者的存在

16、。普遍查询发送至链路范围所有节点组播地址(FF02:1),组播地址域值为零,最大响 应延迟置为【查询响应间隔(Query Response Interval)】。当一个节点收到一个普遍查询时,它为在这个收到查询的接口所要侦听的每个组播地 址,设置一个延迟定时器,链路范围所有节点组播地址与范围0 (保留)或者1(本地节点) 的组播地址除外。每一个定时器设为不同的随机值,选择范围是【0,最大响应延迟(MaximumResponse Delay)】,其中,最大响应延迟为在查询报文中指定。如果对应某一 组播地址的定时器正在运行,那么当所要求的最大响应延迟小于正在运行的定时器的剩余值 时,此定时器才会重

17、置为一个新的随机值。如果查询报文设定最大响应延迟值为零,那么每 一个定时器的值也设为零,定时器超时所要进行的动作就会立即执行。当一个节点收到一个特定组查询,如果在收到查询的接口上它正在侦听所查询的组播地 址,那么此节点就会为此组播地址的定时器设为一个随机值,选择范围是【0,最大响应延 迟(Maximum Response Delay)】,就像上面描述的那样。如果此组播地址的定时器正在运 行,那么当所要求的最大响应延迟小于正在运行的定时器的剩余值时,此定时器才会重置为 一个新的随机值。如果查询报文设定最大响应延迟值为零,那么此定时器的值也设为零,定 时器超时所要进行的动作就会立即执行。如果一个节

18、点在某一特定接口的对应一特定组播地址的定时器超时,节点通过此接口发 送一个报告;在报告报文的IPv6目的地址域与MLD组播地址域中,都携带要报告的组播地 址。IPv6的调数限制为1用来防止报文传输到超越所报告接口连接的链路的范围。当一个节点从一个接口收到另一个节点的对应某一组播地址的报告时,如果此时此节点在同 样的接口上也在运行对应相同组播地址的定时器,那么它就会停止此定时器,不会发送对应 这个组播地址的报告,这样可以防止在一个链路上收到多份多份相同的报告。如果一个路由器从某一链路上收到一个报告,如果报告的组播地址不在路由器的此链路 具有侦听者的组播地址列表中,那么报告地址就会加入这个列表,对

19、应组播地址的定时器设 置为【Multicast Listener Interval】。如果报告的组播地址已经在路由器的此链路具有侦听者 的组播地址列表中,那么对应此组播地址的定时器重置为【Multicast Listener Interval。如 果某一路由器上对应某一组播地址的定时器超时,就会认为在此链路上不再有此组播地址的 侦听者存在,此组播地址就会从列表中删除。当一个节点在某一接口上启动侦听某一组播地址时,它应该在此接口上立即主动发送此 组播地址的报告,以免它是此链路上的第一个侦听者。为了防备初始报告可能丢失或损坏, 建议重复发送一至两次,每次时间间隔为【Unsolicited Repo

20、rt Intervalo当一个节点在某一接口上停止侦听某一组播地址时,它应该发送离开消息给链路范围所 有路由器组播地址(FF02:2),并且在其组播地址域携带要停止侦听的地址。如果一个节点 在发送报告消息前收到另外一个同样组播组的报告消息,它就会受到抑制而可以不发送此报 告。如果为优化起见,报告发送必须不受抑制,但缺省是受到抑制的。当处于查询器状态的路由器从链路上收到离开消息时,如果要离开的组播报文地址在此 链路上查询器的侦听者地址列表中,查询器就会发送【Last Listener Query Count】次数组播 地址特定查询,每次间隔时间【Last Listener Query Inter

21、val】。组播地址特定查询一般将【LastListener Query Interval】设定为【Maximum Response Delay,如果最后查询的响应延 迟时间过后,没有此组播地址的报告在此链路上发送给查询器,因此此地址就从侦听者列表 中删除,并且此地址的消失要通知给组播路由组件。这个过程会持续直到完成(也是就直到 收到一个报告或者最后特定组查询没有响应),在此过程中此链路上会忽略从查询器到非查 询器的转变。处于非查询器状态的路由器必须忽略离开消息。当非查询器收到一个组播特定查询时,如果待查询组播地址定时器值大于【LastListenerQuery Count x Maximum

22、Response Delay,那么它就将此定时器值置为后者的 值。4节点状态转换图节点的行为可以下面的状态转换图更加正式地描述。一个节点可以处于以下三种状态之一:Non-Listener状态当在此接口上节点不在侦听组播地址(也就是没有上层协议或程序要求接收此组播地址 的报文)。这是所有接口对所有组播地址的初始状态。节点不需要保存此状态。Delaying Listener状态当节点在此接口上准备侦听此组播地址,同时运行此组播地址的报告延迟定时器。Idle Listener状态当节点在此接口上侦听此组播地址,不在运行此组播地址的报告延迟定时器。有五个重要事件能触发MLD状态的变化:start li

23、stening发生在节点开始侦听接口上的组播地址时,它只发生在Non-Listener状态。stop listening发生在节点停止侦听接口上的组播地址时,它只发生在Delaying Listener与Idle Listener 状态。query received发生在节点接收到一个有效的普遍查询或者一个有效的特定组播地址查询。查询报文要 想有效,必须来自本地链路IPv6源地址,长度至少24字节,并且有一个正确的MLD校验和。 MLD消息中的组播地址域内容必须是零(普遍查询)或者一个有效的组播地址(组播地址 特定查询)。普遍查询应用于收到查询的接口上的所有组播地址。特定组播地址查询应用于 收

24、到查询的接口上单个组播地址。处于Non-Listener状态的节点忽略查询。一 report received发生在节点收到一个有效的MLD报告消息。报告报文要想有效,必须来自本地链路IPv6 源地址,长度至少24字节,并且有一个正确的MLD校验和。在收到报文的接口上,报告报 文只适用于报文中组播地址域中标识的组播地址。在Non-Listener或者Idle Listener状态, 报告报文被忽略。timer expired发生在接口上某组播地址的报告延迟定时器超时时,它只发生在Delaying Listener状态。 所有其他事件,例如接收到无效的MLD消息或者非查询或报告报文的消息类型,在

25、所有状 态下都被忽略。基于以上事件,有七种可能的行为: send report向接口上的组发送报告,报告消息发送给被报告的组send done向接口上的组发送离开报文,如果表明我们是最后发送报告节点的标志被清除,则不会 发送组离开报文。一set flag若节点是此组最后一个发送报告的节点,则设置标志。clear flag若节点不是此组最后一个发送报告的节点,则清除标志。start timer接口上的组按从【0, Maximum Response Delay中随机选出的延迟时间值启动一个定时 器,其中Maximum Response Delay在查询消息中指定。若这是一个主动的组报告消息,则定

26、时器将被置为一个范围在【0, Unsolicited Report Interval之间随机的延迟值。reset timer重置组定时器,将定时器置为一个由start time r中指定的,在【0, MaximumResponseDelay】范围内的统一值stop timer接口上的组停止定时器。I query receiued | (reset timer if | | Max Resp Delay |I 1j Non-Listener |l -111:l11111111111111iiL11i1:l1Ilisteningj start listening I| (stop timer,|(

27、send report,| send done if|i set Flag,| Flag set;i start timer)|i1istop listening(send dne IFFlag set)11l - -111111:l1111l1Listener|iii report receiued |1i11i(sttiner,|1111clear Flag):11111 - - - -11Itimer expired (send report, set flag)链路范围所有节点地址(FF02:1)被作为特殊情况来处理。在每个接口上主机初启时 时处于状态,且不会变至其他状态,也不会为该组

28、地址发送报告或离开消息。MLD消息从不会发送给范围0 (保留)或1(本地节点)的组播地址。MLD消息发送给范围2(本地链路)的组播地址,包括请求节点组播地址ADDRARCH, 但链路范围所有节点地址(FF02:1)除外。5路由器状态转换图路由器的行为通过下面的状态转换图(图3)更加正式的表示出来。路由器可能处于以下两种状态之一:Querier当此路由器在此链路上被指定为发送MLD查询报文。Non-Querier当此链路上其他路由器被指定为发送MLD查询报文。下面的三种事件能触发路由器状态发生变化:query timer expired发生在所设置的查询定时器超时,只有对处于查询器状态的路由器才

29、有意义。query received from a router with a lower IP address发生在收到从相同链路上具有更小I Pv6源地址的路由器发送的有效查询。查询消息要想 有效,必须来自本地链路IPv6源地址,长度至少24字节,并且有一个正确的MLD校验和。other querier present timer expired发生在链路上用来记录具有更小IP地址查询器的定时器超时。只有对处于非查询器状态 的路由器才有意义。基于以上事件,有三种可能的行为:start general query timer在相连的链路上启动普遍查询定时器。start other queri

30、er present timer在相连的链路上每隔【Other Querier Present Interval】时间启动其他查询器存在定时器。send general query在所连接的链路上发送普遍查询,普遍查询向链路范围所有节点地址(FF02:1)发送,且最大响应延迟间隔为【Query Response Interval0| Initial | (send gen. q.,| start initial gen. q.|timer)| gen. query timer | | expired | | (send general query, | | start gen. q. time

31、r) |Querierquery receiued From a router with a lower IP address (start other querierpresent timer)| query receiued from a| router with a lower IP| address| (start other querier| present timer)other querier present timer expired(send gen. query, start gen. q. timer)在所有连接的链路上路由器开始处于初始状态,并迅速转换为查询器状态。另外

32、,为了跟踪哪些组有侦听者,在任何单一相连链路上,对应于任意一个Pv6组播地 址,路由器可以处于以下三种状态之一: No Listeners Present state当链路上不存在发送报告侦听组播地址的节点时。这是路由器上对应所有组播地址的初 始状态。路由器上不需要特意保存。Listeners Present state链路上有节点发送报告侦听此组播地址。Checking Listeners state当路由器收到一个离开消息但未收到此组播地址的报告。有五种重要事件将触发路由器状态变化:report received发生在当路由器从此链路上收到某一组播地址的报告。报告消息要想有效,必须来自本

33、地链路I Pv6源地址,长度至少24字节,并且有一个正确的MLD校验和。done received发生在当路由器从此链路上收到某一组播地址的离开消息。离开消息要想有效,必须来 自本地链路I Pv6源地址,长度至少24字节,并且有一个正确的MLD校验和。此事件只有当 路由器是查询器且处于Listerners Present状态下才有意义。multicast-address-specific query received发生在当路由器从此链路上收到特定组播地址查询消息。查询消息要想有效,必须来自 本地链路I Pv6源地址,长度至少24字节,并且有一个正确的MLD校验和。此事件只有当路 由器是非查询

34、器且处于Listerners Present状态下才有意义。timer expired发生在当为组播地址所设置的定时器超时,此事件只有当路由器处于Listerners Present 或Checking Listeners状态下才有意义。retransmit timer expired发生在为重传特定组播地址查询而设置的定时器超时时。此事件只有当路由器处于 Checking Listeners状态下才有意义。基于以上的事件,有七种可能的行为:start timer在此链路上上启动某组播地址的定时器。如果定时器已在运行,则重置定时器的初始值 为【Multicast Listener Interv

35、al】。start timer*在此链路上上启动某组播地址的定时器。如果此路由器为查询器,则置定时器值为当前 定时器值与【Last Listener Query Interval *【Last Listener Query Count二者中的小者。如 果路由器为非查询器,则置定时器值为查询消息中的【Maximum Response Delay *【LastListener Query Count】。start retransmit timer在此链路上为此组播地址启动重传定时器,时间间隔为【Last Listener Query Interval】。clear retransmit timer

36、清除此链路上某组播地址的重传定时器。send multicast-address-specific query在此链路上为某组播地址发送特定组播地址查询。特定组播地址查询发送给待查询的组 播地址,且有【Last Listener Query Interval间隔的最大响应延迟时间。notify routing +通知组播路由协议在此链路上有此组播地址的侦听者存在。notify routing -通知组播路由协议在此链路上不再有此组播地址的侦听者存在。以下状态图应用于每个链路上的每个组播组。共有两个状态图,一个对应处于查询器状 态的路由器,另一个对应处于非查询器状态的路由器。查询器与非查询器状态

37、之间的转换被 特殊处理。当查询器/非查询器状态转换发生时,在此链路上处于No Listeners Present orListeners Present所有组播组会相应改变状态状态转换图。然而,处于Checking Listeners 状态的组播组会保持原有的状态转换图直到Checking Listeners状态离开。例如:一个路由 器作为一个查询器启动,收到一个组播组离开消息同时从较低地址的路由器收到一个查询消 息(将导致查询器向非查询器状态改变)。它会继续发送此组播组的特定查询报文直到它收 到此组报告或者它的定时器超时,这时它才会开始为此组播组执行非查询器的操作。处于查询器状态的路由器状态

38、转换图,见图4:|timer expiredtimer expired|(notify routing -,(notify routing -)| No Listeners |clear rxmt tmr)| Present | report receiued| | (notify routing +, | | start timer)| | rexmt timer | | | expired | | | (send m-a-s | I I query, |_| st rxmt | tmr) |111 11111111111| report receiued|1111| (start time

39、r,|1111| clear rxmt tmr) |11|Listeners|l111111111| report receiued | (start timer) |处于非查询器状态的路由器状态转换图类似,见图5,但是非查询器不发送任何消息,只是 被接收到的消息驱动。timer expired|timer expired(notify routing -)| No Listeners |(notify routing -)| Present | report receiued | | (notify routing +,| | start timer) |111 11111| report

40、receiued |1111| (start timer)|11|Listeners|1111111111| report receiued | (start timer) |6定时器及其缺省值列表大部分的定时器都是可以配置的。如果使用了非缺省设置,它们在某一链路上的所有路 由器上必须一致。为了使公式表达清晰,使用了圆括号。健壮性变量(Robustness Variable)健壮性变量允许根据链路上预期报文丢失情况进行调整。如果预期报文丢失情况加重, 那么健壮性变量值也可以增加。MLD允许至多丢失(Robustness Variable - 1)报文而不受 影响。健壮性变量取值不可以为0、1。查

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论