下一代IP技术对多媒体和实时应用的支持
发布时间: 2012-12-11   浏览次数: 53

  TCP/IP协议在实际中取得了巨大的成功,其具体表现即是Internet的迅速发展. 但是,TCP/IP协议的研制者设有预料到Internet的规模会发展到今天这么大,从而使得现有的TCP/IP协议面临许多困难. 1987年,人们便预计在1996年Internet将接入100,000个网络,这一预测看来是准确的. 此外,虽然目前使用的32位IPv4地址结构能够支持40亿台主机和670万个网络,实际的地址分配效率,即使从理论上说也远远低于以上数值. 使用A、B和C类地址,使这种低效率的情形变得更为严重.
   自八十年代后期,研究人员开始注意到了这个问题,并提出了研究下一代IP协议的设想. 1990年,人们预计,按照当时的地址分配速率到1994年3月B类地址将会用尽,并提出了最简单的补救方法:分配多个C类地址以代替B类地址. 但这样做也带来新的问题,即进一步增大了已经以惊人的速度增长的主干网路由器上的路由表. 因此,Internet网络界面临着困难的选择,或者限制Internet的增长率及其最终规模,或者采用新的技术.
   1990年后期,IETF开始了一项长期的工作,选择接替现行IPv4的协议. 此后,人们开展了许多工作,以解决IPv4地址的局限性,同时提供额外的功能. 1991年11月,IETF组织了路由选择和地址工作组(ROAD),以指导解决以上问题. 1992年9月,ROAD 工作组提出了关于过渡性的和长期的解决方案建议,包括采用CIDR路由聚集方案以降低路由表增长的速度,以及建议成立专门工作组以探索采用较大Internet地址的不同方案.
   1993年末,IETF成立了IPNG工作部,以研究各种方案,并建议如何开展工作. 该工作部制订了IPng技术准则,并根据此准则来评价已经提出的各种方案. 在经过深入讨论之后,SIPP(Simple Internet Protocol Plus)工作组提供了一个经过修改的方案,IPng工作部建议IETF将这个方案作为IPng的基础,称为IPv6,并集中精力制定有关的文档. 自1995年末起,陆续发表了IPv6规范等一批技术文档.
    在高速广域网络环境下支持多媒体和实时应用,是近年来人们关注的焦点. 但由于历史的原因,在现行的TCP/IP协议中没有得到适当的支持. 在IPv6中提供了流标号和报文分组优先级机制,可用来为多媒体和实时应用提供服务质量保证.
IPv6的特点
    IPv6是Internet协议的一个新版本,其设计思想是对IPv4加以改进,而不是对其进行革命性的改造. 在IPv4 中运行良好的功能在IPv6 中都给予保留,而在IPv4中不能工作或很少使用的功能则被去掉或作为选项. 为适应实际应用的要求,在IPv6中增加了一些必要的新功能. IPv6的主要特点如下:
    (1) 经过扩展的地址和路由选择功能. IP地址长度由32位增加到128位, 可支持数量大得多的可寻址节点、更多级的地址层次和较为简单的地址自动配置. 改进了多目(multicast)路由选择的规模可调性,因为在多目地址中增加了一个"Scope"字段.
    (2) 定义了任一成员(anycast) 地址,用来标识一组接口,在不会引起混淆的情况下将简称"任一地址",发往这种地址的分组将只发给由该地址所标识的一组接口中的一个成员. 
    (3) 简化的首部格式. IPv4首部的某些字段被取消或改为选项,以减少报文分组处理过程中常用情况的处理费用,并使得IPv6首部的带宽开销尽可能低,尽管地址长度增加了. 虽然IPv6地址长度是IPv4地址的四倍,IPv6首部的长度只有IPv4首部的两倍.
    (4) 支持扩展首部和选项. IPv6的选项放在单独的首部中,位于报文分组中IPv6首部和传送层首部之间. 因为大多数IPv6选项首部不会被报文分组投递路径上的任何路由器检查和处理,直至其到达最终目的地,这种组织方式有利于改进路由器在处理包含选项的报文分组时的性能. IPv6的另一改进,是其选项与IPv4不同,可具有任意长度,不限于40字节.
    (5) 支持验证和隐私权. IPv6定义了一种扩展,可支持权限验证和数据完整性. 这一扩展是IPv6的基本内容,要求所有的实现必须支持这一扩展. IPv6还定义了一种扩展,借助于加密支持保密性要求.
    (6) 支持自动配置. IPv6支持多种形式的自动配置,从孤立网络节点地址的"即插即用"自动配置,到DHCP提供的全功能的设施.
    (7) 服务质量能力. IPv6增加了一种新的能力,如果某些报文分组属于特定的工作流,发送者要求对其给予特殊处理, 则可对这些报文分组加标号, 例如非缺省服务质量通信业务或"实时"服务.
IPv6数据报格式
    IPv6数据报的首部虽然比IPv4首部长,但却大大地简化了. IPv4首部中的一些功能被放在扩展首部中或取消了. IPv6首部的格式如下图所示.
    (1) 版本 (Version). Internet协议版本号,IPng版本号为6. (4位字段)
    (2) 流标号 (Flow Label). 如果一台主机要求网络中的路由器对某些报文进行特殊处理,如非缺省服务质量通信业务或实时服务,则可用这一字段对相关的报文分组加标号. (28位字段)
    (3) 负荷长度 (Payload Length). IPv6首部之后,报文分组其余部分的长度,以字节为单位. 为了允许大于64K字节的负荷,如本字段的值为0,则实际的报文分组长度将存放在逐个路段(Hop-by-Hop)选项中. (16位无符号整数)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version | Prio. | Flow Label |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Payload Length | Next Header | Hop Limit |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Source Address |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Destination Address |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   (4) 下一首部 (Next Header). 标识紧接在IPv6首部之后的下一首部的类型. 下一首部字段使用与IPv4协议相同的值. (8位选择字段)
    (5) 路径段限制 (Hop Limit). 转发报文分组的每个节点将路径段限制字节值减一,如果该字段的值减小为零,则将此报文分组丢弃. (8位无符号整数)
    (6) 源地址. 报文分组起始发送者的地址. (128位字段)
    (7) 目的地址. 报文分组预期接收者的地址 (如果有一个可选的路由选择首部,有可能不是最终接收者). (128位字段)
    在IPv6中,Internet层选项信息存放在单独的首部中,位于报文分组的IPv6首部和传送层首部之间. 现已定义了几个这种扩展首部,各由一个下一首部值来标识,包括逐个路段路由选择、分片、验证、隐私权和端到端(End-to-End)等选项首部.
流标号
    IPv6 的流标号和优先级对于多媒体和实时应用是很重要的,可用来提供通信服务质量保证,使吞吐量、延时和抖动保持在一定限度内. IPv6头中的24位流标号字段可由源节点用来给需要IPv6路由器特别处理的分组加标号,例如非缺省服务质量或实时服务. 在制定IPv6规范时,这一方面的内容仍处于实验阶段,随着对Internet中关于流支持的需求的了解不断深入,将会做出适当的修改. 对不支持流标号字段功能的主机或路由器,要求它们在初始生成一个分组时将该字段设置为0,在转发时对该字段不加改动,在接收一个分组时忽略该字段. 
    流是从一个特定源节点发往一个特定目的节点(单一或多目地址)的分组序列,源节点要求这些分组所经过的路由器对其进行特别处理. 这种特别处理的性质可由控制协议传递给路由器,如资源预约协议;或由流的分组自身中的信息来传递,如在逐个路段选项中规定.
    在一个源节点和一个目的节点之间可能同时有多个处于活动状态的流,以及一些与任何流都不关联的通信业务. 为了区分它们,由源地址和非零流标号的组合给每个流一个唯一的标识,属于同一个流的分组具有相同的源地址、目的地址和流标号. 不属于任一个流的分组,其流标号为0.
    流标号是由流的源节点分配给一个流的,在1?FFFFFF(hex)之间(伪)随机地均匀选出. 随机分配的目的是使在流标号字段中任意的位组适合于被路由器用来作为Hash关键字,以便查找与流相关联的状态.
    属于同一个流的所有分组在发送时必须有同样的源地址、目的地址、优先级和流标号. 如果其中任何一个分组包括逐个路段选项首部,则它们必须全都包含有同样的逐个路段选项首部内容(除了逐个路段选项首部中"下一首部"字段不同以外). 如果其中任何一个分组包括路由选择首部,则在所有分组内,在到路由选择首部为止(包括路由选择首部)的所有扩展首部中,必须全都具有同样的内容(不包括路由选择首部的"下一首部"字段). 允许但不要求路由器与目的节点验证这些条件是否满足. 若检测到违犯规则的情况,则应报告源节点,可发送一个ICMP参数有问题报文给源节点,代码为0, 指向流标号字段中的高位字节(即在IPv6分组中的偏移量为1).
    路由器可以自由地根据实用原则为任何流设置流处理状态,即使在没有任何路由控制协议、逐个路段选项或其它手段给它们提供明确的流建立信息时,也可以这样做. 例如,当收到一个从特定的源地址发来的具有未知非0流标号的分组时,路由器可以把流标号当作0来对其IPv6首部和任何必要的扩展首部进行处理. 处理的内容可包括确定下一路段的接口或其它动作,如更新一个逐个路段选项,向前调整路由选择首部中的指针和地址,以及确定怎样根据优先级字段来将分组排队. 这时,路由器可以选择去"记住"这些处理步骤的结果并将信息放在高速缓存中,以源地址加流标号作为高速缓存关键字. 这样,对随后收到的具有同样源地址和流标号的分组就可以按照高速缓存中的信息来处理,而不必再查看根据上一小节的要求可以假设为与流中第一个分组相同的所有那些字段了.
    保存在高速缓存中的根据实用原则设置的流处理状态,必须在其建立后6秒内丢弃,无论属于同一个流的分组是否还在继续到来. 若在丢弃了缓存的状态后,又有另一个具有同样源地址和流标号的分组到来,则需对该分组执行正常的全部处理 (就象其流标号为0一样),这可能导致在高速缓存中重新为该流创建流状态.
    由控制协议或逐个路段选项等明确设置的流处理状态的生存期,必须规定为明确设置机制规范的一部分,其值可以超过6秒钟.
    一个源节点在为使用一个流标号而建立了流处理状态后,在其中任何一个流处理状态的生存期未超过时,不得把该流标号再用于一个新的流. 由于可以为任何流根据实用原则建立生存期为6秒的流处理状态,所以在使用同一个流标号的前一个流的最后一个分组和新流的第一个分组间的最小时间间隔为6秒. 用于生存期较长的明确设置的流的流标号,在这段较长时间内不得使用,期满后才能用于新的流.
    当一个节点停机后又重新起动时,必须小心地避免使用一个可能曾用于先前的流而又未到生存期的流标号. 其实现方法为将流标号的使用情况记录在稳定的存储器中,以便在重新起动后仍能记得;或者避免使用流标号,直到超过以前可能建立的流的最大生存期为止 (最小6秒,如果使用了生存期较长的明确定义机制则更长). 如果重新起动该节点的最小时间已知(通常大于6秒),则可以从开始分配流标号之前需要等待的时间中扣除该时间.
    并不要求全部或大多数分组属于某个流,即其流标号不为0. 在这里指出这一点,是要提醒协议设计者和实现者不要作其它假设. 例如,设计一个仅在大多数分组都属于某个流时才具有适当性能的路由器,或设计一种只能用于属于流的分组的首部压缩方案,都是不明智的.
优先级
    IPv6头中的4位"优先级"字段,使一个源节点可以为其分组标明所希望的发送优先级,这里的优先级是相对于发自同一源节点的其他分组而言的. 优先级的取值可分为两个范围:优先级0?7用于源节点对其提供拥塞控制的信息传输,如象TCP这样在发生拥塞时做出退让的通信业务;而优先级8?15用于在发生拥塞时不做退让的信息传输,例如以固定传输率发送的"实时"分组.
对于有拥塞控制的信息传输,建议对特定的应用类型分别采用下列优先级值:
    0-无特征传输(无任何要求,优先级最低).
    1-"填充物"传输(对时间要求不严格,如电子新闻等).
    2-无人关照的数据传输(如电子邮件).
    3-保留.
    4-有人关照的数据传输(如FTP,NFS).
    5-保留.
    6-交互式数据传输(如telnet,X).
    7-Internet控制信息传输(如路由选择协议、SNMP).
    对于无拥塞控制信息传输,最低优先级(8)应该用于发生拥塞时发送者最希望丢弃的那些分组(如高保真度视频信息); 而最高优先级(15)应给予发送者最不愿意丢弃的分组(如低保真度音频信号). 在有拥塞控制优先级(0 - 7)和无拥塞控制优先级(8 - 15)之间没有相对的优先顺序.
结束语
    多媒体技术是目前计算机和通信领域研究的热点,具有广阔的应用前景. 因此,在扩展地址空间和解决其它问题的同时,下一代的IPv6规范也对支持多媒体和实时应用做闪斯娑? 这些机制的具体应用方法,还需要通过实践取得进一步的经验. 一些厂商和研究机构已开始IPv6的实现研究. 在IPv6实现的基础上,还需要开发适当的传送层协议(TCP),以便充分利用IPv6对多媒体和实时应用的支持.