流量发生器中帧间隔算法实现

写完毕业论文,觉得其中有几个点值得记录下来并进行进一步的思考和探索,主要是关于概率论和随机过程方面的。

论文主要是实现了一个流量发生器,按照数学模型生成以太网帧分组,用于软件或者RTL级仿真使用。流量发生器是用软件实现的,依据数学模型比如泊松模型、ON/OFF模型来生成以太网帧数据和帧间隔数据,将数据写入本地文件中,仿真时通过接口比如Verilog的TestBench读入帧数据和帧间隔进行仿真。帧长可配置为固定帧长或者随机帧长,根据不同的业务需求建立不同的数学模型生成符合业务特性的网络流量,因此,在不同的数学模型下确定帧间隔大小将是网络流量生成的核心步骤。


图1

首先简要介绍一下帧间隔。如图1所示,网络设备在接收到一个以太网帧之后,需要短暂的一段时间让节点从发送状态切换到接收状态为下一帧的接收做好准备,相邻两帧之间需要时间间隔,即帧间隔(Interframe Gap,IFG)。规定以太帧的最小帧间隔为96比特时,在不同的链路速率下帧间隔最小值不一样。


图2

在建立泊松模型生成网络流量时,假设泊松过程到达强度为a,则到达间隔服从参数为1/a的指数分布,对应于数据包的到达过程,表示为当前帧的第一比特到下一帧的第一比特之间的时间服从指数分布,如图2所示。由图易知帧间隔的计算方法:产生服从指数分布的时间序列,减去帧长及前导码和帧开始符的传输时延即为帧间隔。然而以太网帧的帧长范围64Byte~1518Byte,前导码7Byte以及帧开始符1Byte,最小帧间隔12Byte,那么所产生的指数分布是有约束的,即存在最小值。固定帧长时,最小值为帧长加上20Byte对应的传输时延;随机帧长时,最小值为最大帧长1518Byte加上20Byte对应的传输时延,这样才能保证所产生的指数分布序列内可以传输任意合法长度的帧。若服从指数分布的序列存在最小值,即数据存在左截断的情况(参考肖争艳的《精算模型》),此时并不是标准的指数分布,标准的指数分布随机变量从0开始。设随机变量X服从指数分布,分布函数,d为截断点,设随机变量Y是被截断后X的值,其分布函数为:


假设F(d)=p,将代入上式可得,


利用反函数法反解出x,


取[0,1)之间均匀分布的随机数代入上式即可求得服从的随机变量序列。

在固定帧长及随机帧长两种情况下先分别计算出截断点d,根据以上步骤求出截断指数分布的随机变量序列,进而计算出帧间隔。这种算法可以保证产生的指数分布的时间序列内可以传输指定的合法帧长的帧,但是在随机帧长时,为了保证能够传输所有的帧,截断点是大于最大帧长的传输时延的,因此,在实际使用时会导致帧间隔过大,速率较低。为了解决这个问题,以及设计一个通用的模型来满足任何流量模型下的帧间隔计算,最好的方式是设帧间隔服从分布b,帧长传输时延服从分布c,那么到达间隔服从分布(b+c),在任何流量模型下(b+c)都有对应的分布,在设置不同帧长分布的情况下,计算帧间隔分布。




阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页