simulate 802.11b channel within NS2 (1)
《simulate 802.11b channel within NS2》 by Wu xiuchao是一篇很好的文章。解答了我的很多困惑,或者老是记不住,记不清的东西。其中包括3个threshold,和这些个thresold的计算方法(在ns2)中的。而且,我怀疑因为作者是新加坡人的缘故,使得他的写作逻辑和英语对于我来说都是十分的容易,好像在看中文一样。^_^
————————————————————————————————
1 ns2中的传输模型。
1>propagation model 的意义
“propagation model”,在课上学了无数次,考了无数次,直到我需要用它的今天,终于明白它存在的意义了。就像以前说的,天线的作用是发出电磁信号和接收空气中的电磁信号。根据收到的信号力来确定它收到了什么东西。那么这个信号力是多大呢?人类根据电磁波在不同的环境中的传输情况,概括出3个传输模型,用以预测收到的信号力的大小(之所以是预测,是因为可能有衰减之类,如果有衰减,那么真实的值应该是围绕在这个预测值周围的一个值。比如真实值=预测值+/-误差)
2> ns中实现的传输模型
ns中有3个传输模型:Free space
Two ray ground
Shadowing
3> 这3个传输模型的用途
Free space model: is used to simulate path loss of wireless communication when line-of-sight path exists between transmitter and receiver.
这个看起来很简单的概念有一个地方要特别注意,就是这个词“exist”。它说存在,并没有说唯一。可能有其他非 line-of-sight的path存在,也可能有不止一条的line-of-sight path存在。
Two ray ground: this model is used when line-of-sight path exists and reflection of ground is considered.
这个模型是free space model的修正版,除了考虑直接的路径以外,还考虑了地面反射。
Shadowing model: simulate shadow effect of obstructions between the transmitter and receiver.
(没找到shadow effect。google根本没有)不过,知道这个shadowing model用于模拟in-door environment的无线channel就行。
4> 一个扩展模型——Ricean model
除了ns2原有的3个模型以外,外界又有人对其增加了扩展。一个扩展模型Ricean model用于模拟移动终端运动的effect.
5>ns2中的3个threshold
CSThresh_:determine whether one frame is detected by the receiver.
如果signal strength < CSThresh_的话,那么在ns2的PHY就会直接丢掉,MAClayer (ns2里的)连看都看不到。
RxThresh_: 如果signal strength 比这个值大的话,receiver就可以正确的接受他。否则,这个frame会被tagged为corrupted,MAC层会丢掉它。
CPThresh_: When multiple frames are received simultaneously by one mobile node, it calculates the radio of the strongest frame's signal strength to the signal strength sum of other frames. (很好的英语表达法)如果这个比值大于CPThresh_,这个frame会正确接受其他的frame会被忽略。否则所有的frame都会被丢掉,认为是collided.
这里要注意的有2点:1,要用最强的信号力和剩余其他所有信号力的和相比
2, 不是相减,而是相除。
6> NS2用threshold来决定一个包是否正确接受,ns2没有考虑BER。那么什么是BER?
wiki对 error rate的解释:“
In telecommunication, an error ratio is the ratio of the number of bits, elements, characters, or blocks incorrectly received to the total number of bits, elements, characters, or blocks sent during a specified time interval.”
这里有3点要注意:1 错误的部分是所收到的错误部分
2 正确的部分是发送的正确的部分
3这个比值是在一个具体的时间内的。
那么bit error ratio是什么?
“the number of erroneous bits received divided by the total number of bits transmitted”
注意2点:1,比较的单位在这里是“bit”
2,还是bit的来源问题,收到的错误的bit数除以发送的bit数(而不是除以收到的所有bit数)
7 这篇文章中奇怪的一个地方
这篇文章中有一个地方没有说的很清楚,很奇怪。在“But there are some errors in this simulation script.”的后面他说: firstly, 25meter is the receiving range in closed enviroment.
这个25米出现的特别的奇怪,前面的脚本和文章中都没有提到任何有关的内容。所以我怀疑25是根据它脚本中各个值算出来的一个transmission range。所以我进入ns/indep/propagation/ 用threshold加上它脚本里的各个参数,随后让distance option为25m计算了下。奇怪的是,得到的结果(RxThreshold值)并不是它脚本里给的值(5.82587e-09),而是偏小(4.71896e-09)。然后我不断的缩小distance,再看计算出的结果和脚本里给的RXThresh_相比较。直到distance 为22.5米的时候,得到的RXThresh_和文中的值一摸一样。我怀疑要么是它写错了,将22.5写成了25,要么就是因为我和作者的ns2的版本不一样,以至于计算RXThresh_的公式不太一样。前者的可能性好像比较大。
(^_^,都没有错,在本天才孜孜不倦的研究下发现了它的目的。因为这个脚本给出的所有的数据都是真实的Orinoco 11bCard的实际数据。这个25m是这个网卡在closed 环境中的最大的传输距离。所以在closed 环境里的的传输距离只能小于等于25m。这个脚本实际上是用了22.5m作为传输距离计算出一个RXThresh_值。因为22.5<最大传输距离25m,所以这个脚本只能用在closed 环境中。但是如果是closed environment,就不该用two ray ground model。所以作者才说这个脚本有问题。简单的说,这个脚本前后矛盾,它用open 环境的里的propation model来计算closed 环境里的transmission 接受power.如果有人问,你怎么知道这个环境是closed的呢?那么作者说,因为这个网卡在closed环境里的传输距离最大是25米。现在这个脚本里用的传输距离比25米还小,显然这个脚本是用于closed 的环境里的)
[root@localhost propagation]# ./a.out -m TwoRayGround -Pt 0.031622777 -fr 2.472e+09 22.5
distance = 22.5
propagation model: TwoRayGround
Selected parameters:
transmit power: 0.0316228
frequency: 2.472e+09
transmit antenna gain: 1
receive antenna gain: 1
system loss: 1
transmit antenna height: 1.5
receive antenna height: 1.5
Receiving threshold RXThresh_ is: 5.82587e-09
8> 接受敏感度(receiver sensitivity)在ns中(主要问题是没有考虑BER)
Receiver sensitivity is the received sigal power with which BER is approximately 1.0E-5."
这真是神奇的一句话,我死活看不懂。我的英语水平将这句话翻译成:“接受敏感度是有BER值为1。0E-5的signal power。”。缩一下就是“接受敏感度是signal power”。还好中文网站上说的很清楚:“ 在保证达到所要求的误比特率的条件下,接收所需要的最小输入功率。接收灵敏度一般用dBm来表示,它是以lmW光功率为基础的绝对功率,或写为
其中,Pmin指在给定误比特率的条件下,接收机能接收的最小平均功率。例如,在给定的误比特率为10的负9次方时,接收机能接收的最小平均功率为InW(即10的负9次方W),接收机灵敏度为-60dBm。
所以,真正的接受灵敏度是在BER一定的情况下,所需要的最小的信号力。如果收到的信号力大于这个最小的值,那么这个信号就可以被cs到。
可是ns对cs的定义和receiver sensitivity有偏差。ns没有考虑BER而是直接设定一个能量power。这样的方法是不准确的。
如果不考虑BER和SNR,用CSThresh_和RxThresh_来决定sense range 和receive range那么问题不会很大。否则,可能会有很大的问题。
原文:http://blog.sina.com.cn/s/blog_4df2b29b01000d24.html
simulate 802.11b channel within NS2(2)
1 计算SNR
1> SNR的定义:signal to noise and interference ratio.
『又是一个关于ratio的英语表示法。所以什么什么之比,可以说成 A is the ratio of B to C.这通常用于B和C都比较长的情况下。
如果B和C比较的短,那么可以直接说 A means B to C Ratio.这里的B to C好像是一个noun group 用于修饰后面的radio。』
所以SNR是signal strength除以 (noise and interference)。要计算SNR,就要知道signal strength, noise, interference这三样。signal strength很容易,可以根据propagation model 公式计算出来。所以,问题集中在如何计算noise和interference.
2> noise的来源有2:1来自于环境
2产生于receiver。
其中由receiver产生的noise也分为2种:1 thermal noise
2 platform noise
thermal noise之前讲过,热噪声,可以理解为机器发热产生的。如果data rate加快,显然机器的处理速度会变快,自然也会发热发的多,自然thermal noise会变大。所以thermal noise除了和机器本身有关以外,还和data rate有关系。
不同的产品有不同的receiver sensitivity 因为他们的platform noise是不同的。即使同一个产品的receiver sensitivity也不是固定的,因为不同的data rate造成不同的thermal noise。因此不同的data rate有不同的receiver sensitivity。(概括起来一句话:不同的产品有不同的receiver sensitivity,同一产品在不同的data rate时的receiver sensitivity也不相同)
3> BER和SNR之间的关系
作者给的那幅图死活看不懂,也找不到platform noise的定义。不过据我的猜测,所谓的platform noise可能是一个noise的基本值。那幅图下面有句话说明了BER和SNR之间的关系:
Receiver sensitivity is the received signal power with which BER is less than 10e-5.To achieve this BER, SNR should be approximately 10.
就是说,要保BER小于这个10e-5,Signal/noise ratio要大致是10。信号强度10倍于噪声才可以保证错误率在一个比较低的,可接受的值。所以SNR越高,BER越低,反比的关系。
4> 什么是noise floor?(天啊,我把《信号与系统》自学了一遍!)
The noise level below which signals cannot be detected under the same measurement conditions.
A common way to lower the noise floor in electronics systems is to cool the system to reduce thermal noise, which is usually the major noise source. In special circumstances, the noise floor can also be artificially lowered with techniques.
5> 考虑了noise之后的CSThresh_和RxThresh_的计算
CSThresh_应该和noise floor相同。(在PHY中计算)因为802.11b用BPSK传输一个frame的preamble,因此CSTresh_的计算应该计算BPSK的receiver sensitivity。
RxThresh_应该小于receiver sensitivity 大于CSThresh_.从范围和传输模型计算。
SNR在MAC层计算。(因为MAC层知道是否干扰)
6>当SNR和modulation method知道以后,BER可以理论上推出来(derived theoretically,怀疑是用公式)也可以从curve上看出来(curve是测量特别的产品的产物)。
7> 让我崩溃的一段话!天啊,理论把实际简化了多少!!!!
Because Preamble, PLCP header, data of one 802.11b frame may be transmitted with different modulation scheme and different modulation schemes have different receiver noise floor, we should calculated their SNR, BER separately. After that, we can calculate FER of that frame and determine whether the frame is received correctly. One module ErrorModel80211 is added into NS2 to calculate SNR and FER.
8> 加入BER SNR之后的ns2如何处理接受的过程。
NS2 will use threshold and BER to determine whether one frame is received correctly. CSThresh_, RxThresh_, and CPThresh_ are still here. RxThresh_ may be calculated with large range in order to let frames suffer high BER.
receive procedure
PHY module:
如果信号力小于CSThresh_,这个frame会直接丢掉
如果信号力小于RxThresh_,frame 标记为corrupted,送给MAC
如果信号力>RxThresh_, 直接将这个frame送给MAC
MAC module:
如果在接受一个frame的时候有其他的frame来到,则将其他frames的signal加为noise.
计算SNR和BER
根据frame的长度计算FER
用随机数来判断是否这个frame被corrupt,如果是的话,将其标记为corrupted.然后丢掉。
9> 最后我终于明白N多网页里出现的4个 noise是什么意思
ErrorModel80211 noise1_ -104 //Receiver noise floors for BPSK
ErrorModel80211 noise2_ -101 //...for QPSK
ErrorModel80211 noise55_ -97 //...for CCK5.5
ErrorModel80211 noise11_ -92 //...for CCK11
______________________________________
天啊,是什么样的力量支持着我把这篇文章给读下来的??Rob,你夸我夸的真是时候,自从你夸完我后,我发现自己勤奋多了。
读后感:
作者似乎要让ns2十分精确的模拟MAC和PHY对信号的接受,cs问题,并且那个一个真实的网卡的参数作为对照。
他先列出ns2原先的3个threshold的计算方法,然后说出这些方法的问题。最后说如何将SNR和BER加入ns2。具体的coding没有,完全是他的设计思路。
我的收获:对propagation model已经noise 和interference的理解加深了。知道了我该如何选择propagation model在我的simulation里。是否要加入其他的noise,衰减之类。如果得到的模拟结果和我想的不一样,不要总是怀疑自己的coding 有问题,还有可能就是我的模拟太偏离现实,应该考虑的很多因素都没有考虑进去。这篇文章我还有很多不是很理解的地方,尤其是后来开始加入SNR和BER的部分。所以要反复阅读。
阅读(719) | 评论(0) | 转发(0) |