Multipath Channels

When a wireless signal travels from a transmitter to a receiver, there usually exist several paths between the two nodes as a result of reflection and refraction. In order to emulate realistic channel models between transmitters and receivers, we have added multipath support to a limited number of channels in the emulator. This document explains how to use the multipath feature of the wireless emulator.


Channels that Support Multipath

The current Emulator has 10 dell PCs (D610) available to external users. The ID for these 10 PCs range from pcemu101 to pcemu110. There are two channels between each two pair of PCs, one in each direction. All the channels between the first three PCs (pcemu101, pcemu102, pcemu103) offer multipath support. They support up to three paths per channel. All other channels have only one path.

The properties of the three paths can be specified independently. Specifically, for each multipath channel:

How to Use the Multipath Channels

Choose the Right PC

If you need mulipath feature between a pair of PCs, your NS script should be set up to only pick pcs from pcemu101, pcemu102 and pcemu103. Here is an example:

set nodew1 [$ns node]
set nodew2 [$ns node]
set nodew3 [$ns node]

tb-fix-node $nodew1 pcemu101
tb-fix-node $nodew2 pcemu102
tb-fix-node $nodew3 pcemu103

Create Definition for Multipath Channels

Option I: Overwrite default channel definition The XML config includes a default single-path channel definition, which reads as follows:

<ChannelDef>
	<name>default</name>
        <Channel>
		<ChannelModel type="PathBased">
			<Path>
				<LossModel type="LogDistance">
                                        <d0>1</d0>
                                        <pld0>40.0</pld0>
                                        <n>3.0</n>
                                </LossModel>
                                <FadingModel type="Ricean">
                                     	<k>3</k>
                                        <minSpeed>0.1</minSpeed>
                                </FadingModel>
                                <DelayModel type="Fixed">
                                      	<delay>0</delay>
                                </DelayModel>
                                <ExtraLoss>0</ExtraLoss>
			</Path>
		</ChannelModel>
	</Channel>
</ChannelDef>

Any channel that is not defined explicitly will be created using this default single-path definition. Thus, we need to provide a definition for each multipath channel. Here is an example ("nodew1" and "nodew2" are user-defined hostnames; they need to be consistent with the name in ns-script):

<Channel src="nodew1" dest="nodew2">
	<ChannelModel type="PathBased">
		<Path>
			<LossModel type="LogDistance">
				<d0>1</d0>
				<p1d0>40.0</p1d0>
				<n>4.1</n>
			</LossModel>
			<FadingModel type="Null">
			</FadingModel>
			<DelayModel type="Fixed">
				<delay>0</delay>
			</DelayModel>
			<ExtraLoss>0</ExtraLoss>
		</Path>
		<Path>
			<LossModel type="LogDistance">
				<d0>1</d0>
				<p1d0>40.0</p1d0>
				<n>4.1</n>
			</LossModel>
			<FadingModel type="Null">
			</FadingModel>
			<DelayModel type="Fixed">
				<delay>0</delay>
			</DelayModel>
			<ExtraLoss>0</ExtraLoss>
		</Path>
		<Path>
			<LossModel type="LogDistance">
				<d0>1</d0>
				<p1d0>40.0</p1d0>
				<n>4.1</n>
			</LossModel>
			<FadingModel type="Null">
			</FadingModel>
			<DelayModel type="Fixed">
				<delay>0</delay>
			</DelayModel>
			<ExtraLoss>0</ExtraLoss>
		</Path>
	</ChannelModel>
</Channel>
You need to overwrite the default definition for all multipath channels you want to use.

Option II: Create Definition for Multipath Channel If all your multipath channels have the same features, you can create a definition for this kind of channel, and refer to that definition later when specifying channels. This way, you only need to specify channel features once and avoid replica in the configuration file and possible inconsistencies. Here is an example of a multipath channel definition:

	<ChannelDef>
		<name>multipath100</name>
		<Channel>
			<ChannelModel type="PathBased">
				<Path>
					<LossModel type="LogDistance">
						<d0>1</d0>
						<p1d0>40.0</p1d0>
						<n>4.1</n>
					</LossModel>
					<FadingModel type="Ricean">
						<k>3</k>
						<minSpeed>0.1</minSpeed>
					</FadingModel>
					<DelayModel type="Manual">
						<delay>0</delay>
						<minDelay>0</minDelay>
						<maxDelay>36</maxDelay>
					</DelayModel>
					<ExtraLoss>0</ExtraLoss>
				</Path>
				<Path>
					<LossModel type="Manual">
						<loss>Infinity</loss>
					</LossModel>
					<FadingModel type="Null">
					</FadingModel>
					<DelayModel type="Manual">
						<delay>0</delay>
						<minDelay>0</minDelay>
						<maxDelay>36</maxDelay>
					</DelayModel>
					<ExtraLoss>0</ExtraLoss>
				</Path>
				<Path>
					<LossModel type="Manual">
						<loss>Infinity</loss>
					</LossModel>
					<FadingModel type="Null">
					</FadingModel>
					<DelayModel type="Manual">
						<delay>0</delay>
						<minDelay>0</minDelay>
						<maxDelay>36</maxDelay>
					</DelayModel>
					<ExtraLoss>0</ExtraLoss>
				</Path>
			</ChannelModel>
		</Channel>
	</ChannelDef>

Now, we need to specify channels based on previous definition:

	<Channel src="nodew1" dest="nodew2" useDef='multipath100'>        </Channel>
	<Channel src="nodew2" dest="nodew1" useDef='multipath100'>        </Channel>
	<Channel src="nodew1" dest="nodew3" useDef='multipath100'>        </Channel>
	<Channel src="nodew3" dest="nodew1" useDef='multipath100'>        </Channel>
	<Channel src="nodew2" dest="nodew3" useDef='multipath100'>        </Channel>
	<Channel src="nodew3" dest="nodew2" useDef='multipath100'>        </Channel>

Option III: Create Definition Using Java You can also configure multipath channels directly from Java. An example can be found in /run/examples/manualChannelsProg. --->

In order to have realistic channel model, we suggest users have the same definition for two channels between a pair of pcs, as "channel reciprocity" specifies that channels are symmetric between a pair of nodes. Of course, this is your call.

Multipath Display in GUI

For multipath channels, the graphical user interface will show two additional paths (still numbered as path0, but actually should be path1 and path2). Here is an example of a multipath channel with 3 paths; each has a fixed loss of 70dB with Ricean fading.