附 录 A假设接收机缓存模型 A.1 简介
假设接收缓存模型是用于在固定的端到端时延和有限内存缓冲需求的情况下,确保智能媒体高效传输的一种方法。假设接收缓冲模型应该被SMTP发送端所使用,以模仿接收端的行为。以下章节将详细描述。
SMTP发送端应该使用假设接收缓存模型,以确保对数据包流进行的任何处理都在接收端限制之内。SMTP发送端应该决定接收端所需要的端到端时延和缓冲大小,并且通过FEC信令消息通知接收端。
在接收端,从接收到SMTP数据包到重组成CEU包含了多次缓存操作。另外,对于一些传输操作,例如前向纠错(FEC)、丢包重传等都会引起时延和抖动,这些问题都需要接收端进行缓存操作来处理。假设接收缓存模型定义了一些接收端的缓存操作来确保任何时候缓存占有率都在缓存限制要求内。图1描述了假设接收缓存模型的组成。详细描述将在下面章节展开。每个SMTP数据包子流都需要应用假设缓存模型(如拥有相同packet_id的数据包形成的数据包子流)。缓冲器的实际设置是基于对特定SMTP子流的发送会话的配置来决定的。
MFU/SMTPSSSPSSMPU CEU解封装缓
SMTP去抖动缓冲解码缓冲FEC冲
A.1 假设接收缓存模型图 FEC)解码缓存A.2 前向纠错(数据包子流需要设置前向纠SMTP只有被解码缓存是可选的,FEC编码的前向纠错(FEC)解码应用广泛,很多情况下,例如由FEC错解码缓存(例如属于同一媒体资源的数据包)。FEC于信道问题或者网络拥塞导致的丢包和时延,底层传输机制并不能有效的解决,而利用解码时,需要设置一定的缓存,确保接收足够的源FEC的方式则会起到显著的效果。在进行 解码。数据包和修复数据包进行FEC 在假设接收缓存模型中,前向纠错解码缓存是可选的,如需应用,则按如下步骤进行: 初始化前向纠错解码缓存为空——buffer_occupancy +
存入缓存中,如果ts的数据包i ——接收到发送时间戳为 ,则接收这个数据包。否则丢掉。packet_size < max_buffer_sizei 作用于数据包如果—— FECj i所属的源数据块确定数据包t
中第一个数据包的到达时间j确定源数据块.
在t + FEC_buffer_time时刻,把所有属于源数据块j的源数据包(前向纠错结束后)存入去抖动缓存
丢掉修复数据包
其中,发送端利用FEC_buffer_time作为FEC解码要求的缓存时间,此时间表示的是从接受到源数据块的第一个源数据包到可以对源数据块进行FEC解码的时间。这个时间值可基于FEC块大小来计算。 A.3 去抖动缓存
去抖动缓存在假设一个最大传输时延值的前提下,确保数据包从发送到从SMTP协议栈输出这个传输时延固定。其中,所有传输时延大于这个最大传输时延的数据将被接收端丢弃。 去抖动缓存将按如下步骤进行: —— 初始化去抖动缓存为空 —— 接收SMT数据包
—— 在ts+Δ时刻,数据包送入解封装缓存(其中Δ是通过信令消息得到的固定的端到端时延) 进过去抖动缓存后,所有SMT数据包(无论是准确接收的还是通过FEC或者重传处理)都经过了相同的端到端时延。 A.4 数据包解封装缓存
SMT数据包解封装缓存用于在把SMTP负载传入上层之前对数据包进行处理。
SMTP数据包处理(低延时操作)的输出可能是MFU负载或者一个完整的CEU。解封装(SMTP数据包和负载的头部的移除)和任何数据包所需的重组都是SMTP数据包处理的一部分。这个步骤可能需要缓冲时延或者解封装时延,用于重构这个数据,以便被传递到应用层。然而,解封装延时并不会被认为是传输时延的一部分,并且可用的用于上层消耗的数据会被发送CEU的实体所担保,而不用管解封装的延时。 解封装缓存操作将按如下步骤进行: —— 初始化SMT数据包解封装缓存为空
—— 去抖动缓存被执行后,SMTP数据包立即送入SMTP数据包解封装缓冲
—— 对于载有聚合负载的SMTP数据包,移除数据包和负载头,然后提取每个单个的数据单元 —— 对于载有被分割成片段的负载的SMTP数据包,这个数据包就一直被保存在缓冲器中,直到所有对应的片段都被正确接收,或者直到一个不属于同一个片段数据单元的数据包被接收了 —— 取决于客户端的操作模式,如果一个完整的CEU或一个单个MFU重组完成,则将重组的数据送入上层处理后显示 A.5 假设接收缓存模型的使用
基于假设接收缓存模型,SMT发送端可以确定传输步骤、缓存大小和缓存时延Δ,设置最大传输时延,从而避免缓存溢出导致的丢包。在一个固定的时延且不会引起SMT发送实体缓冲到下溢或溢出后,SMT发送实体应当保证经历的传输时延小于设定的阈值的数据包将会 被传送到上层。. A.6 端到端时延和缓存要求的估计
在设置固定时延时,发送端实体应该估计从发送端到接收端的最大期望及容许的传输时延。如果FEC正在使用中,因为要求FEC解码能够恢复丢失的SMTP数据包,SMT发送实体应该添加FEC缓冲时延,这个缓冲时延涵盖了汇聚一个源块所需的时间。最后,应当增加任何可能会由数据包片段(以及其他操作)所引起的时延应。那么,SMTP数据包发送时延的结果估计应当作为固定的端到端发送时延,以发送信号的方式传达给SMT接收实体。 固定的端到端时延=最大发送时延+FEC缓冲时间
为了估计所产生的缓冲需求SMT发送实体应当使用固定的端到端时延,并减去到SMT接收实体的最小发送时延,然后估计缓冲大小要求缓冲器大小要求,它等于SMTP数据包最大比特率与所计算的缓冲的数据持续时间的乘积。
缓冲器大小=(最大时延-最小时延)*最大比特率 A.7 语法
假设接收机缓存模型的语法见表A.1
表A.1 假设接收机缓存模型语法
语法 HRBM ( ){ message_id version length extension{ extension_fields_Byte } message_payload{ max_buffer_size fixed_end_to_end_delay max_transmission_delay } } 值 比特位数 备注 16 8 16 32 32 32
A.8 语义
message_id:表明此消息是假设接收缓存模型消息.
Version:假设接收缓存模型消息的版本号。接收实体可以用来检查此消息的版本号。 假设接收缓存模型消息的的长度。Length: max_buffer_size:提供最大缓冲大小信息。.
fixed_end_to_end_delay:提供发送实体与接收实体间的固定端到端时延信息. max_transmission_delay:提供发送实体与接收实体间的最大传输时延信息