发明名称 一种在因特网上实现交互式多媒体数据传输的方法
摘要 在因特网上实现交互式多媒体数据传输的方法属于多媒体网络技术领域,其特征在于:它依次含有新用户按照自组织步骤连接到树型结构中的步骤;按照数据路由步骤进行高效、可靠的多媒体数据的发送接收的步骤;用户退出应用时,按照自修复步骤退出树型结构,再将树型结构做相应动态调整的步骤。在数据传输上它具有:传输高效可靠、路由简单高效、保证数据的全局有序性、对出现差错的数据可有效进行差错修复、对链路拥塞能有效进行流量控制以及在出现故障、链路断路、用户退出时可实现树型结构自修复的优点。
申请公布号 CN1649344A 申请公布日期 2005.08.03
申请号 CN200510011260.X 申请日期 2005.01.26
申请人 清华大学 发明人 史元春;张南;常斌;贺伟晟
分类号 H04L29/06 主分类号 H04L29/06
代理机构 代理人
主权项 1、在因特网上实现交互式多媒体数据传输的方法其特征在于:首先在进行交互式多媒体数据传输的各台主机上设定:参与传输的各节点即用户在传输过程中的地位是平等的;对数据段采用的是层次数据结构模型的数据命名方式,每一个数据段是由下述四个元素组成的四元组来确定该数据段的空间位置的;<img file="A2005100112600002C1.GIF" wi="30" he="36" />频道标识:每个频道有一个在会话中唯一的频道标识;<img file="A2005100112600002C2.GIF" wi="30" he="36" />流标识:每个数据流都有一个在频道中唯一的流标识,它是一个随机产生的32位整数;<img file="A2005100112600002C3.GIF" wi="30" he="35" />消息序号:每个消息都有一个在数据流中唯一的消息序列号,所述消息是指数据流中一个对上层应用有意义的数据单元,所述序列号是一个单调递增的整数,由发送者确定;<img file="A2005100112600002C4.GIF" wi="30" he="34" />段位置序号:每个数据段用它在消息中的位置序号作为标识;用一个树型结构的各节点来表示参与到这个交互式多媒体应用的所有用户终端,顶级用户的IP地址和监听端口是给定的;且一个用户直接单播连接的下级用户数目的最大值也是给定的;在树型结构中的顶级用户内建立“所有用户信息”数组,其数据项会有每个用户的IP地址、每个用户的直接上级用户的IP地址和是否是公网IP的标识;在树型结构中的每个要加入多媒体应用的新用户内建立“备选上级用户”链表,其数据项含有:备选上级用户的IP地址、新用户通过该备选上级用户直接达到顶级用户的时间,即RTT值、以及该备选上级用户的直接下级用户是否被测试过的标识;同时,还要建立一个发送服务成功数据包用的“本用户信息”数据组,其数据项含有提供服务用户的IP地址、新用户的IP地址以及和提供服务的用户是否在同一多播域内的标识;另外,还有一个由新用户向顶级用户发送RTT测试包用的数据组,其数据项为:新用户发送RTT测试包的时间、接收RTT测试包的用户到顶级用户的RTT值以及和接收RTT测试包的用户直接单播连接的用户数目是否已达到最大值的标识;接着,本发明将依次按下述步骤进行:步骤1:一个新用户按照下述自组织的步骤连接到上述树型结构中来参与多媒体应用;步骤1.1:新用户询问顶级用户自己参与的多媒体应用的多播地址和多播端口;步骤1.2:新用户向多播地址和端口发送服务请求,来得知该多播域内是否已经存在有加入此多媒体应用的用户;步骤1.3:如果收到应答,即表明本多播域内已经有加入此应用的用户,则新用户选择给予它应答的用户作为其上级用户,并发送发现服务成功数据包给这个上级用户和顶级用户,顶级用户把新用户信息记录到“所有用户信息”数组中;步骤1.4:如果新用户在一段时间内没有收到对步骤1.2中发送的服务请求的响应,便依次执行以下步骤:步骤1.4.1:新用户把顶级用户加入到自己的“备选上级用户”链表中,并向顶级用户发送RTT测试包,顶级用户便把自己连接的单播用户数目是否达到最大值的标识填充到RTT测试包中,然后将这个RTT测试包返回给新用户;步骤1.4.2:新用户便对顶级用户发来的RTT测试包进行下述判断:与顶级用户直接连接的单播用户数目是否已经达到最大值;步骤1.4.3:若未达到最大值,便把顶级用户作为其上级用户,并发送发现服务成功数据包给顶级用户,顶级用户把新用户信息记录到“所有用户信息”数组中;步骤1.4.4:若已经到达最大值,便向顶级用户发送请求服务数据包,顶级用户便把自己直接下级用户的信息发送给新用户;新用户把收到的用户信息加入到自己的“备选上级用户”链表中,并向这些用户发送RTT测试包;新用户收到所有回送的RTT测试包后,选择一个RTT值较小且直接连接的单播用户数目未达到最大值的用户作为其上级用户;新用户再发送发现服务成功数据包给其选定的上级用户和顶级用户;顶级用户便把新用户信息记录到“所有用户信息”数组中;步骤2:按照数据路由步骤,进行多媒体数据的发送接收;步骤2.1:发送数据的用户先把多媒体数据按消息形式发送到顶级用户;步骤2.2:顶级用户收到步骤2.1中发送的数据包后,按照顺序给该数据包一个以流的标号表示的全局有序的序列号,再按已建立的树型结构,根据自己下级用户的网络是否支持多播的原则分别以单播或者多播的方式向每一个下级用户发送该数据包;步骤2.3:各用户收到数据包后,按照数据包的序列号排序,根据数据包所含数据内容的不同做不同的处理;步骤2.4:当用户发现传输过程中出现差错时,树型结构中的用户将会按照下述差错修复步骤进行有效的差错修复:步骤2.4.1:当用户发现接收到的数据包未按该数据包所规定的最晚期限达到时,便向它的上游用户发送NAK,即不确认请求;该NAK请求含有:丢失的数据包所有会话的标识、丢失的数据包所属的流标识和校验和、丢失的数据包所属消息的序号以及丢失的数据包在所属消息中的序号;步骤2.4.2:上游用户接收到下游用户的NAK包后,首先判断是否还在该数据包的最晚传输期限内,若尚在该期限内,再判断是否有必要,若有必要,便启动一个定时器,其定时时间为上游用户到各下游所有用户的RTT的最大值,而且在定时器超时前不再接收相同的NAK请求;同时,向下游用户重传数据;步骤2.5:当用户依照下述步骤判断出在数据传输过程中网络某段链路出现拥塞时,则进行流量和拥塞控制:步骤2.5.1:当发送数据的用户判断从接收数据的用户发来的NAK请求包中所包含的丢失数据包的个数超过了设定的门限值,则表明网络出现了拥塞;步骤2.5.2:发送数据的用户以指数级的形式降低发送速率,直至最小值,即,每次发送一个字节;步骤2.5.3:发送数据的用户按同时也在按下述步骤实时的探测网络拥塞情况,发现出现拥塞时,发送数据的用户同样以指数级的形式降低发送速率,直至最小值,即,每次发送一个字节:发送数据的用户在发送数据时会给每个数据包都加上时间戳T<sub>send</sub>,同时,发送数据的用户和每个中间用户在发送重传数据包时也包含时间戳T<sub>send</sub>;每个接受数据的用户对来自其直接上游用户的数据包或重传数据包计算T<sub>send+</sub>接受用户处理该数据的时间,称为T<sub>res</sub>,并把T<sub>res</sub>报告给上游用户;每个上游用户在收到T<sub>res</sub>后,就可以计算出该用户的RTT值,并把下游用户RTF的最大值包含在下一个数据包或重传数据包中发送给下游用户;发送数据的用户通过计算最近的测量值RTT<sub>new</sub>和历史上往返时间的最低记录RTT<sub>min</sub>之比(RTT<sub>new</sub>/RTT<sub>min</sub>),就可按指数级的形式对发送速率进行调整;步骤2.6:在交互式多媒体应用进行的过程中,当树型结构中的用户突然出现故障或某段链路出现故障时,其他用户将自动按照下述自修复步骤在短时间内进行树型结构的动态调整:步骤2.6.1:树型结构中的每个用户会定期向它的上级用户发出存活包;上级用户会相应给下级用户一个响应;步骤2.6.2:当一个用户向上级用户发送的存活包在一定时间间隔内没有收到响应,这个用户等待一段时间后,向多播地址和多播端口发出请求服务数据包,按照上述自组织步骤重新连接到树型结构中来;步骤3:当一个用户退出时,它的下级用户会发现在一定时间间隔内收不到对自己发出的存活包的响应,则视为这个用户的退出,下级用户便按照上述自修复步骤重新构建树型结构。
地址 100084北京市100084-82信箱