<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://134.74.112.6/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dmitrii</id>
		<title>Zheng Peng's Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://134.74.112.6/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dmitrii"/>
		<link rel="alternate" type="text/html" href="http://134.74.112.6/mediawiki/index.php/Special:Contributions/Dmitrii"/>
		<updated>2026-04-28T20:15:54Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.29.1</generator>

	<entry>
		<id>http://134.74.112.6/mediawiki/index.php?title=Install_and_run_Aqua-Sim-NG_code&amp;diff=138</id>
		<title>Install and run Aqua-Sim-NG code</title>
		<link rel="alternate" type="text/html" href="http://134.74.112.6/mediawiki/index.php?title=Install_and_run_Aqua-Sim-NG_code&amp;diff=138"/>
				<updated>2018-08-17T13:51:54Z</updated>
		
		<summary type="html">&lt;p&gt;Dmitrii: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How-To build ns-3 + aqua-sim==&lt;br /&gt;
&lt;br /&gt;
* download and unpack ns-3.27 source code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;wget http://www.nsnam.org/release/ns-allinone-3.27.tar.bz2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;tar xjf ns-allinone-3.27.tar.bz2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Aqua-Sim-NG has been tested with ns-3.27. The higher versions of ns-3 (i.e., 3.28, 3.29) might not be compilable with aqua-sim modules.&lt;br /&gt;
&lt;br /&gt;
* get aqua-sim source code:&lt;br /&gt;
&lt;br /&gt;
- move to ../src directory of ns-3:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cd &amp;quot;ns-3_working_dir/ns-3.27/src/&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- for multichannel MAC development:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;git clone https://github.com/dugdmitry/aqua-sim-ng.git&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- original version from main repository:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;git clone https://github.com/rmartin5/aqua-sim-ng.git&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* build ns-3 with aqua-sim source code:&lt;br /&gt;
&lt;br /&gt;
- change to ns-3 working directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cd &amp;quot;ns-3_working_dir/ns-3.27/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- configure and build using &amp;quot;waf&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./waf clean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./waf configure --build-profile=debug --enable-examples&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./waf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How-To run examples ==&lt;br /&gt;
&lt;br /&gt;
After building ns-3 + aqua-sim, simulation scripts can be run using &amp;lt;code&amp;gt;./waf --run 'script_name'&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
The scripts are located in &amp;lt;code&amp;gt;/scratch&amp;lt;/code&amp;gt; folder, and also in &amp;lt;code&amp;gt;examples&amp;lt;/code&amp;gt; folders of the corresponding ns-3 models, located in &amp;lt;code&amp;gt;src/&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
E.g., the corresponding examples of aqua-sim models are located in &amp;lt;code&amp;gt;../src/aqua-sim-ng/examples/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Names of the scripts to execute may differ from the names of the corresponding .cc files.&lt;br /&gt;
&lt;br /&gt;
For example, in order to run &amp;quot;../src/aqua-sim-ng/examples/multichannel_mac_example.cc&amp;quot; script, the following command should be executed:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./waf --run ./waf --run MultichannelMacExample&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'script_source_name.cc' and corresponding 'script_name' mapping can be found in &amp;quot;../src/model_name/examples/wscript&amp;quot; file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Running multichannel MAC example ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./waf --run &amp;quot;MultichannelMacExample --packetSize=50 --channelId=1 --RngRun=11&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The command above will run a script for multichannel MAC example, with OnOffApplication's packet size of 50 Bytes,&lt;br /&gt;
on channel 1.&lt;br /&gt;
&lt;br /&gt;
'RngRun' parameter defines a seed value of the pseudo-random generator during the script execution. Simulation results can be repeated using the same 'RngRun' value.&lt;/div&gt;</summary>
		<author><name>Dmitrii</name></author>	</entry>

	<entry>
		<id>http://134.74.112.6/mediawiki/index.php?title=Install_and_run_Aqua-Sim-NG_code&amp;diff=137</id>
		<title>Install and run Aqua-Sim-NG code</title>
		<link rel="alternate" type="text/html" href="http://134.74.112.6/mediawiki/index.php?title=Install_and_run_Aqua-Sim-NG_code&amp;diff=137"/>
				<updated>2018-08-17T13:41:45Z</updated>
		
		<summary type="html">&lt;p&gt;Dmitrii: /* How-To */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How-To build ns-3 + aqua-sim==&lt;br /&gt;
&lt;br /&gt;
* download and unpack ns-3.27 source code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;wget http://www.nsnam.org/release/ns-allinone-3.27.tar.bz2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;tar xjf ns-allinone-3.27.tar.bz2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Aqua-Sim-NG has been tested with ns-3.27. The higher versions of ns-3 (i.e., 3.28, 3.29) might not be compilable with aqua-sim modules.&lt;br /&gt;
&lt;br /&gt;
* get aqua-sim source code:&lt;br /&gt;
&lt;br /&gt;
- move to ../src directory of ns-3:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cd &amp;quot;ns-3_working_dir/ns-3.27/src/&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- for multichannel MAC development:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;git clone https://github.com/dugdmitry/aqua-sim-ng.git&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- original version from main repository:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;git clone https://github.com/rmartin5/aqua-sim-ng.git&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* build ns-3 with aqua-sim source code:&lt;br /&gt;
&lt;br /&gt;
- change to ns-3 working directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cd &amp;quot;ns-3_working_dir/ns-3.27/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- configure and build using &amp;quot;waf&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./waf clean&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./waf configure --build-profile=debug --enable-examples&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./waf&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How-To run examples ==&lt;br /&gt;
&lt;br /&gt;
After building ns-3 + aqua-sim, simulation scripts can be run using &amp;lt;code&amp;gt;./waf --run 'script_name'&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
The scripts are located in &amp;quot;/scratch&amp;quot; folder, and also in &amp;quot;examples&amp;quot; folders of the corresponding ns-3 models, located in &amp;quot;src/&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
E.g., the corresponding examples of aqua-sim models are located in &amp;lt;code&amp;gt;../src/aqua-sim-ng/examples/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Names of the scripts to execute may differ from the names of the corresponding .cc files.&lt;br /&gt;
&lt;br /&gt;
For example, in order to run &amp;quot;../src/aqua-sim-ng/examples/multichannel_mac_example.cc&amp;quot; script, the following command should be executed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;./waf --run ./waf --run MultichannelMacExample&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'script_source_name.cc' and corresponding 'script_name' mapping can be found in &amp;quot;../src/model_name/examples/wscript&amp;quot; file.&lt;/div&gt;</summary>
		<author><name>Dmitrii</name></author>	</entry>

	<entry>
		<id>http://134.74.112.6/mediawiki/index.php?title=Install_and_run_Aqua-Sim-NG_code&amp;diff=136</id>
		<title>Install and run Aqua-Sim-NG code</title>
		<link rel="alternate" type="text/html" href="http://134.74.112.6/mediawiki/index.php?title=Install_and_run_Aqua-Sim-NG_code&amp;diff=136"/>
				<updated>2018-08-17T13:21:01Z</updated>
		
		<summary type="html">&lt;p&gt;Dmitrii: Created page with &amp;quot;== How-To ==  * download and unpack ns-3.27 source code:  &amp;lt;code&amp;gt;wget http://www.nsnam.org/release/ns-allinone-3.27.tar.bz2&amp;lt;/code&amp;gt;  &amp;lt;code&amp;gt;tar xjf ns-allinone-3.27.tar.bz2&amp;lt;/code...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How-To ==&lt;br /&gt;
&lt;br /&gt;
* download and unpack ns-3.27 source code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;wget http://www.nsnam.org/release/ns-allinone-3.27.tar.bz2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;tar xjf ns-allinone-3.27.tar.bz2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Aqua-Sim-NG has been tested with ns-3.27. The higher versions of ns-3 (i.e., 3.28, 3.29) might not be compilable with aqua-sim modules.&lt;br /&gt;
&lt;br /&gt;
* get aqua-sim source code:&lt;br /&gt;
&lt;br /&gt;
- move to ../src directory of ns-3:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;cd &amp;quot;ns-3_working_dir/src/&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- for multichannel MAC development:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;git clone https://github.com/dugdmitry/aqua-sim-ng.git&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- original version from main repository:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;git clone https://github.com/rmartin5/aqua-sim-ng.git&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* build ns-3 with aqua-sim source code:&lt;/div&gt;</summary>
		<author><name>Dmitrii</name></author>	</entry>

	<entry>
		<id>http://134.74.112.6/mediawiki/index.php?title=Main_Page&amp;diff=135</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://134.74.112.6/mediawiki/index.php?title=Main_Page&amp;diff=135"/>
				<updated>2018-08-17T10:51:01Z</updated>
		
		<summary type="html">&lt;p&gt;Dmitrii: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Aqua-Net]]&lt;br /&gt;
&lt;br /&gt;
[[Aqua-Sim]]&lt;br /&gt;
&lt;br /&gt;
[[Aqua-3D]]&lt;br /&gt;
&lt;br /&gt;
[[Aqua-Sim NG]]&lt;br /&gt;
&lt;br /&gt;
[[Aqua-Lab]]&lt;br /&gt;
&lt;br /&gt;
[[Aqua-OS]]&lt;br /&gt;
&lt;br /&gt;
[[Aqua-fModem]]&lt;br /&gt;
&lt;br /&gt;
== Current Development ==&lt;br /&gt;
&lt;br /&gt;
[[Aqua-Sim-NG multichannel MAC implementation]]&lt;br /&gt;
&lt;br /&gt;
[[Install and run Aqua-Sim-NG code]]&lt;/div&gt;</summary>
		<author><name>Dmitrii</name></author>	</entry>

	<entry>
		<id>http://134.74.112.6/mediawiki/index.php?title=Main_Page&amp;diff=134</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://134.74.112.6/mediawiki/index.php?title=Main_Page&amp;diff=134"/>
				<updated>2018-08-17T10:50:49Z</updated>
		
		<summary type="html">&lt;p&gt;Dmitrii: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Aqua-Net]]&lt;br /&gt;
&lt;br /&gt;
[[Aqua-Sim]]&lt;br /&gt;
&lt;br /&gt;
[[Aqua-3D]]&lt;br /&gt;
&lt;br /&gt;
[[Aqua-Sim NG]]&lt;br /&gt;
&lt;br /&gt;
[[Aqua-Lab]]&lt;br /&gt;
&lt;br /&gt;
[[Aqua-OS]]&lt;br /&gt;
&lt;br /&gt;
[[Aqua-fModem]]&lt;br /&gt;
&lt;br /&gt;
== Current Development ==&lt;br /&gt;
&lt;br /&gt;
[[Aqua-Sim-NG multichannel MAC implementation]]&lt;br /&gt;
[[Install and run Aqua-Sim-NG code]]&lt;/div&gt;</summary>
		<author><name>Dmitrii</name></author>	</entry>

	<entry>
		<id>http://134.74.112.6/mediawiki/index.php?title=Aqua-Sim-NG_multichannel_MAC_implementation&amp;diff=133</id>
		<title>Aqua-Sim-NG multichannel MAC implementation</title>
		<link rel="alternate" type="text/html" href="http://134.74.112.6/mediawiki/index.php?title=Aqua-Sim-NG_multichannel_MAC_implementation&amp;diff=133"/>
				<updated>2018-08-08T11:12:43Z</updated>
		
		<summary type="html">&lt;p&gt;Dmitrii: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Multichannel MAC implementation ==&lt;br /&gt;
&lt;br /&gt;
* new &amp;lt;code&amp;gt;aqua-sim-mac-multichannel&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
Modified &amp;lt;code&amp;gt;TxProcess&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;RecvProcess&amp;lt;/code&amp;gt; methods of the &amp;lt;code&amp;gt;AquaSimMac&amp;lt;/code&amp;gt; base class. Added channel division on N number of subchannels, depending on given bandwidth. By default, the following bandwidth is used and the following subchannels are created:&lt;br /&gt;
&lt;br /&gt;
* bandwidth: 10 - 40 kHz&lt;br /&gt;
* step frequency: 3 kHz&lt;br /&gt;
* N of subchannels: 10&lt;br /&gt;
&lt;br /&gt;
The following &amp;lt;code&amp;gt;channel_id:frequency&amp;lt;/code&amp;gt; map is generated:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;channel_1 : 10 kHz&amp;amp;gt;, &amp;amp;lt;channel_2 : 13 kHz&amp;amp;gt;, …, &amp;amp;lt;channel_10 : 37 kHz&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
* modified &amp;lt;code&amp;gt;aqua-sim-phy-cmn&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
Modified &amp;lt;code&amp;gt;recv()&amp;lt;/code&amp;gt; method of &amp;lt;code&amp;gt;AquaSimPhyCmn&amp;lt;/code&amp;gt; class, which is used for both transmission and reception of the scheduled packet. The modified &amp;lt;code&amp;gt;recv()&amp;lt;/code&amp;gt; method has a new argument - frequency, and is executed by upper multichannel-mac module, depending on the selected channel_id.&lt;br /&gt;
&lt;br /&gt;
* modified &amp;lt;code&amp;gt;aqua-sim-channel&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
Modified &amp;lt;code&amp;gt;SendUp()&amp;lt;/code&amp;gt; method of &amp;lt;code&amp;gt;AquaSimChannel&amp;lt;/code&amp;gt; class. Now this method gets a frequency value of the incoming packet, using &amp;lt;code&amp;gt;AquaSimPacketStamp&amp;lt;/code&amp;gt; class and inserts it into the &amp;lt;code&amp;gt;::Recv()&amp;lt;/code&amp;gt; method of the &amp;lt;code&amp;gt;AquaSimPhyCmn&amp;lt;/code&amp;gt; upon execution in the Scheduler.&lt;br /&gt;
&lt;br /&gt;
== Initial tests ==&lt;br /&gt;
&lt;br /&gt;
For the initial tests the following simulation scenario was used:&lt;br /&gt;
&lt;br /&gt;
“node_1 (sender)” &amp;amp;lt;— 10m distance —&amp;amp;gt; “node_2 (sink)”&lt;br /&gt;
&lt;br /&gt;
The following stack was used on both nodes: - OnOffApplication — OffTime: 0, OnTime: 1 - Routing — Dummy (for MAC layer testing) - MultichannelMac — default bandwidth (10 - 40 kHz), 10 subchannels, 3kHz frequency step - PhyCmn — modified PhyCmn module&lt;br /&gt;
&lt;br /&gt;
Some other parameters: - Simulation time: 10 seconds - Transmission range: 100 meters (for Phy module) - Distance: 10 meters (Mobility model)&lt;br /&gt;
&lt;br /&gt;
In all tests a throughput was measured by defining an application data rate, higher than possible capacity of the given channel:&lt;br /&gt;
&lt;br /&gt;
'''80 kbps''' &amp;lt;code&amp;gt;dataRate&amp;lt;/code&amp;gt; parameter of &amp;lt;code&amp;gt;OnOffApplication&amp;lt;/code&amp;gt;. Thus, the throughput was measured by counting a total amount of received packets:&lt;br /&gt;
&lt;br /&gt;
throughput = total_received_packets * packet_size * 8 / 10, [bps]&lt;br /&gt;
&lt;br /&gt;
where: 10 - simulation time, seconds.&lt;br /&gt;
&lt;br /&gt;
=== 1-st test ===&lt;br /&gt;
&lt;br /&gt;
A single channel was used during entire simulation. - channel_id: 1, frequency: 10 kHz.&lt;br /&gt;
&lt;br /&gt;
The throughput was measured, depending on varying packet length. The result is plotted on Fig.1.&lt;br /&gt;
&lt;br /&gt;
[[File:throughput_1_channel.png]] Fig.1&lt;br /&gt;
&lt;br /&gt;
Corresponding sent/received packet count is illustrated on Fig.2.&lt;br /&gt;
&lt;br /&gt;
[[File:packet_count_1_channel.png]] Fig.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2-nd test ===&lt;br /&gt;
&lt;br /&gt;
During the simulation, various channels were used in the following “round-robin” way:&lt;br /&gt;
&lt;br /&gt;
* 1_packet: channel_1 (10kHz)&lt;br /&gt;
* 2_packet: channel_2 (13kHz)&lt;br /&gt;
* 3_packet: channel_3 (16kHz)&lt;br /&gt;
* 4_packet: channel_4 (19kHz)&lt;br /&gt;
* 5_packet: channel_5 (22kHz)&lt;br /&gt;
* 6_packet: channel_6 (25kHz)&lt;br /&gt;
* 7_packet: channel_7 (28kHz)&lt;br /&gt;
* 8_packet: channel_8 (31kHz)&lt;br /&gt;
* 9_packet: channel_9 (34kHz)&lt;br /&gt;
* 10_packet: channel_11 (37kHz)&lt;br /&gt;
* 11_packet: channel_1 (10kHz)&lt;br /&gt;
* …. etc.&lt;br /&gt;
&lt;br /&gt;
The throughput is plotted on Fig.3.&lt;br /&gt;
&lt;br /&gt;
[[File:throughput_n_channels.png]] Fig.3&lt;br /&gt;
&lt;br /&gt;
Corresponding sent/received packet count is illustrated on Fig.4.&lt;br /&gt;
&lt;br /&gt;
[[File:packet_count_n_channels.png]] Fig.4&lt;br /&gt;
&lt;br /&gt;
Code of simulation script can be found here:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dugdmitry/aqua-sim-ng/blob/master/examples/multichannel_mac_example.cc multichannel_mac_example.cc]&lt;/div&gt;</summary>
		<author><name>Dmitrii</name></author>	</entry>

	<entry>
		<id>http://134.74.112.6/mediawiki/index.php?title=Aqua-Sim-NG_multichannel_MAC_implementation&amp;diff=132</id>
		<title>Aqua-Sim-NG multichannel MAC implementation</title>
		<link rel="alternate" type="text/html" href="http://134.74.112.6/mediawiki/index.php?title=Aqua-Sim-NG_multichannel_MAC_implementation&amp;diff=132"/>
				<updated>2018-08-08T11:11:21Z</updated>
		
		<summary type="html">&lt;p&gt;Dmitrii: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Multichannel MAC implementation ==&lt;br /&gt;
&lt;br /&gt;
* new &amp;lt;code&amp;gt;aqua-sim-mac-multichannel&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
Modified &amp;lt;code&amp;gt;TxProcess&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;RecvProcess&amp;lt;/code&amp;gt; methods of the &amp;lt;code&amp;gt;AquaSimMac&amp;lt;/code&amp;gt; base class. Added channel division on N number of subchannels, depending on given bandwidth. By default, the following bandwidth is used and the following subchannels are created:&lt;br /&gt;
&lt;br /&gt;
* bandwidth: 10 - 40 kHz&lt;br /&gt;
* step frequency: 3 kHz&lt;br /&gt;
* N of subchannels: 10&lt;br /&gt;
&lt;br /&gt;
The following &amp;lt;code&amp;gt;channel_id:frequency&amp;lt;/code&amp;gt; map is generated:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;channel_1 : 10 kHz&amp;amp;gt;, &amp;amp;lt;channel_2 : 13 kHz&amp;amp;gt;, …, &amp;amp;lt;channel_10 : 37 kHz&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
* modified &amp;lt;code&amp;gt;aqua-sim-phy-cmn&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
Modified &amp;lt;code&amp;gt;recv()&amp;lt;/code&amp;gt; method of &amp;lt;code&amp;gt;AquaSimPhyCmn&amp;lt;/code&amp;gt; class, which is used for both transmission and reception of the scheduled packet. The modified &amp;lt;code&amp;gt;recv()&amp;lt;/code&amp;gt; method has a new argument - frequency, and is executed by upper multichannel-mac module, depending on the selected channel_id.&lt;br /&gt;
&lt;br /&gt;
* modified &amp;lt;code&amp;gt;aqua-sim-channel&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
Modified &amp;lt;code&amp;gt;SendUp()&amp;lt;/code&amp;gt; method of &amp;lt;code&amp;gt;AquaSimChannel&amp;lt;/code&amp;gt; class. Now this method gets a frequency value of the incoming packet, using &amp;lt;code&amp;gt;AquaSimPacketStamp&amp;lt;/code&amp;gt; class and inserts it into the &amp;lt;code&amp;gt;::Recv()&amp;lt;/code&amp;gt; method of the &amp;lt;code&amp;gt;AquaSimPhyCmn&amp;lt;/code&amp;gt; upon execution in the Scheduler.&lt;br /&gt;
&lt;br /&gt;
== Initial tests ==&lt;br /&gt;
&lt;br /&gt;
For the initial tests the following simulation scenario was used:&lt;br /&gt;
&lt;br /&gt;
“node_1 (sender)” &amp;amp;lt;— 10m distance —&amp;amp;gt; “node_2 (sink)”&lt;br /&gt;
&lt;br /&gt;
The following stack was used on both nodes: - OnOffApplication — OffTime: 0, OnTime: 1 - Routing — Dummy (for MAC layer testing) - MultichannelMac — default bandwidth (10 - 40 kHz), 10 subchannels, 3kHz frequency step - PhyCmn — modified PhyCmn module&lt;br /&gt;
&lt;br /&gt;
Some other parameters: - Simulation time: 10 seconds - Transmission range: 100 meters (for Phy module) - Distance: 10 meters (Mobility model)&lt;br /&gt;
&lt;br /&gt;
In all tests a throughput was measured by defining an application data rate, higher than possible capacity of the given channel:&lt;br /&gt;
&lt;br /&gt;
'''80 kbps''' &amp;lt;code&amp;gt;dataRate&amp;lt;/code&amp;gt; parameter of &amp;lt;code&amp;gt;OnOffApplication&amp;lt;/code&amp;gt;. Thus, the throughput was measured by counting a total amount of received packets:&lt;br /&gt;
&lt;br /&gt;
throughput = total_received_packets * packet_size * 8 / 10, [bps]&lt;br /&gt;
&lt;br /&gt;
where: 10 - simulation time, seconds.&lt;br /&gt;
&lt;br /&gt;
=== 1-st test ===&lt;br /&gt;
&lt;br /&gt;
A single channel was used during entire simulation. - channel_id: 1, frequency: 10 kHz.&lt;br /&gt;
&lt;br /&gt;
The throughput was measured, depending on varying packet length. The result is plotted on Fig.1.&lt;br /&gt;
&lt;br /&gt;
[[File:throughput_1_channel.png]] Fig.1&lt;br /&gt;
&lt;br /&gt;
Corresponding sent/received packet count is illustrated on Fig.2.&lt;br /&gt;
&lt;br /&gt;
[[File:packet_count_1_channel.png]] Fig.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2-nd test ===&lt;br /&gt;
&lt;br /&gt;
During the simulation, various channels were used in the following “round-robin” way:&lt;br /&gt;
&lt;br /&gt;
* 1_packet: channel_1 (10kHz)&lt;br /&gt;
* 2_packet: channel_2 (13kHz)&lt;br /&gt;
* 3_packet: channel_3 (16kHz)&lt;br /&gt;
* 4_packet: channel_4 (19kHz)&lt;br /&gt;
* 5_packet: channel_5 (22kHz)&lt;br /&gt;
* 6_packet: channel_6 (25kHz)&lt;br /&gt;
* 7_packet: channel_7 (28kHz)&lt;br /&gt;
* 8_packet: channel_8 (31kHz)&lt;br /&gt;
* 9_packet: channel_9 (34kHz)&lt;br /&gt;
* 10_packet: channel_11 (37kHz)&lt;br /&gt;
* 11_packet: channel_1 (10kHz)&lt;br /&gt;
* …. etc.&lt;br /&gt;
&lt;br /&gt;
The throughput is plotted on Fig.3.&lt;br /&gt;
&lt;br /&gt;
[[File:throughput_n_channels.png]] Fig.3&lt;br /&gt;
&lt;br /&gt;
Corresponding sent/received packet count is illustrated on Fig.4.&lt;br /&gt;
&lt;br /&gt;
[[File:packet_count_n_channels.png]] Fig.4&lt;br /&gt;
&lt;br /&gt;
Code of simulation script can be found here:&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dugdmitry/aqua-sim-ng/blob/master/examples/multichannel_mac_example.cc]&lt;/div&gt;</summary>
		<author><name>Dmitrii</name></author>	</entry>

	<entry>
		<id>http://134.74.112.6/mediawiki/index.php?title=Aqua-Sim-NG_multichannel_MAC_implementation&amp;diff=131</id>
		<title>Aqua-Sim-NG multichannel MAC implementation</title>
		<link rel="alternate" type="text/html" href="http://134.74.112.6/mediawiki/index.php?title=Aqua-Sim-NG_multichannel_MAC_implementation&amp;diff=131"/>
				<updated>2018-08-08T11:10:48Z</updated>
		
		<summary type="html">&lt;p&gt;Dmitrii: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Multichannel MAC implementation ==&lt;br /&gt;
&lt;br /&gt;
* new &amp;lt;code&amp;gt;aqua-sim-mac-multichannel&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
Modified &amp;lt;code&amp;gt;TxProcess&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;RecvProcess&amp;lt;/code&amp;gt; methods of the &amp;lt;code&amp;gt;AquaSimMac&amp;lt;/code&amp;gt; base class. Added channel division on N number of subchannels, depending on given bandwidth. By default, the following bandwidth is used and the following subchannels are created:&lt;br /&gt;
&lt;br /&gt;
* bandwidth: 10 - 40 kHz&lt;br /&gt;
* step frequency: 3 kHz&lt;br /&gt;
* N of subchannels: 10&lt;br /&gt;
&lt;br /&gt;
The following &amp;lt;code&amp;gt;channel_id:frequency&amp;lt;/code&amp;gt; map is generated:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;channel_1 : 10 kHz&amp;amp;gt;, &amp;amp;lt;channel_2 : 13 kHz&amp;amp;gt;, …, &amp;amp;lt;channel_10 : 37 kHz&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
* modified &amp;lt;code&amp;gt;aqua-sim-phy-cmn&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
Modified &amp;lt;code&amp;gt;recv()&amp;lt;/code&amp;gt; method of &amp;lt;code&amp;gt;AquaSimPhyCmn&amp;lt;/code&amp;gt; class, which is used for both transmission and reception of the scheduled packet. The modified &amp;lt;code&amp;gt;recv()&amp;lt;/code&amp;gt; method has a new argument - frequency, and is executed by upper multichannel-mac module, depending on the selected channel_id.&lt;br /&gt;
&lt;br /&gt;
* modified &amp;lt;code&amp;gt;aqua-sim-channel&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
Modified &amp;lt;code&amp;gt;SendUp()&amp;lt;/code&amp;gt; method of &amp;lt;code&amp;gt;AquaSimChannel&amp;lt;/code&amp;gt; class. Now this method gets a frequency value of the incoming packet, using &amp;lt;code&amp;gt;AquaSimPacketStamp&amp;lt;/code&amp;gt; class and inserts it into the &amp;lt;code&amp;gt;::Recv()&amp;lt;/code&amp;gt; method of the &amp;lt;code&amp;gt;AquaSimPhyCmn&amp;lt;/code&amp;gt; upon execution in the Scheduler.&lt;br /&gt;
&lt;br /&gt;
== Initial tests ==&lt;br /&gt;
&lt;br /&gt;
For the initial tests the following simulation scenario was used:&lt;br /&gt;
&lt;br /&gt;
“node_1 (sender)” &amp;amp;lt;— 10m distance —&amp;amp;gt; “node_2 (sink)”&lt;br /&gt;
&lt;br /&gt;
The following stack was used on both nodes: - OnOffApplication — OffTime: 0, OnTime: 1 - Routing — Dummy (for MAC layer testing) - MultichannelMac — default bandwidth (10 - 40 kHz), 10 subchannels, 3kHz frequency step - PhyCmn — modified PhyCmn module&lt;br /&gt;
&lt;br /&gt;
Some other parameters: - Simulation time: 10 seconds - Transmission range: 100 meters (for Phy module) - Distance: 10 meters (Mobility model)&lt;br /&gt;
&lt;br /&gt;
In all tests a throughput was measured by defining an application data rate, higher than possible capacity of the given channel:&lt;br /&gt;
&lt;br /&gt;
'''80 kbps''' &amp;lt;code&amp;gt;dataRate&amp;lt;/code&amp;gt; parameter of &amp;lt;code&amp;gt;OnOffApplication&amp;lt;/code&amp;gt;. Thus, the throughput was measured by counting a total amount of received packets:&lt;br /&gt;
&lt;br /&gt;
throughput = total_received_packets * packet_size * 8 / 10, [bps]&lt;br /&gt;
&lt;br /&gt;
where: 10 - simulation time, seconds.&lt;br /&gt;
&lt;br /&gt;
=== 1-st test ===&lt;br /&gt;
&lt;br /&gt;
A single channel was used during entire simulation. - channel_id: 1, frequency: 10 kHz.&lt;br /&gt;
&lt;br /&gt;
The throughput was measured, depending on varying packet length. The result is plotted on Fig.1.&lt;br /&gt;
&lt;br /&gt;
[[File:throughput_1_channel.png]] Fig.1&lt;br /&gt;
&lt;br /&gt;
Corresponding sent/received packet count is illustrated on Fig.2.&lt;br /&gt;
&lt;br /&gt;
[[File:packet_count_1_channel.png]] Fig.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2-nd test ===&lt;br /&gt;
&lt;br /&gt;
During the simulation, various channels were used in the following “round-robin” way:&lt;br /&gt;
&lt;br /&gt;
* 1_packet: channel_1 (10kHz)&lt;br /&gt;
* 2_packet: channel_2 (13kHz)&lt;br /&gt;
* 3_packet: channel_3 (16kHz)&lt;br /&gt;
* 4_packet: channel_4 (19kHz)&lt;br /&gt;
* 5_packet: channel_5 (22kHz)&lt;br /&gt;
* 6_packet: channel_6 (25kHz)&lt;br /&gt;
* 7_packet: channel_7 (28kHz)&lt;br /&gt;
* 8_packet: channel_8 (31kHz)&lt;br /&gt;
* 9_packet: channel_9 (34kHz)&lt;br /&gt;
* 10_packet: channel_11 (37kHz)&lt;br /&gt;
* 11_packet: channel_1 (10kHz)&lt;br /&gt;
* …. etc.&lt;br /&gt;
&lt;br /&gt;
The throughput is plotted on Fig.3.&lt;br /&gt;
&lt;br /&gt;
[[File:throughput_n_channels.png]] Fig.3&lt;br /&gt;
&lt;br /&gt;
Corresponding sent/received packet count is illustrated on Fig.4.&lt;br /&gt;
&lt;br /&gt;
[[File:packet_count_n_channels.png]] Fig.4&lt;br /&gt;
&lt;br /&gt;
Code of simulation script can be found here:&lt;br /&gt;
&lt;br /&gt;
[[https://github.com/dugdmitry/aqua-sim-ng/blob/master/examples/multichannel_mac_example.cc]]&lt;/div&gt;</summary>
		<author><name>Dmitrii</name></author>	</entry>

	<entry>
		<id>http://134.74.112.6/mediawiki/index.php?title=Aqua-Sim-NG_multichannel_MAC_implementation&amp;diff=130</id>
		<title>Aqua-Sim-NG multichannel MAC implementation</title>
		<link rel="alternate" type="text/html" href="http://134.74.112.6/mediawiki/index.php?title=Aqua-Sim-NG_multichannel_MAC_implementation&amp;diff=130"/>
				<updated>2018-08-08T11:09:39Z</updated>
		
		<summary type="html">&lt;p&gt;Dmitrii: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Multichannel MAC implementation ==&lt;br /&gt;
&lt;br /&gt;
* new &amp;lt;code&amp;gt;aqua-sim-mac-multichannel&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
Modified &amp;lt;code&amp;gt;TxProcess&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;RecvProcess&amp;lt;/code&amp;gt; methods of the &amp;lt;code&amp;gt;AquaSimMac&amp;lt;/code&amp;gt; base class. Added channel division on N number of subchannels, depending on given bandwidth. By default, the following bandwidth is used and the following subchannels are created:&lt;br /&gt;
&lt;br /&gt;
* bandwidth: 10 - 40 kHz&lt;br /&gt;
* step frequency: 3 kHz&lt;br /&gt;
* N of subchannels: 10&lt;br /&gt;
&lt;br /&gt;
The following &amp;lt;code&amp;gt;channel_id:frequency&amp;lt;/code&amp;gt; map is generated:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;channel_1 : 10 kHz&amp;amp;gt;, &amp;amp;lt;channel_2 : 13 kHz&amp;amp;gt;, …, &amp;amp;lt;channel_10 : 37 kHz&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
* modified &amp;lt;code&amp;gt;aqua-sim-phy-cmn&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
Modified &amp;lt;code&amp;gt;recv()&amp;lt;/code&amp;gt; method of &amp;lt;code&amp;gt;AquaSimPhyCmn&amp;lt;/code&amp;gt; class, which is used for both transmission and reception of the scheduled packet. The modified &amp;lt;code&amp;gt;recv()&amp;lt;/code&amp;gt; method has a new argument - frequency, and is executed by upper multichannel-mac module, depending on the selected channel_id.&lt;br /&gt;
&lt;br /&gt;
* modified &amp;lt;code&amp;gt;aqua-sim-channel&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
Modified &amp;lt;code&amp;gt;SendUp()&amp;lt;/code&amp;gt; method of &amp;lt;code&amp;gt;AquaSimChannel&amp;lt;/code&amp;gt; class. Now this method gets a frequency value of the incoming packet, using &amp;lt;code&amp;gt;AquaSimPacketStamp&amp;lt;/code&amp;gt; class and inserts it into the &amp;lt;code&amp;gt;::Recv()&amp;lt;/code&amp;gt; method of the &amp;lt;code&amp;gt;AquaSimPhyCmn&amp;lt;/code&amp;gt; upon execution in the Scheduler.&lt;br /&gt;
&lt;br /&gt;
== Initial tests ==&lt;br /&gt;
&lt;br /&gt;
For the initial tests the following simulation scenario was used:&lt;br /&gt;
&lt;br /&gt;
“node_1 (sender)” &amp;amp;lt;— 10m distance —&amp;amp;gt; “node_2 (sink)”&lt;br /&gt;
&lt;br /&gt;
The following stack was used on both nodes: - OnOffApplication — OffTime: 0, OnTime: 1 - Routing — Dummy (for MAC layer testing) - MultichannelMac — default bandwidth (10 - 40 kHz), 10 subchannels, 3kHz frequency step - PhyCmn — modified PhyCmn module&lt;br /&gt;
&lt;br /&gt;
Some other parameters: - Simulation time: 10 seconds - Transmission range: 100 meters (for Phy module) - Distance: 10 meters (Mobility model)&lt;br /&gt;
&lt;br /&gt;
In all tests a throughput was measured by defining an application data rate, higher than possible capacity of the given channel:&lt;br /&gt;
&lt;br /&gt;
'''80 kbps''' &amp;lt;code&amp;gt;dataRate&amp;lt;/code&amp;gt; parameter of &amp;lt;code&amp;gt;OnOffApplication&amp;lt;/code&amp;gt;. Thus, the throughput was measured by counting a total amount of received packets:&lt;br /&gt;
&lt;br /&gt;
throughput = total_received_packets * packet_size * 8 / 10, [bps]&lt;br /&gt;
&lt;br /&gt;
where: 10 - simulation time, seconds.&lt;br /&gt;
&lt;br /&gt;
=== 1-st test ===&lt;br /&gt;
&lt;br /&gt;
A single channel was used during entire simulation. - channel_id: 1, frequency: 10 kHz.&lt;br /&gt;
&lt;br /&gt;
The throughput was measured, depending on varying packet length. The result is plotted on Fig.1.&lt;br /&gt;
&lt;br /&gt;
[[File:throughput_1_channel.png]]&lt;br /&gt;
&lt;br /&gt;
Corresponding sent/received packet count is illustrated on Fig.2.&lt;br /&gt;
&lt;br /&gt;
[[File:packet_count_1_channel,png]] Fig.2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 2-nd test ===&lt;br /&gt;
&lt;br /&gt;
During the simulation, various channels were used in the following “round-robin” way:&lt;br /&gt;
&lt;br /&gt;
* 1_packet: channel_1 (10kHz)&lt;br /&gt;
* 2_packet: channel_2 (13kHz)&lt;br /&gt;
* 3_packet: channel_3 (16kHz)&lt;br /&gt;
* 4_packet: channel_4 (19kHz)&lt;br /&gt;
* 5_packet: channel_5 (22kHz)&lt;br /&gt;
* 6_packet: channel_6 (25kHz)&lt;br /&gt;
* 7_packet: channel_7 (28kHz)&lt;br /&gt;
* 8_packet: channel_8 (31kHz)&lt;br /&gt;
* 9_packet: channel_9 (34kHz)&lt;br /&gt;
* 10_packet: channel_11 (37kHz)&lt;br /&gt;
* 11_packet: channel_1 (10kHz)&lt;br /&gt;
* …. etc.&lt;br /&gt;
&lt;br /&gt;
The throughput is plotted on Fig.3.&lt;br /&gt;
&lt;br /&gt;
[[File:throughput_n_channels,png]] Fig.3&lt;br /&gt;
&lt;br /&gt;
Corresponding sent/received packet count is illustrated on Fig.4.&lt;br /&gt;
&lt;br /&gt;
[[File:packet_count_n_channels.png]] Fig.4&lt;br /&gt;
&lt;br /&gt;
Code of simulation script can be found here:&lt;br /&gt;
&lt;br /&gt;
[[https://github.com/dugdmitry/aqua-sim-ng/blob/master/examples/multichannel_mac_example.cc]]&lt;/div&gt;</summary>
		<author><name>Dmitrii</name></author>	</entry>

	<entry>
		<id>http://134.74.112.6/mediawiki/index.php?title=File:Packet_count_n_channels.png&amp;diff=129</id>
		<title>File:Packet count n channels.png</title>
		<link rel="alternate" type="text/html" href="http://134.74.112.6/mediawiki/index.php?title=File:Packet_count_n_channels.png&amp;diff=129"/>
				<updated>2018-08-08T11:05:53Z</updated>
		
		<summary type="html">&lt;p&gt;Dmitrii: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmitrii</name></author>	</entry>

	<entry>
		<id>http://134.74.112.6/mediawiki/index.php?title=File:Packet_count_1_channel.png&amp;diff=128</id>
		<title>File:Packet count 1 channel.png</title>
		<link rel="alternate" type="text/html" href="http://134.74.112.6/mediawiki/index.php?title=File:Packet_count_1_channel.png&amp;diff=128"/>
				<updated>2018-08-08T11:05:35Z</updated>
		
		<summary type="html">&lt;p&gt;Dmitrii: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmitrii</name></author>	</entry>

	<entry>
		<id>http://134.74.112.6/mediawiki/index.php?title=File:Throughput_n_channels.png&amp;diff=127</id>
		<title>File:Throughput n channels.png</title>
		<link rel="alternate" type="text/html" href="http://134.74.112.6/mediawiki/index.php?title=File:Throughput_n_channels.png&amp;diff=127"/>
				<updated>2018-08-08T11:05:12Z</updated>
		
		<summary type="html">&lt;p&gt;Dmitrii: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmitrii</name></author>	</entry>

	<entry>
		<id>http://134.74.112.6/mediawiki/index.php?title=File:Throughput_1_channel.png&amp;diff=126</id>
		<title>File:Throughput 1 channel.png</title>
		<link rel="alternate" type="text/html" href="http://134.74.112.6/mediawiki/index.php?title=File:Throughput_1_channel.png&amp;diff=126"/>
				<updated>2018-08-08T11:04:25Z</updated>
		
		<summary type="html">&lt;p&gt;Dmitrii: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dmitrii</name></author>	</entry>

	<entry>
		<id>http://134.74.112.6/mediawiki/index.php?title=Aqua-Sim-NG_multichannel_MAC_implementation&amp;diff=125</id>
		<title>Aqua-Sim-NG multichannel MAC implementation</title>
		<link rel="alternate" type="text/html" href="http://134.74.112.6/mediawiki/index.php?title=Aqua-Sim-NG_multichannel_MAC_implementation&amp;diff=125"/>
				<updated>2018-08-08T10:52:12Z</updated>
		
		<summary type="html">&lt;p&gt;Dmitrii: Created page with &amp;quot;== Multichannel MAC implementation ==  * new &amp;lt;code&amp;gt;aqua-sim-mac-multichannel&amp;lt;/code&amp;gt; module:  Modified &amp;lt;code&amp;gt;TxProcess&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;RecvProcess&amp;lt;/code&amp;gt; methods of the &amp;lt;code&amp;gt;...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Multichannel MAC implementation ==&lt;br /&gt;
&lt;br /&gt;
* new &amp;lt;code&amp;gt;aqua-sim-mac-multichannel&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
Modified &amp;lt;code&amp;gt;TxProcess&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;RecvProcess&amp;lt;/code&amp;gt; methods of the &amp;lt;code&amp;gt;AquaSimMac&amp;lt;/code&amp;gt; base class. Added channel division on N number of subchannels, depending on given bandwidth. By default, the following bandwidth is used and the following subchannels are created:&lt;br /&gt;
&lt;br /&gt;
* bandwidth: 10 - 40 kHz&lt;br /&gt;
* step frequency: 3 kHz&lt;br /&gt;
* N of subchannels: 10&lt;br /&gt;
&lt;br /&gt;
The following &amp;lt;code&amp;gt;channel_id:frequency&amp;lt;/code&amp;gt; map is generated:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;channel_1 : 10 kHz&amp;amp;gt;, &amp;amp;lt;channel_2 : 13 kHz&amp;amp;gt;, …, &amp;amp;lt;channel_10 : 37 kHz&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
* modified &amp;lt;code&amp;gt;aqua-sim-phy-cmn&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
Modified &amp;lt;code&amp;gt;recv()&amp;lt;/code&amp;gt; method of &amp;lt;code&amp;gt;AquaSimPhyCmn&amp;lt;/code&amp;gt; class, which is used for both transmission and reception of the scheduled packet. The modified &amp;lt;code&amp;gt;recv()&amp;lt;/code&amp;gt; method has a new argument - frequency, and is executed by upper multichannel-mac module, depending on the selected channel_id.&lt;br /&gt;
&lt;br /&gt;
* modified &amp;lt;code&amp;gt;aqua-sim-channel&amp;lt;/code&amp;gt; module:&lt;br /&gt;
&lt;br /&gt;
Modified &amp;lt;code&amp;gt;SendUp()&amp;lt;/code&amp;gt; method of &amp;lt;code&amp;gt;AquaSimChannel&amp;lt;/code&amp;gt; class. Now this method gets a frequency value of the incoming packet, using &amp;lt;code&amp;gt;AquaSimPacketStamp&amp;lt;/code&amp;gt; class and inserts it into the &amp;lt;code&amp;gt;::Recv()&amp;lt;/code&amp;gt; method of the &amp;lt;code&amp;gt;AquaSimPhyCmn&amp;lt;/code&amp;gt; upon execution in the Scheduler.&lt;br /&gt;
&lt;br /&gt;
== Initial tests ==&lt;br /&gt;
&lt;br /&gt;
For the initial tests the following simulation scenario was used:&lt;br /&gt;
&lt;br /&gt;
“node_1 (sender)” &amp;amp;lt;— 10m distance —&amp;amp;gt; “node_2 (sink)”&lt;br /&gt;
&lt;br /&gt;
The following stack was used on both nodes: - OnOffApplication — OffTime: 0, OnTime: 1 - Routing — Dummy (for MAC layer testing) - MultichannelMac — default bandwidth (10 - 40 kHz), 10 subchannels, 3kHz frequency step - PhyCmn — modified PhyCmn module&lt;br /&gt;
&lt;br /&gt;
Some other parameters: - Simulation time: 10 seconds - Transmission range: 100 meters (for Phy module) - Distance: 10 meters (Mobility model)&lt;br /&gt;
&lt;br /&gt;
In all tests a throughput was measured by defining an application data rate, higher than possible capacity of the given channel:&lt;br /&gt;
&lt;br /&gt;
'''80 kbps''' &amp;lt;code&amp;gt;dataRate&amp;lt;/code&amp;gt; parameter of &amp;lt;code&amp;gt;OnOffApplication&amp;lt;/code&amp;gt;. Thus, the throughput was measured by counting a total amount of received packets:&lt;br /&gt;
&lt;br /&gt;
throughput = total_received_packets * packet_size * 8 / 10, [bps]&lt;br /&gt;
&lt;br /&gt;
where: 10 - simulation time, seconds.&lt;br /&gt;
&lt;br /&gt;
=== 1-st test ===&lt;br /&gt;
&lt;br /&gt;
A single channel was used during entire simulation. - channel_id: 1, frequency: 10 kHz.&lt;br /&gt;
&lt;br /&gt;
The throughput was measured, depending on varying packet length. The result is plotted on Fig.1.&lt;br /&gt;
&lt;br /&gt;
[[File:https://github.com/dugdmitry/aqua-sim-ng/blob/master/multichannel_tests/images/throughput_1_channel.svg|throughput_1_channel]] Fig.1&lt;br /&gt;
&lt;br /&gt;
Corresponding sent/received packet count is illustrated on Fig.2.&lt;br /&gt;
&lt;br /&gt;
[[File:https://github.com/dugdmitry/aqua-sim-ng/blob/master/multichannel_tests/images/packet_count_1_channel.svg|packet_count_1_channel]] Fig.2&lt;/div&gt;</summary>
		<author><name>Dmitrii</name></author>	</entry>

	<entry>
		<id>http://134.74.112.6/mediawiki/index.php?title=Main_Page&amp;diff=124</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://134.74.112.6/mediawiki/index.php?title=Main_Page&amp;diff=124"/>
				<updated>2018-08-08T10:39:21Z</updated>
		
		<summary type="html">&lt;p&gt;Dmitrii: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Aqua-Net]]&lt;br /&gt;
&lt;br /&gt;
[[Aqua-Sim]]&lt;br /&gt;
&lt;br /&gt;
[[Aqua-3D]]&lt;br /&gt;
&lt;br /&gt;
[[Aqua-Sim NG]]&lt;br /&gt;
&lt;br /&gt;
[[Aqua-Lab]]&lt;br /&gt;
&lt;br /&gt;
[[Aqua-OS]]&lt;br /&gt;
&lt;br /&gt;
[[Aqua-fModem]]&lt;br /&gt;
&lt;br /&gt;
== Current Development ==&lt;br /&gt;
&lt;br /&gt;
[[Aqua-Sim-NG multichannel MAC implementation]]&lt;/div&gt;</summary>
		<author><name>Dmitrii</name></author>	</entry>

	</feed>