一:为什么我们需要组播?

组播即点到多点的传送,在传统以太网中使用单播也能够实现组播的效果,只是组播优化了这个过程。如下图的拓扑:


sourceA---router1----router2---host2

                     |_________router3---host3


假设sourceA是一个视频源,host2和host3都是视频的接收者,sourceA使用单播进行转发流量的时候,实际数据是同一份,却需要根据host2,host3目的IP地址不同,需要路由转发2次。如果host的数目不断上升至成千上万。那么此时使用单播就会造成:

1:router1需要查路由表成千上万次;

2:sourceA到router1的这条链路带宽资源紧张;

3:由于数据帧是从sourceA一个个指定目的IP发出的,数据处理需要时间,于是host2和host10000收到数据的时间间隔很大,如果是实时的数据,则对于host10000来说不可忍受


使用了组播之后,sourceA只需要发送一个数据包,router1进行多帧复制同时发送给router2,router3.则可避免以上问题。


总结来说:我们什么时候会用到组播?

1:当目的地址未知时,我们使用组播

2:当多个目的地址需要同一个信息流时


二:组播的基本概念

组播基于UDP,是不可靠传输协议,无拥塞避免机制。


组播拓扑:

sourceA---router1----router2-------------router3

                                          |                         |

                                          |____router4_____|

                                                       |

                                                    host1

                                          


如上图,组播的学习分为三块:

1、最后一跳路由器(last hop)到接受者,即router4到host1这一段,涉及到IGMP协议

2、源到第一条路由器(first hop),即sourceA到router1这一段,涉及到pim协议

3、组播树,即router1、router2.。。router4这一段


几个组播地址:

224.0.0.2:链路上所有router都会监听的地址

224.0.0.0~~224.0.0.255 本地链路保留地址,仅在本地链路生效,TTL=1

224.0.1.0~~238.255.255.255 全局可用,又分为以下两块

    232.0.0.0~~232.255.255.255 特定源组播

    233.0.0.0~~233.255.255.255 AS相关,分配AS的时候每个AS会关联一些组播地址,如AS号为54321换成16进制为D431,D4换成十进制为212;31换成十进制为49,则此AS的组播地址为233.212.49.0~~255

239.0.0.0~~239.255.255.255  仅在AS内部生效,类似私有IP地址



组播mac地址:根据组播IP地址计算出组播mac地址


01-00-5E-7F-00-01

其中前25bit位固定。后23bit由组播IP地址后23bit决定,即只要IP地址后23bit一致,则组播mac地址一致