单播一对多通信场景:1.在单播(Unicast)通信中每一个数据包都有确切的IP地址。2.对于同一份数据,如果存在多个接收者,Server需发送和接收数目相同的单播数据包。3.当接受者增加到成百上千时,将极大家中Server创建相同数据和发送多份相同数据拷贝后所产生的消耗,网络中的设备性能及链路带宽将会面临一定程度的浪费。广播一对多通信场景:1.广播(Broadcast)数据包被限制在广播域中。2.一旦有设备发送广播数据,则广播域内所有设备都会收到这个数据包,并且不得不耗费资源去处理,大量的广播数据包将消耗网络带宽及设备资源。3.在IPV6中,利用广播进行报文传输的这种方式被取消。组播一对多通信场景:1.组播(Multicast)非常适合一对多的通信模型,只有加入到特定组播组的成员,才会受到组播数据,当存在多个组播组成员时,源无需拷贝多个数据发送,仅需发送一份即可,组播网络设备(运行组播路由协议的网络设备)会根据实际需要转发或拷贝组播数据,实现按需拷贝,按需发送。2.数据流只发送给加入该组播组的接收者(组成员),而不需要该数据的设备将不会接收到该组播流量。3.相同的组播报文,在一段链路上仅有一份数据,大大提高了网络资源的利用率。组播的优势:1.提高效率:降低网络流量、减轻硬件负荷。2.优化性能:减少冗余流量、节省网络带宽、降低网络负载。3.分布式应用:是多点应用成为可能。组播的应用:1.组播使用于多接受者期望接受相同流量的场景。2.组播适用于接受者地址(或位置)位置的场景。3.多媒体直播(如IPTV)。4.培训、联合作业场景的通信。5.数据仓库、金融应用(股票)。6.其他“单到多”数据发布应用。组播的劣势:1.组播是基于UDP的,采用尽力而为的传输方式。2.没有拥塞避免机制。3.可能出现报文重复的现象。4.可能出现报文失序的现象。组播服务模型:1.组播源向特定组播组发送组播数据,它并不关心组成员所处的位置。2.组播路由器把数据拷贝并转发给需要该数据或存在组播接收者的网络分支。3.主机加入自己感兴趣的组播组,以便接收发往这些组播组的数据包。组播术语:组播源(Source):组播流量的发送者,例如多媒体播放器,组播源无需运行任何组播协议,只需简单的将组播数据发送出来即可。组播接收者(Receiver):也被称作组播组成员,是期望接收特定组播组流量的设备,例如运行多媒体直播客户端软件的PC。组播组(Multicast Group):一个使用组播IP地址标识的群组,例如224.1.1.1便是一个IPv4组播地址,该地址标识了一组接收者,组播源可以向这个地址发送组播数据,而需要该数据的设备组需加入组播组224.1.1.1,以便从组播网络中获得源发往该组播组的数据。组播路由器(Multicast Router):支持组播、运行组播协议的网络设备。实际上不仅仅路由器能够支持组播,交换机、防火墙等设备也能够支持组播(取决于设备型号),路由器仅仅是一个代表。第一跳路由器(First-Hop Router):直连Source的组播路由器。该路由器负责将Source发送出来的组播报文发送到组播网络中。最后一跳路由器(Last-Hop Router):直连组成员的组播路由器。该路由器负责将组播流量转发到直连网络(给接收者),也负责管理及维护直连网段中的组播组的成员关系。组播分发树:组播分发树(Multicast distribution tree),由组播路由协议构建,是组播流量的转发路径。组播IP地址:1.在IPV4地址空间中,D类地址(224.0.0.0/4)被用于组播。组播IP地址代表一个接收者的集合。2.IANA对D类地址做了进一步的定义,几种主要的组播地址如下表所示:组播MAC地址:组播IP地址和MAC地址的映射:1.组播MAC,第一个8位组的最后一位恒为1。2.单播MAC,第一个8位组的最后一位恒为0。3.组播IP地址有5位被丢弃,因此组播IP与MAC的对应关系是32:1。组播路由协议概述:1.单播数据包的转发,就是一个一对一的模型,路由器将IP数据包送到它的目的地,单播路由器并不关心数据包的源地址。2.组播数据时由组播源产生,发向一组接收者,组播路由器将数据包自源向组播接收者分发下去,一直到组播的接收者。--组播路由器怎么知道这些组播数据向何处分发?--哪些地方需要组播流量?--沿何处分发?--具体的分发路径?这个时候就需要在组播路由器上运行组播路由协议了。3.组播流量和单播流量不同,组播流量发往一组接收者,如果网络中有环路存在,那么情况要比单播环路严重,因此所有的组播路由器都需要实现知道组播源的位置,也必须把组播数据包自源(组播数据来的方向)向目标转发(组播接收者)。4.为了保证组播数据从上游发送到下游,每一个组播路由器都需要维护一个组播路由转发表项。5.单播路由协议确定去往某个目的地的最优(最短)路径,它不会关心数据的源;而组播路由协议必须去判断上游接口(距离组播源最近的接口)。组播路由协议的主要功能:1.在接收组播报文时,判断该报文是否在正确的接口上到达,从而确保组播数据转发无环。2.在组播中建立一棵组播分发树(组播流量转发的路径)。3.组播分发树体现在每一台组播路由器上便是(S,G)或(,G)的组播转发表项。组播路由表项:PIM路由表项即通过PIM协议建立的组播路由表项,PIM中存在两种路由表项:(S,G)或(,G)的路由表项,S代表组播源,G表示组播组,表示任意。1.(S,G)路由表项知道组播源S的位置,主要用于在PIM路由器上建立SPT,适用于PIM-DM和PIM-SM网络。2.(,G)路由表项由于只知道组播组G的存在,主要用于在PIM路由器上建立RPT,适用于PIM-SM网络和双向PIM网络。PIM路由器上可能存在两种路由表项,当收到源地址为S,组地址为G的组播报文,且通过RPF检查的情况下,按照如下规则转发:1.如果存在(S,G)路由表项,则由(S,G)路由表项指导报文转发。2.如果不存在(S,G)路由表项,只存在(,G)路由表项,则先依照(,G)路由表项创建(S,G)路由表项,再由(S,G)路由表项指导报文转发。组播分发树的分类:SPT(Shortest-Path Or Source Distribution Trees,最短路径树或源树)1.源树是以组播源为根的组播分发树。2.源树的分支形成了通过网络到达接收者所在路由器的分发树,因为源树使用最短的、从源其实贯穿网络到达组播接收者的路径,所以又叫做最短路径树。3.SPT同时适用于PIM-DM网络和PIM-SM网络。RPT(Rendezvous Point Tree,共享树)1.与源树使用组播源作为根不同,共享树使用RP(Rendezous Point)作为汇聚点。2.多个组播组可以共用一个RP,期望接收组播流量的路由器通过组播协议在自己和RP之间建立一条RPT的分支,组播流量首先需要从源发送到RP,然后再由RP沿RPT将组播流量发送到各个组播接收者。3.RPT适用于PIM-SM网络和双向PIM网络。RPF在组播网络中,如果组播流量出现转发环路,比起单播报文的转发环路的危害要大得多。路由器在转发一个组播报文时,出了会关注报文的目的地址,还会特别关心该报文的源地址。组播路由器通过一个被称为RPF(Reverse Path Forwarding,反向路径转发)的机制来实现组播数据转发的无环化。RPF机制确保组播数据从正确的接口接收到,只有通过RPF检查的组播数据包才能被路由器沿着组播树进行转发,如果数据包从错误的接口被收到,路由器将丢弃这些报文。所谓正确的接口,就是RPF接口(通过RPF检查的接口),也就是我们常说的上游接口,比如常见的情况时借用单播路由表来实现RPF检查。组播路由协议分类:密集模式:PIM-DMPIM-DM使用“推(push)模式”转发组播报文,一般应用于组播组成员规模相对较小、相对密集的网络。Push方式假设网络中每个子网至少有一个(S,G)组播组的接收者,因此组播数据被推送到网络的各个角落,然后再进行剪枝操作,不需要组播流量的路由器将自己从组播分发树上修剪掉。稀疏模式:PIM-SM稀疏模式协议使用“拉(Pull)的方式”,而不是强推。这种方式假定网络中不存在接收者,除非有设备用join机制来申请。为什么组播使用UDP进行封装?1.不需要进行TCP三次握手的建立2.如果使用TCP,在回包的时候,以哪一个地址作为报文发送源地址成为问题:--如果以主机的单播地址作为报文发送源地址,那么从逻辑上说不通,因为发出去的是一个组播报文,收到的却是一个单播报文。--如果以组播地址作为报文发送源地址,那么也不合逻辑,因为组播地址是代表一个组,而不是代表单一的设备,也就是说,组播地址不能作为报文的发送源地址。综上所述,因此使用UDP来封装组播报文,因为UDP不需要进行三次握手。注:UDP带来的问题就是没有流控机制,也没有重传和拥塞避免,但是这个缺陷并不是组播本身的问题,而是UDP这种封装方式带来的问题。组播服务模型(面试题目):ASM模型:任意源组播,组成员无法对组播源做出选择时,部署使用ASM模型。SSM模型:指定源组播,组成员可以对组播源做出选择时,部署SSM服务模型。如何区分使用的是SSM还是ASM?--以接收者为参照物进行区分,依据接收者接收组播流量是否针对源进行了区分。优缺点:ASM模型:缺点:浪费组播地址。只通过组播地址来唯一的区分不同的组播业务,因为不知道组播源,无法对组播源做出选择,在这种情况下,如果要区分不同的业务,就需要使用不同的组播地址来对不同的组播业务进行区分,会造成组播地址浪费。优点:对组成员的能力要求不高,容易部署和维护,接收者只需要实现知道自己要加入的组播组地址即可。SSM模型:缺点:组播接收者需要实现知道源和组地址的对应关系。优点:通过组播源和组播组地址来唯一的区分不同的组播业务,可以实现组播地址重复使用,也就是说,同一个组播地址可以针对不同的组播源来提供不同的组播业务。
0 评论