多播在历史上已不只一次成为时髦用语。IP多播指的是一个发送者向多个接收者发送数据,但只需发送一份数据副本。多播对流媒体非常有用,所以我们来研究一下它的工作原理。
多播很象广播,多播数据被分配一些特定的地址。两者的区别在于,一些多播地址可以被路由,并使用在Internet上。IANA(Internet地址分配机构)为多播预留的地址空间是224.0.0.0/4,我们现在不再说“D类”地址了。224/4的地址范围是从224.0.0.0一直到239.255.255.255。
多播比广播更具效率,因为广播数据包必须由本地链路上每台电脑接收,而每个操作系统都会生成一个中断,以便对收到的数据包进行检查,这个过程中通常会复制一些数据。而在多播时,网卡并不会接收这些数据包,除非它被告知需要接收。
缺省情况下,启用了多播功能的网络接口卡(NIC)在引导时只会侦听224.0.0.1上的数据,这个地址被赋给了“该子网上的所有系统”。是的,这与广播非常相似,事实上很多人认为广播就是多播的一种特殊情况。
通过设置网卡是否忽略多播内容,多播可以选择传送的目的对象,这是本地链路的工作方式,但Internet是怎样做的呢?如果有人想通过多播向非洲传送一个名人孩子出生的流数据,我们并不想让Internet上的每一台路由器都消耗带宽把它传送到每台电脑。除了通过设置本地NIC做出决策外,还有一些多播路由机制可以“修剪”某些子网。如果你的网络中没有人想看这些信息,那么就没有理由让它进入你的网络。
那些对这一信息感兴趣的人可以运行一个特别的程序,该程序会依次告诉NIC去加入一个多播组。NIC利用Internet组管理协议(IGMP)提醒本地多播路由器,它想加入一个特定的组。不过这只能单向实现(只能接收多播数据)。如果有人想发送和接收多播的信息,那么IP层就需要更高的技巧。为了发送数据,IP协议会把一个IP地址映射到一个以太网地址上,并把它告诉网卡驱动程序,以便用另一个MAC(媒体访问控制)地址配置网卡。
IGMP本身非常简单。它与ICMP(Internet控制消息协议)很相似,因为它也用到了IP层,只不过协议号码不同而已。IGMP协议头只包含4个内容:版本号、类型、校验和,以及要加入的组(即多播地址)。当数据包被发送出去的时候,多播路由器就知道了至少有一台主机有兴趣接收数据包,以获得一个特定的多播地址。现在这台路由器必须以某种方式和其它路由器进行多播路由,以便获得所需的数据。
现在事情变得有趣了,今天我们要谈论几种多播路由机制:DVMRP和PIM。这里稍事停顿一下,你要知道即使到了现在,多播技术仍然尚未被广泛支持,这一点很重要。在过去只有一个mbone即多播主干网络的时候,人们通过IPIP(IP封装IP)隧道与之相连。Unix程序mrouted可以理解DVMRP和IGMP协议,而Internet路由器却不能。现在很多希望采用多播技术的客户仍在询问他们的ISP,为什么某些协议不起作用。
DVMRP指的是距离向量多播路由协议,它采用IGMP子码13,并实现所谓的密集泛洪(Dense Flooding)。Dense Flooding很有效,但效率不高。一台路由器首先会向每个子网发送信息,然后去掉没有多播需求的子网。PIM(Protocol-Independent Multicast),即协议无关多播,不依赖于单播路由机制,它在密集模式下类似于DVMRP。PIM密集模式(dense mode)本质上和DVMRP一样,只不过PIM采用的是IP协议103。PIM可以实现分支的加入、修剪和嫁接。嫁接与修剪相反:它将一条分支重新嫁接回主干网络。
密集模式多播路由会由向所有人发送数据,然后修剪掉部分分支。多播分布树总被用来代表一组路由器,当一束分支被修剪,路由器将最终可以除去越来越粗壮的分支。如果一个AS内没有边界路由器感兴趣的分支,它就会向上流路由器发送一条修剪信息,从而不再浪费带宽。
稀疏模式(sparse mode)多播路由则采用集合点(Rendezvous Point,即RP)的思想。所有的加入信息都被发送到RP的单播地址上,因此这里显然需要懂一些优先的概念。PIM稀疏模式操作起来也更智能一些,它利用了共享树结构,但是假如一台路由器发现它与数据源更近,就会向上流路由器发送一条加入信息,以确保数据从最佳地址开始流动。随后新指定的路由器成为网络的数据源发布点。
这一点确实不错,只是要注意一处小细节:Internet并不是垂直的树状结构。企业总是想做冗余的连接,所以自然而然形成了巨大的网络环路。多播技术中采用了反向路径转发(RPF)来确保不会产生环路,其基本概念是,检验多播数据包所到达的接口是否是距离发送者最短的单播路径。如果不是,那么数据包就可能并非来自发送者,此数据包就会被丢弃。而如果RPF检验成功,数据包就会被复制然后发送给多播组里的每一个人。
多播路由协议还有很多种,如OSPF的MOSPF(多播开放最短路径优先协议),不过它只能用在一个自治域内;还有BGP的BGMP(边界网关多播协议),但也从未见它实际使用。许多协议并没有真正使用过,但人们总能产生诸多新鲜有趣的想法,希望使多播技术的广为传播能够成为现实。要知道分别观看来自一个网站的同一视频是多么丢脸的一件事啊,如果我们利用多播技术让路由器在需要的时候复制数据流就可以节省大量的带宽了。
小结
多播协议采用特殊的地址,从一个发送者向多个接收者发送数据,且只发送一份数据副本。
主机或路由器可以通过IGMP告诉其它路由器它们有兴趣从而加入多播组。
密集模式协议实现flood和修剪作用,而稀疏模式利用RP(反向路径)避免不必要的floodin
|
|||
| · 51CTO国庆充电专题之好.. · 网络技术经典基础教程 · 51CTO主编推荐经典专题 · RAID——磁盘阵列基础 · 充电计划之热门IT认证.. · 51CTO技术自测 挑战自.. · AMD Phenom三核处理器.. · 国际文档格式标准开战 |
· 2007年互联网大会 · 我是黑客我怕谁——讲.. · ARP攻击防范与解决方案 · Solaris 10 配置管理 · Solaris基础知识入门 · RIP路由协议专栏 · MPLS路由协议专栏 · OSPF路由协议专栏 |
||
|
|||
| · Java基础教程 · VPN技术 · ARP攻击防范与解决方案 · SQL Server 2005全解 · SOA 面向服务架构 · SQL Server 2005全解 · Java编程开发手册 · RAID——磁盘阵列基础 |
· 三层交换技术专题 · SQL Server入门到精通 · Windows Server 2003企.. · Windows远程桌面应用 · C#技术开发指南 · VPN技术 · C#技术开发指南 · Solaris 10 配置管理 |
||
|
|||
| · ARP攻击防范与解决方案 · VPN技术 · SQL Server 2005全解 · Java基础教程 · SQL Server入门到精通 · SQL Server 2005全解 · SOA 面向服务架构 · Java编程开发手册 |
· C#技术开发指南 · 三层交换技术专题 · C#技术开发指南 · Windows远程桌面应用 · RAID——磁盘阵列基础 · Windows Server 2003企.. · 邮件服务器专题 · wimax技术与趋势 |
||
| ·DB2 Viper快速入门 ·DB2 9数据库的镜像分割与.. |
·将XML应用程序从DB2 8.x.. ·DB2 9中的pureXML:如何.. |
| ·服务器中的“傻瓜机”在.. ·盖茨也喜欢登录Youtube看.. |
· · |
| ·搬家了 ·Leo说说写简历之秘籍篇 |
·Leo说说写简历之晋级篇 ·leo谈谈写简历之基础篇 |
| ·使用策略路由手工指定双.. ·应用Etherchannel扩展企.. |
·将职业教育职业化 - 各IT.. ·思科交换机上实现MAC地址.. |
| · NGN:下一代网络 · 网络访问中断大排查 · FTTx光纤接入 |
· 教你使用Anti ARP Sniff.. · 网络嗅探教程:使用Snif.. · 常见病毒手工清除方法大.. |
| · C++是垃圾语言?! · 2007年IT界七大抄袭事件 · Java实用开发全集 |
· 解析Ajax开发框架 走进A.. · 基于Google Maps与Ajax.. · 基于Google Maps与Ajax.. |
| · 热门 IT 培训认证官方资.. · Ubuntu 中文开源频道 · Solaris基础知识入门 |
· 理性面对四核服务器选购 · 硬件RAID及RAID组建实用.. · 费力不讨好 数据中心主.. |
| · 甲骨文Oracle 11g正式发.. · Oracle数据库开发之PL/S.. · Oracle数据库开发基础教.. |
· 存储2006,一个并购的大.. · IDC宣布浪潮蝉联存储市.. · 双机热备技术 |