正文之前
所谓的沉迷美剧,我来揭秘一下到底是哪一个美剧。《泰坦》~
正文
Multicasting-组播
- IP组播(IP multicast)又称为IP多播,特点:
- IP组播是介于单播和广播之间的一种分组传送形式,它既不指定明确的接收者, 也不是将数据分发给网络上的所有主机。
- 发送者不关心接收者所处的位置,只要将数据发送到约定的目的地址,剩下的工 作就交给网络去完成。
- 这样做的好处在于,发送者只产生一份数据,而不用为每个接收者分别复制一份 ,而且发送者不必维护接收者的信息。
- 网络中的路由器设备必须收集接收者的信息,并按照正确的路径实现组播报文的 转发和复制。
-
Multicast
- 在 IP 网上一对多的传输
- 支持视频会议,
- e-learning, 培训等
-
组播的三个组成部分
- 1.组播地址(能被组播识别的地址集)
- 2.组成员机制(主机加入和退出组的机制)
- 3.组播路由协议(路由器有效传送组播到各个网络的组成员,且不会过度消耗网络资源的路由协议)
- 从数据格式来看,组播与单播使用共同的IP报文结构和上层封装,只是目的 地址使用一段特殊的地址空间。这段地址在IPv4中被称为D类地址空间: 224.0.0.0-239.255.255.255。
-
这段地址虽然看上去是连续地址,但不能聚合为网段地址,而是每个IP独立 分配和使用。
- 特殊的组播地址
- 224.0.0.1 所有组播主机和路由器
- 224.0.0.2 所有组播路由器
- 224.0.0.4 DRMRP 路由器
- 224.0.0.5 所有 OSPF 的路由器
- 224.0.0.6 OSPF 指派路由器
- 224.0.0.9 RPIv2 路由器
- 224.0.0.10 EIGRP 路由器
- 224.0.0.13 PIM 路由器
- 224.0.0.22 IGMPv3
- 224.0.0.25 RGMP
- 224.0.1.1 NTP 网络时间协议
组成员机制
-
要将组播数据准确发送给组成员,必须先确定哪些网络的哪些主机是组成员,只有先确定了成员的位置,才能正确转发组播。
-
当组成员不再需要接收组播的时候,就应该停止向成员发送组播,要确 定组成员不再需要接收组播,就必须在成员退出时明确通告发送者。
-
要确定组成员,有两种方式:查询和报告
- 查询,就是一台路由器向网络中发出查询消息,查询是否要主机要加入组 ,如果有主机应答,那么路由器就可以请求上游路由器把组播流量前转到这个子网中,如果没有主机应答,则请求上游路由器停止向其前转组播流量。
- 报告,主机也可以不必等待路由器的查询,可以主动向路由器请求加入某个组,退出时也要向路由器发送退出消息,让路由器停止向其转发组播流量。
-
<u>IGMP (Internet Group Management Protocol)因特网组管理协议, IGMP运行在路由器和主机之间</u>
- IGMP实现的功能是双向的:一方面,主机通过IGMP协议通知本地路由器希望加入并接收某个特定组播组的信息;另一方面,路由器通过IGMP协议周期性地查询局域网内某个已知组 的成员是否处于活动状态(即该网段是否仍有属于某个组播组的成员),实现对所连网络 组成员关系的收集与维护。
- 通过上述IGMP机制,在组播路由器里建立起一张表,其中包含路由器的各个接口以及在接 口所对应的子网上都有哪些组的成员。当路由器接收到某个组的数据报文后,只向那些有 该组成员的接口上转发数据报文。
- 至于数据报文在路由器之间如何转发则由组播路由协议决定,IGMP协议并不负责。
-
当组播发送者和组成员在不同网络时,需要路由器为组播数据提供转发 ,那么路由器就必须确认自己直连的网络中是否存在组成员,可以使用 查询和报告来发现组成员,IGMP用来完成这样的工作。
- 加入/离开组播过程:
- 加入过程: 当主机加入一个组播组时,不是等待路由器发出成员查询报文时再响应 加入,而是立即主动地向一个该组播地址发出一个成员报告(类型为0x2)表示加入 ,这样在该组内没有其它组成员的情况下缩短了主机加入该组播组的延迟。
## 组播路由协议
组播协议总体结构:
- 路由器、主机之间:IGMP
- 路由器、路由器之间:PIM
- 路由器、交换机之间:CGMP
-
PIM协议
-
如果要让路由器也能像转发单播数据一样,将组播根据路由表来精确地转发到目的地,那就需要让路由器拥有像单播路由表一样的组播路由表。
-
要让路由器生成一张功能完全的组播路由表,就需要在路由器之间运行一种协议,这种协议可以让组播源和目的之间的路由表生成单播表一样地生成组播表,最后路由器根据这张组播路由表来完成组播的转发。
-
这个协议就是PIM(Protocol Independent Multicast)。
-
-
PIM基本概念:组播树
- 组播发送者到接收者之间的转发线路,被称为组播转发树。
- 组播发送者就好比是组播树的树根,组播总是从根发向接收者。从发送者到接收者之间的路由器,都是在组播树上的,因为这些路由器在中间提供组播转发。
- 要完成从发送者到接收者之间的组播转发,组播树上的路由器都应该记 住组播的出口,每台中间路由器都记住出口之后,最终便形成了组播树,而要记住组播的出口信息,这就是组播路由表的工作
-
PIM基本概念:组播反向路径转发
- 因为组播经常会有多个接收者分布在不同的网络,所以当路由器在转发 组播时,也通常需要将同一份数据从多个接口发出去
- 由此可以看出,转发组播的路由器,必须拥有发现环路、避免环路的能 力。
- 所有的组播路由器就必须只将数据往接收者的方向转发,而绝不能往发 送者的方向转发
- 向发送者转发称为RPF(Reverse Path Forwarding),组播路由器在收 到组播数据后,都要对数据进行RPF检测,组播路由表记住接收者的接 口,就能正常将数据发给组成员,而记住了发送者的接口后,就可以避 免路由器将数据往回发而产生路由环路了。
- 组播路由器上朝发送者方向的接口被称为RPF接口,只有从RPF接口发来的数据才能被转发,从其它接口过来的数据被认为是无效的。
- PIM基本概念:PIM-Dense Mode(密集模式 )和PIM-Sparse Mode(稀疏模式)
- PIM要为路由器学习组播路由表从而建 立组播树,有两种不同的方式,这两种 不同方式在PIM中分两种模式来运行, 为PIM-DM(密集模式)和PIM-SM(稀疏 模式)
- PIM-DM模式中,组播源会向所有PIM邻 居发出查询,查询数据包中包含组的地 址,下一跳PIM邻居还会继续向它的邻 居发出查询数据包,这些查询数据包会 在所有PIM邻居之间传递。
- 如果查询数据包发向一个连接了组成员 的网络,这时路由器收到组成员的报告 之后,就会向自己上一跳邻居(RPF接 口方向的邻居)发送加入组的消息,以 宣布自己要接收组播,从而将组播转发 到组成员
-
PIM基本概念:PIM-DM(密集模式)
-
如果网络中有一个组,地址为:224.1.1.1,发送者为100.1.1.1,那么就 应该记录路由为(100.1.1.1,224.1.1.1),还要记录的就是组播的出口 ,这些信息构成组播路由表。
-
路由器收到的224.1.1.1组播就会指定出口发出去。PIM-DM模式中这样记 录组播路由的方式被称为(S,G),其中S就是组播源地址,G就是组地址, 而出口则会被标为forwarding。
-
如果只有一个组224.1.1.1,而发送者除了100.1.1.1之外,还有 100.1.1.2和100.1.1.3,那么依照(S,G)的记录方式,就需要同时记录 (100.1.1.1,224.1.1.1),(100.1.1.2,224.1.1.1),(100.1.1.3 ,224.1.1.1),也就是说(S,G)的路由记录方式,会因为组源地址的增加 而增加记录条目。
-
对于不需要接收组播的PIM接口,PIM-DM模式照样会将其记录在路由表中 ,但被标为pruning。
-
在PIM-DM模式下,组播发送源将数据发给组播路由器,然后路由器依照组 播路由表朝着接收者的方向转发,这样的路径,是依靠单播路由表计算出 来的最短路径,也就是说从发送者到接收者之间的路径,总是最短的,所 以PIM-DM模式建立起来的组播树,如(S,G)记录的组播树被称为最短路 径树shortest-path tree (SPT),因为SPT中记录个每个组播发送者的源 地址,故又被称为源树。
-
-
PIM基本概念:PIM-SM(稀疏模式)
- PIM-SM模式的工作过程和PIM-DM模式是不同的,在建立组播树时,PIM-SM 并不会让路由器发送查询数据包去查询组成员,而组成员的发现是靠组成 员自己主动向路由器发送报告。
- 当一台路由器从接口上收到组成员的报告之后,就会向自己的上一跳邻居 发送加入消息,以通告自己需要接收组播,如果上一跳邻居还不是组播发 送者,那么上一跳邻居会继续再向上一跳邻居发送加入消息,直到组播源 收到加入消息为止。
- 通过这样的方式,就可以建立组播源到组成员之间的组播树。
- PIM-SM模式和PIM-DM模式除了在发现组成员的方式上不同之外,记录路由 表的方式也不一样
- 例如网络中有一个组,地址为:224.1.1.1,发送者为100.1.1.1,PIM-SM 模式路由器记录为(,224.1.1.1),可以看出,PIM-SM模式并不关心组 播的源地址,而统统将源地址使用星号来表示
- 这样一来,PIM-SM为一个组只记录一个条目,而不管这个组有多少个发送 者。这样的记录方式称为(,G) ,其中就是组播源地址,G就是组地址 。如果有10个组,每个组有5个发送者,使用(S,G)的记录方式,需要 记录10×5=50条,而使用(*,G)的记录方式,则只需要10条,所以使用 PIM-SM模式,可以大大缩减组播路由表的空间,从而大大节省系统资源。
- PIM-SM RP(Rendezvous Point)
-
在PIM-SM模式中,由于记录组播信息 采用(*,G)的方式,而并不关心组播 源地址,因此造成路由器不知道组播 发送者的IP地址是什么,也就无法完 成RPF反向路径检测。
-
在这种情况下,PIM-SM在网络中选出 一个组播会聚点,即Rendezvous Point (RP)
-
RP就是组播网络的核心,发送者统一 将组播数据发送到RP,然后RP再将数 据发到接收者,也就是说接收者收到 的数据,都是由RP转发过来的。
-
路由器也就认为RP的地址,就是组播 源的IP地址。
-
因为RP在PIM-SM中被当作核心,而(* ,G)的记录方式中并不知道组播源的 地址,大家都会认为RP就是组播源
-
最后PIM-SM中的组播树,即(*,G)形 式的树被称为共享树(RPT)。
-
-
PIM DR(在PIM-DM和PIM-SM模式下都会选举)
- 因为IGMP V1不选举IGMP查询器,如果有多台路由器连接同一 个多路访问网段(以太网)时,就必须选举PIM Designated Router(DR)来避免重复查询
- 这个DR的选举,是由PIM协议进行的,选择IP地址高的为DR。 PIM DR路由器在IGMP v1中充当IGMP查询器的功能,来向主机 发送IGMP查询
- 在PIM-SM中,组播源没有机制用来宣 告自己的存在,又因为PIM路由器都认 为RP才是组播源,而当直接的组播源 向RP发送组播时,会导致某些路由器 RPF检测失败。
- 例如图中R2只会接收从接口F0/1发进 来的组播,从其它接口发进来的,都 会被认为是环路而被丢弃。因此在真 正的源12.1.1.1将组播从R2的F0/0发 进来时,R2会因为RPF检测失败,从而 丢弃所有的组播数据,这样一来,组 播也就无法通信了。
- 因此在PIM网络中,真正的源需要向RP 发送注册消息,以宣告自己的存在, 而发送注册消息在多路访问的网络中 则是由DR来代为完成的。
- 真正的源向RP发出第一个组播包时, DR将此包封装在单播中发向RP,这称 为注册,发送的注册消息会从DR到RP 之间建立一条源树,也就是(S,G) 的记录,这样,在源到RP之间创建的 源树就可以帮助避免RPF检测失败
- 当RP和真正的源之间创建(S,G)条 目之后,就会通知DR停止以单播发送 ,从而转回发送真正的组播。
- 误认为RP是源而导致RPF检测失败的情 况,只有在RP到源这段上游网络中的 路由器才会存在,而RP到组成员的这 段网络中是不会出现这种情况的。
- 选择DR的数据包为30秒一次,105秒保 持时间,如果过了保持时间没有收到 DR的数据包,则会重新选举IP地址最 高的为DR
-
PIM-SM 前转器(Forwarder)
- 选PIM前转器的规则是,比较哪台路由 器的路由表中,到组播源的路由的AD( Administrative Distance)值最小, 如果AD值相同(如使用同一种路由协议 ),再比较谁到源的metric值最小,如 果metric值还相同,则选择IP地址大的 。
- 在图中,如果R3和R4到组播源R1的路由 条目中是使用同一个路由协议学到的, 则比较metric值,如果metric值相同, 则比较R3和R4的IP地址,这个IP地址是 同网段相互建PIM邻居所使用的IP地址 ,因为34.1.1.4比34.1.1.3要大,所以 前转器为R4,因此R2会选择从R4到达组 成员,并且把到R3的出口剪除。
正文之后
这后面几节确实没前面做的用心了。。。没辙啊,当时都要考试了,怎么可能一点点的把后面的也做出来啊。。昨晚我都没时间刷题了。。
网友评论