<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.nsnam.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dizhizhou</id>
	<title>Nsnam - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.nsnam.org/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dizhizhou"/>
	<link rel="alternate" type="text/html" href="https://www.nsnam.org/wiki/Special:Contributions/Dizhizhou"/>
	<updated>2026-05-04T14:52:04Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2019Projects&amp;diff=11454</id>
		<title>GSOC2019Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2019Projects&amp;diff=11454"/>
		<updated>2019-02-26T14:30:52Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Data collection and statistics framework extension */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
This page contains 2019 Google Summer of Code project ideas for ns-3.&lt;br /&gt;
&lt;br /&gt;
'''Important note:''' Google has not selected participating open source projects yet; we are only in the application phase.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2015/help_page GSoC Frequently Asked Questions]&lt;br /&gt;
* [[GSOC2018StudentGuide |ns-3's 2018 GSoC Student guide]]&lt;br /&gt;
* [http://en.flossmanuals.net/GSoCStudentGuide/ GSoC student guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOC2018StudentApplicationTemplate |2018 GSoC Student application template]]&lt;br /&gt;
* [[GSOCMentorGuide | ns-3's GSoC Mentor guide]]&lt;br /&gt;
* [http://en.flossmanuals.net/gsoc-mentoring/ GSoC Mentor guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOCSelectionProcess | GSoC Student Selection Process]]&lt;br /&gt;
* ''Get in contact with the ns-3 team'': [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers mailing list] | ''chat'' https://ns-3.zulipchat.com/&lt;br /&gt;
&lt;br /&gt;
=== About the ns-3 project ===&lt;br /&gt;
&lt;br /&gt;
ns-3 is a discrete-event network simulator, with a particular emphasis on network research and education.&lt;br /&gt;
 &lt;br /&gt;
Users of ns-3 can construct simulations of computer networks using models of traffic generators, protocols such as TCP/IP, and devices and channels such as WiFi, and analyze or visualize the results.  Simulation plays a vital role in the research and education process, because of the ability for simulations to obtain reproducible results (particularly for wireless protocol design), scale to large networks, and study systems that have not yet been implemented.  A particular emphasis in ns-3 is the high degree of realism in the models (including frameworks for real application and kernel code) and integration of the tool with virtual machine environments and testbeds; we view that researchers need to move more effortlessly between simulation, testbeds, and live experiments, and ns-3 is designed to facilitate that.&lt;br /&gt;
&lt;br /&gt;
ns-3 has participated in past GSoCs during 2008-10, 2012-15, and 2017-18.  We seek students interested in the intersection of wireless and computer networking, performance analysis, and open source software.&lt;br /&gt;
&lt;br /&gt;
=== Org admins ===&lt;br /&gt;
&lt;br /&gt;
Google Summer of Code organizational admins for ns-3 are [mailto:tpecorella@mac.com Tommaso Pecorella] and [mailto:tomh@tomh.org Tom Henderson]; contact them with any questions.  They also hang out on [https://ns-3.zulipchat.com Zulip].&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
&lt;br /&gt;
Mentors will be paired with students based on the projects that are selected.  Mentors from companies are welcome, if the employer will permit the mentor sufficient time to perform the mentoring.  Prospective mentors should notify Tom Henderson or Tommaso Pecorella of interest.  Mentors familiar with ns-3 development practices will be preferred, to improve the chances of student code merge.  In 2019, we are going to be seeking two-person or multiple-person mentoring teams for projects, to help with the mentoring workload and bring more expertise.&lt;br /&gt;
&lt;br /&gt;
The current list of prospective mentors for 2019 (depending on project selection) includes Zoraze Ali, Abhijith Anilkumar, Gabriel Arrobo, Biljana Bojovic, Ankit Deepak, Lorenza Giupponi, Alexander Krotov, Natale Patriciello, Manoj Kumar Rana, Mohit Tahiliani, and Dizhi Zhou.&lt;br /&gt;
&lt;br /&gt;
=== Students: how to participate ===&lt;br /&gt;
&lt;br /&gt;
For students interested in applying to ns-3 for GSOC, first wait to see if ns-3 will be selected.  If so, then go through the following list to get started:&lt;br /&gt;
* Read the official [http://en.flossmanuals.net/GSoCStudentGuide/ GSoC student guide].&lt;br /&gt;
* Read [[GSOC2018StudentGuide |ns-3's GSoC Student guide]].&lt;br /&gt;
* Look through our [[#Project Ideas]] below to see if you find a project that interests you.&lt;br /&gt;
* Review the [http://www.nsnam.org/ns-3-29/documentation/ns-3 tutorial] thoroughly, if you have not already done so.&lt;br /&gt;
* Look through the [[GSOC2018StudentApplicationTemplate |GSoC Student application template]] to start preparing your proposal.&lt;br /&gt;
* Next, proceed to get in touch with the developers on the mailing list and refine your proposal.&lt;br /&gt;
* In parallel, make sure you prepare a patch as per the [[GSOC2018PatchRequirement | Patch Requirement Guidelines]] (to be revised). Your application to ns-3 will not be considered if you do not fulfill this requirement.&lt;br /&gt;
&lt;br /&gt;
Below is a list of [[#Project Ideas]] proposed by the ns-3 team for Google Summer of Code 2019.  Please note that these ideas are not limited to GSoC; anyone is welcome to work on them. Please email the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list] if you have a different idea that you'd like to work on, to see if a mentor may be interested.  Applicants are encouraged to look over this list, pick one that especially interests them, think about it, and discuss potential approaches on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list]. Previous experience with the Google Summer of Code programmes suggest that the more you discuss and refine your proposal on the mailing list beforehand, the stronger the proposal it will develop into, and the higher your chances of being accepted into the programme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Each project idea within a particular priority has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
* ''Difficulty:'' easy, medium or difficult&lt;br /&gt;
* ''Recommended reading:'' pointers to documentation, papers, specific bugs, etc.&lt;br /&gt;
&lt;br /&gt;
Note that all of the projects require some experience and comfort with C++.  Project ideas for which C++ is noted as a required experience will require more and deeper familiarity with the language.  A similar notion applies to  computer networking, BSD sockets, etc: Familiarity is strongly preferred, but is not required except where explicitly noted due to the topic being more advanced in that regard.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mentors: how to participate ===&lt;br /&gt;
&lt;br /&gt;
The ns-3 project is open to the proposal of new project ideas by developers interested in being a GSoC mentor. For mentors who're adding project ideas to the list below, please ensure that:&lt;br /&gt;
&lt;br /&gt;
* The projects are sized such that there can be a code merge by the end of the coding period. The scope of the project should be such that it is very difficult to not have a code merge by the end of the summer.&lt;br /&gt;
* The proposed projects are not too open-ended. That is, if the deliverables or a clear path to the same are not well understood, it is better kept outside GSOC.&lt;br /&gt;
* There should be a clear merge path to one of the main project code repositories (ns-3-dev, ns-3-dce, bake) by the end of the summer, either because the patches directly apply to these repositories, or because they apply to an ns-3 module that is in the process of being merged with ns-3-dev.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
'''Note to students:''' These ideas are not listed in any priority order. &lt;br /&gt;
&lt;br /&gt;
==== Improvement of usability and maintainability of LTE schedulers ====&lt;br /&gt;
&lt;br /&gt;
Mentors:  Zoraze Ali, Biljana Bojovic&lt;br /&gt;
&lt;br /&gt;
The LTE scheduler is a key RAN feature that allows to analyze many information received at eNB MAC layer and take fundamental decisions in terms of the radio resurces to be allocated. The LTE module offers multiple schedulers, characterized by a high number of lines, many of which are duplicated. This complicates the maintainability of the code, since every time that something needs to be changed in the scheduler, needs to be changed in all the schedulers. And also complicates the usability, since the structure of the code is monolithic, while the user often needs to just get access to some input information, and change the scheduler policy in order to test different scheduler solutions. The proposal of this project is to reorganize the schedulers' structure in a more modular way, in order to overcome the duplication of lines of code and facilitate the usability of this important LTE functionality.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' C++, Git&lt;br /&gt;
* ''Interests:'' LTE cellular networks&lt;br /&gt;
* ''Difficulty:'' Medium&lt;br /&gt;
* ''Recommended reading:'' LTE ns-3 documentation and FemtoForum MAC Scheduler Interface API&lt;br /&gt;
&lt;br /&gt;
==== API for UE scheduler ====&lt;br /&gt;
&lt;br /&gt;
Mentors: Zoraze Ali, Lorenza Giupponi&lt;br /&gt;
&lt;br /&gt;
Similar to the classical LTE networks, the scheduler in the LTE module of ns-3 lies at the eNB, which interacts with its MAC by using a well defined API based on the FemtoForum MAC Scheduler Interface. However, with the advent of new paradigms, e.g., LAA, LTE ProSe, V2X and 5G NR, the concept of autonomous uplink scheduling has became more prominent. To incorporate such capability into the LTE module of ns-3 the MAC layer API of UE needs to be extended in a similar fashion as the eNB by using the FemtoForum MAC Scheduler Interface. This would allow custom implementation of UE schedulers to simulate the scenarios with autonomous uplink scheduling.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' C++, Git&lt;br /&gt;
* ''Interests:'' Cellular networks, LTE&lt;br /&gt;
* ''Difficulty:'' Medium&lt;br /&gt;
* ''Recommended reading:'' LTE ns-3 documentation and FemtoForum MAC Scheduler Interface API&lt;br /&gt;
&lt;br /&gt;
==== Usability improvements ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tomh@tomh.org Tom Henderson], Dizhi Zhou, others TBD&lt;br /&gt;
&lt;br /&gt;
Usability of ns-3 can always be improved, whether it is help with building simulations, running simulation campaigns, using the ns-3 C++ API, improving the Python user experience, visualizing simulations or data, software packaging (e.g. binary packages or Docker containers), or documentation.  This project is for a student who has been using ns-3 for a while and has ideas on how to make it better during GSoC.  We don't want to limit the scope of proposals here; we will consider any project ideas that improve ns-3 usability in some way (please explain to us why the usability improvement is important to users beyond yourself, and why you would argue for your particular solution, and of course describe how you plan to get it done during the timeframe of GSoC).  Some possible project examples:&lt;br /&gt;
* Tools and scripts to conduct and manage data from a large number of simulation runs&lt;br /&gt;
* How to integrate a more Python-centric data flow and tools, such as [http://jupyter.org/ Jupyter Notebook] and [https://github.com/bloomberg/bqplot bqplot]&lt;br /&gt;
* Internal state visualization of Wi-Fi or LTE, such as the kind of plots generated by [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.126.3791&amp;amp;rep=rep1&amp;amp;type=pdf Yavista]&lt;br /&gt;
&lt;br /&gt;
==== L4/L3 routing improvement ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella]&lt;br /&gt;
&lt;br /&gt;
At the moment, each packet in ns-3 is routed independently. Even though this is a good behaviour for routers, it is not for the source node (expecially for TCP). As a matter of fact, when a TCP connection is established, *all* its packets should be directed to the very same output interface. The same goes for UDP when the source address is forced to be a specific one.&lt;br /&gt;
The project idea is to modify the TCP and UDP stacks so that they can store the source address after the connection phase, and skip part of the routing process.&lt;br /&gt;
* ''Required Experience:'' C++, TCP, UDP&lt;br /&gt;
* ''Bonus Experience:'' IPv4 and IPv6 routing&lt;br /&gt;
* ''Interests:'' TCP and UDP&lt;br /&gt;
* ''Difficulty:'' medium&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [https://www.nsnam.org/bugzilla/show_bug.cgi?id=1041 Bug 1041]&lt;br /&gt;
&lt;br /&gt;
==== NetDevice up/down consistency and event chain ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], Manoj Kumar Rana&lt;br /&gt;
&lt;br /&gt;
There in no actual consistency among the different modules about how to handle Up/Down events (e.g., when a link is lost).&lt;br /&gt;
This prevents some &amp;quot;normal&amp;quot; behaviours from happening, e.g., the DHCP IP address renegotiation, MIP implementation, etc.&lt;br /&gt;
As a matter offact, one should expect that an IP interface would be declared as &amp;quot;down&amp;quot; when its NetDevice is down... but it isn't. The goal of this project is to fix this behavior, to update some NetDevices so that they use Up/Down events consistently, to provide the documentation about what is the standard behavior, and what NetDevices are actually implementing it in the right way. &lt;br /&gt;
* ''Required Experience:'' C++, NetDevices, Interface behavior&lt;br /&gt;
* ''Bonus Experience:'' NetDevice and IP behavior&lt;br /&gt;
* ''Interests:'' NetDevice and IP behavior&lt;br /&gt;
* ''Difficulty:'' medium&lt;br /&gt;
&lt;br /&gt;
==== Wi-Fi mesh module upgrade ====&lt;br /&gt;
&lt;br /&gt;
Mentors:  [mailto:tomh@tomh.org Tom Henderson]&lt;br /&gt;
&lt;br /&gt;
ns-3 Wi-Fi mesh module was written about 8 years ago, and is not completely up to date with the standard, nor does it work with newer Wi-Fi variants (802.11n/ac/ax).  This project would prioritize making mesh module compatible with all variants of Wi-Fi and would align with the latest standard.  Going further, some scenarios and scripts that align ns-3 simulations with how community networks are set up and configured would be helpful, such as guidance on how to configure rate controls and routing protocols (e.g. how to run OLSR on top of mesh).&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:''C++, Wi-Fi and mesh understanding&lt;br /&gt;
* ''Interests:'' mesh networking&lt;br /&gt;
* ''Difficulty:'' Medium&lt;br /&gt;
* ''Recommended reading:''  mesh issues in the [https://www.nsnam.org/bugzilla/buglist.cgi?component=mesh&amp;amp;product=ns-3&amp;amp;query_format=advanced&amp;amp;resolution=--- tracker], and the mesh module documentation, and IEEE 802.11 standard&lt;br /&gt;
&lt;br /&gt;
==== Direct Code Execution upgrade ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:mattator@gmail.com Matthieu Coudron]&lt;br /&gt;
&lt;br /&gt;
ns-3 has an extension known as Direct Code Execution, which allows users to build C or C++-based applications, and open source (Linux, FreeBSD) kernels, into ns-3.  However, support for the latest kernels (e.g. Linux kernel 4 series) and latest gcc versions has languished.  We also could better integrate DCE with the main ns-3 tree.  This project seeks a student interested in DCE, improving usability, and making it current with latest kernels and toolchains.  The payoff of this type of project is very high since DCE makes available a lot of real-world models for use in ns-3.  If you select this project idea, please engage with us on the developers list, and consider to take a look at solving one of the [https://www.nsnam.org/bugzilla/buglist.cgi?bug_status=__open__&amp;amp;content=&amp;amp;no_redirect=1&amp;amp;order=Importance&amp;amp;product=dce&amp;amp;query_format=specific open DCE issues in our tracker], for starters.&lt;br /&gt;
* ''Required Experience:'' good hacking skills on Linux, C, C++, Python&lt;br /&gt;
* ''Difficulty:'' Hard.&lt;br /&gt;
* ''For more information:'' https://www.nsnam.org/overview/projects/direct-code-execution/dce-1-9/&lt;br /&gt;
&lt;br /&gt;
==== Freshen ns-3/Click integration ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tomh@tomh.org Tom Henderson]&lt;br /&gt;
&lt;br /&gt;
ns-3 and [https://github.com/kohler/click Click modular routing] were first integrated in an [https://www.nsnam.org/wiki/GSOC2010Click ns-3 GSoC project] from 2010.  We seek a student interested in the following tasks:  &lt;br /&gt;
&lt;br /&gt;
* Since 2010, Ipv4L3Protocol has continued to evolve, but Ipv4L3ClickProtocol has not kept pace with the changes.  Also, IPv6 is not supported.  Refactor Ipv4L3Protocol and Ipv4L3ClickProtocol (or delete Ipv4L3ClickProtocol altogether) so that the click-specific pieces are limited and can be maintained more easily.&lt;br /&gt;
** Current thoughts on this are that we would like to modify the approach.  It would be nice for Click to run on ns-3 in a manner that is as close as possible to its working outside simulation (raw sockets + tun/tap devices).  This will hopefully allow us to delete IPv4L3ClickProtocol and avoid needed ns-3 code to expect Click to provide a routing table.  ns-3 traffic generators should then be able to send packets to an ns-3 equivalent of a tun/tap device (which doesn't presently exist), have packets show up in Click, and then get Click to push those packets directly to an interface using raw sockets from inside ns-3.&lt;br /&gt;
* There was an [https://www.nsnam.org/wiki/NSOC2011ClickMac/MidTermReport ns-3 2011 summer project] (not part of GSoC, but a follow-on project) to try to finish the integration with ClickMac.  We'd like to update it, finish it off, and merge it with ns-3-dev.  Some brief discussion was here:  https://codereview.appspot.com/4890044/&lt;br /&gt;
** The blocking issue at the time was in the Wi-Fi module; the changes in radiotap and frame injection over monitor mode, which Click needed, were not finished (accepted).&lt;br /&gt;
* Anything else that a student thinks would be useful to support regarding click and ns-3 integration.  Consider to review in the recent literature (see Google Scholar) how Click is now being used for research, and think about then what might be research-driven priorities for support in ns-3.  Provide evidence (citations) in your application.&lt;br /&gt;
&lt;br /&gt;
The list is not exhaustive and not limiting. I.e., the candidate can propose other points and/or concentrate on a specific subset.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' C++&lt;br /&gt;
* ''Bonus Experience:'' IPv4, IPv6, Click.&lt;br /&gt;
* ''Interests:'' Software integration.&lt;br /&gt;
* ''Difficulty:'' Medium.&lt;br /&gt;
&lt;br /&gt;
==== User-friendly internet-apps ====&lt;br /&gt;
&lt;br /&gt;
Mentors:  [mailto:tomh@tomh.org Tom Henderson]&lt;br /&gt;
&lt;br /&gt;
Ping is a ubiquitous application for reachability and latency measurements.  ns-3 already has a ping model (the v4ping.cc and ping6.cc).  However, a user-friendly API could still be added.  It is not straightforward to configure an ns-3 program to do in a single statement, for example, &amp;quot;Ping the IP address W.X.Y.Z from node 0 between times 5 and 50 seconds in my program, and save the output in traditional format to the file &amp;lt;filename.txt&amp;gt;&amp;quot;, or to configure the many options found in the ping man page.  This project is therefore not about developing brand new features as much as it is about making ping super-easy to use with a great API.  Have a look at how ns-3 programs are written, and tell us what kind of API makes sense to you, and why, and how you would go about prioritizing its implementation.  If ping is solved very early, the project can follow the same pattern for one or two more applications (e.g. netperf, iperf, etc.).  &lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:''C++&lt;br /&gt;
* ''Interests:'' Network performance management&lt;br /&gt;
* ''Difficulty:'' Medium&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
&lt;br /&gt;
==== nam upgrade and support for ns-3 ====&lt;br /&gt;
&lt;br /&gt;
Mentors:  [mailto:tomh@tomh.org Tom Henderson]&lt;br /&gt;
&lt;br /&gt;
[http://www.isi.edu/nsnam/nam/ nam] is a Tcl/Tk-based animator for ns-2.  Some example videos are found at [https://www.youtube.com/results?search_query=nam+network+animator YouTube].  nam has been functionally replaced in many ways by [https://www.nsnam.org/wiki/NetAnim NetAnim], but it still has some attractive features and might make a complementary animation tool for ns-3.  In fact, someone did a proof-of-concept support of nam for ns-3 many years ago:  http://www.nsnam.org/contributed/ns-3-nam.tar.bz2.  This project would involve upgrading nam support to the latest Tcl/Tk release series (8.6) and then using the existing ns-3 trace system to generate nam output files such as in ns-2, and documenting and testing the results, including some demonstration videos. &lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:''C++, Tcl/Tk also preferred&lt;br /&gt;
* ''Interests:'' Network visualization/animation&lt;br /&gt;
* ''Difficulty:'' Medium&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** the links listed above&lt;br /&gt;
&lt;br /&gt;
==== ns-2 ports to ns-3 ====&lt;br /&gt;
&lt;br /&gt;
Mentors:  [mailto:tomh@tomh.org Tom Henderson], [mailto:tahiliani.nitk@gmail.com Mohit P. Tahiliani]&lt;br /&gt;
&lt;br /&gt;
[http://www.isi.edu/nsnam/ns/ ns-2] is the predecessor to ns-3, but some popular models still exist in ns-2 and are not yet ported to ns-3.  Google Scholar can be used to find topics for which people still are publishing papers using ns-2.  This project idea is for someone who is fond of some feature or model found in ns-2 but not in ns-3.  A successful application of this type will make a good case that the port is still relevant to network research, that people are using ns-2 due to this model, and will describe the technical approach that is planned to make the port (e.g. how OTcl default variables will be ported to ns-3).  Please note that the networking relevance is very important part of the application; if you propose to port some feature of ns-2 that is dated or unlikely to be of much interest because its applicability is very narrow, your proposal will not be selected.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:''C++, ns-2 also preferred&lt;br /&gt;
* ''Difficulty:'' Low to medium&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** ns-2 and ns-3 manuals&lt;br /&gt;
&lt;br /&gt;
==== TCP testing and alignment ====&lt;br /&gt;
&lt;br /&gt;
Mentors:  [mailto:tomh@tomh.org Tom Henderson], [mailto:tahiliani.nitk@gmail.com Mohit P. Tahiliani], [mailto:natale.patriciello@gmail.com Natale Patriciello]&lt;br /&gt;
&lt;br /&gt;
ns-3 needs good TCP models that align with real implementations, or that have documented differences.  In particular, does ns-3 TCP's slow start and congestion avoidace perform like a real implementation, including common variants found in the field (CUBIC, DCTCP), and ones under development (TCP Prague, BBR).  The project should also produce regression tests.  We envision that this project will consist of setting up ns-3 in emulation mode to test operation of its implementation against real implementations, in different impairment environments, documenting the results, and figuring out how to take the ns-3 results and generate regression tests.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:''C++, TCP&lt;br /&gt;
* ''Difficulty:'' Medium&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** Similar FreeBSD test suite:  https://wiki.freebsd.org/SummerOfCode2016/TCP-IP-RegressionTestSuite&lt;br /&gt;
** https://wiki.linuxfoundation.org/networking/tcp_testing&lt;br /&gt;
&lt;br /&gt;
==== TCP analysis ====&lt;br /&gt;
&lt;br /&gt;
Mentors:  [mailto:tomh@tomh.org Tom Henderson], [mailto:tahiliani.nitk@gmail.com Mohit P. Tahiliani], [mailto:natale.patriciello@gmail.com Natale Patriciello]&lt;br /&gt;
&lt;br /&gt;
This project is not about developing new TCP variants, but about developing a TCP analysis capability that is user-friendly and produces output similar to (perhaps integrates with?) tools such as [http://research.protocollabs.com/captcp/ captcp], [http://www.wireshark.org Wireshark TCP analysis], [http://www.tcptrace.org/ tcptrace], [http://tstat.polito.it/ Tstat], or other similar tools.  An important part of your application will be a description of how a user will enable it in a user program, and some description of how it will be implemented.&lt;br /&gt;
&lt;br /&gt;
As an example, consider providing the user with the ability to auto-generate plots of throughput evolution, congestion window evolution, etc. over time, for a pair of 4-tuples where the 4-tuples may contain wild cards or regular expressions.  For instance, the user specifies &amp;quot;10.0.0.1:*&amp;quot; and &amp;quot;192.168.0.1:80&amp;quot;, and if there are three connections in the simulation from 10.0.0.1 to that specific IP address and port, then three sets of time-series plots are generated and labelled appropriately.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:''C++, TCP&lt;br /&gt;
* ''Difficulty:'' Medium&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** ns-2 and ns-3 manuals&lt;br /&gt;
&lt;br /&gt;
==== 802.15.4 Bootstrap ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella]&lt;br /&gt;
&lt;br /&gt;
The lr-wpan model is an 802.15.4 PHY and MAC model currently in development. The model is able to simulate an 802.15.4 network in ad-hoc mode, much like Contiki-os nodes do. An useful extension is to fully support the node bootstrap phase, including node association and beacon request/reply. The goal of the project is to enhance the lr-wpan module so to use beacons in the bootstrap phase along with network scanning and pan-id resolution for in-range coordinators.&lt;br /&gt;
* ''Required Experience:'' C++, WSN&lt;br /&gt;
* ''Bonus Experience:'' 802.15.4 standard&lt;br /&gt;
* ''Interests:'' WSN&lt;br /&gt;
* ''Difficulty:'' medium&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [http://standards.ieee.org/getieee802/download/802.15.4-2011.pdf 802.15.4 Standard]&lt;br /&gt;
&lt;br /&gt;
==== 802.15.4 Beacon-enabled mode ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella]&lt;br /&gt;
&lt;br /&gt;
The lr-wpan model is an 802.15.4 PHY and MAC model currently in development. The model is able to simulate an 802.15.4 network in ad-hoc mode, much like Contiki-os nodes do. Unlike Contiki-os, the model could benefit from supporting beacon-enabled mode of operation. The beacon-enabled mode is a fully slotted transmission mode, with guaranteed slots and bound performances, unlike the ad-hoc mode. This is especially important because the L3 routing protocols might be strongly affected by the lower-layer topology. Hence it is of paramount importance to be able to simulate both in ns-3. The goal of the project is to develop the new beacon-enabled MAC layer for the lr-wpan module. &lt;br /&gt;
* ''Required Experience:'' C++, WSN&lt;br /&gt;
* ''Bonus Experience:'' 802.15.4 standard&lt;br /&gt;
* ''Interests:'' WSN&lt;br /&gt;
* ''Difficulty:'' medium/hard&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [http://standards.ieee.org/getieee802/download/802.15.4-2011.pdf 802.15.4 Standard]&lt;br /&gt;
&lt;br /&gt;
==== DSR routing RFC compliance ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella]&lt;br /&gt;
&lt;br /&gt;
The DSR routing module is not compliant with the RFC 4728. This leads to a number of small issues, like simulation imprecision and impossibility to decode the messages with Wireshark.&lt;br /&gt;
The goal of the project is to enhance the current model and to make it RFC-compliant, eventually doing a code refectory where needed.&lt;br /&gt;
A possible enhancement over the base protocol could also be to include support for IPv6 in the implementation.&lt;br /&gt;
* ''Required Experience:'' C++&lt;br /&gt;
* ''Bonus Experience:'' DSR standard&lt;br /&gt;
* ''Interests:'' Ad-hoc routing&lt;br /&gt;
* ''Difficulty:'' medium&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [http://www6.ietf.org/rfc/rfc4728.txt RFC 4728]&lt;br /&gt;
&lt;br /&gt;
==== Enable IPv6 support for Ad hoc Routing Protocols in ns-3 ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:tahiliani.nitk@gmail.com Mohit P. Tahiliani]&lt;br /&gt;
&lt;br /&gt;
ns-3 contains models for proactive (DSDV and OLSR) and reactive (AODV and DSR) ad hoc routing protocols. However, these models are IPv4-only and do not provide support of IPv6 addressing. This project aims to enable IPv6 support for ad hoc routing protocols in ns-3, mainly for AODV and DSR. There are out-of-tree implementations of OLSR and DSDV that provide support for IPv6 addressing, and can be used as references to get started with this project.&lt;br /&gt;
An important point of the implementation should be code duplicate minimization, in order to have the minimize maintenance efforts.&lt;br /&gt;
Note:  Enabling IPv6 support for these protocols is not a matter of simply changing out an IPv4-formatted address for an IPv6-formatted address.  The IPv6 addressing architecture emphasizes scoping much more than does IPv4 (RFC 4007).  Please suggest in your application how IPv6 address configuration (and possibly auto-configuration?) and address scopes (e.g. link-local vs. global) should be used in these protocols. Consulting the RFCs is highly recommended.'&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Fundamentals of IPv6 addressing, C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with AODV and DSR implementations in ns-3&lt;br /&gt;
* ''Interests:'' Ad hoc routing&lt;br /&gt;
* ''Difficulty:'' Medium.&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/ipv6.html IPv6 model in ns-3]&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/aodv.html AODV model in ns-3]&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/dsr.html DSR model in ns-3]&lt;br /&gt;
** [https://www.nsnam.org/workshops/wns3-2016/posters/IPv6-support-for-OLSR.pdf IPv6 Support for OLSR in ns-3]&lt;br /&gt;
&lt;br /&gt;
==== Persistent and Semi-Persistent Scheduling inside LTE module ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:natale.patriciello@gmail.com Natale Patriciello], [mailto:sandra.lagen@cttc.cat Sandra Lagen]&lt;br /&gt;
&lt;br /&gt;
Please get in touch with Natale and Sandra before going straight with this project. The goal of this project is to implement Semi-Persistent Scheduling (SPS) scheme in the ns-3 LTE module. SPS scheme is enabled in 4G LTE, as well as in 5G, in order to save L1/L2 (layer 1/layer 2) control signaling and reduce resource overhead for some periodic and predictable traffic, such as voice over IP (VoIP) and traffic from sensors/IoT devices. Currently, in ns-3 LTE, only Dynamic Scheduling (DS) scheme is implemented, for which the scheduling decisions are dynamically signaled on L1/L2 control to indicate the allocated resources. Differently, in SPS, only the first scheduling assignment is signaled on L1/L2, and the subsequent transmissions use the same resources with a preconfigured interval, thus reducing L1/L2 overhead. In particular, SPS periodicity is configured by RRC, and then activation is signaled through the downlink control information (DCI), both for downlink and uplink SPS. The idea of this project is to extend RRC parameters, and DCI formats, to enable SPS scheme, and to update the MAC scheduler (L2) to enable both SPS and DS schemes for different traffic simultaneously. The later requires, among others, a memory in the scheduler, so as not to allocate resources for DS that are already scheduled for SPS.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' C++, LTE understanding&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with lte module&lt;br /&gt;
* ''Interests:'' LTE scheduling (MAC layer)&lt;br /&gt;
* ''Difficulty:'' Medium.&lt;br /&gt;
&lt;br /&gt;
==== Structured logging support ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:krotov@iitp.ru Alexander Krotov], ?&lt;br /&gt;
&lt;br /&gt;
Sometimes an experiment with a hard to find bug takes a lot of time to run, so it may be desirable to collect as much information as possible and process it later, without adding traces and running experiment again multiple times.&lt;br /&gt;
&lt;br /&gt;
Existing NS-3 logging framework does not support structured logging. It is only capable of printing text messages, which are hard to process automatically. In fact, [https://www.nsnam.org/docs/manual/html/logging.html NS-3 manual] even contains a warning:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
The project makes no guarantee about whether logging output will remain the same over time. Users are cautioned against building simulation output frameworks on top of logging code, as the output and the way the output is enabled may change over time.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently logs often lack context information, such as MAC addresses, node IDs etc. Even if the required information is present, extracting it from text messages is error-prone, and message format may change from version to version even when the required data is still available. As a result, it is often easier to resort to installing traces and adding conditionals to the NS-3 code, recompiling the code and re-running experiments.&lt;br /&gt;
&lt;br /&gt;
Structured logging, sometimes called semantic logging, is an approach that solves the problem of logs not being machine-readable.&lt;br /&gt;
&lt;br /&gt;
For example, instead of writing &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NS_LOG_LOGIC (&amp;quot;Route to &amp;quot; &amp;lt;&amp;lt; m_endPoint-&amp;gt;GetPeerAddress () &amp;lt;&amp;lt; &amp;quot; does not exist&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
it will be possible to write something like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NS_LOG_LOGIC (&amp;quot;Route to {peer_address} does not exist&amp;quot;,&lt;br /&gt;
              &amp;quot;peer_address&amp;quot;, m_endPoint-&amp;gt;GetPeerAddress (),&lt;br /&gt;
              &amp;quot;id&amp;quot;, &amp;quot;route_not_exist&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When used in text mode, the logging framework will output messages as usual. In addition, it will be able to store messages as dictionaries, for example in [http://jsonlines.org/ JSON Lines], [http://cbor.io/ some binary format] or a [https://docs.mongodb.com/ecosystem/use-cases/storing-log-data/ database].&lt;br /&gt;
&lt;br /&gt;
The message above could be represented as&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;message&amp;quot;: &amp;quot;Route to {peer_address} does not exist&amp;quot;,&lt;br /&gt;
  &amp;quot;peer_address&amp;quot;: {&amp;quot;type&amp;quot;: &amp;quot;ipv4&amp;quot;, &amp;quot;192.168.1.1&amp;quot;},&lt;br /&gt;
  &amp;quot;id&amp;quot;: &amp;quot;route_not_exist&amp;quot;&lt;br /&gt;
  ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In addition, messages need to contain some context, extracted from object &amp;lt;code&amp;gt;this&amp;lt;/code&amp;gt;, object identifier (its pointer) and timestamp.&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to&lt;br /&gt;
* Add API to serialize NS-3 object to dictionaries.&lt;br /&gt;
* Implement structured logging framework in the &amp;lt;code&amp;gt;core&amp;lt;/code&amp;gt; module.&lt;br /&gt;
* Implement at least text and JSON output, extensible to add more output formats later.&lt;br /&gt;
* Add structured logging support to at least some modules, e.g. &amp;lt;code&amp;gt;applications&amp;lt;/code&amp;gt;. It should be possible to incrementally switch to structured logging support later.&lt;br /&gt;
&lt;br /&gt;
There are hardly any C++ structured logging frameworks. There is a https://github.com/kevincox/sog, which is abandoned and uses Apache 2.0 license, that is incompatible to NS-3 license (GPLv2). As a result, it will probably be required to implement the whole framework from scratch. Structured logging frameworks for other languages, such as https://serilog.net/, can be used for inspiration.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' C++&lt;br /&gt;
* ''Difficulty:'' medium&lt;br /&gt;
&lt;br /&gt;
==== IP Traffic Control in LTE networks ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:natale.patriciello@gmail.com Natale Patriciello], [mailto:p.imputato@gmail.com Pasquale Imputato]&lt;br /&gt;
&lt;br /&gt;
The TC layer is in the middle between IP and any Netdevice, and its role is to manage the scheduling, and the queueing, of IP packets. To work, it need cooperation by the NetDevices: they have to inform when they are ready to receive new packets, or when their internal queues are full. The project is centered on developing the cooperation between the LTE module and the TC module. The starting point is the work done by a Ph.D. student and to merge it in ns3 dev.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' C++, LTE understanding&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with LTE, TC, and network module&lt;br /&gt;
* ''Interests:'' Reducing latencies&lt;br /&gt;
* ''Difficulty:'' Easy to Medium&lt;br /&gt;
* Interested readings: https://zenodo.org/record/2536822&lt;br /&gt;
&lt;br /&gt;
==== Linux-like CAKE queue discipline for ns-3 ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tahiliani.nitk@gmail.com Mohit P. Tahiliani]&lt;br /&gt;
&lt;br /&gt;
Common Applications Kept Enhanced (CAKE) is the most recent queue discipline added in Linux 4.19. It is a comprehensive queue management framework targeted for home Internet gateways, and integrates the following four components: bandwidth shaping, a new Active Queue Management (AQM) algorithm called COBALT (CoDel BLUE Alternate), handling Differentiated Services (DiffServ) and TCP ACK filtering. The main tasks in this project include: implementation, testing and documentation of individual components of CAKE in ns-3, followed by the integration of these components to form CAKE queue discipline in ns-3.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with queue disciplines, TCP and C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with CAKE framework in Linux 4.19&lt;br /&gt;
* ''Interests:'' Active Queue Management, Packet scheduling and TCP.&lt;br /&gt;
* ''Difficulty:'' Medium to Hard&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [https://arxiv.org/pdf/1804.07617.pdf Piece of CAKE: A Comprehensive Queue Management Solution for Home Gateways]&lt;br /&gt;
** [https://lwn.net/Articles/758353/ Let them run CAKE]&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/queue-discs.html Queue disciplines in ns-3]&lt;br /&gt;
&lt;br /&gt;
==== Improving the ns-3 AppStore and linking with bake ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:abhijithabhayam@gmail.com Abhijith Anilkumar]&lt;br /&gt;
&lt;br /&gt;
The [https://apps.nsnam.org ns-3 AppStore] organizes information about the availability of extensions to the main ns-3 releases, and is built using Django. The app store has backend extensions to the Bake build system, enabling users to build a module from the bakefile.xml file. The main goal of this project is to link the Bake build system with the ns-3 AppStore. As the end goal, we envision letting the user type a command locally, something like &amp;lt;code&amp;gt;bake install mmwave&amp;lt;/code&amp;gt; which automatically fetches the data from the App Store, and does the required installation process. By opening up REST APIs, we send data from the app store in the format that can be processed by bake and then install it.  &lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with Python, Django.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with Django Rest Framework.&lt;br /&gt;
* ''Difficulty:'' Low to Medium&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2018Projects&amp;diff=10903</id>
		<title>GSOC2018Projects</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2018Projects&amp;diff=10903"/>
		<updated>2018-02-22T12:02:26Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
* [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2015/help_page GSoC Frequently Asked Questions]&lt;br /&gt;
* [[GSOC2018StudentGuide |ns-3's 2018 GSoC Student guide]]&lt;br /&gt;
* [http://en.flossmanuals.net/GSoCStudentGuide/ GSoC student guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOC2017StudentApplicationTemplate |2017 GSoC Student application template]]&lt;br /&gt;
* [[GSOCMentorGuide | ns-3's GSoC Mentor guide]]&lt;br /&gt;
* [http://en.flossmanuals.net/gsoc-mentoring/ GSoC Mentor guide (not ns-3 specific)]&lt;br /&gt;
* [[GSOCSelectionProcess | GSoC Student Selection Process]]&lt;br /&gt;
* ''Get in contact with the ns-3 team'': [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers mailing list] | ''chat'' https://ns-3.zulipchat.com/&lt;br /&gt;
&lt;br /&gt;
== ns-3's GSoC 2018 ==&lt;br /&gt;
&lt;br /&gt;
This webpage highlights project ideas for ns-3's Google Summer of Code 2018 effort.  &lt;br /&gt;
&lt;br /&gt;
The thirteen week coding period for projects runs from 14 May to 14 August, 2018.  The full project timeline is here:   https://developers.google.com/open-source/gsoc/timeline&lt;br /&gt;
&lt;br /&gt;
'''Important note:'''  ns-3 is applying to Google Summer of Code as a project but will not learn about acceptance until February 12.&lt;br /&gt;
&lt;br /&gt;
=== About the ns-3 project ===&lt;br /&gt;
&lt;br /&gt;
ns-3 is a discrete-event network simulator, with a particular emphasis on network research and education.&lt;br /&gt;
 &lt;br /&gt;
Users of ns-3 can construct simulations of computer networks using models of traffic generators, protocols such as TCP/IP, and devices and channels such as WiFi, and analyze or visualize the results.  Simulation plays a vital role in the research and education process, because of the ability for simulations to obtain reproducible results (particularly for wireless protocol design), scale to large networks, and study systems that have not yet been implemented.  A particular emphasis in ns-3 is the high degree of realism in the models (including frameworks for real application and kernel code) and integration of the tool with virtual machine environments and testbeds; we view that researchers need to move more effortlessly between simulation, testbeds, and live experiments, and ns-3 is designed to facilitate that.&lt;br /&gt;
&lt;br /&gt;
Our GSoC organizational admin is [mailto:tomhend@u.washington.edu Tom Henderson] and our backup org admin is [mailto:tpecorella@mac.com Tommaso Pecorella].  The project has participated in past GSoCs during 2008-10, 2012-15, and 2017.&lt;br /&gt;
&lt;br /&gt;
Mentors will be paired with students based on the projects that are selected.  Mentors from companies are welcome, if the employer will permit the mentor sufficient time to perform the mentoring.  Prospective mentors should notify Tom Henderson or Tommaso Pecorella of interest.  Mentors familiar with ns-3 development practices will be preferred, to improve the chances of student code merge.&lt;br /&gt;
&lt;br /&gt;
=== Students: how to participate ===&lt;br /&gt;
&lt;br /&gt;
For students interested in applying to ns-3 for GSOC, first wait to see if ns-3 will be selected.  If so, then go through the following list to get started:&lt;br /&gt;
* Read the official [http://en.flossmanuals.net/GSoCStudentGuide/ GSoC student guide].&lt;br /&gt;
* Read [[GSOC2017StudentGuide |ns-3's GSoC Student guide]].&lt;br /&gt;
* Look through our [[#Project Ideas]] below to see if you find a project that interests you.&lt;br /&gt;
* Review the [http://www.nsnam.org/ns-3-26/documentation/ns-3 tutorial] thoroughly, if you have not already done so.&lt;br /&gt;
* Look through the [[GSOC2017StudentApplicationTemplate |GSoC Student application template]] to start preparing your proposal.&lt;br /&gt;
* Next, proceed to get in touch with the developers on the mailing list and refine your proposal.&lt;br /&gt;
* In parallel, make sure you prepare a patch as per the [[GSOC2017PatchRequirement | Patch Requirement Guidelines]] (to be revised). Your application to ns-3 will not be considered if you do not fulfill this requirement.&lt;br /&gt;
&lt;br /&gt;
Below is a list of [[#Project Ideas]] proposed by the ns-3 team for Google Summer of Code 2018.  Please note that these ideas are not limited to GSoC; anyone is welcome to work on them. Please email the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list] if you have a different idea that you'd like to work on, to see if a mentor may be interested.  Applicants are encouraged to look over this list, pick one that especially interests them, think about it, and discuss potential approaches on the [http://mailman.isi.edu/mailman/listinfo/ns-developers ns-developers list]. Previous experience with the Google Summer of Code programmes suggest that the more you discuss and refine your proposal on the mailing list beforehand, the stronger the proposal it will develop into, and the higher your chances of being accepted into the programme.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Each project idea within a particular priority has been tagged with the following properties:&lt;br /&gt;
* ''Required Experience:'' Languages, concepts, or packages with which applicants must be familiar.&lt;br /&gt;
* ''Bonus Experience:'' Other experience or familiarity which would be greatly helpful to applicants for this project.&lt;br /&gt;
* ''Interests:'' Areas of particular relevance to this project, and an indicator of where successful students might apply their experiences coming out of this project.&lt;br /&gt;
* ''Difficulty:'' easy, medium or difficult&lt;br /&gt;
* ''Recommended reading:'' pointers to documentation, papers, specific bugs, etc.&lt;br /&gt;
&lt;br /&gt;
Note that all of the projects require some experience and comfort with C++.  Project ideas for which C++ is noted as a required experience will require more and deeper familiarity with the language.  A similar notion applies to  computer networking, BSD sockets, etc: Familiarity is strongly preferred, but is not required except where explicitly noted due to the topic being more advanced in that regard.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mentors: how to participate ===&lt;br /&gt;
&lt;br /&gt;
The ns-3 project is open to the proposal of new project ideas by developers interested in being a GSoC mentor. For mentors who're adding project ideas to the list below, please ensure that:&lt;br /&gt;
&lt;br /&gt;
* The projects are sized such that there can be a code merge by the end of the coding period. The scope of the project should be such that it is very difficult to not have a code merge by the end of the summer.&lt;br /&gt;
* The proposed projects are not too open-ended. That is, if the deliverables or a clear path to the same are not well understood, it is better kept outside GSOC.&lt;br /&gt;
* There should be a clear merge path to one of the main project code repositories (ns-3-dev, ns-3-dce, bake) by the end of the summer, either because the patches directly apply to these repositories, or because they apply to an ns-3 module that is in the process of being merged with ns-3-dev.&lt;br /&gt;
&lt;br /&gt;
== Project Ideas ==&lt;br /&gt;
&lt;br /&gt;
'''Note to students:''' These ideas are not listed in any priority order.  The list of mentors for 2018:  Tom Henderson, Tommaso Pecorella, Mohit Tahiliani, Dizhi Zhou, Matthieu Coudron, and Natale Patriciello.&lt;br /&gt;
&lt;br /&gt;
==== Usability improvements ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tomh@tomh.org Tom Henderson], Dizhi Zhou, others TBD&lt;br /&gt;
&lt;br /&gt;
Usability of ns-3 can always be improved, whether it is help with building simulations, running simulation campaigns, using the ns-3 C++ API, improving the Python user experience, visualizing simulations or data, software packaging (e.g. binary packages or Docker containers), or documentation.  This project is for a student who has been using ns-3 for a while and has ideas on how to make it better during GSoC.  We don't want to limit the scope of proposals here; we will consider any project ideas that improve ns-3 usability in some way (please explain to us why the usability improvement is important to users beyond yourself, and why you would argue for your particular solution, and of course describe how you plan to get it done during the timeframe of GSoC).  Some project examples:&lt;br /&gt;
* Tools and scripts to conduct and manage data from a large number of simulation runs&lt;br /&gt;
* How to integrate a more Python-centric data flow and tools, such as [http://jupyter.org/ Jupyter Notebook] and [https://github.com/bloomberg/bqplot bqplot]&lt;br /&gt;
* Internal state visualization of Wi-Fi or LTE, such as the kind of plots generated by [http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.126.3791&amp;amp;rep=rep1&amp;amp;type=pdf Yavista]&lt;br /&gt;
&lt;br /&gt;
==== LTE and Wi-Fi Coexistence ====&lt;br /&gt;
&lt;br /&gt;
Mentors:  [mailto:tomh@tomh.org Tom Henderson]&lt;br /&gt;
&lt;br /&gt;
Since 2016, the License-Assisted Access (LAA) variant of LTE has been a popular [https://www.nsnam.org/wiki/LAA-WiFi-Coexistence off-tree repository], but this fork has never been merged to ns-3-dev and has fallen behind.  In addition, features beyond the Release 13 LAA (such as Release 14 eLAA) are desired.  The main focus of this project would be to work with the LTE and Wi-Fi maintainers to integrate the LAA-based changes to those repositories, and to move the laa-wifi-coexistence module to a released 'app' on the new [http://apps.nsnam.org ns-3 App Store].  A similar job of porting [http://www.cttc.es/spidercloud-and-cttc-model-lte-u-performance-advancements/ LTE-U CSAT models] to ns-3-dev is also of interest.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:''C++, LTE and Wi-Fi understanding&lt;br /&gt;
* ''Interests:'' wireless networking and coexistence&lt;br /&gt;
* ''Difficulty:'' Medium&lt;br /&gt;
* ''Recommended reading:''  the code found in the above, and this [http://arxiv.org/abs/1604.06826 arXiv paper]&lt;br /&gt;
&lt;br /&gt;
==== Wi-Fi mesh module upgrade ====&lt;br /&gt;
&lt;br /&gt;
Mentors:  [mailto:tomh@tomh.org Tom Henderson]&lt;br /&gt;
&lt;br /&gt;
ns-3 Wi-Fi mesh module was written about 8 years ago, and is not completely up to date with the standard, nor does it work with newer Wi-Fi variants (802.11n/ac/ax).  This project would prioritize making mesh module compatible with all variants of Wi-Fi and would align with the latest standard.  Going further, some scenarios and scripts that align ns-3 simulations with how community networks are set up and configured would be helpful, such as guidance on how to configure rate controls and routing protocols (e.g. how to run OLSR on top of mesh).&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:''C++, Wi-Fi and mesh understanding&lt;br /&gt;
* ''Interests:'' mesh networking&lt;br /&gt;
* ''Difficulty:'' Medium&lt;br /&gt;
* ''Recommended reading:''  mesh issues in the [https://www.nsnam.org/bugzilla/buglist.cgi?component=mesh&amp;amp;product=ns-3&amp;amp;query_format=advanced&amp;amp;resolution=--- tracker], and the mesh module documentation, and IEEE 802.11 standard&lt;br /&gt;
&lt;br /&gt;
==== Direct Code Execution upgrade ====&lt;br /&gt;
&lt;br /&gt;
Mentor: [mailto:mattator@gmail.com Matthieu Coudron]&lt;br /&gt;
&lt;br /&gt;
ns-3 has an extension known as Direct Code Execution, which allows users to build C or C++-based applications, and open source (Linux, FreeBSD) kernels, into ns-3.  However, support for the latest kernels (e.g. Linux kernel 4 series) and latest gcc versions has languished.  We also could better integrate DCE with the main ns-3 tree.  This project seeks a student interested in DCE, improving usability, and making it current with latest kernels and toolchains.  The payoff of this type of project is very high since DCE makes available a lot of real-world models for use in ns-3.  If you select this project idea, please engage with us on the developers list, and consider to take a look at solving one of the [https://www.nsnam.org/bugzilla/buglist.cgi?bug_status=__open__&amp;amp;content=&amp;amp;no_redirect=1&amp;amp;order=Importance&amp;amp;product=dce&amp;amp;query_format=specific open DCE issues in our tracker], for starters.&lt;br /&gt;
* ''Required Experience:'' good hacking skills on Linux, C, C++, Python&lt;br /&gt;
* ''Difficulty:'' Hard.&lt;br /&gt;
* ''For more information:'' https://www.nsnam.org/overview/projects/direct-code-execution/dce-1-9/&lt;br /&gt;
&lt;br /&gt;
==== Freshen ns-3/Click integration ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tomh@tomh.org Tom Henderson]&lt;br /&gt;
&lt;br /&gt;
ns-3 and [https://github.com/kohler/click Click modular routing] were first integrated in an [https://www.nsnam.org/wiki/GSOC2010Click ns-3 GSoC project] from 2010.  We seek a student interested in the following tasks:  &lt;br /&gt;
&lt;br /&gt;
* Since 2010, Ipv4L3Protocol has continued to evolve, but Ipv4L3ClickProtocol has not kept pace with the changes.  Also, IPv6 is not supported.  Refactor Ipv4L3Protocol and Ipv4L3ClickProtocol (or delete Ipv4L3ClickProtocol altogether) so that the click-specific pieces are limited and can be maintained more easily.&lt;br /&gt;
** Current thoughts on this are that we would like to modify the approach.  It would be nice for Click to run on ns-3 in a manner that is as close as possible to its working outside simulation (raw sockets + tun/tap devices).  This will hopefully allow us to delete IPv4L3ClickProtocol and avoid needed ns-3 code to expect Click to provide a routing table.  ns-3 traffic generators should then be able to send packets to an ns-3 equivalent of a tun/tap device (which doesn't presently exist), have packets show up in Click, and then get Click to push those packets directly to an interface using raw sockets from inside ns-3.&lt;br /&gt;
* There was an [https://www.nsnam.org/wiki/NSOC2011ClickMac/MidTermReport ns-3 2011 summer project] (not part of GSoC, but a follow-on project) to try to finish the integration with ClickMac.  We'd like to update it, finish it off, and merge it with ns-3-dev.  Some brief discussion was here:  https://codereview.appspot.com/4890044/&lt;br /&gt;
** The blocking issue at the time was in the Wi-Fi module; the changes in radiotap and frame injection over monitor mode, which Click needed, were not finished (accepted).&lt;br /&gt;
* Anything else that a student thinks would be useful to support regarding click and ns-3 integration.  Consider to review in the recent literature (see Google Scholar) how Click is now being used for research, and think about then what might be research-driven priorities for support in ns-3.  Provide evidence (citations) in your application.&lt;br /&gt;
&lt;br /&gt;
The list is not exhaustive and not limiting. I.e., the candidate can propose other points and/or concentrate on a specific subset.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' C++&lt;br /&gt;
* ''Bonus Experience:'' IPv4, IPv6, Click.&lt;br /&gt;
* ''Interests:'' Software integration.&lt;br /&gt;
* ''Difficulty:'' Medium.&lt;br /&gt;
&lt;br /&gt;
==== User-friendly internet-apps ====&lt;br /&gt;
&lt;br /&gt;
Mentors:  [mailto:tomh@tomh.org Tom Henderson]&lt;br /&gt;
&lt;br /&gt;
Ping is a ubiquitous application for reachability and latency measurements.  ns-3 already has a ping model (the v4ping.cc and ping6.cc).  However, a user-friendly API could still be added.  It is not straightforward to configure an ns-3 program to do in a single statement, for example, &amp;quot;Ping the IP address W.X.Y.Z from node 0 between times 5 and 50 seconds in my program, and save the output in traditional format to the file &amp;lt;filename.txt&amp;gt;&amp;quot;, or to configure the many options found in the ping man page.  This project is therefore not about developing brand new features as much as it is about making ping super-easy to use with a great API.  Have a look at how ns-3 programs are written, and tell us what kind of API makes sense to you, and why, and how you would go about prioritizing its implementation.  If ping is solved very early, the project can follow the same pattern for one or two more applications (e.g. netperf, iperf, etc.).  &lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:''C++&lt;br /&gt;
* ''Interests:'' Network performance management&lt;br /&gt;
* ''Difficulty:'' Medium&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
&lt;br /&gt;
==== nam upgrade and support for ns-3 ====&lt;br /&gt;
&lt;br /&gt;
Mentors:  [mailto:tomh@tomh.org Tom Henderson]&lt;br /&gt;
&lt;br /&gt;
[http://www.isi.edu/nsnam/nam/ nam] is a Tcl/Tk-based animator for ns-2.  Some example videos are found at [https://www.youtube.com/results?search_query=nam+network+animator YouTube].  nam has been functionally replaced in many ways by [https://www.nsnam.org/wiki/NetAnim NetAnim], but it still has some attractive features and might make a complementary animation tool for ns-3.  In fact, someone did a proof-of-concept support of nam for ns-3 many years ago:  http://www.nsnam.org/contributed/ns-3-nam.tar.bz2.  This project would involve upgrading nam support to the latest Tcl/Tk release series (8.6) and then using the existing ns-3 trace system to generate nam output files such as in ns-2, and documenting and testing the results, including some demonstration videos. &lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:''C++, Tcl/Tk also preferred&lt;br /&gt;
* ''Interests:'' Network visualization/animation&lt;br /&gt;
* ''Difficulty:'' Medium&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** the links listed above&lt;br /&gt;
&lt;br /&gt;
==== ns-2 ports to ns-3 ====&lt;br /&gt;
&lt;br /&gt;
Mentors:  [mailto:tomh@tomh.org Tom Henderson], [mailto:tahiliani.nitk@gmail.com Mohit P. Tahiliani]&lt;br /&gt;
&lt;br /&gt;
[http://www.isi.edu/nsnam/ns/ ns-2] is the predecessor to ns-3, but some popular models still exist in ns-2 and are not yet ported to ns-3.  Google Scholar can be used to find topics for which people still are publishing papers using ns-2.  This project idea is for someone who is fond of some feature or model found in ns-2 but not in ns-3.  A successful application of this type will make a good case that the port is still relevant to network research, that people are using ns-2 due to this model, and will describe the technical approach that is planned to make the port (e.g. how OTcl default variables will be ported to ns-3).  Please note that the networking relevance is very important part of the application; if you propose to port some feature of ns-2 that is dated or unlikely to be of much interest because its applicability is very narrow, your proposal will not be selected.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:''C++, ns-2 also preferred&lt;br /&gt;
* ''Difficulty:'' Low to medium&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** ns-2 and ns-3 manuals&lt;br /&gt;
&lt;br /&gt;
==== TCP testing and alignment ====&lt;br /&gt;
&lt;br /&gt;
Mentors:  [mailto:tomh@tomh.org Tom Henderson], [mailto:tahiliani.nitk@gmail.com Mohit P. Tahiliani], [mailto:natale.patriciello@gmail.com Natale Patriciello]&lt;br /&gt;
&lt;br /&gt;
ns-3 needs good TCP models that align with real implementations, or that have documented differences.  In particular, does ns-3 TCP's slow start and congestion avoidace perform like a real implementation, including common variants found in the field (CUBIC, DCTCP), and ones under development (TCP Prague, BBR).  The project should also produce regression tests.  We envision that this project will consist of setting up ns-3 in emulation mode to test operation of its implementation against real implementations, in different impairment environments, documenting the results, and figuring out how to take the ns-3 results and generate regression tests.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:''C++, TCP&lt;br /&gt;
* ''Difficulty:'' Medium&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** Similar FreeBSD test suite:  https://wiki.freebsd.org/SummerOfCode2016/TCP-IP-RegressionTestSuite&lt;br /&gt;
** https://wiki.linuxfoundation.org/networking/tcp_testing&lt;br /&gt;
&lt;br /&gt;
==== TCP analysis ====&lt;br /&gt;
&lt;br /&gt;
Mentors:  [mailto:tomh@tomh.org Tom Henderson], [mailto:tahiliani.nitk@gmail.com Mohit P. Tahiliani], [mailto:natale.patriciello@gmail.com Natale Patriciello]&lt;br /&gt;
&lt;br /&gt;
This project is not about developing new TCP variants, but about developing a TCP analysis capability that is user-friendly and produces output similar to (perhaps integrates with?) tools such as [http://research.protocollabs.com/captcp/ captcp], [http://www.wireshark.org Wireshark TCP analysis], [http://www.tcptrace.org/ tcptrace], [http://tstat.polito.it/ Tstat], or other similar tools.  An important part of your application will be a description of how a user will enable it in a user program, and some description of how it will be implemented.&lt;br /&gt;
&lt;br /&gt;
As an example, consider providing the user with the ability to auto-generate plots of throughput evolution, congestion window evolution, etc. over time, for a pair of 4-tuples where the 4-tuples may contain wild cards or regular expressions.  For instance, the user specifies &amp;quot;10.0.0.1:*&amp;quot; and &amp;quot;192.168.0.1:80&amp;quot;, and if there are three connections in the simulation from 10.0.0.1 to that specific IP address and port, then three sets of time-series plots are generated and labelled appropriately.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:''C++, TCP&lt;br /&gt;
* ''Difficulty:'' Medium&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** ns-2 and ns-3 manuals&lt;br /&gt;
&lt;br /&gt;
==== 802.15.4 Bootstrap ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella]&lt;br /&gt;
&lt;br /&gt;
The lr-wpan model is an 802.15.4 PHY and MAC model currently in development. The model is able to simulate an 802.15.4 network in ad-hoc mode, much like Contiki-os nodes do. An useful extension is to fully support the node bootstrap phase, including node association and beacon request/reply. The goal of the project is to enhance the lr-wpan module so to use beacons in the bootstrap phase along with network scanning and pan-id resolution for in-range coordinators.&lt;br /&gt;
* ''Required Experience:'' C++, WSN&lt;br /&gt;
* ''Bonus Experience:'' 802.15.4 standard&lt;br /&gt;
* ''Interests:'' WSN&lt;br /&gt;
* ''Difficulty:'' medium&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [http://standards.ieee.org/getieee802/download/802.15.4-2011.pdf 802.15.4 Standard]&lt;br /&gt;
&lt;br /&gt;
==== 802.15.4 Beacon-enabled mode ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella]&lt;br /&gt;
&lt;br /&gt;
The lr-wpan model is an 802.15.4 PHY and MAC model currently in development. The model is able to simulate an 802.15.4 network in ad-hoc mode, much like Contiki-os nodes do. Unlike Contiki-os, the model could benefit from supporting beacon-enabled mode of operation. The beacon-enabled mode is a fully slotted transmission mode, with guaranteed slots and bound performances, unlike the ad-hoc mode. This is especially important because the L3 routing protocols might be strongly affected by the lower-layer topology. Hence it is of paramount importance to be able to simulate both in ns-3. The goal of the project is to develop the new beacon-enabled MAC layer for the lr-wpan module. &lt;br /&gt;
* ''Required Experience:'' C++, WSN&lt;br /&gt;
* ''Bonus Experience:'' 802.15.4 standard&lt;br /&gt;
* ''Interests:'' WSN&lt;br /&gt;
* ''Difficulty:'' medium/hard&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [http://standards.ieee.org/getieee802/download/802.15.4-2011.pdf 802.15.4 Standard]&lt;br /&gt;
&lt;br /&gt;
==== DSR routing RFC compliance ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella]&lt;br /&gt;
&lt;br /&gt;
The DSR routing module is not compliant with the RFC 4728. This leads to a number of small issues, like simulation imprecision and impossibility to decode the messages with Wireshark.&lt;br /&gt;
The goal of the project is to enhance the current model and to make it RFC-compliant, eventually doing a code refectory where needed.&lt;br /&gt;
A possible enhancement over the base protocol could also be to include support for IPv6 in the implementation.&lt;br /&gt;
* ''Required Experience:'' C++&lt;br /&gt;
* ''Bonus Experience:'' DSR standard&lt;br /&gt;
* ''Interests:'' Ad-hoc routing&lt;br /&gt;
* ''Difficulty:'' medium&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [http://www6.ietf.org/rfc/rfc4728.txt RFC 4728]&lt;br /&gt;
&lt;br /&gt;
==== Implementation of AccECN and ECN++ in ns-3 ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tahiliani.nitk@gmail.com Mohit P. Tahiliani]&lt;br /&gt;
&lt;br /&gt;
Reducing Internet Transport Latency is an interesting research topic and has gained significant attention in the recent past. Some of the promising new solutions rely on Explicit Congestion Notification (ECN) (RFC 3168) to notify TCP endpoints of congestion that may be developing in a bottleneck queue, without resorting to packet drops. As a result, there have been attempts at Internet Engineering Task Force (IETF) to extend the functionality of ECN and provide rich feedback to TCP endpoints. In this regard, Accurate ECN feedback (AccECN) and ECN++ are two active topics of discussion at IETF. This project proposal is to: extend the ECN implementation in ns-3 to support AccECN and ECN++, test the correctness of implementation and provide examples.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with TCP congestion control algorithms, ECN and C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with ECN implementation in ns-3&lt;br /&gt;
* ''Interests:'' TCP performance enhancements and ECN.&lt;br /&gt;
* ''Difficulty:'' Medium.&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/tcp.html TCP models in ns-3]&lt;br /&gt;
** [https://tools.ietf.org/html/draft-ietf-tcpm-accurate-ecn-05 More Accurate ECN Feedback in TCP]&lt;br /&gt;
** [https://tools.ietf.org/id/draft-ietf-tcpm-generalized-ecn-02.html ECN++: Adding ECN to TCP Control Packets]&lt;br /&gt;
&lt;br /&gt;
==== Enable IPv6 support for Ad hoc Routing Protocols in ns-3 ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:tahiliani.nitk@gmail.com Mohit P. Tahiliani]&lt;br /&gt;
&lt;br /&gt;
ns-3 contains models for proactive (DSDV and OLSR) and reactive (AODV and DSR) ad hoc routing protocols. However, these models are IPv4-only and do not provide support of IPv6 addressing. This project aims to enable IPv6 support for ad hoc routing protocols in ns-3, mainly for AODV and DSR. There are out-of-tree implementations of OLSR and DSDV that provide support for IPv6 addressing, and can be used as references to get started with this project.&lt;br /&gt;
An important point of the implementation should be code duplicate minimization, in order to have the minimize maintenance efforts.&lt;br /&gt;
Note:  Enabling IPv6 support for these protocols is not a matter of simply changing out an IPv4-formatted address for an IPv6-formatted address.  The IPv6 addressing architecture emphasizes scoping much more than does IPv4 (RFC 4007).  Please suggest in your application how IPv6 address configuration (and possibly auto-configuration?) and address scopes (e.g. link-local vs. global) should be used in these protocols. Consulting the RFCs is highly recommended.'&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Fundamentals of IPv6 addressing, C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with AODV and DSR implementations in ns-3&lt;br /&gt;
* ''Interests:'' Ad hoc routing&lt;br /&gt;
* ''Difficulty:'' Medium.&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/ipv6.html IPv6 model in ns-3]&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/aodv.html AODV model in ns-3]&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/dsr.html DSR model in ns-3]&lt;br /&gt;
** [https://www.nsnam.org/workshops/wns3-2016/posters/IPv6-support-for-OLSR.pdf IPv6 Support for OLSR in ns-3]&lt;br /&gt;
&lt;br /&gt;
==== Trust-based routing protocols framework ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella]&lt;br /&gt;
&lt;br /&gt;
ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them is trust-based.&lt;br /&gt;
Given the increasing interest on trust-based routing schemes to increase and improve the network resilience Vs routing attacks, it would be useful to have a general approach for Trust-based schemes. As a matter of fact, there are multiple trust-based extensions for well known protocold (e.g., AODV), but each one modifies in a particular way the single routing protocol, making it difficult to export the solution to other routing schemes.&lt;br /&gt;
On the opposite, it would be extremely useful to have an architectural approach where the next hop trust calculation is independent from the actual routing protocol or communication scheme, and the protocol(s) can use the next hop trust independently from the actual scheme used to calculate the trust value.&lt;br /&gt;
This should allow a greater flexibility in studying differet trust evaluation schemes and their effect on different routing policies.&lt;br /&gt;
The project aims at defining and develop a Trust-based framework, at least one (or more) trust evluation methods, and apply them to at least one (or more) routing protocols.&lt;br /&gt;
&lt;br /&gt;
* ''Required Experience:'' Familiarity with Trust-based routing protocols, C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Familiarity with ns-3 routing protocols&lt;br /&gt;
* ''Interests:'' Trust-based routing&lt;br /&gt;
* ''Difficulty:'' Medium.&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [https://www.nsnam.org/docs/models/html/internet-models.html Internet model in ns-3]&lt;br /&gt;
** [https://pdfs.semanticscholar.org/db82/e98f454331469deec32aeff566882898ef01.pdf C. Zhang, X. Zhu, Y. Song and Y. Fang, &amp;quot;A Formal Study of Trust-Based Routing in Wireless Ad Hoc Networks,&amp;quot; 2010 Proceedings IEEE INFOCOM, San Diego, CA, 2010, pp. 1-9. doi: 10.1109/INFCOM.2010.5462116]&lt;br /&gt;
&lt;br /&gt;
==== Data collection and statistics framework extension ====&lt;br /&gt;
&lt;br /&gt;
Mentors: [mailto:dizhizhou@hotmail.com Dizhi Zhou]&lt;br /&gt;
&lt;br /&gt;
The goal of this project is to extend and add more functionalities on ns-3 data collection and statistics framework (source code:ns-3.27/src/stats/) which was added in ns-3.18. The model was implemented based on the ns-3 tracing system. It has two major functions. 1) retrieve data from multiple ns-3 trace sources and then recalculate/transform the data into a user-defined format. However, not all the trace source types are supported. 2) use a data collector to calculate some useful statistics from a ns-3 trace source (e.g. max and min of the trace value). However, only supports counter and min/max data collectors are supported today. In order to make the model more useful, more trace source types, output formats and collectors need to be added.&lt;br /&gt;
&lt;br /&gt;
A parallel project of ns-3, named sns3, proposed an enhancement on this model in 2016. But the patch was not merged to the official release yet. Student may use this patch as a reference for their proposals. Some sample ideas are listed below.&lt;br /&gt;
* ''Help to merge sns3 statistic enhancement to ns-3. &lt;br /&gt;
* ''Add more trace types&lt;br /&gt;
* ''Add more collectors. Ideally, the statistic calculation method should be configurable in the script so that people don’t need to add new collectors when they have any new requirement.&lt;br /&gt;
* ''More output format types: excel, MySql, matplotlib, R, Matlab, more picture formats, etc.&lt;br /&gt;
* ''Improve documentation and add more example scripts.&lt;br /&gt;
&lt;br /&gt;
The list is not exhaustive and not limiting. Any new ideas in this area are welcome.&lt;br /&gt;
* ''Required Experience:'' C++ programming.&lt;br /&gt;
* ''Bonus Experience:'' Proficiency with open source data handling software (e.g. R, matplotlib, SQLite, gnuplot)&lt;br /&gt;
* ''Difficulty:'' Medium.&lt;br /&gt;
* ''Recommended reading:''&lt;br /&gt;
** [https://www.nsnam.org/documentation/ Data collection and trace chapters in ns-3 tutorial/manual/model library]&lt;br /&gt;
** [https://codereview.appspot.com/318800043/ Statistic model enhancement code review from sns3 project]&lt;br /&gt;
&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8166</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8166"/>
		<updated>2013-12-08T20:11:49Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* Code: the code can be found in [http://code.nsnam.org/dizhizhou/ns-3-dev-socis2013/summary here]&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Protocol structure = &lt;br /&gt;
In NS-3, the bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. The structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area represents the main classes of BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
# BundleProtocol class implements several BP APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes. The name and functions of these APIs are referenced from a Linux bundle protocol implementation -- [http://www.dtnrg.org/wiki/Code DTN2]. The other functions implemented in the BundleProtocol class include bundle fragmentation and aggregation, bundle storage and registration storage; &lt;br /&gt;
# BpClaProtocol class is a pure abstract class for convergence layer adaptor (CLA). For each transport layer protocol, a new CLA class needs to be inherited from BpClaProtocol. In the existing implementation, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles;&lt;br /&gt;
# BpRoutingProtocol class is a pure abstract class, which defines the APIs of bundle routing protocol. In the existing implementation, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
In addition to above three core classes, the NS-3 bundle protocol model also includes classes:&lt;br /&gt;
&lt;br /&gt;
# BundleProtocolHelper and BundleProtocolContainer classes, which are implemented to facilitate users to create a bundle node. Then endpoint id data structure is supported at a BpEndpointId class;&lt;br /&gt;
# BpEndpointId, which implements the endpoint id data structure for bundle protocol;&lt;br /&gt;
# BpHeader, which implements the primary bundle header in RFC 5050. &lt;br /&gt;
# BpPayloadHeader, which implements the bundle payload header in RFC 5050.&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol APIs =&lt;br /&gt;
Bundle protocol APIs are called by applications.&lt;br /&gt;
&lt;br /&gt;
== Open () ==&lt;br /&gt;
The Open () API installs the BundleProtocol and BpClaProtocol classes into a bundle node. Open () is always the first API needed to be called.&lt;br /&gt;
&lt;br /&gt;
== Register () ==&lt;br /&gt;
Register () API adds an entry in the persistent registration storage. A registration in BP is identified by an endpoint id, which can be get by BuildBpEndpointId () API. If the state field in the register information is &amp;quot;true&amp;quot; (active state), which means that this application desires to receive bundles, Register () triggers the BpClaProtocol to enable a transport layer connection to receive packet (e.g., listen state in TCP).&lt;br /&gt;
&lt;br /&gt;
== Unregister () ==&lt;br /&gt;
Unregister () triggers the convergence layer(CLA) to disable the transport layer to receive packets. For example, BpTcpClaProtocol will be called by Unregister to close the tcp connection.&lt;br /&gt;
&lt;br /&gt;
== Bind () ==&lt;br /&gt;
Bind () APIs set the registration state of the local endpoint id to &amp;quot;true&amp;quot;. If the state in Register () is &amp;quot;true&amp;quot; already, Bind () does nothing in this case.&lt;br /&gt;
&lt;br /&gt;
== Send () ==&lt;br /&gt;
This method is called by applications to send a application data unit (ADU) from the source endpoint id to the destination endpoint id. If the ADU size is larger than the bundle size, ADU is divided into several bundles while each bundle includes a primary bundle header and a bundle payload header. The bundle will be stored in the persistent bundle storage in BundleProtocol first. Then the BpClaProtocol establishes the transport layer connection with peer bundle node. Once the transport layer connection is available, the BpClaProtocol will retrieve and send the bundle by a FIFO order from the storage. &lt;br /&gt;
&lt;br /&gt;
== Receive () ==&lt;br /&gt;
Application can use this API to get bundles stored from storage in a FIFO order. The bundle headers are removed before forwarding bundles to the application.&lt;br /&gt;
&lt;br /&gt;
== BuildBpEndpointId () ==&lt;br /&gt;
Build an endpoint id based on scheme and ssp strings. In BP of NS-3, each registration has a unique endpoint id. a BundleProtocol calss can be served for multiple registrations in a bundle node.&lt;br /&gt;
&lt;br /&gt;
== SetBpEndpointId () == &lt;br /&gt;
Users build an endpoint id and set the endpoint id to the bundle protocol.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
An example script in src/bundle-protocol/examples is created to show the usage of these APIs. In this section, we show a sample code for registering an application in a bundle node to send bundles.&lt;br /&gt;
 &lt;br /&gt;
   BpEndpointId eidSender (&amp;quot;dtn&amp;quot;, &amp;quot;node0&amp;quot;);    // build an endpoint id&lt;br /&gt;
   BundleProtocolHelper bpSender (eidSender);  // create a bundle protocol helper&lt;br /&gt;
   bpSender.SetRoutingProtocol (route);        // set the bundle routing protocol&lt;br /&gt;
   bpSender.SetRegisterInfo (info);            // set the registration information&lt;br /&gt;
   BundleProtocolContainer senders = bpSender.Install (nodes.Get (0));  // the bundle protocol helper calls &lt;br /&gt;
                                                                        // following BP APIs: Open (), &lt;br /&gt;
                                                                        // SetBpEndpointId (), Register (), Bind (); &lt;br /&gt;
   Ptr&amp;lt;BundleProtocol&amp;gt; sender = senders.Get (0);&lt;br /&gt;
    sender-&amp;gt;Send (packet, src, dst);      // send the packet from endpoint id src to endpoint id dst. &lt;br /&gt;
                                          // The src and dst will be transferred into internet socket address&lt;br /&gt;
                                          // based on bundle routing protocol.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8165</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8165"/>
		<updated>2013-12-08T20:06:53Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Bundle protocol APIs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* Code: the code can be found in [http://code.nsnam.org/dizhizhou/ns-3-dev-socis2013/summary here]&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Protocol structure = &lt;br /&gt;
In NS-3, the bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. The structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area represents the main classes of BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
# BundleProtocol class implements several BP APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes. The name and functions of these APIs are referenced from a Linux bundle protocol implementation -- [http://www.dtnrg.org/wiki/Code DTN2]. The other functions implemented in the BundleProtocol class include bundle fragmentation and aggregation, bundle storage and registration storage; &lt;br /&gt;
# BpClaProtocol class is a pure abstract class for convergence layer adaptor (CLA). For each transport layer protocol, a new CLA class needs to be inherited from BpClaProtocol. In the existing implementation, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles;&lt;br /&gt;
# BpRoutingProtocol class is a pure abstract class, which defines the APIs of bundle routing protocol. In the existing implementation, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
In addition to above three core classes, the NS-3 bundle protocol model also includes classes:&lt;br /&gt;
&lt;br /&gt;
# BundleProtocolHelper and BundleProtocolContainer classes, which are implemented to facilitate users to create a bundle node. Then endpoint id data structure is supported at a BpEndpointId class;&lt;br /&gt;
# BpEndpointId, which implements the endpoint id data structure for bundle protocol;&lt;br /&gt;
# BpHeader, which implements the primary bundle header in RFC 5050. &lt;br /&gt;
# BpPayloadHeader, which implements the bundle payload header in RFC 5050.&lt;br /&gt;
&lt;br /&gt;
= External bundle protocol APIs =&lt;br /&gt;
External bundle protocol APIs are called by applications.&lt;br /&gt;
&lt;br /&gt;
== Open () ==&lt;br /&gt;
The Open () API installs the BundleProtocol and BpClaProtocol classes into a bundle node. Open () is always the first API needed to be called.&lt;br /&gt;
&lt;br /&gt;
== Register () ==&lt;br /&gt;
Register () API adds an entry in the persistent registration storage. A registration in BP is identified by an endpoint id, which can be get by BuildBpEndpointId () API. If the state field in the register information is &amp;quot;true&amp;quot; (active state), which means that this application desires to receive bundles, Register () triggers the BpClaProtocol to enable a transport layer connection to receive packet (e.g., listen state in TCP).&lt;br /&gt;
&lt;br /&gt;
== Unregister () ==&lt;br /&gt;
Unregister () triggers the convergence layer(CLA) to disable the transport layer to receive packets. For example, BpTcpClaProtocol will be called by Unregister to close the tcp connection.&lt;br /&gt;
&lt;br /&gt;
== Bind () ==&lt;br /&gt;
Bind () APIs set the registration state of the local endpoint id to &amp;quot;true&amp;quot;. If the state in Register () is &amp;quot;true&amp;quot; already, Bind () does nothing in this case.&lt;br /&gt;
&lt;br /&gt;
== Send () ==&lt;br /&gt;
This method is called by applications to send a application data unit (ADU) from the source endpoint id to the destination endpoint id. If the ADU size is larger than the bundle size, ADU is divided into several bundles while each bundle includes a primary bundle header and a bundle payload header. The bundle will be stored in the persistent bundle storage in BundleProtocol first. Then the BpClaProtocol establishes the transport layer connection with peer bundle node. Once the transport layer connection is available, the BpClaProtocol will retrieve and send the bundle by a FIFO order from the storage. &lt;br /&gt;
&lt;br /&gt;
== Receive () ==&lt;br /&gt;
Application can use this API to get bundles stored from storage in a FIFO order. The bundle headers are removed before forwarding bundles to the application.&lt;br /&gt;
&lt;br /&gt;
== BuildBpEndpointId () ==&lt;br /&gt;
Build an endpoint id based on scheme and ssp strings. In BP of NS-3, each registration has a unique endpoint id. a BundleProtocol calss can be served for multiple registrations in a bundle node.&lt;br /&gt;
&lt;br /&gt;
== SetBpEndpointId () == &lt;br /&gt;
Users build an endpoint id and set the endpoint id to the bundle protocol.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
An example script in src/bundle-protocol/examples is created to show the usage of these APIs. In this section, we show a sample code for registering an application in a bundle node to send bundles.&lt;br /&gt;
&lt;br /&gt;
    Ptr&amp;lt;BundleProtocol&amp;gt; sender = CreateObject&amp;lt;BundleProtocol&amp;gt; ();   // create a bundle protocol&lt;br /&gt;
    sender-&amp;gt;Open (nodes.Get (0));  // install this bundle protocol in a node and install cla into this bundle protocol&lt;br /&gt;
    BpEndpointId src = sender-&amp;gt;BuildBpEndpointId (&amp;quot;dtn&amp;quot;,&amp;quot;node0&amp;quot;);  // get an endpoint id: dtn:node0&lt;br /&gt;
    struct registerInfo info; // create registration information&lt;br /&gt;
    info.lifetime = 10;&lt;br /&gt;
    info.state = false;&lt;br /&gt;
    sender-&amp;gt;Register (src, info);  // register this endpoint id to the bundle protocol&lt;br /&gt;
    sender-&amp;gt;Bind (src);            // set the registration of endpoint id src to active state. &lt;br /&gt;
                                   // So far, the sender can receive bundles from other nodes.&lt;br /&gt;
    sender-&amp;gt;SetRoutingProtocol (routing); // set the routing protocol for this bundle node&lt;br /&gt;
    sender-&amp;gt;Send (packet, src, dst);      // send the packet from endpoint id src to endpoint id dst. &lt;br /&gt;
                                          // The src and dst will be transferred into internet socket address&lt;br /&gt;
                                          // based on bundle routing protocol.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8164</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8164"/>
		<updated>2013-12-08T19:53:44Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Protocol structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* Code: the code can be found in [http://code.nsnam.org/dizhizhou/ns-3-dev-socis2013/summary here]&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Protocol structure = &lt;br /&gt;
In NS-3, the bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. The structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area represents the main classes of BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
# BundleProtocol class implements several BP APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes. The name and functions of these APIs are referenced from a Linux bundle protocol implementation -- [http://www.dtnrg.org/wiki/Code DTN2]. The other functions implemented in the BundleProtocol class include bundle fragmentation and aggregation, bundle storage and registration storage; &lt;br /&gt;
# BpClaProtocol class is a pure abstract class for convergence layer adaptor (CLA). For each transport layer protocol, a new CLA class needs to be inherited from BpClaProtocol. In the existing implementation, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles;&lt;br /&gt;
# BpRoutingProtocol class is a pure abstract class, which defines the APIs of bundle routing protocol. In the existing implementation, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
In addition to above three core classes, the NS-3 bundle protocol model also includes classes:&lt;br /&gt;
&lt;br /&gt;
# BundleProtocolHelper and BundleProtocolContainer classes, which are implemented to facilitate users to create a bundle node. Then endpoint id data structure is supported at a BpEndpointId class;&lt;br /&gt;
# BpEndpointId, which implements the endpoint id data structure for bundle protocol;&lt;br /&gt;
# BpHeader, which implements the primary bundle header in RFC 5050. &lt;br /&gt;
# BpPayloadHeader, which implements the bundle payload header in RFC 5050.&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol APIs =&lt;br /&gt;
In this section, we introduce BP APIs supported by BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
== Open () ==&lt;br /&gt;
The Open () API installs the BundleProtocol and BpClaProtocol classes into a bundle node. Open () is always the first API needed to be called.&lt;br /&gt;
&lt;br /&gt;
== Register () ==&lt;br /&gt;
Register () API adds an entry in the persistent registration storage. A registration in BP is identified by an endpoint id, which can be get by BuildBpEndpointId () API. If the state field in the register information is &amp;quot;true&amp;quot; (active state), which means that this application desires to receive bundles, Register () triggers the BpClaProtocol to enable a transport layer connection to receive packet (e.g., listen state in TCP).&lt;br /&gt;
&lt;br /&gt;
== Unregister () ==&lt;br /&gt;
Unregister () triggers the convergence layer(CLA) to disable the transport layer to receive packets. For example, BpTcpClaProtocol will be called by Unregister to close the tcp connection.&lt;br /&gt;
&lt;br /&gt;
== Bind () ==&lt;br /&gt;
Bind () APIs set the registration state of the local endpoint id to &amp;quot;true&amp;quot;. If the state in Register () is &amp;quot;true&amp;quot; already, Bind () does nothing in this case.&lt;br /&gt;
&lt;br /&gt;
== Send () ==&lt;br /&gt;
Send a bundle from the source endpoint id to the destination endpoint id. The bundle will be stored in the persistent bundle storage in BundleProtocol first. When the first bundle is sent by the source endpoint id, the BpClaProtocol establishes the transport layer connection with peer bundle node. Once the transport layer connection is available, the BpClaProtocol will retrieve the bundle in a FIFO order from the storage and then send it.&lt;br /&gt;
&lt;br /&gt;
== Receive () ==&lt;br /&gt;
Applications can use this API to get bundles stored from storage in a FIFO order.&lt;br /&gt;
&lt;br /&gt;
== BuildBpEndpointId () ==&lt;br /&gt;
Build an endpoint id for a registration. In BP of NS-3, each registration has a unique endpoint id. a BundleProtocol calss can be served for multiple registrations in a bundle node.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
An example script in src/bundle-protocol/examples is created to show the usage of these APIs. In this section, we show a sample code for registering an application in a bundle node to send bundles.&lt;br /&gt;
&lt;br /&gt;
    Ptr&amp;lt;BundleProtocol&amp;gt; sender = CreateObject&amp;lt;BundleProtocol&amp;gt; ();   // create a bundle protocol&lt;br /&gt;
    sender-&amp;gt;Open (nodes.Get (0));  // install this bundle protocol in a node and install cla into this bundle protocol&lt;br /&gt;
    BpEndpointId src = sender-&amp;gt;BuildBpEndpointId (&amp;quot;dtn&amp;quot;,&amp;quot;node0&amp;quot;);  // get an endpoint id: dtn:node0&lt;br /&gt;
    struct registerInfo info; // create registration information&lt;br /&gt;
    info.lifetime = 10;&lt;br /&gt;
    info.state = false;&lt;br /&gt;
    sender-&amp;gt;Register (src, info);  // register this endpoint id to the bundle protocol&lt;br /&gt;
    sender-&amp;gt;Bind (src);            // set the registration of endpoint id src to active state. &lt;br /&gt;
                                   // So far, the sender can receive bundles from other nodes.&lt;br /&gt;
    sender-&amp;gt;SetRoutingProtocol (routing); // set the routing protocol for this bundle node&lt;br /&gt;
    sender-&amp;gt;Send (packet, src, dst);      // send the packet from endpoint id src to endpoint id dst. &lt;br /&gt;
                                          // The src and dst will be transferred into internet socket address&lt;br /&gt;
                                          // based on bundle routing protocol.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8163</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8163"/>
		<updated>2013-12-08T19:53:22Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Protocol structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* Code: the code can be found in [http://code.nsnam.org/dizhizhou/ns-3-dev-socis2013/summary here]&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Protocol structure = &lt;br /&gt;
In NS-3, the bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. The structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area represents the main classes of BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
# BundleProtocol class implements several BP APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes. The name and functions of these APIs are referenced from a Linux bundle protocol implementation -- [http://www.dtnrg.org/wiki/Code DTN2]. The other functions implemented in the BundleProtocol class include bundle fragmentation and aggregation, bundle storage and registration storage; &lt;br /&gt;
# BpClaProtocol class is a pure abstract class for convergence layer adaptor (CLA). For each transport layer protocol, a new CLA class needs to be inherited from BpClaProtocol. In the existing implementation, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles;&lt;br /&gt;
# BpRoutingProtocol class is a pure abstract class, which defines the APIs of bundle routing protocol. In the existing implementation, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
In addition to above three core classes, bundle protocol model also include classes:&lt;br /&gt;
&lt;br /&gt;
# BundleProtocolHelper and BundleProtocolContainer classes, which are implemented to facilitate users to create a bundle node. Then endpoint id data structure is supported at a BpEndpointId class;&lt;br /&gt;
# BpEndpointId, which implements the endpoint id data structure for bundle protocol;&lt;br /&gt;
# BpHeader, which implements the primary bundle header in RFC 5050. &lt;br /&gt;
# BpPayloadHeader, which implements the bundle payload header in RFC 5050.&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol APIs =&lt;br /&gt;
In this section, we introduce BP APIs supported by BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
== Open () ==&lt;br /&gt;
The Open () API installs the BundleProtocol and BpClaProtocol classes into a bundle node. Open () is always the first API needed to be called.&lt;br /&gt;
&lt;br /&gt;
== Register () ==&lt;br /&gt;
Register () API adds an entry in the persistent registration storage. A registration in BP is identified by an endpoint id, which can be get by BuildBpEndpointId () API. If the state field in the register information is &amp;quot;true&amp;quot; (active state), which means that this application desires to receive bundles, Register () triggers the BpClaProtocol to enable a transport layer connection to receive packet (e.g., listen state in TCP).&lt;br /&gt;
&lt;br /&gt;
== Unregister () ==&lt;br /&gt;
Unregister () triggers the convergence layer(CLA) to disable the transport layer to receive packets. For example, BpTcpClaProtocol will be called by Unregister to close the tcp connection.&lt;br /&gt;
&lt;br /&gt;
== Bind () ==&lt;br /&gt;
Bind () APIs set the registration state of the local endpoint id to &amp;quot;true&amp;quot;. If the state in Register () is &amp;quot;true&amp;quot; already, Bind () does nothing in this case.&lt;br /&gt;
&lt;br /&gt;
== Send () ==&lt;br /&gt;
Send a bundle from the source endpoint id to the destination endpoint id. The bundle will be stored in the persistent bundle storage in BundleProtocol first. When the first bundle is sent by the source endpoint id, the BpClaProtocol establishes the transport layer connection with peer bundle node. Once the transport layer connection is available, the BpClaProtocol will retrieve the bundle in a FIFO order from the storage and then send it.&lt;br /&gt;
&lt;br /&gt;
== Receive () ==&lt;br /&gt;
Applications can use this API to get bundles stored from storage in a FIFO order.&lt;br /&gt;
&lt;br /&gt;
== BuildBpEndpointId () ==&lt;br /&gt;
Build an endpoint id for a registration. In BP of NS-3, each registration has a unique endpoint id. a BundleProtocol calss can be served for multiple registrations in a bundle node.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
An example script in src/bundle-protocol/examples is created to show the usage of these APIs. In this section, we show a sample code for registering an application in a bundle node to send bundles.&lt;br /&gt;
&lt;br /&gt;
    Ptr&amp;lt;BundleProtocol&amp;gt; sender = CreateObject&amp;lt;BundleProtocol&amp;gt; ();   // create a bundle protocol&lt;br /&gt;
    sender-&amp;gt;Open (nodes.Get (0));  // install this bundle protocol in a node and install cla into this bundle protocol&lt;br /&gt;
    BpEndpointId src = sender-&amp;gt;BuildBpEndpointId (&amp;quot;dtn&amp;quot;,&amp;quot;node0&amp;quot;);  // get an endpoint id: dtn:node0&lt;br /&gt;
    struct registerInfo info; // create registration information&lt;br /&gt;
    info.lifetime = 10;&lt;br /&gt;
    info.state = false;&lt;br /&gt;
    sender-&amp;gt;Register (src, info);  // register this endpoint id to the bundle protocol&lt;br /&gt;
    sender-&amp;gt;Bind (src);            // set the registration of endpoint id src to active state. &lt;br /&gt;
                                   // So far, the sender can receive bundles from other nodes.&lt;br /&gt;
    sender-&amp;gt;SetRoutingProtocol (routing); // set the routing protocol for this bundle node&lt;br /&gt;
    sender-&amp;gt;Send (packet, src, dst);      // send the packet from endpoint id src to endpoint id dst. &lt;br /&gt;
                                          // The src and dst will be transferred into internet socket address&lt;br /&gt;
                                          // based on bundle routing protocol.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8162</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8162"/>
		<updated>2013-12-08T19:46:12Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Protocol structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* Code: the code can be found in [http://code.nsnam.org/dizhizhou/ns-3-dev-socis2013/summary here]&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Protocol structure = &lt;br /&gt;
In NS-3, the bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. The structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area represents the main classes of BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
# BundleProtocol class implements several BP APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes. The other functions implemented in the BundleProtocol class include bundle fragmentation and aggregation, bundle storage and registration storage. &lt;br /&gt;
# BpClaProtocol class is a pure abstract class for convergence layer adaptor (CLA). For each transport layer protocol, a new CLA class needs to be inherited from BpClaProtocol. In the existing implementation, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles.&lt;br /&gt;
# BpRoutingProtocol class is a pure abstract class, which defines the APIs of bundle routing protocol. In the existing implementation, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
In addition to above three core classes, a BundleProtocolHelper and a BundleProtocolContainer classes are implemented to facilitate users to create a bundle node.&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol APIs =&lt;br /&gt;
In this section, we introduce BP APIs supported by BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
== Open () ==&lt;br /&gt;
The Open () API installs the BundleProtocol and BpClaProtocol classes into a bundle node. Open () is always the first API needed to be called.&lt;br /&gt;
&lt;br /&gt;
== Register () ==&lt;br /&gt;
Register () API adds an entry in the persistent registration storage. A registration in BP is identified by an endpoint id, which can be get by BuildBpEndpointId () API. If the state field in the register information is &amp;quot;true&amp;quot; (active state), which means that this application desires to receive bundles, Register () triggers the BpClaProtocol to enable a transport layer connection to receive packet (e.g., listen state in TCP).&lt;br /&gt;
&lt;br /&gt;
== Unregister () ==&lt;br /&gt;
Unregister () triggers the convergence layer(CLA) to disable the transport layer to receive packets. For example, BpTcpClaProtocol will be called by Unregister to close the tcp connection.&lt;br /&gt;
&lt;br /&gt;
== Bind () ==&lt;br /&gt;
Bind () APIs set the registration state of the local endpoint id to &amp;quot;true&amp;quot;. If the state in Register () is &amp;quot;true&amp;quot; already, Bind () does nothing in this case.&lt;br /&gt;
&lt;br /&gt;
== Send () ==&lt;br /&gt;
Send a bundle from the source endpoint id to the destination endpoint id. The bundle will be stored in the persistent bundle storage in BundleProtocol first. When the first bundle is sent by the source endpoint id, the BpClaProtocol establishes the transport layer connection with peer bundle node. Once the transport layer connection is available, the BpClaProtocol will retrieve the bundle in a FIFO order from the storage and then send it.&lt;br /&gt;
&lt;br /&gt;
== Receive () ==&lt;br /&gt;
Applications can use this API to get bundles stored from storage in a FIFO order.&lt;br /&gt;
&lt;br /&gt;
== BuildBpEndpointId () ==&lt;br /&gt;
Build an endpoint id for a registration. In BP of NS-3, each registration has a unique endpoint id. a BundleProtocol calss can be served for multiple registrations in a bundle node.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
An example script in src/bundle-protocol/examples is created to show the usage of these APIs. In this section, we show a sample code for registering an application in a bundle node to send bundles.&lt;br /&gt;
&lt;br /&gt;
    Ptr&amp;lt;BundleProtocol&amp;gt; sender = CreateObject&amp;lt;BundleProtocol&amp;gt; ();   // create a bundle protocol&lt;br /&gt;
    sender-&amp;gt;Open (nodes.Get (0));  // install this bundle protocol in a node and install cla into this bundle protocol&lt;br /&gt;
    BpEndpointId src = sender-&amp;gt;BuildBpEndpointId (&amp;quot;dtn&amp;quot;,&amp;quot;node0&amp;quot;);  // get an endpoint id: dtn:node0&lt;br /&gt;
    struct registerInfo info; // create registration information&lt;br /&gt;
    info.lifetime = 10;&lt;br /&gt;
    info.state = false;&lt;br /&gt;
    sender-&amp;gt;Register (src, info);  // register this endpoint id to the bundle protocol&lt;br /&gt;
    sender-&amp;gt;Bind (src);            // set the registration of endpoint id src to active state. &lt;br /&gt;
                                   // So far, the sender can receive bundles from other nodes.&lt;br /&gt;
    sender-&amp;gt;SetRoutingProtocol (routing); // set the routing protocol for this bundle node&lt;br /&gt;
    sender-&amp;gt;Send (packet, src, dst);      // send the packet from endpoint id src to endpoint id dst. &lt;br /&gt;
                                          // The src and dst will be transferred into internet socket address&lt;br /&gt;
                                          // based on bundle routing protocol.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8126</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8126"/>
		<updated>2013-11-19T00:35:51Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* Code: the code can be found in [http://code.nsnam.org/dizhizhou/ns-3-dev-socis2013/summary here]&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Protocol structure = &lt;br /&gt;
In NS-3, the bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. The structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area represents the main classes of BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
# BundleProtocol class implements several BP APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes.&lt;br /&gt;
# BpClaProtocol class is a pure abstract class for convergence layer adaptor (CLA). For each transport layer protocol, a new CLA class needs to be inherited from BpClaProtocol. In the existing version, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles.&lt;br /&gt;
# BpRoutingProtocol class is a pure abstract class, which defines the APIs of bundle routing protocol. In the existing version, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
In the existing implementation, multiple bundles can be transmitted between two bundle nodes, which are connected directly by p2p link.&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol APIs =&lt;br /&gt;
In this section, we introduce BP APIs supported by BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
== Open () ==&lt;br /&gt;
The Open () API installs the BundleProtocol and BpClaProtocol classes into a bundle node. Open () is always the first API needed to be called.&lt;br /&gt;
&lt;br /&gt;
== Register () ==&lt;br /&gt;
Register () API adds an entry in the persistent registration storage. A registration in BP is identified by an endpoint id, which can be get by BuildBpEndpointId () API. If the state field in the register information is &amp;quot;true&amp;quot; (active state), which means that this application desires to receive bundles, Register () triggers the BpClaProtocol to enable a transport layer connection to receive packet (e.g., listen state in TCP).&lt;br /&gt;
&lt;br /&gt;
== Unregister () ==&lt;br /&gt;
Unregister () triggers the convergence layer(CLA) to disable the transport layer to receive packets. For example, BpTcpClaProtocol will be called by Unregister to close the tcp connection.&lt;br /&gt;
&lt;br /&gt;
== Bind () ==&lt;br /&gt;
Bind () APIs set the registration state of the local endpoint id to &amp;quot;true&amp;quot;. If the state in Register () is &amp;quot;true&amp;quot; already, Bind () does nothing in this case.&lt;br /&gt;
&lt;br /&gt;
== Send () ==&lt;br /&gt;
Send a bundle from the source endpoint id to the destination endpoint id. The bundle will be stored in the persistent bundle storage in BundleProtocol first. When the first bundle is sent by the source endpoint id, the BpClaProtocol establishes the transport layer connection with peer bundle node. Once the transport layer connection is available, the BpClaProtocol will retrieve the bundle in a FIFO order from the storage and then send it.&lt;br /&gt;
&lt;br /&gt;
== Receive () ==&lt;br /&gt;
Applications can use this API to get bundles stored from storage in a FIFO order.&lt;br /&gt;
&lt;br /&gt;
== BuildBpEndpointId () ==&lt;br /&gt;
Build an endpoint id for a registration. In BP of NS-3, each registration has a unique endpoint id. a BundleProtocol calss can be served for multiple registrations in a bundle node.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
An example script in src/bundle-protocol/examples is created to show the usage of these APIs. In this section, we show a sample code for registering an application in a bundle node to send bundles.&lt;br /&gt;
&lt;br /&gt;
    Ptr&amp;lt;BundleProtocol&amp;gt; sender = CreateObject&amp;lt;BundleProtocol&amp;gt; ();   // create a bundle protocol&lt;br /&gt;
    sender-&amp;gt;Open (nodes.Get (0));  // install this bundle protocol in a node and install cla into this bundle protocol&lt;br /&gt;
    BpEndpointId src = sender-&amp;gt;BuildBpEndpointId (&amp;quot;dtn&amp;quot;,&amp;quot;node0&amp;quot;);  // get an endpoint id: dtn:node0&lt;br /&gt;
    struct registerInfo info; // create registration information&lt;br /&gt;
    info.lifetime = 10;&lt;br /&gt;
    info.state = false;&lt;br /&gt;
    sender-&amp;gt;Register (src, info);  // register this endpoint id to the bundle protocol&lt;br /&gt;
    sender-&amp;gt;Bind (src);            // set the registration of endpoint id src to active state. &lt;br /&gt;
                                   // So far, the sender can receive bundles from other nodes.&lt;br /&gt;
    sender-&amp;gt;SetRoutingProtocol (routing); // set the routing protocol for this bundle node&lt;br /&gt;
    sender-&amp;gt;Send (packet, src, dst);      // send the packet from endpoint id src to endpoint id dst. &lt;br /&gt;
                                          // The src and dst will be transferred into internet socket address&lt;br /&gt;
                                          // based on bundle routing protocol.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8125</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8125"/>
		<updated>2013-11-19T00:35:12Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Milestones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* Code: the code can be found in [http://code.nsnam.org/dizhizhou/ns-3-dev-socis2013/summary here]&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Protocol structure = &lt;br /&gt;
In NS-3, the bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. The structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area represents the main classes of BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
# BundleProtocol class implements several BP APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes.&lt;br /&gt;
# BpClaProtocol class is a pure abstract class for convergence layer adaptor (CLA). For each transport layer protocol, a new CLA class needs to be inherited from BpClaProtocol. In the existing version, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles.&lt;br /&gt;
# BpRoutingProtocol class is a pure abstract class, which defines the APIs of bundle routing protocol. In the existing version, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
In the existing implementation, multiple bundles can be transmitted between two bundle nodes, which are connected directly by p2p link.&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol APIs =&lt;br /&gt;
In this section, we introduce BP APIs supported by BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
== Open () ==&lt;br /&gt;
The Open () API installs the BundleProtocol and BpClaProtocol classes into a bundle node. Open () is always the first API needed to be called.&lt;br /&gt;
&lt;br /&gt;
== Register () ==&lt;br /&gt;
Register () API adds an entry in the persistent registration storage. A registration in BP is identified by an endpoint id, which can be get by BuildBpEndpointId () API. If the state field in the register information is &amp;quot;true&amp;quot; (active state), which means that this application desires to receive bundles, Register () triggers the BpClaProtocol to enable a transport layer connection to receive packet (e.g., listen state in TCP).&lt;br /&gt;
&lt;br /&gt;
== Unregister () ==&lt;br /&gt;
Unregister () triggers the convergence layer(CLA) to disable the transport layer to receive packets. For example, BpTcpClaProtocol will be called by Unregister to close the tcp connection.&lt;br /&gt;
&lt;br /&gt;
== Bind () ==&lt;br /&gt;
Bind () APIs set the registration state of the local endpoint id to &amp;quot;true&amp;quot;. If the state in Register () is &amp;quot;true&amp;quot; already, Bind () does nothing in this case.&lt;br /&gt;
&lt;br /&gt;
== Send () ==&lt;br /&gt;
Send a bundle from the source endpoint id to the destination endpoint id. The bundle will be stored in the persistent bundle storage in BundleProtocol first. When the first bundle is sent by the source endpoint id, the BpClaProtocol establishes the transport layer connection with peer bundle node. Once the transport layer connection is available, the BpClaProtocol will retrieve the bundle in a FIFO order from the storage and then send it.&lt;br /&gt;
&lt;br /&gt;
== Receive () ==&lt;br /&gt;
Applications can use this API to get bundles stored from storage in a FIFO order.&lt;br /&gt;
&lt;br /&gt;
== BuildBpEndpointId () ==&lt;br /&gt;
Build an endpoint id for a registration. In BP of NS-3, each registration has a unique endpoint id. a BundleProtocol calss can be served for multiple registrations in a bundle node.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
An example script in src/bundle-protocol/examples is created to show the usage of these APIs. In this section, we show a sample code for registering an application in a bundle node to send bundles.&lt;br /&gt;
&lt;br /&gt;
    Ptr&amp;lt;BundleProtocol&amp;gt; sender = CreateObject&amp;lt;BundleProtocol&amp;gt; ();   // create a bundle protocol&lt;br /&gt;
    sender-&amp;gt;Open (nodes.Get (0));  // install this bundle protocol in a node and install cla into this bundle protocol&lt;br /&gt;
    BpEndpointId src = sender-&amp;gt;BuildBpEndpointId (&amp;quot;dtn&amp;quot;,&amp;quot;node0&amp;quot;);  // get an endpoint id: dtn:node0&lt;br /&gt;
    struct registerInfo info; // create registration information&lt;br /&gt;
    info.lifetime = 10;&lt;br /&gt;
    info.state = false;&lt;br /&gt;
    sender-&amp;gt;Register (src, info);  // register this endpoint id to the bundle protocol&lt;br /&gt;
    sender-&amp;gt;Bind (src);            // set the registration of endpoint id src to active state. &lt;br /&gt;
                                   // So far, the sender can receive bundles from other nodes.&lt;br /&gt;
    sender-&amp;gt;SetRoutingProtocol (routing); // set the routing protocol for this bundle node&lt;br /&gt;
    sender-&amp;gt;Send (packet, src, dst);      // send the packet from endpoint id src to endpoint id dst. &lt;br /&gt;
                                          // The src and dst will be transferred into internet socket address&lt;br /&gt;
                                          // based on bundle routing protocol.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
* S3: error control signals: bundle status report.&lt;br /&gt;
&lt;br /&gt;
= Milestones  =&lt;br /&gt;
This project aims to achieve following milestones:&lt;br /&gt;
# Send and receive multiple bundles between two directly connected bundle nodes.&lt;br /&gt;
# Custody support&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8124</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8124"/>
		<updated>2013-11-19T00:34:46Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* Code: the code can be found in [http://code.nsnam.org/dizhizhou/ns-3-dev-socis2013/summary here]&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Protocol structure = &lt;br /&gt;
In NS-3, the bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. The structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area represents the main classes of BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
# BundleProtocol class implements several BP APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes.&lt;br /&gt;
# BpClaProtocol class is a pure abstract class for convergence layer adaptor (CLA). For each transport layer protocol, a new CLA class needs to be inherited from BpClaProtocol. In the existing version, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles.&lt;br /&gt;
# BpRoutingProtocol class is a pure abstract class, which defines the APIs of bundle routing protocol. In the existing version, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
In the existing implementation, multiple bundles can be transmitted between two bundle nodes, which are connected directly by p2p link.&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol APIs =&lt;br /&gt;
In this section, we introduce BP APIs supported by BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
== Open () ==&lt;br /&gt;
The Open () API installs the BundleProtocol and BpClaProtocol classes into a bundle node. Open () is always the first API needed to be called.&lt;br /&gt;
&lt;br /&gt;
== Register () ==&lt;br /&gt;
Register () API adds an entry in the persistent registration storage. A registration in BP is identified by an endpoint id, which can be get by BuildBpEndpointId () API. If the state field in the register information is &amp;quot;true&amp;quot; (active state), which means that this application desires to receive bundles, Register () triggers the BpClaProtocol to enable a transport layer connection to receive packet (e.g., listen state in TCP).&lt;br /&gt;
&lt;br /&gt;
== Unregister () ==&lt;br /&gt;
Unregister () triggers the convergence layer(CLA) to disable the transport layer to receive packets. For example, BpTcpClaProtocol will be called by Unregister to close the tcp connection.&lt;br /&gt;
&lt;br /&gt;
== Bind () ==&lt;br /&gt;
Bind () APIs set the registration state of the local endpoint id to &amp;quot;true&amp;quot;. If the state in Register () is &amp;quot;true&amp;quot; already, Bind () does nothing in this case.&lt;br /&gt;
&lt;br /&gt;
== Send () ==&lt;br /&gt;
Send a bundle from the source endpoint id to the destination endpoint id. The bundle will be stored in the persistent bundle storage in BundleProtocol first. When the first bundle is sent by the source endpoint id, the BpClaProtocol establishes the transport layer connection with peer bundle node. Once the transport layer connection is available, the BpClaProtocol will retrieve the bundle in a FIFO order from the storage and then send it.&lt;br /&gt;
&lt;br /&gt;
== Receive () ==&lt;br /&gt;
Applications can use this API to get bundles stored from storage in a FIFO order.&lt;br /&gt;
&lt;br /&gt;
== BuildBpEndpointId () ==&lt;br /&gt;
Build an endpoint id for a registration. In BP of NS-3, each registration has a unique endpoint id. a BundleProtocol calss can be served for multiple registrations in a bundle node.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
An example script in src/bundle-protocol/examples is created to show the usage of these APIs. In this section, we show a sample code for registering an application in a bundle node to send bundles.&lt;br /&gt;
&lt;br /&gt;
    Ptr&amp;lt;BundleProtocol&amp;gt; sender = CreateObject&amp;lt;BundleProtocol&amp;gt; ();   // create a bundle protocol&lt;br /&gt;
    sender-&amp;gt;Open (nodes.Get (0));  // install this bundle protocol in a node and install cla into this bundle protocol&lt;br /&gt;
    BpEndpointId src = sender-&amp;gt;BuildBpEndpointId (&amp;quot;dtn&amp;quot;,&amp;quot;node0&amp;quot;);  // get an endpoint id: dtn:node0&lt;br /&gt;
    struct registerInfo info; // create registration information&lt;br /&gt;
    info.lifetime = 10;&lt;br /&gt;
    info.state = false;&lt;br /&gt;
    sender-&amp;gt;Register (src, info);  // register this endpoint id to the bundle protocol&lt;br /&gt;
    sender-&amp;gt;Bind (src);            // set the registration of endpoint id src to active state. &lt;br /&gt;
                                   // So far, the sender can receive bundles from other nodes.&lt;br /&gt;
    sender-&amp;gt;SetRoutingProtocol (routing); // set the routing protocol for this bundle node&lt;br /&gt;
    sender-&amp;gt;Send (packet, src, dst);      // send the packet from endpoint id src to endpoint id dst. &lt;br /&gt;
                                          // The src and dst will be transferred into internet socket address&lt;br /&gt;
                                          // based on bundle routing protocol.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
* S3: error control signals: bundle status report.&lt;br /&gt;
&lt;br /&gt;
= Milestones  =&lt;br /&gt;
This project aims to achieve following milestones:&lt;br /&gt;
# Send and receive a single bundle between two directly connected bundle nodes.&lt;br /&gt;
# Send and receive multiple bundles between two directly connected bundle nodes.&lt;br /&gt;
# Custody support&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8123</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8123"/>
		<updated>2013-11-19T00:33:39Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* Code: the code can be found in [http://code.nsnam.org/dizhizhou/ns-3-dev-socis2013/summary here]&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Protocol structure = &lt;br /&gt;
In NS-3, the bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. The structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area represents the main classes of BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
# BundleProtocol class implements several BP APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes.&lt;br /&gt;
# BpClaProtocol class is a pure abstract class for convergence layer adaptor (CLA). For each transport layer protocol, a new CLA class needs to be inherited from BpClaProtocol. In the existing version, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles.&lt;br /&gt;
# BpRoutingProtocol class is a pure abstract class, which defines the APIs of bundle routing protocol. In the existing version, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
In the existing implementation, multiple bundles can be transmitted between two bundle nodes, which are connected directly by p2p link.&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol APIs =&lt;br /&gt;
In this section, we introduce BP APIs supported by BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
== Open () ==&lt;br /&gt;
The Open () API installs the BundleProtocol and BpClaProtocol classes into a bundle node. Open () is always the first API needed to be called.&lt;br /&gt;
&lt;br /&gt;
== Register () ==&lt;br /&gt;
Register () API adds an entry in the persistent registration storage. A registration in BP is identified by an endpoint id, which can be get by BuildBpEndpointId () API. If the state field in the register information is &amp;quot;true&amp;quot; (active state), which means that this application desires to receive bundles, Register () triggers the BpClaProtocol to enable a transport layer connection to receive packet (e.g., listen state in TCP).&lt;br /&gt;
&lt;br /&gt;
== Unregister () ==&lt;br /&gt;
Unregister () triggers the convergence layer(CLA) to disable the transport layer to receive packets. For example, BpTcpClaProtocol will be called by Unregister to close the tcp connection.&lt;br /&gt;
&lt;br /&gt;
== Bind () ==&lt;br /&gt;
Bind () APIs set the registration state of the local endpoint id to &amp;quot;true&amp;quot;. If the state in Register () is &amp;quot;true&amp;quot; already, Bind () does nothing in this case.&lt;br /&gt;
&lt;br /&gt;
== Send () ==&lt;br /&gt;
Send a bundle from the source endpoint id to the destination endpoint id. The bundle will be stored in the persistent bundle storage in BundleProtocol first. When the first bundle is sent by the source endpoint id, the BpClaProtocol establishes the transport layer connection with peer bundle node. Once the transport layer connection is available, the BpClaProtocol will retrieve the bundle in a FIFO order from the storage and then send it.&lt;br /&gt;
&lt;br /&gt;
== Receive () ==&lt;br /&gt;
Applications can use this API to get bundles stored from storage in a FIFO order.&lt;br /&gt;
&lt;br /&gt;
== BuildBpEndpointId () ==&lt;br /&gt;
Build an endpoint id for a registration. In BP of NS-3, each registration has a unique endpoint id. a BundleProtocol calss can be served for multiple registrations in a bundle node.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
An example script in src/bundle-protocol/examples is created to show the usage of these APIs. In this section, we show a sample code for registering an application in a bundle node to send bundles.&lt;br /&gt;
&lt;br /&gt;
    Ptr&amp;lt;BundleProtocol&amp;gt; sender = CreateObject&amp;lt;BundleProtocol&amp;gt; ();   // create a bundle protocol&lt;br /&gt;
    sender-&amp;gt;Open (nodes.Get (0));  // install this bundle protocol in a node and install cla into this bundle protocol&lt;br /&gt;
    BpEndpointId src = sender-&amp;gt;BuildBpEndpointId (&amp;quot;dtn&amp;quot;,&amp;quot;node0&amp;quot;);  // get an endpoint id: dtn:node0&lt;br /&gt;
    struct registerInfo info; // create registration information&lt;br /&gt;
    info.lifetime = 10;&lt;br /&gt;
    info.state = false;&lt;br /&gt;
    sender-&amp;gt;Register (src, info);  // register this endpoint id to the bundle protocol&lt;br /&gt;
    sender-&amp;gt;Bind (src);            // set the registration of endpoint id src to active state. So far, the sender can receive bundles from other nodes.&lt;br /&gt;
    sender-&amp;gt;SetRoutingProtocol (routing); // set the routing protocol for this bundle node&lt;br /&gt;
    sender-&amp;gt;Send (packet, src, dst);      // send the packet from endpoint id src to endpoint id dst. The src and dst will be transferred into internet socket address based on bundle routing protocol.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
* S3: error control signals: bundle status report.&lt;br /&gt;
&lt;br /&gt;
= Milestones  =&lt;br /&gt;
This project aims to achieve following milestones:&lt;br /&gt;
# Send and receive a single bundle between two directly connected bundle nodes.&lt;br /&gt;
# Send and receive multiple bundles between two directly connected bundle nodes.&lt;br /&gt;
# Custody support&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8122</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8122"/>
		<updated>2013-11-19T00:24:57Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* Code: the code can be found in [http://code.nsnam.org/dizhizhou/ns-3-dev-socis2013/summary here]&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Protocol structure = &lt;br /&gt;
In NS-3, the bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. The structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area represents the main classes of BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
# BundleProtocol class implements several BP APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes.&lt;br /&gt;
# BpClaProtocol class is a pure abstract class for convergence layer adaptor (CLA). For each transport layer protocol, a new CLA class needs to be inherited from BpClaProtocol. In the existing version, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles.&lt;br /&gt;
# BpRoutingProtocol class is a pure abstract class, which defines the APIs of bundle routing protocol. In the existing version, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
In the existing implementation, multiple bundles can be transmitted between two bundle nodes, which are connected directly by p2p link.&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol APIs =&lt;br /&gt;
In this section, we introduce BP APIs supported by BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
== Open () ==&lt;br /&gt;
The Open () API installs the BundleProtocol and BpClaProtocol classes into a bundle node. Open () is always the first API needed to be called.&lt;br /&gt;
&lt;br /&gt;
== Register () ==&lt;br /&gt;
Register () API adds an entry in the persistent registration storage. A registration in BP is identified by an endpoint id, which can be get by BuildBpEndpointId () API. If the state field in the register information is &amp;quot;true&amp;quot; (active state), which means that this application desires to receive bundles, Register () triggers the BpClaProtocol to enable a transport layer connection to receive packet (e.g., listen state in TCP).&lt;br /&gt;
&lt;br /&gt;
== Unregister () ==&lt;br /&gt;
Unregister () triggers the convergence layer(CLA) to disable the transport layer to receive packets. For example, BpTcpClaProtocol will be called by Unregister to close the tcp connection.&lt;br /&gt;
&lt;br /&gt;
== Bind () ==&lt;br /&gt;
Bind () APIs set the registration state of the local endpoint id to &amp;quot;true&amp;quot;. If the state in Register () is &amp;quot;true&amp;quot; already, Bind () does nothing in this case.&lt;br /&gt;
&lt;br /&gt;
== Send () ==&lt;br /&gt;
Send a bundle from the source endpoint id to the destination endpoint id. The bundle will be stored in the persistent bundle storage in BundleProtocol first. When the first bundle is sent by the source endpoint id, the BpClaProtocol establishes the transport layer connection with peer bundle node. Once the transport layer connection is available, the BpClaProtocol will retrieve the bundle in a FIFO order from the storage and then send it.&lt;br /&gt;
&lt;br /&gt;
== Receive () ==&lt;br /&gt;
Applications can use this API to get bundles stored from storage in a FIFO order.&lt;br /&gt;
&lt;br /&gt;
== BuildBpEndpointId () ==&lt;br /&gt;
Build an endpoint id for a registration. In BP of NS-3, each registration has a unique endpoint id. a BundleProtocol calss can be served for multiple registrations in a bundle node.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
* S3: error control signals: bundle status report.&lt;br /&gt;
&lt;br /&gt;
= Milestones  =&lt;br /&gt;
This project aims to achieve following milestones:&lt;br /&gt;
# Send and receive a single bundle between two directly connected bundle nodes.&lt;br /&gt;
# Send and receive multiple bundles between two directly connected bundle nodes.&lt;br /&gt;
# Custody support&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8121</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8121"/>
		<updated>2013-11-19T00:24:35Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Receive () */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* Code: the code can be found in [http://code.nsnam.org/dizhizhou/ns-3-dev-socis2013/summary here]&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Protocol structure = &lt;br /&gt;
In NS-3, the bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. The structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area represents the main classes of BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
# BundleProtocol class implements several BP APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes.&lt;br /&gt;
# BpClaProtocol class is a pure abstract class for convergence layer adaptor (CLA). For each transport layer protocol, a new CLA class needs to be inherited from BpClaProtocol. In the existing version, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles.&lt;br /&gt;
# BpRoutingProtocol class is a pure abstract class, which defines the APIs of bundle routing protocol. In the existing version, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
In the existing implementation, multiple bundles can be transmitted between two bundle nodes, which are connected directly by p2p link.&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol APIs =&lt;br /&gt;
In this section, we introduce BP APIs supported by BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
== Open () ==&lt;br /&gt;
The Open () API installs the BundleProtocol and BpClaProtocol classes into a bundle node. Open () is always the first API needed to be called.&lt;br /&gt;
&lt;br /&gt;
== Register () ==&lt;br /&gt;
Register () API adds an entry in the persistent registration storage. A registration in BP is identified by an endpoint id, which can be get by BuildBpEndpointId () API. If the state field in the register information is &amp;quot;true&amp;quot; (active state), which means that this application desires to receive bundles, Register () triggers the BpClaProtocol to enable a transport layer connection to receive packet (e.g., listen state in TCP).&lt;br /&gt;
&lt;br /&gt;
== Unregister () ==&lt;br /&gt;
Unregister () triggers the convergence layer(CLA) to disable the transport layer to receive packets. For example, BpTcpClaProtocol will be called by Unregister to close the tcp connection.&lt;br /&gt;
&lt;br /&gt;
== Bind () ==&lt;br /&gt;
Bind () APIs set the registration state of the local endpoint id to &amp;quot;true&amp;quot;. If the state in Register () is &amp;quot;true&amp;quot; already, Bind () does nothing in this case.&lt;br /&gt;
&lt;br /&gt;
== Send () ==&lt;br /&gt;
Send a bundle from the source endpoint id to the destination endpoint id. The bundle will be stored in the persistent bundle storage in BundleProtocol first. When the first bundle is sent by the source endpoint id, the BpClaProtocol establishes the transport layer connection with peer bundle node. Once the transport layer connection is available, the BpClaProtocol will retrieve the bundle in a FIFO order from the storage and then send it.&lt;br /&gt;
&lt;br /&gt;
== Receive () ==&lt;br /&gt;
Applications can use this API to get bundles stored from storage in a FIFO order.&lt;br /&gt;
&lt;br /&gt;
== BuildBpEndpointId () ==&lt;br /&gt;
Build an endpoint id for a registration. In BP of NS-3, each registration has a unique endpoint id. a BundleProtocol calss can be served for multiple registrations in a bundle node.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
* S3: error control signals: bundle status report.&lt;br /&gt;
&lt;br /&gt;
= Milestones  =&lt;br /&gt;
This project aims to achieve following milestones:&lt;br /&gt;
# Send and receive a single bundle between two directly connected bundle nodes.&lt;br /&gt;
# Send and receive multiple bundles between two directly connected bundle nodes.&lt;br /&gt;
# Custody support&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8120</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8120"/>
		<updated>2013-11-19T00:24:03Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Send () */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* Code: the code can be found in [http://code.nsnam.org/dizhizhou/ns-3-dev-socis2013/summary here]&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Protocol structure = &lt;br /&gt;
In NS-3, the bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. The structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area represents the main classes of BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
# BundleProtocol class implements several BP APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes.&lt;br /&gt;
# BpClaProtocol class is a pure abstract class for convergence layer adaptor (CLA). For each transport layer protocol, a new CLA class needs to be inherited from BpClaProtocol. In the existing version, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles.&lt;br /&gt;
# BpRoutingProtocol class is a pure abstract class, which defines the APIs of bundle routing protocol. In the existing version, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
In the existing implementation, multiple bundles can be transmitted between two bundle nodes, which are connected directly by p2p link.&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol APIs =&lt;br /&gt;
In this section, we introduce BP APIs supported by BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
== Open () ==&lt;br /&gt;
The Open () API installs the BundleProtocol and BpClaProtocol classes into a bundle node. Open () is always the first API needed to be called.&lt;br /&gt;
&lt;br /&gt;
== Register () ==&lt;br /&gt;
Register () API adds an entry in the persistent registration storage. A registration in BP is identified by an endpoint id, which can be get by BuildBpEndpointId () API. If the state field in the register information is &amp;quot;true&amp;quot; (active state), which means that this application desires to receive bundles, Register () triggers the BpClaProtocol to enable a transport layer connection to receive packet (e.g., listen state in TCP).&lt;br /&gt;
&lt;br /&gt;
== Unregister () ==&lt;br /&gt;
Unregister () triggers the convergence layer(CLA) to disable the transport layer to receive packets. For example, BpTcpClaProtocol will be called by Unregister to close the tcp connection.&lt;br /&gt;
&lt;br /&gt;
== Bind () ==&lt;br /&gt;
Bind () APIs set the registration state of the local endpoint id to &amp;quot;true&amp;quot;. If the state in Register () is &amp;quot;true&amp;quot; already, Bind () does nothing in this case.&lt;br /&gt;
&lt;br /&gt;
== Send () ==&lt;br /&gt;
Send a bundle from the source endpoint id to the destination endpoint id. The bundle will be stored in the persistent bundle storage in BundleProtocol first. When the first bundle is sent by the source endpoint id, the BpClaProtocol establishes the transport layer connection with peer bundle node. Once the transport layer connection is available, the BpClaProtocol will retrieve the bundle in a FIFO order from the storage and then send it.&lt;br /&gt;
&lt;br /&gt;
== Receive () ==&lt;br /&gt;
Applications can use this API to get bundles stored in BundleProtocol.&lt;br /&gt;
&lt;br /&gt;
== BuildBpEndpointId () ==&lt;br /&gt;
Build an endpoint id for a registration. In BP of NS-3, each registration has a unique endpoint id. a BundleProtocol calss can be served for multiple registrations in a bundle node.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
* S3: error control signals: bundle status report.&lt;br /&gt;
&lt;br /&gt;
= Milestones  =&lt;br /&gt;
This project aims to achieve following milestones:&lt;br /&gt;
# Send and receive a single bundle between two directly connected bundle nodes.&lt;br /&gt;
# Send and receive multiple bundles between two directly connected bundle nodes.&lt;br /&gt;
# Custody support&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8119</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8119"/>
		<updated>2013-11-19T00:21:57Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Bundle protocol APIs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* Code: the code can be found in [http://code.nsnam.org/dizhizhou/ns-3-dev-socis2013/summary here]&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Protocol structure = &lt;br /&gt;
In NS-3, the bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. The structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area represents the main classes of BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
# BundleProtocol class implements several BP APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes.&lt;br /&gt;
# BpClaProtocol class is a pure abstract class for convergence layer adaptor (CLA). For each transport layer protocol, a new CLA class needs to be inherited from BpClaProtocol. In the existing version, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles.&lt;br /&gt;
# BpRoutingProtocol class is a pure abstract class, which defines the APIs of bundle routing protocol. In the existing version, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
In the existing implementation, multiple bundles can be transmitted between two bundle nodes, which are connected directly by p2p link.&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol APIs =&lt;br /&gt;
In this section, we introduce BP APIs supported by BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
== Open () ==&lt;br /&gt;
The Open () API installs the BundleProtocol and BpClaProtocol classes into a bundle node. Open () is always the first API needed to be called.&lt;br /&gt;
&lt;br /&gt;
== Register () ==&lt;br /&gt;
Register () API adds an entry in the persistent registration storage. A registration in BP is identified by an endpoint id, which can be get by BuildBpEndpointId () API. If the state field in the register information is &amp;quot;true&amp;quot; (active state), which means that this application desires to receive bundles, Register () triggers the BpClaProtocol to enable a transport layer connection to receive packet (e.g., listen state in TCP).&lt;br /&gt;
&lt;br /&gt;
== Unregister () ==&lt;br /&gt;
Unregister () triggers the convergence layer(CLA) to disable the transport layer to receive packets. For example, BpTcpClaProtocol will be called by Unregister to close the tcp connection.&lt;br /&gt;
&lt;br /&gt;
== Bind () ==&lt;br /&gt;
Bind () APIs set the registration state of the local endpoint id to &amp;quot;true&amp;quot;. If the state in Register () is &amp;quot;true&amp;quot; already, Bind () does nothing in this case.&lt;br /&gt;
&lt;br /&gt;
== Send () ==&lt;br /&gt;
Send a bundle from the source endpoint id to the destination endpoint id. The bundle will be stored in the persistent bundle storage in BundleProtocol first. Once the transport layer connection is available, the BpClaProtocol will retrieve the first bundle in the queue and send it.&lt;br /&gt;
&lt;br /&gt;
== Receive () ==&lt;br /&gt;
Applications can use this API to get bundles stored in BundleProtocol.&lt;br /&gt;
&lt;br /&gt;
== BuildBpEndpointId () ==&lt;br /&gt;
Build an endpoint id for a registration. In BP of NS-3, each registration has a unique endpoint id. a BundleProtocol calss can be served for multiple registrations in a bundle node.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
* S3: error control signals: bundle status report.&lt;br /&gt;
&lt;br /&gt;
= Milestones  =&lt;br /&gt;
This project aims to achieve following milestones:&lt;br /&gt;
# Send and receive a single bundle between two directly connected bundle nodes.&lt;br /&gt;
# Send and receive multiple bundles between two directly connected bundle nodes.&lt;br /&gt;
# Custody support&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8118</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8118"/>
		<updated>2013-11-19T00:09:41Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Bundle protocol APIs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* Code: the code can be found in [http://code.nsnam.org/dizhizhou/ns-3-dev-socis2013/summary here]&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Protocol structure = &lt;br /&gt;
In NS-3, the bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. The structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area represents the main classes of BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
# BundleProtocol class implements several BP APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes.&lt;br /&gt;
# BpClaProtocol class is a pure abstract class for convergence layer adaptor (CLA). For each transport layer protocol, a new CLA class needs to be inherited from BpClaProtocol. In the existing version, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles.&lt;br /&gt;
# BpRoutingProtocol class is a pure abstract class, which defines the APIs of bundle routing protocol. In the existing version, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
In the existing implementation, multiple bundles can be transmitted between two bundle nodes, which are connected directly by p2p link.&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol APIs =&lt;br /&gt;
In this section, we introduce BP APIs supported by BP in NS-3.&lt;br /&gt;
&lt;br /&gt;
== Open () ==&lt;br /&gt;
The Open () API installs the BundleProtocol and BpClaProtocol classes into a bundle node. Open () is always the first API needed to be called.&lt;br /&gt;
&lt;br /&gt;
== Register () ==&lt;br /&gt;
Register () API adds an entry in the persistent registration storage. A registration in BP is identified by an endpoint id, which can be get by BuildBpEndpointId () API. If the state field in the register information is &amp;quot;true&amp;quot; (active state), which means that this application desires to receive bundles, Register () triggers the BpClaProtocol to enable a transport layer connection to receive packet (e.g., listen state in TCP).&lt;br /&gt;
&lt;br /&gt;
== Unregister () ==&lt;br /&gt;
Unregister () triggers the convergence layer(CLA) to disable the transport layer to receive packets. For example, BpTcpClaProtocol will be called by Unregister to close the tcp connection.&lt;br /&gt;
&lt;br /&gt;
== Bind () ==&lt;br /&gt;
Bind () APIs set the registration state of the local endpoint id to &amp;quot;true&amp;quot;. If the state in Register () is &amp;quot;true&amp;quot; already, Bind () does nothing in this case.&lt;br /&gt;
&lt;br /&gt;
== Send () ==&lt;br /&gt;
Send a bundle from the source endpoint id to the destination endpoint id. The bundle will be stored in the persistent bundle storage in BundleProtocol first. Once the transport layer connection is available, the BpClaProtocol will retrieve the first bundle in the queue and send it.&lt;br /&gt;
&lt;br /&gt;
== Receive () ==&lt;br /&gt;
Applications can use this API to get bundles stored in BundleProtocol.&lt;br /&gt;
&lt;br /&gt;
== BuildBpEndpointId () ==&lt;br /&gt;
Build an endpoint id for a registration. In BP of NS-3, each registration has a unique endpoint id. a BundleProtocol calss can be served for multiple registrations in a bundle node.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
* S3: error control signals: bundle status report.&lt;br /&gt;
&lt;br /&gt;
= Milestones  =&lt;br /&gt;
This project aims to achieve following milestones:&lt;br /&gt;
# Send and receive a single bundle between two directly connected bundle nodes.&lt;br /&gt;
# Send and receive multiple bundles between two directly connected bundle nodes.&lt;br /&gt;
# Custody support&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8117</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8117"/>
		<updated>2013-11-19T00:07:26Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Bundle protocol APIs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* Code: the code can be found in [http://code.nsnam.org/dizhizhou/ns-3-dev-socis2013/summary here]&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Protocol structure = &lt;br /&gt;
In NS-3, the bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. The structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area represents the main classes of BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
# BundleProtocol class implements several BP APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes.&lt;br /&gt;
# BpClaProtocol class is a pure abstract class for convergence layer adaptor (CLA). For each transport layer protocol, a new CLA class needs to be inherited from BpClaProtocol. In the existing version, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles.&lt;br /&gt;
# BpRoutingProtocol class is a pure abstract class, which defines the APIs of bundle routing protocol. In the existing version, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
In the existing implementation, multiple bundles can be transmitted between two bundle nodes, which are connected directly by p2p link.&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol APIs =&lt;br /&gt;
In this section, we introduce BP APIs supported by BP in NS-3.&lt;br /&gt;
&lt;br /&gt;
== Open () ==&lt;br /&gt;
The Open () API installs the BundleProtocol and BpClaProtocol classes into a bundle node. Open () is always the first API needed to be called.&lt;br /&gt;
&lt;br /&gt;
== Register () ==&lt;br /&gt;
Register () API adds an entry in the persistent registration storage. A registration in BP is identified by an endpoint id, which can be get by BuildBpEndpointId () API. If the state field in the register information is &amp;quot;true&amp;quot; (active state), which means that this application desires to receive bundles, Register () triggers the BpClaProtocol to enable a transport layer connection to receive packet (e.g., listen state in TCP).&lt;br /&gt;
&lt;br /&gt;
== Bind () ==&lt;br /&gt;
Bind () APIs set the registration state of the local endpoint id to &amp;quot;true&amp;quot;. If the state in Register () is &amp;quot;true&amp;quot; already, Bind () does nothing in this case.&lt;br /&gt;
&lt;br /&gt;
== Send () ==&lt;br /&gt;
Send a bundle from the source endpoint id to the destination endpoint id. The bundle will be stored in the persistent bundle storage in BundleProtocol first. Once the transport layer connection is available, the BpClaProtocol will retrieve the first bundle in the queue and send it.&lt;br /&gt;
&lt;br /&gt;
== Receive () ==&lt;br /&gt;
Applications can use this API to get bundles stored in BundleProtocol.&lt;br /&gt;
&lt;br /&gt;
== BuildBpEndpointId () ==&lt;br /&gt;
Build an endpoint id for a registration. In BP of NS-3, each registration has a unique endpoint id. a BundleProtocol calss can be served for multiple registrations in a bundle node.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
* S3: error control signals: bundle status report.&lt;br /&gt;
&lt;br /&gt;
= Milestones  =&lt;br /&gt;
This project aims to achieve following milestones:&lt;br /&gt;
# Send and receive a single bundle between two directly connected bundle nodes.&lt;br /&gt;
# Send and receive multiple bundles between two directly connected bundle nodes.&lt;br /&gt;
# Custody support&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8116</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8116"/>
		<updated>2013-11-19T00:00:03Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Bundle Protocol */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* Code: the code can be found in [http://code.nsnam.org/dizhizhou/ns-3-dev-socis2013/summary here]&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Protocol structure = &lt;br /&gt;
In NS-3, the bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. The structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area represents the main classes of BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
# BundleProtocol class implements several BP APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes.&lt;br /&gt;
# BpClaProtocol class is a pure abstract class for convergence layer adaptor (CLA). For each transport layer protocol, a new CLA class needs to be inherited from BpClaProtocol. In the existing version, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles.&lt;br /&gt;
# BpRoutingProtocol class is a pure abstract class, which defines the APIs of bundle routing protocol. In the existing version, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
In the existing implementation, multiple bundles can be transmitted between two bundle nodes, which are connected directly by p2p link.&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol APIs =&lt;br /&gt;
&lt;br /&gt;
== Open () ==&lt;br /&gt;
The Open () API installs the BundleProtocol and BpClaProtocol classes into a bundle node. It must be called in the first when user uses bundle protocol in NS-3..&lt;br /&gt;
&lt;br /&gt;
== Register () ==&lt;br /&gt;
Register method adds an entry in the persistent registration storage. A registration is indexed by the local endpoint id. If the state field in the register information is &amp;quot;true&amp;quot; (active) state, which means that this application desires to receive bundles, Register () triggers the BpClaProtocol to enable a transport layer connection to receive packet (e.g., listen state in TCP).&lt;br /&gt;
== Bind () ==&lt;br /&gt;
Bind () APIs set the registration state of the local endpoint id to &amp;quot;true&amp;quot;. If the state in Register () is &amp;quot;true&amp;quot; already, Bind () should not be called.&lt;br /&gt;
&lt;br /&gt;
== Send () ==&lt;br /&gt;
Send a bundle from the source endpoint id to the destination endpoint id. The bundle will be stored in persistent bundle storage in BundleProtocol first. Once the transport layer connection is available, the BpClaProtocol will retrieve the first bundle in the queue and send it.&lt;br /&gt;
&lt;br /&gt;
== Receive () ==&lt;br /&gt;
Applications can use this API to get bundles stored in BundleProtocol.&lt;br /&gt;
&lt;br /&gt;
== BuildBpEndpointId () ==&lt;br /&gt;
Build an endpoint id for a registration. In BP of NS-3, each registration has a unique endpoint id.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
* S3: error control signals: bundle status report.&lt;br /&gt;
&lt;br /&gt;
= Milestones  =&lt;br /&gt;
This project aims to achieve following milestones:&lt;br /&gt;
# Send and receive a single bundle between two directly connected bundle nodes.&lt;br /&gt;
# Send and receive multiple bundles between two directly connected bundle nodes.&lt;br /&gt;
# Custody support&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8115</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8115"/>
		<updated>2013-11-18T23:59:03Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Protocol structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Protocol structure = &lt;br /&gt;
In NS-3, the bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. The structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area represents the main classes of BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
# BundleProtocol class implements several BP APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes.&lt;br /&gt;
# BpClaProtocol class is a pure abstract class for convergence layer adaptor (CLA). For each transport layer protocol, a new CLA class needs to be inherited from BpClaProtocol. In the existing version, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles.&lt;br /&gt;
# BpRoutingProtocol class is a pure abstract class, which defines the APIs of bundle routing protocol. In the existing version, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
In the existing implementation, multiple bundles can be transmitted between two bundle nodes, which are connected directly by p2p link.&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol APIs =&lt;br /&gt;
&lt;br /&gt;
== Open () ==&lt;br /&gt;
The Open () API installs the BundleProtocol and BpClaProtocol classes into a bundle node. It must be called in the first when user uses bundle protocol in NS-3..&lt;br /&gt;
&lt;br /&gt;
== Register () ==&lt;br /&gt;
Register method adds an entry in the persistent registration storage. A registration is indexed by the local endpoint id. If the state field in the register information is &amp;quot;true&amp;quot; (active) state, which means that this application desires to receive bundles, Register () triggers the BpClaProtocol to enable a transport layer connection to receive packet (e.g., listen state in TCP).&lt;br /&gt;
== Bind () ==&lt;br /&gt;
Bind () APIs set the registration state of the local endpoint id to &amp;quot;true&amp;quot;. If the state in Register () is &amp;quot;true&amp;quot; already, Bind () should not be called.&lt;br /&gt;
&lt;br /&gt;
== Send () ==&lt;br /&gt;
Send a bundle from the source endpoint id to the destination endpoint id. The bundle will be stored in persistent bundle storage in BundleProtocol first. Once the transport layer connection is available, the BpClaProtocol will retrieve the first bundle in the queue and send it.&lt;br /&gt;
&lt;br /&gt;
== Receive () ==&lt;br /&gt;
Applications can use this API to get bundles stored in BundleProtocol.&lt;br /&gt;
&lt;br /&gt;
== BuildBpEndpointId () ==&lt;br /&gt;
Build an endpoint id for a registration. In BP of NS-3, each registration has a unique endpoint id.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
* S3: error control signals: bundle status report.&lt;br /&gt;
&lt;br /&gt;
= Milestones  =&lt;br /&gt;
This project aims to achieve following milestones:&lt;br /&gt;
# Send and receive a single bundle between two directly connected bundle nodes.&lt;br /&gt;
# Send and receive multiple bundles between two directly connected bundle nodes.&lt;br /&gt;
# Custody support&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8114</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8114"/>
		<updated>2013-11-18T23:58:34Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Bundle protocol structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Protocol structure = &lt;br /&gt;
In NS-3, the bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. The structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area represents the main classes of BP in NS-3. &lt;br /&gt;
&lt;br /&gt;
# BundleProtocol class implements several BP APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes.# BpClaProtocol class is a pure abstract class for convergence layer adaptor (CLA). For each transport layer protocol, a new CLA class needs to be inherited from BpClaProtocol. In the existing version, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles.# BpRoutingProtocol class is a pure abstract class, which defines the APIs of bundle routing protocol. In the existing version, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.In the existing implementation, multiple bundles can be transmitted between two bundle nodes, which are connected directly by p2p link.&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol APIs =&lt;br /&gt;
&lt;br /&gt;
== Open () ==&lt;br /&gt;
The Open () API installs the BundleProtocol and BpClaProtocol classes into a bundle node. It must be called in the first when user uses bundle protocol in NS-3..&lt;br /&gt;
&lt;br /&gt;
== Register () ==&lt;br /&gt;
Register method adds an entry in the persistent registration storage. A registration is indexed by the local endpoint id. If the state field in the register information is &amp;quot;true&amp;quot; (active) state, which means that this application desires to receive bundles, Register () triggers the BpClaProtocol to enable a transport layer connection to receive packet (e.g., listen state in TCP).&lt;br /&gt;
== Bind () ==&lt;br /&gt;
Bind () APIs set the registration state of the local endpoint id to &amp;quot;true&amp;quot;. If the state in Register () is &amp;quot;true&amp;quot; already, Bind () should not be called.&lt;br /&gt;
&lt;br /&gt;
== Send () ==&lt;br /&gt;
Send a bundle from the source endpoint id to the destination endpoint id. The bundle will be stored in persistent bundle storage in BundleProtocol first. Once the transport layer connection is available, the BpClaProtocol will retrieve the first bundle in the queue and send it.&lt;br /&gt;
&lt;br /&gt;
== Receive () ==&lt;br /&gt;
Applications can use this API to get bundles stored in BundleProtocol.&lt;br /&gt;
&lt;br /&gt;
== BuildBpEndpointId () ==&lt;br /&gt;
Build an endpoint id for a registration. In BP of NS-3, each registration has a unique endpoint id.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
* S3: error control signals: bundle status report.&lt;br /&gt;
&lt;br /&gt;
= Milestones  =&lt;br /&gt;
This project aims to achieve following milestones:&lt;br /&gt;
# Send and receive a single bundle between two directly connected bundle nodes.&lt;br /&gt;
# Send and receive multiple bundles between two directly connected bundle nodes.&lt;br /&gt;
# Custody support&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8113</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8113"/>
		<updated>2013-11-18T14:37:13Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Milestones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol structure = &lt;br /&gt;
The bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. In BP, we call packets as bundle and the node having BP layer as bundle node. The class structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area shows the main classes of BP in NS-3. BundleProtocol class implement several APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes. &lt;br /&gt;
&lt;br /&gt;
BpClaProtocol class is a pure abstract class which defines the internal APIs between the convergence layer adapter (CLA) and BundleProtocol. For different transport layer protocol, different inherited class must be created based on BpClaProtocol.  In the current version, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BpRoutingProtocol class is a pure abstract class which defines the APIs of bundle routing protocol. In the current version, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol APIs =&lt;br /&gt;
&lt;br /&gt;
== Open () ==&lt;br /&gt;
The Open () API installs the BundleProtocol and BpClaProtocol classes into a bundle node. It must be called in the first when user uses bundle protocol in NS-3..&lt;br /&gt;
&lt;br /&gt;
== Register () ==&lt;br /&gt;
Register method adds an entry in the persistent registration storage. A registration is indexed by the local endpoint id. If the state field in the register information is &amp;quot;true&amp;quot; (active) state, which means that this application desires to receive bundles, Register () triggers the BpClaProtocol to enable a transport layer connection to receive packet (e.g., listen state in TCP).&lt;br /&gt;
== Bind () ==&lt;br /&gt;
Bind () APIs set the registration state of the local endpoint id to &amp;quot;true&amp;quot;. If the state in Register () is &amp;quot;true&amp;quot; already, Bind () should not be called.&lt;br /&gt;
&lt;br /&gt;
== Send () ==&lt;br /&gt;
Send a bundle from the source endpoint id to the destination endpoint id. The bundle will be stored in persistent bundle storage in BundleProtocol first. Once the transport layer connection is available, the BpClaProtocol will retrieve the first bundle in the queue and send it.&lt;br /&gt;
&lt;br /&gt;
== Receive () ==&lt;br /&gt;
Applications can use this API to get bundles stored in BundleProtocol.&lt;br /&gt;
&lt;br /&gt;
== BuildBpEndpointId () ==&lt;br /&gt;
Build an endpoint id for a registration. In BP of NS-3, each registration has a unique endpoint id.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
* S3: error control signals: bundle status report.&lt;br /&gt;
&lt;br /&gt;
= Milestones  =&lt;br /&gt;
This project aims to achieve following milestones:&lt;br /&gt;
# Send and receive a single bundle between two directly connected bundle nodes.&lt;br /&gt;
# Send and receive multiple bundles between two directly connected bundle nodes.&lt;br /&gt;
# Custody support&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8112</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8112"/>
		<updated>2013-11-18T14:33:48Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol structure = &lt;br /&gt;
The bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. In BP, we call packets as bundle and the node having BP layer as bundle node. The class structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area shows the main classes of BP in NS-3. BundleProtocol class implement several APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes. &lt;br /&gt;
&lt;br /&gt;
BpClaProtocol class is a pure abstract class which defines the internal APIs between the convergence layer adapter (CLA) and BundleProtocol. For different transport layer protocol, different inherited class must be created based on BpClaProtocol.  In the current version, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BpRoutingProtocol class is a pure abstract class which defines the APIs of bundle routing protocol. In the current version, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol APIs =&lt;br /&gt;
&lt;br /&gt;
== Open () ==&lt;br /&gt;
The Open () API installs the BundleProtocol and BpClaProtocol classes into a bundle node. It must be called in the first when user uses bundle protocol in NS-3..&lt;br /&gt;
&lt;br /&gt;
== Register () ==&lt;br /&gt;
Register method adds an entry in the persistent registration storage. A registration is indexed by the local endpoint id. If the state field in the register information is &amp;quot;true&amp;quot; (active) state, which means that this application desires to receive bundles, Register () triggers the BpClaProtocol to enable a transport layer connection to receive packet (e.g., listen state in TCP).&lt;br /&gt;
== Bind () ==&lt;br /&gt;
Bind () APIs set the registration state of the local endpoint id to &amp;quot;true&amp;quot;. If the state in Register () is &amp;quot;true&amp;quot; already, Bind () should not be called.&lt;br /&gt;
&lt;br /&gt;
== Send () ==&lt;br /&gt;
Send a bundle from the source endpoint id to the destination endpoint id. The bundle will be stored in persistent bundle storage in BundleProtocol first. Once the transport layer connection is available, the BpClaProtocol will retrieve the first bundle in the queue and send it.&lt;br /&gt;
&lt;br /&gt;
== Receive () ==&lt;br /&gt;
Applications can use this API to get bundles stored in BundleProtocol.&lt;br /&gt;
&lt;br /&gt;
== BuildBpEndpointId () ==&lt;br /&gt;
Build an endpoint id for a registration. In BP of NS-3, each registration has a unique endpoint id.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
* S3: error control signals: bundle status report.&lt;br /&gt;
&lt;br /&gt;
= Milestones  =&lt;br /&gt;
This project aims to achieve following milestones:&lt;br /&gt;
# 1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8111</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8111"/>
		<updated>2013-11-18T14:22:28Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Bundle protocol APIs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol structure = &lt;br /&gt;
The bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. In BP, we call packets as bundle and the node having BP layer as bundle node. The class structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area shows the main classes of BP in NS-3. BundleProtocol class implement several APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes. &lt;br /&gt;
&lt;br /&gt;
BpClaProtocol class is a pure abstract class which defines the internal APIs between the convergence layer adapter (CLA) and BundleProtocol. For different transport layer protocol, different inherited class must be created based on BpClaProtocol.  In the current version, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BpRoutingProtocol class is a pure abstract class which defines the APIs of bundle routing protocol. In the current version, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol APIs =&lt;br /&gt;
&lt;br /&gt;
== Open () ==&lt;br /&gt;
The Open () API installs the BundleProtocol and BpClaProtocol classes into a bundle node. It must be called in the first when user uses bundle protocol in NS-3..&lt;br /&gt;
&lt;br /&gt;
== Register () ==&lt;br /&gt;
Register method adds an entry in the persistent registration storage. A registration is indexed by the local endpoint id. If the state field in the register information is &amp;quot;true&amp;quot; (active) state, which means that this application desires to receive bundles, Register () triggers the BpClaProtocol to enable a transport layer connection to receive packet (e.g., listen state in TCP).&lt;br /&gt;
== Bind () ==&lt;br /&gt;
Bind () APIs set the registration state of the local endpoint id to &amp;quot;true&amp;quot;. If the state in Register () is &amp;quot;true&amp;quot; already, Bind () should not be called.&lt;br /&gt;
&lt;br /&gt;
== Send () ==&lt;br /&gt;
Send a bundle from the source endpoint id to the destination endpoint id. The bundle will be stored in persistent bundle storage in BundleProtocol first. Once the transport layer connection is available, the BpClaProtocol will retrieve the first bundle in the queue and send it.&lt;br /&gt;
&lt;br /&gt;
== Receive () ==&lt;br /&gt;
Applications can use this API to get bundles stored in BundleProtocol.&lt;br /&gt;
&lt;br /&gt;
== BuildBpEndpointId () ==&lt;br /&gt;
Build an endpoint id for a registration. In BP of NS-3, each registration has a unique endpoint id.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
* S3: error control signals: bundle status report.&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8110</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8110"/>
		<updated>2013-11-18T14:13:29Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol structure = &lt;br /&gt;
The bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. In BP, we call packets as bundle and the node having BP layer as bundle node. The class structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area shows the main classes of BP in NS-3. BundleProtocol class implement several APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes. &lt;br /&gt;
&lt;br /&gt;
BpClaProtocol class is a pure abstract class which defines the internal APIs between the convergence layer adapter (CLA) and BundleProtocol. For different transport layer protocol, different inherited class must be created based on BpClaProtocol.  In the current version, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BpRoutingProtocol class is a pure abstract class which defines the APIs of bundle routing protocol. In the current version, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol APIs = &lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
* S3: error control signals: bundle status report.&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8109</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8109"/>
		<updated>2013-11-18T14:12:52Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Bundle protocol layer structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol structure = &lt;br /&gt;
The bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. In BP, we call packets as bundle and the node having BP layer as bundle node. The class structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area shows the main classes of BP in NS-3. BundleProtocol class implement several APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes. &lt;br /&gt;
&lt;br /&gt;
BpClaProtocol class is a pure abstract class which defines the internal APIs between the convergence layer adapter (CLA) and BundleProtocol. For different transport layer protocol, different inherited class must be created based on BpClaProtocol.  In the current version, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BpRoutingProtocol class is a pure abstract class which defines the APIs of bundle routing protocol. In the current version, only BpStaticRoutingProtocol is implemented, which uses a static map between local endpoint id and internet socket address.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
* S3: error control signals: bundle status report.&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8108</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8108"/>
		<updated>2013-11-18T12:43:53Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* BP layer structure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Bundle protocol layer structure = &lt;br /&gt;
The bundle protocol (BP) can be seen as a special application, which provides transport layer services to other applications in a delay-tolerant network. In BP, we call packets as bundle and the node having BP layer as bundle node. The class structure of BP in NS-3 is shown below:&lt;br /&gt;
          &lt;br /&gt;
         applications&lt;br /&gt;
              |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BundleProtocol                         |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
     |  BpClaProtocol   ---- BpRoutingProtocol |&lt;br /&gt;
     |        |                                |&lt;br /&gt;
      -----------------------------------------&lt;br /&gt;
              |&lt;br /&gt;
           Sockets                              &lt;br /&gt;
&lt;br /&gt;
The rectangle area shows the main classes of BP in NS-3. BundleProtocol class implement several APIs to applications, such as Register (), Open (), Bind () and so on. Applications can use these APIs to transmit bundles between bundle nodes. BpClaProtocol class implements the convergence layer adapter (CLA) in BP. It is an abstract class, which defines the internal APIs between BpClaProtocol and BundleProtocol. In current version, only BpTcpClaProtocol is implemented. It uses TCP socket in the transport layer to transmit bundles.&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
* S3: error control signals: bundle status report.&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8030</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=8030"/>
		<updated>2013-10-07T03:33:00Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= BP layer structure = &lt;br /&gt;
&lt;br /&gt;
The PDF file of BP layer structure can be found in [http://www.cs.unb.ca/~q5frc/BP.pdf BP structure].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
* S3: error control signals: bundle status report.&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=7882</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=7882"/>
		<updated>2013-09-04T18:55:03Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Plan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
* S3: error control signals: bundle status report.&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=7881</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=7881"/>
		<updated>2013-09-04T18:54:39Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts: &lt;br /&gt;
* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax. &lt;br /&gt;
* S2: control functions for custody transfer, custody signal in AA. &lt;br /&gt;
* S3: error control signals: bundle status report.&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle * nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle * nodes case,forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=7880</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=7880"/>
		<updated>2013-09-04T18:54:17Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
I divide the functions in this project into three parts:* S1: functions to make sure the bundle can be sent from sender to receiver, node structure, send/receive/forward, static routing, naming syntax.  * S2: control functions for custody transfer, custody signal in AA.  * S3: error control signals: bundle status report.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
12 weeks from Sep.4 to Nov.24: &lt;br /&gt;
* Week1: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week2: node structure: the class relationship in NS-3. &lt;br /&gt;
* Week3: send and receive without forwarding procedure (two bundle nodes case). &lt;br /&gt;
* Week4: send and receive with forwarding procedure (three or more bundle * nodes case, forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week5: send and receive with forwarding procedure (three or more bundle * nodes case,forward immediately, not custody transfer scheme). &lt;br /&gt;
* Week6: write test code and documentation for S1. &lt;br /&gt;
* Week7: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: custody signal support  (store-and-forward, custody transfer). &lt;br /&gt;
* Week8: write test code and documentation for S2. &lt;br /&gt;
* Week9: bundle status support* Week10: bundle status support. &lt;br /&gt;
* Week11: write test code and documentation for S3. &lt;br /&gt;
* Week12: wrap up.&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=7879</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=7879"/>
		<updated>2013-09-04T18:47:23Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Bundle Protocol */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tommaso.pecorella@unifi.it Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
&lt;br /&gt;
= Plan =12 weeks from Sep.4 to Nov.24: * Week1: node structure: the class relationship in NS-3* Week2: node structure: the class relationship in NS-3* Week3: send and receive without forwarding procedure (two bundle nodes case)* Week4: send and receive with forwarding procedure (three or more bundle * nodes case, foward immidiately, not custody transfer scheme)* Week5: send and receive with forwarding procedure (three or more bundle * nodes case,foward immidiately, not custody transfer scheme)* Week6: write test code and documentation for S1* Week7: custody signal support  (store-and-forward, custdoy transfer)* Week8: custody signal support  (store-and-forward, custdoy transfer)* Week8: write test code and documentation for S2* Week9: bundle status support* Week10: bundle status support* Week11: write test code and documentation for S3* Week12: wrap up&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=7878</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=7878"/>
		<updated>2013-09-04T18:33:57Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Bundle Protocol */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tpecorella@mac.com Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
&lt;br /&gt;
= Plan =12 weeks from Sep.4 to Nov.24: * Week1: node structure: the class relationship in NS-3* Week2: node structure: the class relationship in NS-3* Week3: send and receive without forwarding procedure (two bundle nodes case)* Week4: send and receive with forwarding procedure (three or more bundle * nodes case, foward immidiately, not custody transfer scheme)* Week5: send and receive with forwarding procedure (three or more bundle * nodes case,foward immidiately, not custody transfer scheme)* Week6: write test code and documentation for S1* Week7: custody signal support  (store-and-forward, custdoy transfer)* Week8: custody signal support  (store-and-forward, custdoy transfer)* Week8: write test code and documentation for S2* Week9: bundle status support* Week10: bundle status support* Week11: write test code and documentation for S3* Week12: wrap up&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to Tommaso Pecorella and Tom Henderson, also thanks of Lalith Suresh and Luca Simone Ronga. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this opportunity in SOCIS project.&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=7877</id>
		<title>SOCIS2013BundleProtocolProject</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=SOCIS2013BundleProtocolProject&amp;diff=7877"/>
		<updated>2013-09-04T18:29:06Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: Created page with &amp;quot;= Bundle Protocol  =  * Student: [mailto:q5frc@unb.ca Dizhi Zhou] * Mentors: : [mailto:tpecorella@mac.com Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga] * A...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Bundle Protocol  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:tpecorella@mac.com Tommaso Pecorella], [mailto:luca.ronga@cnit.it Luca Simone Ronga]&lt;br /&gt;
* Abstract: this project aims to implement the bundle protocol (BP) in NS-3 which includes the bundle node structure and basic function of BP protocol. It is designed to support BP in IETF and CCSDS standard. First, the bundle node is the node installing bundle layer between application layer and transport layer in NS-3. The bundle node structure in this project is designed to be easily run on varied transport layer protocols and provides a unified socket interface to applications. Second, the basic functions of BP protocol are divided into three parts in this project: bundle transmission operations, custody signal support and bundle status report support(optional). This project also includes the test suites and documentations in BP. &lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests include Multipath TCP (MPTCP) in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=7042</id>
		<title>GSOC2012LTEScheduling</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=7042"/>
		<updated>2012-10-22T02:09:56Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* LTE Scheduling with the FemtoForum MAC Scheduler API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LTE Scheduling with the FemtoForum MAC Scheduler API  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:nicola.baldo@cttc.es Nicola Baldo], [mailto:marco.miozzo@cttc.es Marco Miozzo]&lt;br /&gt;
* Abstract: The ns-3 LTE module released by the LENA project supports the FemtoForum MAC LTE MAC Scheduler Interface Specification for the implementation of MAC schedulers. Currently, only simple Round Robin and Proportional Fair schedulers are supported. This project will develop several main MAC schedulers for LTE. It also includes corresponding test suites and user manual. The complete proposal can be found in [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dizhizhou/1 here].&lt;br /&gt;
* Code: http://code.nsnam.org/dizhizhou/ns-3-dev&lt;br /&gt;
* Midterm report: https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests are multipath transmission for video streaming in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or  [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
&lt;br /&gt;
== LTE packet scheduler list ==&lt;br /&gt;
&lt;br /&gt;
Except PSS and TTA, each scheduler has two versions: frequency domain(FD) and time domain(FD). FD scheduler calculates priority metric on each RBG using subband cqi while TD scheduler calculates metric by wideband cqi. In other words, TD scheduler allocates all RBGs to one UE with highest priority metric.&lt;br /&gt;
&lt;br /&gt;
* 1, Maximum Throughput (MT)[1]: MT is a channel-aware/QoS-unaware scheduler. In MT, eNB allocates RBG k to UE j with largest instantaneous supportable data rate calculated by subband cqi on this RBG's frequency. &lt;br /&gt;
* 2, Blind Equal Throughput (BET)[1]: BET is a channel-unaware/QoS-unaware scheduler. It reaches the same throughput for all users, regardless of their radio channel quality. The priority is the reciprocal of past average throughput.&lt;br /&gt;
* 3, Throughput to Average (TTA)[1]: TTA is a channel-aware/QoS-unaware scheduler. TTA can be considered as a combination of MT and PF. The priority metric equals to expected datarate for UE j at time t on k-th RBG over wideband expected datarate for the UE j at time t. It guarantees that the best RBs are allocated to each user. NOTE: TTA can only be used in frequency domain.&lt;br /&gt;
* 4, Adaptive Token Bucket (TBFQ)[2][3]: TBFQ is a channel-aware/QoS-aware scheduler which derives from the leaky-bucket mechanism. It guarantees the fairness by utilizing a shared token bank. In addition, each flow has a token generation rate.The QoS is guaranteed by setting token generation rate to different values (such as Guarantee Bit Rate (GBR) in EPC bearer QoS parameter). In TBFQ, ﬂows belonging to UEs that are suffering from severe interference, and shadowing conditions in particular, will have a higher priority metric.&lt;br /&gt;
* 5, Priority set scheduling (PSS)[4]: PSS is a joint frequency domain and time domain scheduler. It is also a channel-aware/QoS-aware scheduler. It aims at providing a deﬁned Target Bit Rate (TBR) to all users. Specifically, in TD scheduler part, the scheduler first sets all available users into two sets based on the target bit rate (TBR): set 1: users below TBR, calculate priority metric in BET style; set 2: users above TBR, calculate priority metric in PF style; Users belonged to set 1 have higher priority than ones in set 2. Then TD scheduler will selects N UEs and forward them to FD scheduler which allocates RBGs k to UE j based on two algrorithms: PFsch and CoItA. Details of PFsch and CoItA can be found in [4] or LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
== Development methodology ==&lt;br /&gt;
&lt;br /&gt;
 for each scheduler s&lt;br /&gt;
    write design documentation of s&lt;br /&gt;
    find reference throughput for s&lt;br /&gt;
    implement s&lt;br /&gt;
    write test code for s&lt;br /&gt;
    write test documentation for s&lt;br /&gt;
    publish code of s in public repository&lt;br /&gt;
    submit code of s for review using the codereview tool&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
== Testing approach ==&lt;br /&gt;
&lt;br /&gt;
Because this GSoC project is an extension of current LTE MAC scheduler implementations, the test approach will follow the system test part in [6], test suites for each scheduler will be created as:&lt;br /&gt;
&lt;br /&gt;
* 1, compare the throughput performance obtained from simulation to the reference throughput. If their values are within a given tolerance, then test is passed.&lt;br /&gt;
    Test case: one eNB, multiple UEs&lt;br /&gt;
    For single test case, all UEs have same SINR (same distance to eNB)&lt;br /&gt;
    For different test case, each UE has different SINR (different distance to eNB)    and different number of UE&lt;br /&gt;
&lt;br /&gt;
* 2, check the fairness of scheduler: compare the throughput ratiro get from simulation to the reference throughput ratio    &lt;br /&gt;
   Test case: one eNB, multiple UEs&lt;br /&gt;
   For single test case, all UEs have different SINR different distance to eNB)     &lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
All schedulers developed are components of NS-3 LTE model. How to build and simulate LTE network can be found in [http://www.nsnam.org/docs/release/3.14/models/singlehtml/index.html#document-lte here]. If users want to use LTE MAC scheduler in this project, following codes can be added in your script:&lt;br /&gt;
&lt;br /&gt;
  FD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TTA scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TtaFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  PSS scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::PssFfMacScheduler&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
TBFQ and PSS have more parameters than other schedulers. Users can define those parameters in following way:&lt;br /&gt;
&lt;br /&gt;
TBFQ scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;DebtLimit&amp;quot;, IntegerValue(yourvalue)); // default value -625000 bytes (-5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditLimit&amp;quot;, UintegerValue(yourvalue)); // default value 625000 bytes (5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;TokenPoolSize&amp;quot;, UintegerValue(yourvalue)); // default value 1 byte&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditableThreshold&amp;quot;, UintegerValue(yourvalue)); // default value 0&lt;br /&gt;
&lt;br /&gt;
PSS scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;nMux&amp;quot;, UIntegerValue(yourvalue)); // the maximum number of UE selected by TD scheduler&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;PssFdSchedulerType&amp;quot;, StringValue(&amp;quot;CoItA&amp;quot;)); // PF scheduler type in PSS, default value &amp;quot;PFsch&amp;quot;&lt;br /&gt;
&lt;br /&gt;
In addition, token generation rate in TBFQ and target bit rate in PSS need to be configured by Guarantee Bit Rate (GBR) or Maximum Bit Rate (MBR) in epc bearer respectively. Users can use following codes to define GBR and MBR in both downlink and uplink:&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  enum EpsBearer::Qci q = EpsBearer::yourvalue;  // define Qci type&lt;br /&gt;
  GbrQosInformation qos;&lt;br /&gt;
  qos.gbrDl = yourvalue; // Downlink GBR&lt;br /&gt;
  qos.gbrUl = yourvalue; // Uplink GBR&lt;br /&gt;
  qos.mbrDl = yourvalue; // Downlink MBR&lt;br /&gt;
  qos.mbrUl = yourvalue; // Uplink MBR&lt;br /&gt;
  EpsBearer bearer (q, qos);&lt;br /&gt;
  lteHelper-&amp;gt;ActivateEpsBearer (ueDevs, bearer, EpcTft::Default ());&lt;br /&gt;
&lt;br /&gt;
How to choose value for those parameters is out of the scope of this page. Users can find more suggestions on this topic in LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
= Deliverables =&lt;br /&gt;
&lt;br /&gt;
* LTE MAC scheduler code:  TD-MT,TD-MT; TTA; FD-BET,TD-BET; FD-TBFQ,TD-TBFQ; PSS;&lt;br /&gt;
* Test suites of above schedulers;&lt;br /&gt;
* Documentation of above schedulers;&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
&lt;br /&gt;
* Week 1     May.21 -- May.27:  FD-MT scheduler &lt;br /&gt;
* Week 2     May.28 -- Jun.03:  TD-MT scheduler&lt;br /&gt;
* Week 3     Jun.4  -- Jun.10:  FD-TTA scheduler&lt;br /&gt;
* Week 4     Jun.11 -- Jun.17:  FD-BET scheduler&lt;br /&gt;
* Week 5     Jun.18 -- Jun.24:  FD-BET scheduler&lt;br /&gt;
* Week 6     Jun.25 -- Jul.01:  TD-BET scheduler&lt;br /&gt;
* Week 7     Jul.02 -- Jul.08:  Buffer&lt;br /&gt;
* Week 8     Jul.09 -- Jul.15:  Mid-term review&lt;br /&gt;
* Week 9     Jul.16 -- Jul.22:  FD-TBFQ scheduler&lt;br /&gt;
* Week 10    Jul.23 -- Jul.29:  TD-TBFQ scheduler&lt;br /&gt;
* Week 11    Jul.30 -- Aug.5:   FD-TBFQ scheduler&lt;br /&gt;
* Week 12    Aug.06 -- Aug.12:  TD-PSS scheduler&lt;br /&gt;
* Week 13    Aug.13 -- Aug.19:  Final review&lt;br /&gt;
&lt;br /&gt;
All schedulers will follow the procedures in Development methodology section.&lt;br /&gt;
&lt;br /&gt;
= Weekly Progress =&lt;br /&gt;
&lt;br /&gt;
* '''Week 1 : May.21 -- May.27'''&lt;br /&gt;
  * Complete code reading for LTE MAC scheduler and related part. Draw class relationship figure for MAC scheduler. Learning background knowledge of OFDMA&lt;br /&gt;
  * Write design documentation of FD-MT and scheduler framework &lt;br /&gt;
&lt;br /&gt;
* '''Week 2 : May.28 -- Jun.03'''&lt;br /&gt;
  * Complete FD-MT documentation and code and submit it to codereview.&lt;br /&gt;
  * Get review from mentors on FD-MT code. &lt;br /&gt;
&lt;br /&gt;
* '''Week 3 : Jun.4  -- Jun.10'''&lt;br /&gt;
  * Modify FD-MT documentation and code based on mentors' comment&lt;br /&gt;
  * Complete  TD-MT documentation and code and submit it to internal code review by mentors&lt;br /&gt;
  * Complete FD-TTA design &lt;br /&gt;
&lt;br /&gt;
* '''Week 4 : Jun.11 -- Jun.17'''&lt;br /&gt;
  * Complete TTA scheduler, including code, testing and documentation&lt;br /&gt;
  * Complete TD-BET and test it in the same SNR testcase.&lt;br /&gt;
  * Complete design document of FD-BET&lt;br /&gt;
&lt;br /&gt;
* '''Week 5 : Jun.18 -- Jun.24'''&lt;br /&gt;
  * Complete FD-BET, including code, same SNR test case &lt;br /&gt;
&lt;br /&gt;
* '''Week 6 : Jun.25 -- Jul.01'''&lt;br /&gt;
  * Modify the MT, TTA and BET codes based on naming style in NS-3&lt;br /&gt;
  * Propose a proof method for the user throughput calculation in FD-BET different SNR testcase  &lt;br /&gt;
&lt;br /&gt;
* '''Week 7 : Jul.02 -- Jul.08'''&lt;br /&gt;
  * Complete all FD-BET test cases and documentations&lt;br /&gt;
&lt;br /&gt;
* '''Week 8 : Jul.09 -- Jul.15'''&lt;br /&gt;
  * [https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport Midterm report]&lt;br /&gt;
&lt;br /&gt;
* '''Week 9 : Jul.16 -- Jul.22'''&lt;br /&gt;
  * Read four background papers of FBFQ scheduler in ATM, TDMA and LTE network&lt;br /&gt;
  * Complete first version of FD FBFQ scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 10 : Jul.23 -- Jul.29'''&lt;br /&gt;
  * Implement FD FBFQ scheduler for realistic application; several design issues faced, Unnecessary RBG allocation, GBR configuration and RLC packet header calculation&lt;br /&gt;
  * FD FBFQ testsuites for homogeneous traffic flows (traffic with the same sending rate) &lt;br /&gt;
&lt;br /&gt;
* '''Week 11 : Jul.30 -- Aug.5'''&lt;br /&gt;
  * Complete FD TBFQ scheduler, including scheduler codes and testsuites&lt;br /&gt;
  * Complete TD TBFQ scheduler, including scheduler codes and testsuites &lt;br /&gt;
&lt;br /&gt;
* '''Week 12 : Aug.06 -- Aug.12'''&lt;br /&gt;
  * Complete first version of PSS:&lt;br /&gt;
       TD scheduler: TD-BET + TD-PF&lt;br /&gt;
       FD scheduler: CoItA&lt;br /&gt;
  * Complete TBFQ document &lt;br /&gt;
&lt;br /&gt;
* '''Week 13 : Aug.13 -- Aug.19'''&lt;br /&gt;
  * Complete PFsch model in PSS FD scheduler&lt;br /&gt;
  * Complete testcase and document for PSS scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 14 : Aug.20 -- Aug.24'''&lt;br /&gt;
  * [http://mailman.isi.edu/pipermail/ns-developers/2012-August/010595.html Final report]&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to my two mentors, Nicola Baldo and Marco Miozzo, also thanks of Lalith Suresh, Tom Henderson and Biljana Bojovic. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this GSoC opportunity.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
* [1] F.Capozzi, G.Piro L.A.Grieco, G.Boggia, P.Camarda, &amp;quot;Downlink Packet Scheduling in LTE Cellular Networks: Key Design Issues and a Survey&amp;quot;, IEEE Comm. Surveys and Tutorials, to appear.&lt;br /&gt;
* [2] F.A. Bokhari, H. Yanikomeroglu, W.K. Wong, M. Rahman, &amp;quot;Cross-Layer Resource Scheduling for Video Traffic in the Downlink of OFDMA-Based Wireless 4G Networks&amp;quot;,EURASIP J. Wirel. Commun. Netw., vol.2009, no.3, pp. 1-10, Jan. 2009.&lt;br /&gt;
* [3] W.K. Wong, H.Y. Tang, V.C.M, Leung, &amp;quot;Token bank fair queuing: a new scheduling algorithm for wireless multimedia services&amp;quot;, Int. J. Commun. Syst., vol.17, no.6, pp.591-614, Aug.2004.&lt;br /&gt;
* [4] G.Mongha, K.I. Pedersen, I.Z. Kovacs, P.E. Mogensen, &amp;quot; QoS Oriented Time and Frequency Domain Packet Schedulers for The UTRAN Long Term Evolution&amp;quot;, In Proc. IEEE VTC, 2008.&lt;br /&gt;
* [5] http://lena.cttc.es/manual/index.html&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=7006</id>
		<title>GSOC2012LTEScheduling</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=7006"/>
		<updated>2012-09-01T03:01:41Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* LTE Scheduling with the FemtoForum MAC Scheduler API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LTE Scheduling with the FemtoForum MAC Scheduler API  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:nicola.baldo@cttc.es Nicola Baldo], [mailto:marco.miozzo@cttc.es Marco Miozzo]&lt;br /&gt;
* Abstract: The ns-3 LTE module released by the LENA project supports the FemtoForum MAC LTE MAC Scheduler Interface Specification for the implementation of MAC schedulers. Currently, only simple Round Robin and Proportional Fair schedulers are supported. This project will develop several main MAC schedulers for LTE. It also includes corresponding test suites and user manual. The complete proposal can be found in [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dizhizhou/1 here].&lt;br /&gt;
* Code: http://code.nsnam.org/dizhizhou/gsoc-lte-mac-scheduler/ns-3-dev&lt;br /&gt;
* Midterm report: https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests are multipath transmission for video streaming in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ website] or  [http://www.linkedin.com/pub/dizhi-zhou/30/774/477 LinkedIn].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
&lt;br /&gt;
== LTE packet scheduler list ==&lt;br /&gt;
&lt;br /&gt;
Except PSS and TTA, each scheduler has two versions: frequency domain(FD) and time domain(FD). FD scheduler calculates priority metric on each RBG using subband cqi while TD scheduler calculates metric by wideband cqi. In other words, TD scheduler allocates all RBGs to one UE with highest priority metric.&lt;br /&gt;
&lt;br /&gt;
* 1, Maximum Throughput (MT)[1]: MT is a channel-aware/QoS-unaware scheduler. In MT, eNB allocates RBG k to UE j with largest instantaneous supportable data rate calculated by subband cqi on this RBG's frequency. &lt;br /&gt;
* 2, Blind Equal Throughput (BET)[1]: BET is a channel-unaware/QoS-unaware scheduler. It reaches the same throughput for all users, regardless of their radio channel quality. The priority is the reciprocal of past average throughput.&lt;br /&gt;
* 3, Throughput to Average (TTA)[1]: TTA is a channel-aware/QoS-unaware scheduler. TTA can be considered as a combination of MT and PF. The priority metric equals to expected datarate for UE j at time t on k-th RBG over wideband expected datarate for the UE j at time t. It guarantees that the best RBs are allocated to each user. NOTE: TTA can only be used in frequency domain.&lt;br /&gt;
* 4, Adaptive Token Bucket (TBFQ)[2][3]: TBFQ is a channel-aware/QoS-aware scheduler which derives from the leaky-bucket mechanism. It guarantees the fairness by utilizing a shared token bank. In addition, each flow has a token generation rate.The QoS is guaranteed by setting token generation rate to different values (such as Guarantee Bit Rate (GBR) in EPC bearer QoS parameter). In TBFQ, ﬂows belonging to UEs that are suffering from severe interference, and shadowing conditions in particular, will have a higher priority metric.&lt;br /&gt;
* 5, Priority set scheduling (PSS)[4]: PSS is a joint frequency domain and time domain scheduler. It is also a channel-aware/QoS-aware scheduler. It aims at providing a deﬁned Target Bit Rate (TBR) to all users. Specifically, in TD scheduler part, the scheduler first sets all available users into two sets based on the target bit rate (TBR): set 1: users below TBR, calculate priority metric in BET style; set 2: users above TBR, calculate priority metric in PF style; Users belonged to set 1 have higher priority than ones in set 2. Then TD scheduler will selects N UEs and forward them to FD scheduler which allocates RBGs k to UE j based on two algrorithms: PFsch and CoItA. Details of PFsch and CoItA can be found in [4] or LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
== Development methodology ==&lt;br /&gt;
&lt;br /&gt;
 for each scheduler s&lt;br /&gt;
    write design documentation of s&lt;br /&gt;
    find reference throughput for s&lt;br /&gt;
    implement s&lt;br /&gt;
    write test code for s&lt;br /&gt;
    write test documentation for s&lt;br /&gt;
    publish code of s in public repository&lt;br /&gt;
    submit code of s for review using the codereview tool&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
== Testing approach ==&lt;br /&gt;
&lt;br /&gt;
Because this GSoC project is an extension of current LTE MAC scheduler implementations, the test approach will follow the system test part in [6], test suites for each scheduler will be created as:&lt;br /&gt;
&lt;br /&gt;
* 1, compare the throughput performance obtained from simulation to the reference throughput. If their values are within a given tolerance, then test is passed.&lt;br /&gt;
    Test case: one eNB, multiple UEs&lt;br /&gt;
    For single test case, all UEs have same SINR (same distance to eNB)&lt;br /&gt;
    For different test case, each UE has different SINR (different distance to eNB)    and different number of UE&lt;br /&gt;
&lt;br /&gt;
* 2, check the fairness of scheduler: compare the throughput ratiro get from simulation to the reference throughput ratio    &lt;br /&gt;
   Test case: one eNB, multiple UEs&lt;br /&gt;
   For single test case, all UEs have different SINR different distance to eNB)     &lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
All schedulers developed are components of NS-3 LTE model. How to build and simulate LTE network can be found in [http://www.nsnam.org/docs/release/3.14/models/singlehtml/index.html#document-lte here]. If users want to use LTE MAC scheduler in this project, following codes can be added in your script:&lt;br /&gt;
&lt;br /&gt;
  FD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TTA scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TtaFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  PSS scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::PssFfMacScheduler&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
TBFQ and PSS have more parameters than other schedulers. Users can define those parameters in following way:&lt;br /&gt;
&lt;br /&gt;
TBFQ scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;DebtLimit&amp;quot;, IntegerValue(yourvalue)); // default value -625000 bytes (-5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditLimit&amp;quot;, UintegerValue(yourvalue)); // default value 625000 bytes (5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;TokenPoolSize&amp;quot;, UintegerValue(yourvalue)); // default value 1 byte&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditableThreshold&amp;quot;, UintegerValue(yourvalue)); // default value 0&lt;br /&gt;
&lt;br /&gt;
PSS scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;nMux&amp;quot;, UIntegerValue(yourvalue)); // the maximum number of UE selected by TD scheduler&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;PssFdSchedulerType&amp;quot;, StringValue(&amp;quot;CoItA&amp;quot;)); // PF scheduler type in PSS, default value &amp;quot;PFsch&amp;quot;&lt;br /&gt;
&lt;br /&gt;
In addition, token generation rate in TBFQ and target bit rate in PSS need to be configured by Guarantee Bit Rate (GBR) or Maximum Bit Rate (MBR) in epc bearer respectively. Users can use following codes to define GBR and MBR in both downlink and uplink:&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  enum EpsBearer::Qci q = EpsBearer::yourvalue;  // define Qci type&lt;br /&gt;
  GbrQosInformation qos;&lt;br /&gt;
  qos.gbrDl = yourvalue; // Downlink GBR&lt;br /&gt;
  qos.gbrUl = yourvalue; // Uplink GBR&lt;br /&gt;
  qos.mbrDl = yourvalue; // Downlink MBR&lt;br /&gt;
  qos.mbrUl = yourvalue; // Uplink MBR&lt;br /&gt;
  EpsBearer bearer (q, qos);&lt;br /&gt;
  lteHelper-&amp;gt;ActivateEpsBearer (ueDevs, bearer, EpcTft::Default ());&lt;br /&gt;
&lt;br /&gt;
How to choose value for those parameters is out of the scope of this page. Users can find more suggestions on this topic in LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
= Deliverables =&lt;br /&gt;
&lt;br /&gt;
* LTE MAC scheduler code:  TD-MT,TD-MT; TTA; FD-BET,TD-BET; FD-TBFQ,TD-TBFQ; PSS;&lt;br /&gt;
* Test suites of above schedulers;&lt;br /&gt;
* Documentation of above schedulers;&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
&lt;br /&gt;
* Week 1     May.21 -- May.27:  FD-MT scheduler &lt;br /&gt;
* Week 2     May.28 -- Jun.03:  TD-MT scheduler&lt;br /&gt;
* Week 3     Jun.4  -- Jun.10:  FD-TTA scheduler&lt;br /&gt;
* Week 4     Jun.11 -- Jun.17:  FD-BET scheduler&lt;br /&gt;
* Week 5     Jun.18 -- Jun.24:  FD-BET scheduler&lt;br /&gt;
* Week 6     Jun.25 -- Jul.01:  TD-BET scheduler&lt;br /&gt;
* Week 7     Jul.02 -- Jul.08:  Buffer&lt;br /&gt;
* Week 8     Jul.09 -- Jul.15:  Mid-term review&lt;br /&gt;
* Week 9     Jul.16 -- Jul.22:  FD-TBFQ scheduler&lt;br /&gt;
* Week 10    Jul.23 -- Jul.29:  TD-TBFQ scheduler&lt;br /&gt;
* Week 11    Jul.30 -- Aug.5:   FD-TBFQ scheduler&lt;br /&gt;
* Week 12    Aug.06 -- Aug.12:  TD-PSS scheduler&lt;br /&gt;
* Week 13    Aug.13 -- Aug.19:  Final review&lt;br /&gt;
&lt;br /&gt;
All schedulers will follow the procedures in Development methodology section.&lt;br /&gt;
&lt;br /&gt;
= Weekly Progress =&lt;br /&gt;
&lt;br /&gt;
* '''Week 1 : May.21 -- May.27'''&lt;br /&gt;
  * Complete code reading for LTE MAC scheduler and related part. Draw class relationship figure for MAC scheduler. Learning background knowledge of OFDMA&lt;br /&gt;
  * Write design documentation of FD-MT and scheduler framework &lt;br /&gt;
&lt;br /&gt;
* '''Week 2 : May.28 -- Jun.03'''&lt;br /&gt;
  * Complete FD-MT documentation and code and submit it to codereview.&lt;br /&gt;
  * Get review from mentors on FD-MT code. &lt;br /&gt;
&lt;br /&gt;
* '''Week 3 : Jun.4  -- Jun.10'''&lt;br /&gt;
  * Modify FD-MT documentation and code based on mentors' comment&lt;br /&gt;
  * Complete  TD-MT documentation and code and submit it to internal code review by mentors&lt;br /&gt;
  * Complete FD-TTA design &lt;br /&gt;
&lt;br /&gt;
* '''Week 4 : Jun.11 -- Jun.17'''&lt;br /&gt;
  * Complete TTA scheduler, including code, testing and documentation&lt;br /&gt;
  * Complete TD-BET and test it in the same SNR testcase.&lt;br /&gt;
  * Complete design document of FD-BET&lt;br /&gt;
&lt;br /&gt;
* '''Week 5 : Jun.18 -- Jun.24'''&lt;br /&gt;
  * Complete FD-BET, including code, same SNR test case &lt;br /&gt;
&lt;br /&gt;
* '''Week 6 : Jun.25 -- Jul.01'''&lt;br /&gt;
  * Modify the MT, TTA and BET codes based on naming style in NS-3&lt;br /&gt;
  * Propose a proof method for the user throughput calculation in FD-BET different SNR testcase  &lt;br /&gt;
&lt;br /&gt;
* '''Week 7 : Jul.02 -- Jul.08'''&lt;br /&gt;
  * Complete all FD-BET test cases and documentations&lt;br /&gt;
&lt;br /&gt;
* '''Week 8 : Jul.09 -- Jul.15'''&lt;br /&gt;
  * [https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport Midterm report]&lt;br /&gt;
&lt;br /&gt;
* '''Week 9 : Jul.16 -- Jul.22'''&lt;br /&gt;
  * Read four background papers of FBFQ scheduler in ATM, TDMA and LTE network&lt;br /&gt;
  * Complete first version of FD FBFQ scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 10 : Jul.23 -- Jul.29'''&lt;br /&gt;
  * Implement FD FBFQ scheduler for realistic application; several design issues faced, Unnecessary RBG allocation, GBR configuration and RLC packet header calculation&lt;br /&gt;
  * FD FBFQ testsuites for homogeneous traffic flows (traffic with the same sending rate) &lt;br /&gt;
&lt;br /&gt;
* '''Week 11 : Jul.30 -- Aug.5'''&lt;br /&gt;
  * Complete FD TBFQ scheduler, including scheduler codes and testsuites&lt;br /&gt;
  * Complete TD TBFQ scheduler, including scheduler codes and testsuites &lt;br /&gt;
&lt;br /&gt;
* '''Week 12 : Aug.06 -- Aug.12'''&lt;br /&gt;
  * Complete first version of PSS:&lt;br /&gt;
       TD scheduler: TD-BET + TD-PF&lt;br /&gt;
       FD scheduler: CoItA&lt;br /&gt;
  * Complete TBFQ document &lt;br /&gt;
&lt;br /&gt;
* '''Week 13 : Aug.13 -- Aug.19'''&lt;br /&gt;
  * Complete PFsch model in PSS FD scheduler&lt;br /&gt;
  * Complete testcase and document for PSS scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 14 : Aug.20 -- Aug.24'''&lt;br /&gt;
  * [http://mailman.isi.edu/pipermail/ns-developers/2012-August/010595.html Final report]&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to my two mentors, Nicola Baldo and Marco Miozzo, also thanks of Lalith Suresh, Tom Henderson and Biljana Bojovic. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this GSoC opportunity.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
* [1] F.Capozzi, G.Piro L.A.Grieco, G.Boggia, P.Camarda, &amp;quot;Downlink Packet Scheduling in LTE Cellular Networks: Key Design Issues and a Survey&amp;quot;, IEEE Comm. Surveys and Tutorials, to appear.&lt;br /&gt;
* [2] F.A. Bokhari, H. Yanikomeroglu, W.K. Wong, M. Rahman, &amp;quot;Cross-Layer Resource Scheduling for Video Traffic in the Downlink of OFDMA-Based Wireless 4G Networks&amp;quot;,EURASIP J. Wirel. Commun. Netw., vol.2009, no.3, pp. 1-10, Jan. 2009.&lt;br /&gt;
* [3] W.K. Wong, H.Y. Tang, V.C.M, Leung, &amp;quot;Token bank fair queuing: a new scheduling algorithm for wireless multimedia services&amp;quot;, Int. J. Commun. Syst., vol.17, no.6, pp.591-614, Aug.2004.&lt;br /&gt;
* [4] G.Mongha, K.I. Pedersen, I.Z. Kovacs, P.E. Mogensen, &amp;quot; QoS Oriented Time and Frequency Domain Packet Schedulers for The UTRAN Long Term Evolution&amp;quot;, In Proc. IEEE VTC, 2008.&lt;br /&gt;
* [5] http://lena.cttc.es/manual/index.html&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6988</id>
		<title>GSOC2012LTEScheduling</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6988"/>
		<updated>2012-08-24T13:49:06Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LTE Scheduling with the FemtoForum MAC Scheduler API  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:nicola.baldo@cttc.es Nicola Baldo], [mailto:marco.miozzo@cttc.es Marco Miozzo]&lt;br /&gt;
* Abstract: The ns-3 LTE module released by the LENA project supports the FemtoForum MAC LTE MAC Scheduler Interface Specification for the implementation of MAC schedulers. Currently, only simple Round Robin and Proportional Fair schedulers are supported. This project will develop several main MAC schedulers for LTE. It also includes corresponding test suites and user manual. The complete proposal can be found in [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dizhizhou/1 here].&lt;br /&gt;
* Code: http://code.nsnam.org/dizhizhou/gsoc-lte-mac-scheduler/ns-3-dev&lt;br /&gt;
* Midterm report: https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests are multipath transmission for video streaming in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ here].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
&lt;br /&gt;
== LTE packet scheduler list ==&lt;br /&gt;
&lt;br /&gt;
Except PSS and TTA, each scheduler has two versions: frequency domain(FD) and time domain(FD). FD scheduler calculates priority metric on each RBG using subband cqi while TD scheduler calculates metric by wideband cqi. In other words, TD scheduler allocates all RBGs to one UE with highest priority metric.&lt;br /&gt;
&lt;br /&gt;
* 1, Maximum Throughput (MT)[1]: MT is a channel-aware/QoS-unaware scheduler. In MT, eNB allocates RBG k to UE j with largest instantaneous supportable data rate calculated by subband cqi on this RBG's frequency. &lt;br /&gt;
* 2, Blind Equal Throughput (BET)[1]: BET is a channel-unaware/QoS-unaware scheduler. It reaches the same throughput for all users, regardless of their radio channel quality. The priority is the reciprocal of past average throughput.&lt;br /&gt;
* 3, Throughput to Average (TTA)[1]: TTA is a channel-aware/QoS-unaware scheduler. TTA can be considered as a combination of MT and PF. The priority metric equals to expected datarate for UE j at time t on k-th RBG over wideband expected datarate for the UE j at time t. It guarantees that the best RBs are allocated to each user. NOTE: TTA can only be used in frequency domain.&lt;br /&gt;
* 4, Adaptive Token Bucket (TBFQ)[2][3]: TBFQ is a channel-aware/QoS-aware scheduler which derives from the leaky-bucket mechanism. It guarantees the fairness by utilizing a shared token bank. In addition, each flow has a token generation rate.The QoS is guaranteed by setting token generation rate to different values (such as Guarantee Bit Rate (GBR) in EPC bearer QoS parameter). In TBFQ, ﬂows belonging to UEs that are suffering from severe interference, and shadowing conditions in particular, will have a higher priority metric.&lt;br /&gt;
* 5, Priority set scheduling (PSS)[4]: PSS is a joint frequency domain and time domain scheduler. It is also a channel-aware/QoS-aware scheduler. It aims at providing a deﬁned Target Bit Rate (TBR) to all users. Specifically, in TD scheduler part, the scheduler first sets all available users into two sets based on the target bit rate (TBR): set 1: users below TBR, calculate priority metric in BET style; set 2: users above TBR, calculate priority metric in PF style; Users belonged to set 1 have higher priority than ones in set 2. Then TD scheduler will selects N UEs and forward them to FD scheduler which allocates RBGs k to UE j based on two algrorithms: PFsch and CoItA. Details of PFsch and CoItA can be found in [4] or LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
== Development methodology ==&lt;br /&gt;
&lt;br /&gt;
 for each scheduler s&lt;br /&gt;
    write design documentation of s&lt;br /&gt;
    find reference throughput for s&lt;br /&gt;
    implement s&lt;br /&gt;
    write test code for s&lt;br /&gt;
    write test documentation for s&lt;br /&gt;
    publish code of s in public repository&lt;br /&gt;
    submit code of s for review using the codereview tool&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
== Testing approach ==&lt;br /&gt;
&lt;br /&gt;
Because this GSoC project is an extension of current LTE MAC scheduler implementations, the test approach will follow the system test part in [6], test suites for each scheduler will be created as:&lt;br /&gt;
&lt;br /&gt;
* 1, compare the throughput performance obtained from simulation to the reference throughput. If their values are within a given tolerance, then test is passed.&lt;br /&gt;
    Test case: one eNB, multiple UEs&lt;br /&gt;
    For single test case, all UEs have same SINR (same distance to eNB)&lt;br /&gt;
    For different test case, each UE has different SINR (different distance to eNB)    and different number of UE&lt;br /&gt;
&lt;br /&gt;
* 2, check the fairness of scheduler: compare the throughput ratiro get from simulation to the reference throughput ratio    &lt;br /&gt;
   Test case: one eNB, multiple UEs&lt;br /&gt;
   For single test case, all UEs have different SINR different distance to eNB)     &lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
All schedulers developed are components of NS-3 LTE model. How to build and simulate LTE network can be found in [http://www.nsnam.org/docs/release/3.14/models/singlehtml/index.html#document-lte here]. If users want to use LTE MAC scheduler in this project, following codes can be added in your script:&lt;br /&gt;
&lt;br /&gt;
  FD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TTA scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TtaFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  PSS scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::PssFfMacScheduler&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
TBFQ and PSS have more parameters than other schedulers. Users can define those parameters in following way:&lt;br /&gt;
&lt;br /&gt;
TBFQ scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;DebtLimit&amp;quot;, IntegerValue(yourvalue)); // default value -625000 bytes (-5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditLimit&amp;quot;, UintegerValue(yourvalue)); // default value 625000 bytes (5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;TokenPoolSize&amp;quot;, UintegerValue(yourvalue)); // default value 1 byte&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditableThreshold&amp;quot;, UintegerValue(yourvalue)); // default value 0&lt;br /&gt;
&lt;br /&gt;
PSS scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;nMux&amp;quot;, UIntegerValue(yourvalue)); // the maximum number of UE selected by TD scheduler&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;PssFdSchedulerType&amp;quot;, StringValue(&amp;quot;CoItA&amp;quot;)); // PF scheduler type in PSS, default value &amp;quot;PFsch&amp;quot;&lt;br /&gt;
&lt;br /&gt;
In addition, token generation rate in TBFQ and target bit rate in PSS need to be configured by Guarantee Bit Rate (GBR) or Maximum Bit Rate (MBR) in epc bearer respectively. Users can use following codes to define GBR and MBR in both downlink and uplink:&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  enum EpsBearer::Qci q = EpsBearer::yourvalue;  // define Qci type&lt;br /&gt;
  GbrQosInformation qos;&lt;br /&gt;
  qos.gbrDl = yourvalue; // Downlink GBR&lt;br /&gt;
  qos.gbrUl = yourvalue; // Uplink GBR&lt;br /&gt;
  qos.mbrDl = yourvalue; // Downlink MBR&lt;br /&gt;
  qos.mbrUl = yourvalue; // Uplink MBR&lt;br /&gt;
  EpsBearer bearer (q, qos);&lt;br /&gt;
  lteHelper-&amp;gt;ActivateEpsBearer (ueDevs, bearer, EpcTft::Default ());&lt;br /&gt;
&lt;br /&gt;
How to choose value for those parameters is out of the scope of this page. Users can find more suggestions on this topic in LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
= Deliverables =&lt;br /&gt;
&lt;br /&gt;
* LTE MAC scheduler code:  TD-MT,TD-MT; TTA; FD-BET,TD-BET; FD-TBFQ,TD-TBFQ; PSS;&lt;br /&gt;
* Test suites of above schedulers;&lt;br /&gt;
* Documentation of above schedulers;&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
&lt;br /&gt;
* Week 1     May.21 -- May.27:  FD-MT scheduler &lt;br /&gt;
* Week 2     May.28 -- Jun.03:  TD-MT scheduler&lt;br /&gt;
* Week 3     Jun.4  -- Jun.10:  FD-TTA scheduler&lt;br /&gt;
* Week 4     Jun.11 -- Jun.17:  FD-BET scheduler&lt;br /&gt;
* Week 5     Jun.18 -- Jun.24:  FD-BET scheduler&lt;br /&gt;
* Week 6     Jun.25 -- Jul.01:  TD-BET scheduler&lt;br /&gt;
* Week 7     Jul.02 -- Jul.08:  Buffer&lt;br /&gt;
* Week 8     Jul.09 -- Jul.15:  Mid-term review&lt;br /&gt;
* Week 9     Jul.16 -- Jul.22:  FD-TBFQ scheduler&lt;br /&gt;
* Week 10    Jul.23 -- Jul.29:  TD-TBFQ scheduler&lt;br /&gt;
* Week 11    Jul.30 -- Aug.5:   FD-TBFQ scheduler&lt;br /&gt;
* Week 12    Aug.06 -- Aug.12:  TD-PSS scheduler&lt;br /&gt;
* Week 13    Aug.13 -- Aug.19:  Final review&lt;br /&gt;
&lt;br /&gt;
All schedulers will follow the procedures in Development methodology section.&lt;br /&gt;
&lt;br /&gt;
= Weekly Progress =&lt;br /&gt;
&lt;br /&gt;
* '''Week 1 : May.21 -- May.27'''&lt;br /&gt;
  * Complete code reading for LTE MAC scheduler and related part. Draw class relationship figure for MAC scheduler. Learning background knowledge of OFDMA&lt;br /&gt;
  * Write design documentation of FD-MT and scheduler framework &lt;br /&gt;
&lt;br /&gt;
* '''Week 2 : May.28 -- Jun.03'''&lt;br /&gt;
  * Complete FD-MT documentation and code and submit it to codereview.&lt;br /&gt;
  * Get review from mentors on FD-MT code. &lt;br /&gt;
&lt;br /&gt;
* '''Week 3 : Jun.4  -- Jun.10'''&lt;br /&gt;
  * Modify FD-MT documentation and code based on mentors' comment&lt;br /&gt;
  * Complete  TD-MT documentation and code and submit it to internal code review by mentors&lt;br /&gt;
  * Complete FD-TTA design &lt;br /&gt;
&lt;br /&gt;
* '''Week 4 : Jun.11 -- Jun.17'''&lt;br /&gt;
  * Complete TTA scheduler, including code, testing and documentation&lt;br /&gt;
  * Complete TD-BET and test it in the same SNR testcase.&lt;br /&gt;
  * Complete design document of FD-BET&lt;br /&gt;
&lt;br /&gt;
* '''Week 5 : Jun.18 -- Jun.24'''&lt;br /&gt;
  * Complete FD-BET, including code, same SNR test case &lt;br /&gt;
&lt;br /&gt;
* '''Week 6 : Jun.25 -- Jul.01'''&lt;br /&gt;
  * Modify the MT, TTA and BET codes based on naming style in NS-3&lt;br /&gt;
  * Propose a proof method for the user throughput calculation in FD-BET different SNR testcase  &lt;br /&gt;
&lt;br /&gt;
* '''Week 7 : Jul.02 -- Jul.08'''&lt;br /&gt;
  * Complete all FD-BET test cases and documentations&lt;br /&gt;
&lt;br /&gt;
* '''Week 8 : Jul.09 -- Jul.15'''&lt;br /&gt;
  * [https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport Midterm report]&lt;br /&gt;
&lt;br /&gt;
* '''Week 9 : Jul.16 -- Jul.22'''&lt;br /&gt;
  * Read four background papers of FBFQ scheduler in ATM, TDMA and LTE network&lt;br /&gt;
  * Complete first version of FD FBFQ scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 10 : Jul.23 -- Jul.29'''&lt;br /&gt;
  * Implement FD FBFQ scheduler for realistic application; several design issues faced, Unnecessary RBG allocation, GBR configuration and RLC packet header calculation&lt;br /&gt;
  * FD FBFQ testsuites for homogeneous traffic flows (traffic with the same sending rate) &lt;br /&gt;
&lt;br /&gt;
* '''Week 11 : Jul.30 -- Aug.5'''&lt;br /&gt;
  * Complete FD TBFQ scheduler, including scheduler codes and testsuites&lt;br /&gt;
  * Complete TD TBFQ scheduler, including scheduler codes and testsuites &lt;br /&gt;
&lt;br /&gt;
* '''Week 12 : Aug.06 -- Aug.12'''&lt;br /&gt;
  * Complete first version of PSS:&lt;br /&gt;
       TD scheduler: TD-BET + TD-PF&lt;br /&gt;
       FD scheduler: CoItA&lt;br /&gt;
  * Complete TBFQ document &lt;br /&gt;
&lt;br /&gt;
* '''Week 13 : Aug.13 -- Aug.19'''&lt;br /&gt;
  * Complete PFsch model in PSS FD scheduler&lt;br /&gt;
  * Complete testcase and document for PSS scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 14 : Aug.20 -- Aug.24'''&lt;br /&gt;
  * [http://mailman.isi.edu/pipermail/ns-developers/2012-August/010595.html Final report]&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to my two mentors, Nicola Baldo and Marco Miozzo, also thanks of Lalith Suresh, Tom Henderson and Biljana Bojovic. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this GSoC opportunity.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
* [1] F.Capozzi, G.Piro L.A.Grieco, G.Boggia, P.Camarda, &amp;quot;Downlink Packet Scheduling in LTE Cellular Networks: Key Design Issues and a Survey&amp;quot;, IEEE Comm. Surveys and Tutorials, to appear.&lt;br /&gt;
* [2] F.A. Bokhari, H. Yanikomeroglu, W.K. Wong, M. Rahman, &amp;quot;Cross-Layer Resource Scheduling for Video Traffic in the Downlink of OFDMA-Based Wireless 4G Networks&amp;quot;,EURASIP J. Wirel. Commun. Netw., vol.2009, no.3, pp. 1-10, Jan. 2009.&lt;br /&gt;
* [3] W.K. Wong, H.Y. Tang, V.C.M, Leung, &amp;quot;Token bank fair queuing: a new scheduling algorithm for wireless multimedia services&amp;quot;, Int. J. Commun. Syst., vol.17, no.6, pp.591-614, Aug.2004.&lt;br /&gt;
* [4] G.Mongha, K.I. Pedersen, I.Z. Kovacs, P.E. Mogensen, &amp;quot; QoS Oriented Time and Frequency Domain Packet Schedulers for The UTRAN Long Term Evolution&amp;quot;, In Proc. IEEE VTC, 2008.&lt;br /&gt;
* [5] http://lena.cttc.es/manual/index.html&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6986</id>
		<title>GSOC2012LTEScheduling</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6986"/>
		<updated>2012-08-23T15:44:13Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* LTE packet scheduler list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LTE Scheduling with the FemtoForum MAC Scheduler API  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:nicola.baldo@cttc.es Nicola Baldo], [mailto:marco.miozzo@cttc.es Marco Miozzo]&lt;br /&gt;
* Abstract: The ns-3 LTE module released by the LENA project supports the FemtoForum MAC LTE MAC Scheduler Interface Specification for the implementation of MAC schedulers. Currently, only simple Round Robin and Proportional Fair schedulers are supported. This project will develop several main MAC schedulers for LTE. It also includes corresponding test suites and user manual. The complete proposal can be found in [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dizhizhou/1 here].&lt;br /&gt;
* Code: http://code.nsnam.org/dizhizhou/gsoc-lte-mac-scheduler/ns-3-dev&lt;br /&gt;
* Midterm report: https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests are multipath transmission for video streaming in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ here].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
&lt;br /&gt;
== LTE packet scheduler list ==&lt;br /&gt;
&lt;br /&gt;
Except PSS and TTA, each scheduler has two versions: frequency domain(FD) and time domain(FD). FD scheduler calculates priority metric on each RBG using subband cqi while TD scheduler calculates metric by wideband cqi. In other words, TD scheduler allocates all RBGs to one UE with highest priority metric.&lt;br /&gt;
&lt;br /&gt;
* 1, Maximum Throughput (MT)[1]: MT is a channel-aware/QoS-unaware scheduler. In MT, eNB allocates RBG k to UE j with largest instantaneous supportable data rate calculated by subband cqi on this RBG's frequency. &lt;br /&gt;
* 2, Blind Equal Throughput (BET)[1]: BET is a channel-unaware/QoS-unaware scheduler. It reaches the same throughput for all users, regardless of their radio channel quality. The priority is the reciprocal of past average throughput.&lt;br /&gt;
* 3, Throughput to Average (TTA)[1]: TTA is a channel-aware/QoS-unaware scheduler. TTA can be considered as a combination of MT and PF. The priority metric equals to expected datarate for UE j at time t on k-th RBG over wideband expected datarate for the UE j at time t. It guarantees that the best RBs are allocated to each user. NOTE: TTA can only be used in frequency domain.&lt;br /&gt;
* 4, Adaptive Token Bucket (TBFQ)[2][3]: TBFQ is a channel-aware/QoS-aware scheduler which derives from the leaky-bucket mechanism. It guarantees the fairness by utilizing a shared token bank. In addition, each flow has a token generation rate.The QoS is guaranteed by setting token generation rate to different values (such as Guarantee Bit Rate (GBR) in EPC bearer QoS parameter). In TBFQ, ﬂows belonging to UEs that are suffering from severe interference, and shadowing conditions in particular, will have a higher priority metric.&lt;br /&gt;
* 5, Priority set scheduling (PSS)[4]: PSS is a joint frequency domain and time domain scheduler. It is also a channel-aware/QoS-aware scheduler. It aims at providing a deﬁned Target Bit Rate (TBR) to all users. Specifically, in TD scheduler part, the scheduler first sets all available users into two sets based on the target bit rate (TBR): set 1: users below TBR, calculate priority metric in BET style; set 2: users above TBR, calculate priority metric in PF style; Users belonged to set 1 have higher priority than ones in set 2. Then TD scheduler will selects N UEs and forward them to FD scheduler which allocates RBGs k to UE j based on two algrorithms: PFsch and CoItA. Details of PFsch and CoItA can be found in [4] or LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
== Development methodology ==&lt;br /&gt;
&lt;br /&gt;
 for each scheduler s&lt;br /&gt;
    write design documentation of s&lt;br /&gt;
    find reference throughput for s&lt;br /&gt;
    implement s&lt;br /&gt;
    write test code for s&lt;br /&gt;
    write test documentation for s&lt;br /&gt;
    publish code of s in public repository&lt;br /&gt;
    submit code of s for review using the codereview tool&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
== Testing approach ==&lt;br /&gt;
&lt;br /&gt;
Because this GSoC project is an extension of current LTE MAC scheduler implementations, the test approach will follow the system test part in [6], test suites for each scheduler will be created as:&lt;br /&gt;
&lt;br /&gt;
* 1, compare the throughput performance obtained from simulation to the reference throughput. If their values are within a given tolerance, then test is passed.&lt;br /&gt;
    Test case: one eNB, multiple UEs&lt;br /&gt;
    For single test case, all UEs have same SINR (same distance to eNB)&lt;br /&gt;
    For different test case, each UE has different SINR (different distance to eNB)    and different number of UE&lt;br /&gt;
&lt;br /&gt;
* 2, check the fairness of scheduler: compare the throughput ratiro get from simulation to the reference throughput ratio    &lt;br /&gt;
   Test case: one eNB, multiple UEs&lt;br /&gt;
   For single test case, all UEs have different SINR different distance to eNB)     &lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
All schedulers developed are components of NS-3 LTE model. How to build and simulate LTE network can be found in [http://www.nsnam.org/docs/release/3.14/models/singlehtml/index.html#document-lte here]. If users want to use LTE MAC scheduler in this project, following codes can be added in your script:&lt;br /&gt;
&lt;br /&gt;
  FD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TTA scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TtaFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  PSS scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::PssFfMacScheduler&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
TBFQ and PSS have more parameters than other schedulers. Users can define those parameters in following way:&lt;br /&gt;
&lt;br /&gt;
TBFQ scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;DebtLimit&amp;quot;, IntegerValue(yourvalue)); // default value -625000 bytes (-5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditLimit&amp;quot;, UintegerValue(yourvalue)); // default value 625000 bytes (5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;TokenPoolSize&amp;quot;, UintegerValue(yourvalue)); // default value 1 byte&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditableThreshold&amp;quot;, UintegerValue(yourvalue)); // default value 0&lt;br /&gt;
&lt;br /&gt;
PSS scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;nMux&amp;quot;, UIntegerValue(yourvalue)); // the maximum number of UE selected by TD scheduler&lt;br /&gt;
&lt;br /&gt;
In addition, token generation rate in TBFQ and target bit rate in PSS need to be configured by Guarantee Bit Rate (GBR) or Maximum Bit Rate (MBR) in epc bearer respectively. Users can use following codes to define GBR and MBR in both downlink and uplink:&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  enum EpsBearer::Qci q = EpsBearer::yourvalue;  // define Qci type&lt;br /&gt;
  GbrQosInformation qos;&lt;br /&gt;
  qos.gbrDl = yourvalue; // Downlink GBR&lt;br /&gt;
  qos.gbrUl = yourvalue; // Uplink GBR&lt;br /&gt;
  qos.mbrDl = yourvalue; // Downlink MBR&lt;br /&gt;
  qos.mbrUl = yourvalue; // Uplink MBR&lt;br /&gt;
  EpsBearer bearer (q, qos);&lt;br /&gt;
  lteHelper-&amp;gt;ActivateEpsBearer (ueDevs, bearer, EpcTft::Default ());&lt;br /&gt;
&lt;br /&gt;
How to choose value for those parameters is out of the scope of this page. Users can find more suggestions on this topic in LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
= Deliverables =&lt;br /&gt;
&lt;br /&gt;
* LTE MAC scheduler code:  TD-MT,TD-MT; TTA; FD-BET,TD-BET; FD-TBFQ,TD-TBFQ; PSS;&lt;br /&gt;
* Test suites of above schedulers;&lt;br /&gt;
* Documentation of above schedulers;&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
&lt;br /&gt;
* Week 1     May.21 -- May.27:  FD-MT scheduler &lt;br /&gt;
* Week 2     May.28 -- Jun.03:  TD-MT scheduler&lt;br /&gt;
* Week 3     Jun.4  -- Jun.10:  FD-TTA scheduler&lt;br /&gt;
* Week 4     Jun.11 -- Jun.17:  FD-BET scheduler&lt;br /&gt;
* Week 5     Jun.18 -- Jun.24:  FD-BET scheduler&lt;br /&gt;
* Week 6     Jun.25 -- Jul.01:  TD-BET scheduler&lt;br /&gt;
* Week 7     Jul.02 -- Jul.08:  Buffer&lt;br /&gt;
* Week 8     Jul.09 -- Jul.15:  Mid-term review&lt;br /&gt;
* Week 9     Jul.16 -- Jul.22:  FD-TBFQ scheduler&lt;br /&gt;
* Week 10    Jul.23 -- Jul.29:  TD-TBFQ scheduler&lt;br /&gt;
* Week 11    Jul.30 -- Aug.5:   FD-TBFQ scheduler&lt;br /&gt;
* Week 12    Aug.06 -- Aug.12:  TD-PSS scheduler&lt;br /&gt;
* Week 13    Aug.13 -- Aug.19:  Final review&lt;br /&gt;
&lt;br /&gt;
All schedulers will follow the procedures in Development methodology section.&lt;br /&gt;
&lt;br /&gt;
= Weekly Progress =&lt;br /&gt;
&lt;br /&gt;
* '''Week 1 : May.21 -- May.27'''&lt;br /&gt;
  * Complete code reading for LTE MAC scheduler and related part. Draw class relationship figure for MAC scheduler. Learning background knowledge of OFDMA&lt;br /&gt;
  * Write design documentation of FD-MT and scheduler framework &lt;br /&gt;
&lt;br /&gt;
* '''Week 2 : May.28 -- Jun.03'''&lt;br /&gt;
  * Complete FD-MT documentation and code and submit it to codereview.&lt;br /&gt;
  * Get review from mentors on FD-MT code. &lt;br /&gt;
&lt;br /&gt;
* '''Week 3 : Jun.4  -- Jun.10'''&lt;br /&gt;
  * Modify FD-MT documentation and code based on mentors' comment&lt;br /&gt;
  * Complete  TD-MT documentation and code and submit it to internal code review by mentors&lt;br /&gt;
  * Complete FD-TTA design &lt;br /&gt;
&lt;br /&gt;
* '''Week 4 : Jun.11 -- Jun.17'''&lt;br /&gt;
  * Complete TTA scheduler, including code, testing and documentation&lt;br /&gt;
  * Complete TD-BET and test it in the same SNR testcase.&lt;br /&gt;
  * Complete design document of FD-BET&lt;br /&gt;
&lt;br /&gt;
* '''Week 5 : Jun.18 -- Jun.24'''&lt;br /&gt;
  * Complete FD-BET, including code, same SNR test case &lt;br /&gt;
&lt;br /&gt;
* '''Week 6 : Jun.25 -- Jul.01'''&lt;br /&gt;
  * Modify the MT, TTA and BET codes based on naming style in NS-3&lt;br /&gt;
  * Propose a proof method for the user throughput calculation in FD-BET different SNR testcase  &lt;br /&gt;
&lt;br /&gt;
* '''Week 7 : Jul.02 -- Jul.08'''&lt;br /&gt;
  * Complete all FD-BET test cases and documentations&lt;br /&gt;
&lt;br /&gt;
* '''Week 8 : Jul.09 -- Jul.15'''&lt;br /&gt;
  * [https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport Midterm report]&lt;br /&gt;
&lt;br /&gt;
* '''Week 9 : Jul.16 -- Jul.22'''&lt;br /&gt;
  * Read four background papers of FBFQ scheduler in ATM, TDMA and LTE network&lt;br /&gt;
  * Complete first version of FD FBFQ scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 10 : Jul.23 -- Jul.29'''&lt;br /&gt;
  * Implement FD FBFQ scheduler for realistic application; several design issues faced, Unnecessary RBG allocation, GBR configuration and RLC packet header calculation&lt;br /&gt;
  * FD FBFQ testsuites for homogeneous traffic flows (traffic with the same sending rate) &lt;br /&gt;
&lt;br /&gt;
* '''Week 11 : Jul.30 -- Aug.5'''&lt;br /&gt;
  * Complete FD TBFQ scheduler, including scheduler codes and testsuites&lt;br /&gt;
  * Complete TD TBFQ scheduler, including scheduler codes and testsuites &lt;br /&gt;
&lt;br /&gt;
* '''Week 12 : Aug.06 -- Aug.12'''&lt;br /&gt;
  * Complete first version of PSS:&lt;br /&gt;
       TD scheduler: TD-BET + TD-PF&lt;br /&gt;
       FD scheduler: CoItA&lt;br /&gt;
  * Complete TBFQ document &lt;br /&gt;
&lt;br /&gt;
* '''Week 13 : Aug.13 -- Aug.19'''&lt;br /&gt;
  * Complete PFsch model in PSS FD scheduler&lt;br /&gt;
  * Complete testcase and document for PSS scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 14 : Aug.20 -- Aug.24'''&lt;br /&gt;
  * [http://mailman.isi.edu/pipermail/ns-developers/2012-August/010595.html Final report]&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to my two mentors, Nicola Baldo and Marco Miozzo, also thanks of Lalith Suresh, Tom Henderson and Biljana Bojovic. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this GSoC opportunity.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
* [1] F.Capozzi, G.Piro L.A.Grieco, G.Boggia, P.Camarda, &amp;quot;Downlink Packet Scheduling in LTE Cellular Networks: Key Design Issues and a Survey&amp;quot;, IEEE Comm. Surveys and Tutorials, to appear.&lt;br /&gt;
* [2] F.A. Bokhari, H. Yanikomeroglu, W.K. Wong, M. Rahman, &amp;quot;Cross-Layer Resource Scheduling for Video Traffic in the Downlink of OFDMA-Based Wireless 4G Networks&amp;quot;,EURASIP J. Wirel. Commun. Netw., vol.2009, no.3, pp. 1-10, Jan. 2009.&lt;br /&gt;
* [3] W.K. Wong, H.Y. Tang, V.C.M, Leung, &amp;quot;Token bank fair queuing: a new scheduling algorithm for wireless multimedia services&amp;quot;, Int. J. Commun. Syst., vol.17, no.6, pp.591-614, Aug.2004.&lt;br /&gt;
* [4] G.Mongha, K.I. Pedersen, I.Z. Kovacs, P.E. Mogensen, &amp;quot; QoS Oriented Time and Frequency Domain Packet Schedulers for The UTRAN Long Term Evolution&amp;quot;, In Proc. IEEE VTC, 2008.&lt;br /&gt;
* [5] http://lena.cttc.es/manual/index.html&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6985</id>
		<title>GSOC2012LTEScheduling</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6985"/>
		<updated>2012-08-23T15:40:41Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Acknowledgement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LTE Scheduling with the FemtoForum MAC Scheduler API  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:nicola.baldo@cttc.es Nicola Baldo], [mailto:marco.miozzo@cttc.es Marco Miozzo]&lt;br /&gt;
* Abstract: The ns-3 LTE module released by the LENA project supports the FemtoForum MAC LTE MAC Scheduler Interface Specification for the implementation of MAC schedulers. Currently, only simple Round Robin and Proportional Fair schedulers are supported. This project will develop several main MAC schedulers for LTE. It also includes corresponding test suites and user manual. The complete proposal can be found in [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dizhizhou/1 here].&lt;br /&gt;
* Code: http://code.nsnam.org/dizhizhou/gsoc-lte-mac-scheduler/ns-3-dev&lt;br /&gt;
* Midterm report: https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests are multipath transmission for video streaming in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ here].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
&lt;br /&gt;
== LTE packet scheduler list ==&lt;br /&gt;
&lt;br /&gt;
Except PSS and TTA, each scheduler has two versions: frequency domain(FD) and time domain(FD). FD scheduler calculates priority metric on each RBG using subband cqi while TD scheduler calculates metric by wideband cqi. In other words, TD scheduler allocates all RBGs to one UE with highest priority metric.&lt;br /&gt;
&lt;br /&gt;
* 1, Maximum Throughput (MT)[1]: MT is a channel-aware/QoS-unaware scheduler. In MT, eNB allocates RBG k to UE j with largest instantaneous supportable data rate calculated by subband cqi on this RBG's frequency. &lt;br /&gt;
* 2, Blind Equal Throughput (BET)[1]: BET is a channel-unaware/QoS-unaware scheduler. It reaches the same throughput for all users, regardless of their radio channel quality. The priority is the reciprocal of past average throughput.&lt;br /&gt;
* 3, Throughput to Average (TTA)[1]: TTa is a channel-aware/QoS-unaware scheduler. TTA can be considered as a combination of MT and PF. The priority metric equals to expected datarate for UE j at time t on k-th RBG over wideband expected datarate for the UE j at time t. It guarantees that the best RBs are allocated to each user. NOTE: TTA can only be used in frequency domain.&lt;br /&gt;
* 4, Adaptive Token Bucket (TBFQ)[2][3]: TBFQ is a channel-aware/QoS-aware scheduler which derives from the leaky-bucket mechanism. It guarantees the fairness by utilizing a shared token bank. In addition, each flow has a token generation rate.The QoS is guaranteed by setting token generation rate to different values (such as Guarantee Bit Rate (GBR) in EPC bearer QoS parameter). In TBFQ, ﬂows belonging to UEs that are suffering from severe interference, and shadowing conditions in particular, will have a higher priority metric.&lt;br /&gt;
* 5, Priority set scheduling (PSS)[4]: PSS is a joint frequency domain and time domain scheduler. It is also a channel-aware/QoS-aware scheduler. It aims at providing a deﬁned Target Bit Rate (TBR) to all users. Specifically, in TD scheduler part, the scheduler first sets all available users into two sets based on the target bit rate (TBR): set 1: users below TBR, calculate priority metric in BET style; set 2: users above TBR, calculate priority metric in PF style; Users belonged to set 1 have higher priority than ones in set 2. Then TD scheduler will selects N UEs and forward them to FD scheduler which allocates RBGs k to UE j based on two algrorithms: PFsch and CoItA. Details of PFsch and CoItA can be found in [4] or LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
== Development methodology ==&lt;br /&gt;
&lt;br /&gt;
 for each scheduler s&lt;br /&gt;
    write design documentation of s&lt;br /&gt;
    find reference throughput for s&lt;br /&gt;
    implement s&lt;br /&gt;
    write test code for s&lt;br /&gt;
    write test documentation for s&lt;br /&gt;
    publish code of s in public repository&lt;br /&gt;
    submit code of s for review using the codereview tool&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
== Testing approach ==&lt;br /&gt;
&lt;br /&gt;
Because this GSoC project is an extension of current LTE MAC scheduler implementations, the test approach will follow the system test part in [6], test suites for each scheduler will be created as:&lt;br /&gt;
&lt;br /&gt;
* 1, compare the throughput performance obtained from simulation to the reference throughput. If their values are within a given tolerance, then test is passed.&lt;br /&gt;
    Test case: one eNB, multiple UEs&lt;br /&gt;
    For single test case, all UEs have same SINR (same distance to eNB)&lt;br /&gt;
    For different test case, each UE has different SINR (different distance to eNB)    and different number of UE&lt;br /&gt;
&lt;br /&gt;
* 2, check the fairness of scheduler: compare the throughput ratiro get from simulation to the reference throughput ratio    &lt;br /&gt;
   Test case: one eNB, multiple UEs&lt;br /&gt;
   For single test case, all UEs have different SINR different distance to eNB)     &lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
All schedulers developed are components of NS-3 LTE model. How to build and simulate LTE network can be found in [http://www.nsnam.org/docs/release/3.14/models/singlehtml/index.html#document-lte here]. If users want to use LTE MAC scheduler in this project, following codes can be added in your script:&lt;br /&gt;
&lt;br /&gt;
  FD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TTA scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TtaFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  PSS scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::PssFfMacScheduler&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
TBFQ and PSS have more parameters than other schedulers. Users can define those parameters in following way:&lt;br /&gt;
&lt;br /&gt;
TBFQ scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;DebtLimit&amp;quot;, IntegerValue(yourvalue)); // default value -625000 bytes (-5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditLimit&amp;quot;, UintegerValue(yourvalue)); // default value 625000 bytes (5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;TokenPoolSize&amp;quot;, UintegerValue(yourvalue)); // default value 1 byte&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditableThreshold&amp;quot;, UintegerValue(yourvalue)); // default value 0&lt;br /&gt;
&lt;br /&gt;
PSS scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;nMux&amp;quot;, UIntegerValue(yourvalue)); // the maximum number of UE selected by TD scheduler&lt;br /&gt;
&lt;br /&gt;
In addition, token generation rate in TBFQ and target bit rate in PSS need to be configured by Guarantee Bit Rate (GBR) or Maximum Bit Rate (MBR) in epc bearer respectively. Users can use following codes to define GBR and MBR in both downlink and uplink:&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  enum EpsBearer::Qci q = EpsBearer::yourvalue;  // define Qci type&lt;br /&gt;
  GbrQosInformation qos;&lt;br /&gt;
  qos.gbrDl = yourvalue; // Downlink GBR&lt;br /&gt;
  qos.gbrUl = yourvalue; // Uplink GBR&lt;br /&gt;
  qos.mbrDl = yourvalue; // Downlink MBR&lt;br /&gt;
  qos.mbrUl = yourvalue; // Uplink MBR&lt;br /&gt;
  EpsBearer bearer (q, qos);&lt;br /&gt;
  lteHelper-&amp;gt;ActivateEpsBearer (ueDevs, bearer, EpcTft::Default ());&lt;br /&gt;
&lt;br /&gt;
How to choose value for those parameters is out of the scope of this page. Users can find more suggestions on this topic in LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
= Deliverables =&lt;br /&gt;
&lt;br /&gt;
* LTE MAC scheduler code:  TD-MT,TD-MT; TTA; FD-BET,TD-BET; FD-TBFQ,TD-TBFQ; PSS;&lt;br /&gt;
* Test suites of above schedulers;&lt;br /&gt;
* Documentation of above schedulers;&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
&lt;br /&gt;
* Week 1     May.21 -- May.27:  FD-MT scheduler &lt;br /&gt;
* Week 2     May.28 -- Jun.03:  TD-MT scheduler&lt;br /&gt;
* Week 3     Jun.4  -- Jun.10:  FD-TTA scheduler&lt;br /&gt;
* Week 4     Jun.11 -- Jun.17:  FD-BET scheduler&lt;br /&gt;
* Week 5     Jun.18 -- Jun.24:  FD-BET scheduler&lt;br /&gt;
* Week 6     Jun.25 -- Jul.01:  TD-BET scheduler&lt;br /&gt;
* Week 7     Jul.02 -- Jul.08:  Buffer&lt;br /&gt;
* Week 8     Jul.09 -- Jul.15:  Mid-term review&lt;br /&gt;
* Week 9     Jul.16 -- Jul.22:  FD-TBFQ scheduler&lt;br /&gt;
* Week 10    Jul.23 -- Jul.29:  TD-TBFQ scheduler&lt;br /&gt;
* Week 11    Jul.30 -- Aug.5:   FD-TBFQ scheduler&lt;br /&gt;
* Week 12    Aug.06 -- Aug.12:  TD-PSS scheduler&lt;br /&gt;
* Week 13    Aug.13 -- Aug.19:  Final review&lt;br /&gt;
&lt;br /&gt;
All schedulers will follow the procedures in Development methodology section.&lt;br /&gt;
&lt;br /&gt;
= Weekly Progress =&lt;br /&gt;
&lt;br /&gt;
* '''Week 1 : May.21 -- May.27'''&lt;br /&gt;
  * Complete code reading for LTE MAC scheduler and related part. Draw class relationship figure for MAC scheduler. Learning background knowledge of OFDMA&lt;br /&gt;
  * Write design documentation of FD-MT and scheduler framework &lt;br /&gt;
&lt;br /&gt;
* '''Week 2 : May.28 -- Jun.03'''&lt;br /&gt;
  * Complete FD-MT documentation and code and submit it to codereview.&lt;br /&gt;
  * Get review from mentors on FD-MT code. &lt;br /&gt;
&lt;br /&gt;
* '''Week 3 : Jun.4  -- Jun.10'''&lt;br /&gt;
  * Modify FD-MT documentation and code based on mentors' comment&lt;br /&gt;
  * Complete  TD-MT documentation and code and submit it to internal code review by mentors&lt;br /&gt;
  * Complete FD-TTA design &lt;br /&gt;
&lt;br /&gt;
* '''Week 4 : Jun.11 -- Jun.17'''&lt;br /&gt;
  * Complete TTA scheduler, including code, testing and documentation&lt;br /&gt;
  * Complete TD-BET and test it in the same SNR testcase.&lt;br /&gt;
  * Complete design document of FD-BET&lt;br /&gt;
&lt;br /&gt;
* '''Week 5 : Jun.18 -- Jun.24'''&lt;br /&gt;
  * Complete FD-BET, including code, same SNR test case &lt;br /&gt;
&lt;br /&gt;
* '''Week 6 : Jun.25 -- Jul.01'''&lt;br /&gt;
  * Modify the MT, TTA and BET codes based on naming style in NS-3&lt;br /&gt;
  * Propose a proof method for the user throughput calculation in FD-BET different SNR testcase  &lt;br /&gt;
&lt;br /&gt;
* '''Week 7 : Jul.02 -- Jul.08'''&lt;br /&gt;
  * Complete all FD-BET test cases and documentations&lt;br /&gt;
&lt;br /&gt;
* '''Week 8 : Jul.09 -- Jul.15'''&lt;br /&gt;
  * [https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport Midterm report]&lt;br /&gt;
&lt;br /&gt;
* '''Week 9 : Jul.16 -- Jul.22'''&lt;br /&gt;
  * Read four background papers of FBFQ scheduler in ATM, TDMA and LTE network&lt;br /&gt;
  * Complete first version of FD FBFQ scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 10 : Jul.23 -- Jul.29'''&lt;br /&gt;
  * Implement FD FBFQ scheduler for realistic application; several design issues faced, Unnecessary RBG allocation, GBR configuration and RLC packet header calculation&lt;br /&gt;
  * FD FBFQ testsuites for homogeneous traffic flows (traffic with the same sending rate) &lt;br /&gt;
&lt;br /&gt;
* '''Week 11 : Jul.30 -- Aug.5'''&lt;br /&gt;
  * Complete FD TBFQ scheduler, including scheduler codes and testsuites&lt;br /&gt;
  * Complete TD TBFQ scheduler, including scheduler codes and testsuites &lt;br /&gt;
&lt;br /&gt;
* '''Week 12 : Aug.06 -- Aug.12'''&lt;br /&gt;
  * Complete first version of PSS:&lt;br /&gt;
       TD scheduler: TD-BET + TD-PF&lt;br /&gt;
       FD scheduler: CoItA&lt;br /&gt;
  * Complete TBFQ document &lt;br /&gt;
&lt;br /&gt;
* '''Week 13 : Aug.13 -- Aug.19'''&lt;br /&gt;
  * Complete PFsch model in PSS FD scheduler&lt;br /&gt;
  * Complete testcase and document for PSS scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 14 : Aug.20 -- Aug.24'''&lt;br /&gt;
  * [http://mailman.isi.edu/pipermail/ns-developers/2012-August/010595.html Final report]&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to my two mentors, Nicola Baldo and Marco Miozzo, also thanks of Lalith Suresh, Tom Henderson and Biljana Bojovic. Thanks for their valuable comments and helps on my work. Thanks for all mentors in NS-3 community to give me this GSoC opportunity.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
* [1] F.Capozzi, G.Piro L.A.Grieco, G.Boggia, P.Camarda, &amp;quot;Downlink Packet Scheduling in LTE Cellular Networks: Key Design Issues and a Survey&amp;quot;, IEEE Comm. Surveys and Tutorials, to appear.&lt;br /&gt;
* [2] F.A. Bokhari, H. Yanikomeroglu, W.K. Wong, M. Rahman, &amp;quot;Cross-Layer Resource Scheduling for Video Traffic in the Downlink of OFDMA-Based Wireless 4G Networks&amp;quot;,EURASIP J. Wirel. Commun. Netw., vol.2009, no.3, pp. 1-10, Jan. 2009.&lt;br /&gt;
* [3] W.K. Wong, H.Y. Tang, V.C.M, Leung, &amp;quot;Token bank fair queuing: a new scheduling algorithm for wireless multimedia services&amp;quot;, Int. J. Commun. Syst., vol.17, no.6, pp.591-614, Aug.2004.&lt;br /&gt;
* [4] G.Mongha, K.I. Pedersen, I.Z. Kovacs, P.E. Mogensen, &amp;quot; QoS Oriented Time and Frequency Domain Packet Schedulers for The UTRAN Long Term Evolution&amp;quot;, In Proc. IEEE VTC, 2008.&lt;br /&gt;
* [5] http://lena.cttc.es/manual/index.html&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6984</id>
		<title>GSOC2012LTEScheduling</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6984"/>
		<updated>2012-08-23T15:32:04Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Deliverables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LTE Scheduling with the FemtoForum MAC Scheduler API  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:nicola.baldo@cttc.es Nicola Baldo], [mailto:marco.miozzo@cttc.es Marco Miozzo]&lt;br /&gt;
* Abstract: The ns-3 LTE module released by the LENA project supports the FemtoForum MAC LTE MAC Scheduler Interface Specification for the implementation of MAC schedulers. Currently, only simple Round Robin and Proportional Fair schedulers are supported. This project will develop several main MAC schedulers for LTE. It also includes corresponding test suites and user manual. The complete proposal can be found in [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dizhizhou/1 here].&lt;br /&gt;
* Code: http://code.nsnam.org/dizhizhou/gsoc-lte-mac-scheduler/ns-3-dev&lt;br /&gt;
* Midterm report: https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests are multipath transmission for video streaming in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ here].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
&lt;br /&gt;
== LTE packet scheduler list ==&lt;br /&gt;
&lt;br /&gt;
Except PSS and TTA, each scheduler has two versions: frequency domain(FD) and time domain(FD). FD scheduler calculates priority metric on each RBG using subband cqi while TD scheduler calculates metric by wideband cqi. In other words, TD scheduler allocates all RBGs to one UE with highest priority metric.&lt;br /&gt;
&lt;br /&gt;
* 1, Maximum Throughput (MT)[1]: MT is a channel-aware/QoS-unaware scheduler. In MT, eNB allocates RBG k to UE j with largest instantaneous supportable data rate calculated by subband cqi on this RBG's frequency. &lt;br /&gt;
* 2, Blind Equal Throughput (BET)[1]: BET is a channel-unaware/QoS-unaware scheduler. It reaches the same throughput for all users, regardless of their radio channel quality. The priority is the reciprocal of past average throughput.&lt;br /&gt;
* 3, Throughput to Average (TTA)[1]: TTa is a channel-aware/QoS-unaware scheduler. TTA can be considered as a combination of MT and PF. The priority metric equals to expected datarate for UE j at time t on k-th RBG over wideband expected datarate for the UE j at time t. It guarantees that the best RBs are allocated to each user. NOTE: TTA can only be used in frequency domain.&lt;br /&gt;
* 4, Adaptive Token Bucket (TBFQ)[2][3]: TBFQ is a channel-aware/QoS-aware scheduler which derives from the leaky-bucket mechanism. It guarantees the fairness by utilizing a shared token bank. In addition, each flow has a token generation rate.The QoS is guaranteed by setting token generation rate to different values (such as Guarantee Bit Rate (GBR) in EPC bearer QoS parameter). In TBFQ, ﬂows belonging to UEs that are suffering from severe interference, and shadowing conditions in particular, will have a higher priority metric.&lt;br /&gt;
* 5, Priority set scheduling (PSS)[4]: PSS is a joint frequency domain and time domain scheduler. It is also a channel-aware/QoS-aware scheduler. It aims at providing a deﬁned Target Bit Rate (TBR) to all users. Specifically, in TD scheduler part, the scheduler first sets all available users into two sets based on the target bit rate (TBR): set 1: users below TBR, calculate priority metric in BET style; set 2: users above TBR, calculate priority metric in PF style; Users belonged to set 1 have higher priority than ones in set 2. Then TD scheduler will selects N UEs and forward them to FD scheduler which allocates RBGs k to UE j based on two algrorithms: PFsch and CoItA. Details of PFsch and CoItA can be found in [4] or LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
== Development methodology ==&lt;br /&gt;
&lt;br /&gt;
 for each scheduler s&lt;br /&gt;
    write design documentation of s&lt;br /&gt;
    find reference throughput for s&lt;br /&gt;
    implement s&lt;br /&gt;
    write test code for s&lt;br /&gt;
    write test documentation for s&lt;br /&gt;
    publish code of s in public repository&lt;br /&gt;
    submit code of s for review using the codereview tool&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
== Testing approach ==&lt;br /&gt;
&lt;br /&gt;
Because this GSoC project is an extension of current LTE MAC scheduler implementations, the test approach will follow the system test part in [6], test suites for each scheduler will be created as:&lt;br /&gt;
&lt;br /&gt;
* 1, compare the throughput performance obtained from simulation to the reference throughput. If their values are within a given tolerance, then test is passed.&lt;br /&gt;
    Test case: one eNB, multiple UEs&lt;br /&gt;
    For single test case, all UEs have same SINR (same distance to eNB)&lt;br /&gt;
    For different test case, each UE has different SINR (different distance to eNB)    and different number of UE&lt;br /&gt;
&lt;br /&gt;
* 2, check the fairness of scheduler: compare the throughput ratiro get from simulation to the reference throughput ratio    &lt;br /&gt;
   Test case: one eNB, multiple UEs&lt;br /&gt;
   For single test case, all UEs have different SINR different distance to eNB)     &lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
All schedulers developed are components of NS-3 LTE model. How to build and simulate LTE network can be found in [http://www.nsnam.org/docs/release/3.14/models/singlehtml/index.html#document-lte here]. If users want to use LTE MAC scheduler in this project, following codes can be added in your script:&lt;br /&gt;
&lt;br /&gt;
  FD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TTA scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TtaFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  PSS scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::PssFfMacScheduler&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
TBFQ and PSS have more parameters than other schedulers. Users can define those parameters in following way:&lt;br /&gt;
&lt;br /&gt;
TBFQ scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;DebtLimit&amp;quot;, IntegerValue(yourvalue)); // default value -625000 bytes (-5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditLimit&amp;quot;, UintegerValue(yourvalue)); // default value 625000 bytes (5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;TokenPoolSize&amp;quot;, UintegerValue(yourvalue)); // default value 1 byte&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditableThreshold&amp;quot;, UintegerValue(yourvalue)); // default value 0&lt;br /&gt;
&lt;br /&gt;
PSS scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;nMux&amp;quot;, UIntegerValue(yourvalue)); // the maximum number of UE selected by TD scheduler&lt;br /&gt;
&lt;br /&gt;
In addition, token generation rate in TBFQ and target bit rate in PSS need to be configured by Guarantee Bit Rate (GBR) or Maximum Bit Rate (MBR) in epc bearer respectively. Users can use following codes to define GBR and MBR in both downlink and uplink:&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  enum EpsBearer::Qci q = EpsBearer::yourvalue;  // define Qci type&lt;br /&gt;
  GbrQosInformation qos;&lt;br /&gt;
  qos.gbrDl = yourvalue; // Downlink GBR&lt;br /&gt;
  qos.gbrUl = yourvalue; // Uplink GBR&lt;br /&gt;
  qos.mbrDl = yourvalue; // Downlink MBR&lt;br /&gt;
  qos.mbrUl = yourvalue; // Uplink MBR&lt;br /&gt;
  EpsBearer bearer (q, qos);&lt;br /&gt;
  lteHelper-&amp;gt;ActivateEpsBearer (ueDevs, bearer, EpcTft::Default ());&lt;br /&gt;
&lt;br /&gt;
How to choose value for those parameters is out of the scope of this page. Users can find more suggestions on this topic in LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
= Deliverables =&lt;br /&gt;
&lt;br /&gt;
* LTE MAC scheduler code:  TD-MT,TD-MT; TTA; FD-BET,TD-BET; FD-TBFQ,TD-TBFQ; PSS;&lt;br /&gt;
* Test suites of above schedulers;&lt;br /&gt;
* Documentation of above schedulers;&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
&lt;br /&gt;
* Week 1     May.21 -- May.27:  FD-MT scheduler &lt;br /&gt;
* Week 2     May.28 -- Jun.03:  TD-MT scheduler&lt;br /&gt;
* Week 3     Jun.4  -- Jun.10:  FD-TTA scheduler&lt;br /&gt;
* Week 4     Jun.11 -- Jun.17:  FD-BET scheduler&lt;br /&gt;
* Week 5     Jun.18 -- Jun.24:  FD-BET scheduler&lt;br /&gt;
* Week 6     Jun.25 -- Jul.01:  TD-BET scheduler&lt;br /&gt;
* Week 7     Jul.02 -- Jul.08:  Buffer&lt;br /&gt;
* Week 8     Jul.09 -- Jul.15:  Mid-term review&lt;br /&gt;
* Week 9     Jul.16 -- Jul.22:  FD-TBFQ scheduler&lt;br /&gt;
* Week 10    Jul.23 -- Jul.29:  TD-TBFQ scheduler&lt;br /&gt;
* Week 11    Jul.30 -- Aug.5:   FD-TBFQ scheduler&lt;br /&gt;
* Week 12    Aug.06 -- Aug.12:  TD-PSS scheduler&lt;br /&gt;
* Week 13    Aug.13 -- Aug.19:  Final review&lt;br /&gt;
&lt;br /&gt;
All schedulers will follow the procedures in Development methodology section.&lt;br /&gt;
&lt;br /&gt;
= Weekly Progress =&lt;br /&gt;
&lt;br /&gt;
* '''Week 1 : May.21 -- May.27'''&lt;br /&gt;
  * Complete code reading for LTE MAC scheduler and related part. Draw class relationship figure for MAC scheduler. Learning background knowledge of OFDMA&lt;br /&gt;
  * Write design documentation of FD-MT and scheduler framework &lt;br /&gt;
&lt;br /&gt;
* '''Week 2 : May.28 -- Jun.03'''&lt;br /&gt;
  * Complete FD-MT documentation and code and submit it to codereview.&lt;br /&gt;
  * Get review from mentors on FD-MT code. &lt;br /&gt;
&lt;br /&gt;
* '''Week 3 : Jun.4  -- Jun.10'''&lt;br /&gt;
  * Modify FD-MT documentation and code based on mentors' comment&lt;br /&gt;
  * Complete  TD-MT documentation and code and submit it to internal code review by mentors&lt;br /&gt;
  * Complete FD-TTA design &lt;br /&gt;
&lt;br /&gt;
* '''Week 4 : Jun.11 -- Jun.17'''&lt;br /&gt;
  * Complete TTA scheduler, including code, testing and documentation&lt;br /&gt;
  * Complete TD-BET and test it in the same SNR testcase.&lt;br /&gt;
  * Complete design document of FD-BET&lt;br /&gt;
&lt;br /&gt;
* '''Week 5 : Jun.18 -- Jun.24'''&lt;br /&gt;
  * Complete FD-BET, including code, same SNR test case &lt;br /&gt;
&lt;br /&gt;
* '''Week 6 : Jun.25 -- Jul.01'''&lt;br /&gt;
  * Modify the MT, TTA and BET codes based on naming style in NS-3&lt;br /&gt;
  * Propose a proof method for the user throughput calculation in FD-BET different SNR testcase  &lt;br /&gt;
&lt;br /&gt;
* '''Week 7 : Jul.02 -- Jul.08'''&lt;br /&gt;
  * Complete all FD-BET test cases and documentations&lt;br /&gt;
&lt;br /&gt;
* '''Week 8 : Jul.09 -- Jul.15'''&lt;br /&gt;
  * [https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport Midterm report]&lt;br /&gt;
&lt;br /&gt;
* '''Week 9 : Jul.16 -- Jul.22'''&lt;br /&gt;
  * Read four background papers of FBFQ scheduler in ATM, TDMA and LTE network&lt;br /&gt;
  * Complete first version of FD FBFQ scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 10 : Jul.23 -- Jul.29'''&lt;br /&gt;
  * Implement FD FBFQ scheduler for realistic application; several design issues faced, Unnecessary RBG allocation, GBR configuration and RLC packet header calculation&lt;br /&gt;
  * FD FBFQ testsuites for homogeneous traffic flows (traffic with the same sending rate) &lt;br /&gt;
&lt;br /&gt;
* '''Week 11 : Jul.30 -- Aug.5'''&lt;br /&gt;
  * Complete FD TBFQ scheduler, including scheduler codes and testsuites&lt;br /&gt;
  * Complete TD TBFQ scheduler, including scheduler codes and testsuites &lt;br /&gt;
&lt;br /&gt;
* '''Week 12 : Aug.06 -- Aug.12'''&lt;br /&gt;
  * Complete first version of PSS:&lt;br /&gt;
       TD scheduler: TD-BET + TD-PF&lt;br /&gt;
       FD scheduler: CoItA&lt;br /&gt;
  * Complete TBFQ document &lt;br /&gt;
&lt;br /&gt;
* '''Week 13 : Aug.13 -- Aug.19'''&lt;br /&gt;
  * Complete PFsch model in PSS FD scheduler&lt;br /&gt;
  * Complete testcase and document for PSS scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 14 : Aug.20 -- Aug.24'''&lt;br /&gt;
  * [http://mailman.isi.edu/pipermail/ns-developers/2012-August/010595.html Final report]&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to my two mentors, Nicola Baldo and Marco Miozzo, also thanks of Lalith Suresh, Tom Henderson and Biljana Bojovic. Thanks for their valuable comments and helps on my work.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
* [1] F.Capozzi, G.Piro L.A.Grieco, G.Boggia, P.Camarda, &amp;quot;Downlink Packet Scheduling in LTE Cellular Networks: Key Design Issues and a Survey&amp;quot;, IEEE Comm. Surveys and Tutorials, to appear.&lt;br /&gt;
* [2] F.A. Bokhari, H. Yanikomeroglu, W.K. Wong, M. Rahman, &amp;quot;Cross-Layer Resource Scheduling for Video Traffic in the Downlink of OFDMA-Based Wireless 4G Networks&amp;quot;,EURASIP J. Wirel. Commun. Netw., vol.2009, no.3, pp. 1-10, Jan. 2009.&lt;br /&gt;
* [3] W.K. Wong, H.Y. Tang, V.C.M, Leung, &amp;quot;Token bank fair queuing: a new scheduling algorithm for wireless multimedia services&amp;quot;, Int. J. Commun. Syst., vol.17, no.6, pp.591-614, Aug.2004.&lt;br /&gt;
* [4] G.Mongha, K.I. Pedersen, I.Z. Kovacs, P.E. Mogensen, &amp;quot; QoS Oriented Time and Frequency Domain Packet Schedulers for The UTRAN Long Term Evolution&amp;quot;, In Proc. IEEE VTC, 2008.&lt;br /&gt;
* [5] http://lena.cttc.es/manual/index.html&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6983</id>
		<title>GSOC2012LTEScheduling</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6983"/>
		<updated>2012-08-23T15:31:07Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LTE Scheduling with the FemtoForum MAC Scheduler API  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:nicola.baldo@cttc.es Nicola Baldo], [mailto:marco.miozzo@cttc.es Marco Miozzo]&lt;br /&gt;
* Abstract: The ns-3 LTE module released by the LENA project supports the FemtoForum MAC LTE MAC Scheduler Interface Specification for the implementation of MAC schedulers. Currently, only simple Round Robin and Proportional Fair schedulers are supported. This project will develop several main MAC schedulers for LTE. It also includes corresponding test suites and user manual. The complete proposal can be found in [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dizhizhou/1 here].&lt;br /&gt;
* Code: http://code.nsnam.org/dizhizhou/gsoc-lte-mac-scheduler/ns-3-dev&lt;br /&gt;
* Midterm report: https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests are multipath transmission for video streaming in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ here].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
&lt;br /&gt;
== LTE packet scheduler list ==&lt;br /&gt;
&lt;br /&gt;
Except PSS and TTA, each scheduler has two versions: frequency domain(FD) and time domain(FD). FD scheduler calculates priority metric on each RBG using subband cqi while TD scheduler calculates metric by wideband cqi. In other words, TD scheduler allocates all RBGs to one UE with highest priority metric.&lt;br /&gt;
&lt;br /&gt;
* 1, Maximum Throughput (MT)[1]: MT is a channel-aware/QoS-unaware scheduler. In MT, eNB allocates RBG k to UE j with largest instantaneous supportable data rate calculated by subband cqi on this RBG's frequency. &lt;br /&gt;
* 2, Blind Equal Throughput (BET)[1]: BET is a channel-unaware/QoS-unaware scheduler. It reaches the same throughput for all users, regardless of their radio channel quality. The priority is the reciprocal of past average throughput.&lt;br /&gt;
* 3, Throughput to Average (TTA)[1]: TTa is a channel-aware/QoS-unaware scheduler. TTA can be considered as a combination of MT and PF. The priority metric equals to expected datarate for UE j at time t on k-th RBG over wideband expected datarate for the UE j at time t. It guarantees that the best RBs are allocated to each user. NOTE: TTA can only be used in frequency domain.&lt;br /&gt;
* 4, Adaptive Token Bucket (TBFQ)[2][3]: TBFQ is a channel-aware/QoS-aware scheduler which derives from the leaky-bucket mechanism. It guarantees the fairness by utilizing a shared token bank. In addition, each flow has a token generation rate.The QoS is guaranteed by setting token generation rate to different values (such as Guarantee Bit Rate (GBR) in EPC bearer QoS parameter). In TBFQ, ﬂows belonging to UEs that are suffering from severe interference, and shadowing conditions in particular, will have a higher priority metric.&lt;br /&gt;
* 5, Priority set scheduling (PSS)[4]: PSS is a joint frequency domain and time domain scheduler. It is also a channel-aware/QoS-aware scheduler. It aims at providing a deﬁned Target Bit Rate (TBR) to all users. Specifically, in TD scheduler part, the scheduler first sets all available users into two sets based on the target bit rate (TBR): set 1: users below TBR, calculate priority metric in BET style; set 2: users above TBR, calculate priority metric in PF style; Users belonged to set 1 have higher priority than ones in set 2. Then TD scheduler will selects N UEs and forward them to FD scheduler which allocates RBGs k to UE j based on two algrorithms: PFsch and CoItA. Details of PFsch and CoItA can be found in [4] or LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
== Development methodology ==&lt;br /&gt;
&lt;br /&gt;
 for each scheduler s&lt;br /&gt;
    write design documentation of s&lt;br /&gt;
    find reference throughput for s&lt;br /&gt;
    implement s&lt;br /&gt;
    write test code for s&lt;br /&gt;
    write test documentation for s&lt;br /&gt;
    publish code of s in public repository&lt;br /&gt;
    submit code of s for review using the codereview tool&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
== Testing approach ==&lt;br /&gt;
&lt;br /&gt;
Because this GSoC project is an extension of current LTE MAC scheduler implementations, the test approach will follow the system test part in [6], test suites for each scheduler will be created as:&lt;br /&gt;
&lt;br /&gt;
* 1, compare the throughput performance obtained from simulation to the reference throughput. If their values are within a given tolerance, then test is passed.&lt;br /&gt;
    Test case: one eNB, multiple UEs&lt;br /&gt;
    For single test case, all UEs have same SINR (same distance to eNB)&lt;br /&gt;
    For different test case, each UE has different SINR (different distance to eNB)    and different number of UE&lt;br /&gt;
&lt;br /&gt;
* 2, check the fairness of scheduler: compare the throughput ratiro get from simulation to the reference throughput ratio    &lt;br /&gt;
   Test case: one eNB, multiple UEs&lt;br /&gt;
   For single test case, all UEs have different SINR different distance to eNB)     &lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
All schedulers developed are components of NS-3 LTE model. How to build and simulate LTE network can be found in [http://www.nsnam.org/docs/release/3.14/models/singlehtml/index.html#document-lte here]. If users want to use LTE MAC scheduler in this project, following codes can be added in your script:&lt;br /&gt;
&lt;br /&gt;
  FD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TTA scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TtaFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  PSS scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::PssFfMacScheduler&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
TBFQ and PSS have more parameters than other schedulers. Users can define those parameters in following way:&lt;br /&gt;
&lt;br /&gt;
TBFQ scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;DebtLimit&amp;quot;, IntegerValue(yourvalue)); // default value -625000 bytes (-5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditLimit&amp;quot;, UintegerValue(yourvalue)); // default value 625000 bytes (5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;TokenPoolSize&amp;quot;, UintegerValue(yourvalue)); // default value 1 byte&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditableThreshold&amp;quot;, UintegerValue(yourvalue)); // default value 0&lt;br /&gt;
&lt;br /&gt;
PSS scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;nMux&amp;quot;, UIntegerValue(yourvalue)); // the maximum number of UE selected by TD scheduler&lt;br /&gt;
&lt;br /&gt;
In addition, token generation rate in TBFQ and target bit rate in PSS need to be configured by Guarantee Bit Rate (GBR) or Maximum Bit Rate (MBR) in epc bearer respectively. Users can use following codes to define GBR and MBR in both downlink and uplink:&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  enum EpsBearer::Qci q = EpsBearer::yourvalue;  // define Qci type&lt;br /&gt;
  GbrQosInformation qos;&lt;br /&gt;
  qos.gbrDl = yourvalue; // Downlink GBR&lt;br /&gt;
  qos.gbrUl = yourvalue; // Uplink GBR&lt;br /&gt;
  qos.mbrDl = yourvalue; // Downlink MBR&lt;br /&gt;
  qos.mbrUl = yourvalue; // Uplink MBR&lt;br /&gt;
  EpsBearer bearer (q, qos);&lt;br /&gt;
  lteHelper-&amp;gt;ActivateEpsBearer (ueDevs, bearer, EpcTft::Default ());&lt;br /&gt;
&lt;br /&gt;
How to choose value for those parameters is out of the scope of this page. Users can find more suggestions on this topic in LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
= Deliverables =&lt;br /&gt;
&lt;br /&gt;
* LTE MAC scheduler code:  TD-MT,TF-MT; FD-TTA; D-BET,TF-BET; TD-TBFQ,TF-TBFQ; TD-PSS;&lt;br /&gt;
* Test suites of above schedulers;&lt;br /&gt;
* Documentation of above schedulers;&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
&lt;br /&gt;
* Week 1     May.21 -- May.27:  FD-MT scheduler &lt;br /&gt;
* Week 2     May.28 -- Jun.03:  TD-MT scheduler&lt;br /&gt;
* Week 3     Jun.4  -- Jun.10:  FD-TTA scheduler&lt;br /&gt;
* Week 4     Jun.11 -- Jun.17:  FD-BET scheduler&lt;br /&gt;
* Week 5     Jun.18 -- Jun.24:  FD-BET scheduler&lt;br /&gt;
* Week 6     Jun.25 -- Jul.01:  TD-BET scheduler&lt;br /&gt;
* Week 7     Jul.02 -- Jul.08:  Buffer&lt;br /&gt;
* Week 8     Jul.09 -- Jul.15:  Mid-term review&lt;br /&gt;
* Week 9     Jul.16 -- Jul.22:  FD-TBFQ scheduler&lt;br /&gt;
* Week 10    Jul.23 -- Jul.29:  TD-TBFQ scheduler&lt;br /&gt;
* Week 11    Jul.30 -- Aug.5:   FD-TBFQ scheduler&lt;br /&gt;
* Week 12    Aug.06 -- Aug.12:  TD-PSS scheduler&lt;br /&gt;
* Week 13    Aug.13 -- Aug.19:  Final review&lt;br /&gt;
&lt;br /&gt;
All schedulers will follow the procedures in Development methodology section.&lt;br /&gt;
&lt;br /&gt;
= Weekly Progress =&lt;br /&gt;
&lt;br /&gt;
* '''Week 1 : May.21 -- May.27'''&lt;br /&gt;
  * Complete code reading for LTE MAC scheduler and related part. Draw class relationship figure for MAC scheduler. Learning background knowledge of OFDMA&lt;br /&gt;
  * Write design documentation of FD-MT and scheduler framework &lt;br /&gt;
&lt;br /&gt;
* '''Week 2 : May.28 -- Jun.03'''&lt;br /&gt;
  * Complete FD-MT documentation and code and submit it to codereview.&lt;br /&gt;
  * Get review from mentors on FD-MT code. &lt;br /&gt;
&lt;br /&gt;
* '''Week 3 : Jun.4  -- Jun.10'''&lt;br /&gt;
  * Modify FD-MT documentation and code based on mentors' comment&lt;br /&gt;
  * Complete  TD-MT documentation and code and submit it to internal code review by mentors&lt;br /&gt;
  * Complete FD-TTA design &lt;br /&gt;
&lt;br /&gt;
* '''Week 4 : Jun.11 -- Jun.17'''&lt;br /&gt;
  * Complete TTA scheduler, including code, testing and documentation&lt;br /&gt;
  * Complete TD-BET and test it in the same SNR testcase.&lt;br /&gt;
  * Complete design document of FD-BET&lt;br /&gt;
&lt;br /&gt;
* '''Week 5 : Jun.18 -- Jun.24'''&lt;br /&gt;
  * Complete FD-BET, including code, same SNR test case &lt;br /&gt;
&lt;br /&gt;
* '''Week 6 : Jun.25 -- Jul.01'''&lt;br /&gt;
  * Modify the MT, TTA and BET codes based on naming style in NS-3&lt;br /&gt;
  * Propose a proof method for the user throughput calculation in FD-BET different SNR testcase  &lt;br /&gt;
&lt;br /&gt;
* '''Week 7 : Jul.02 -- Jul.08'''&lt;br /&gt;
  * Complete all FD-BET test cases and documentations&lt;br /&gt;
&lt;br /&gt;
* '''Week 8 : Jul.09 -- Jul.15'''&lt;br /&gt;
  * [https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport Midterm report]&lt;br /&gt;
&lt;br /&gt;
* '''Week 9 : Jul.16 -- Jul.22'''&lt;br /&gt;
  * Read four background papers of FBFQ scheduler in ATM, TDMA and LTE network&lt;br /&gt;
  * Complete first version of FD FBFQ scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 10 : Jul.23 -- Jul.29'''&lt;br /&gt;
  * Implement FD FBFQ scheduler for realistic application; several design issues faced, Unnecessary RBG allocation, GBR configuration and RLC packet header calculation&lt;br /&gt;
  * FD FBFQ testsuites for homogeneous traffic flows (traffic with the same sending rate) &lt;br /&gt;
&lt;br /&gt;
* '''Week 11 : Jul.30 -- Aug.5'''&lt;br /&gt;
  * Complete FD TBFQ scheduler, including scheduler codes and testsuites&lt;br /&gt;
  * Complete TD TBFQ scheduler, including scheduler codes and testsuites &lt;br /&gt;
&lt;br /&gt;
* '''Week 12 : Aug.06 -- Aug.12'''&lt;br /&gt;
  * Complete first version of PSS:&lt;br /&gt;
       TD scheduler: TD-BET + TD-PF&lt;br /&gt;
       FD scheduler: CoItA&lt;br /&gt;
  * Complete TBFQ document &lt;br /&gt;
&lt;br /&gt;
* '''Week 13 : Aug.13 -- Aug.19'''&lt;br /&gt;
  * Complete PFsch model in PSS FD scheduler&lt;br /&gt;
  * Complete testcase and document for PSS scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 14 : Aug.20 -- Aug.24'''&lt;br /&gt;
  * [http://mailman.isi.edu/pipermail/ns-developers/2012-August/010595.html Final report]&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to my two mentors, Nicola Baldo and Marco Miozzo, also thanks of Lalith Suresh, Tom Henderson and Biljana Bojovic. Thanks for their valuable comments and helps on my work.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
* [1] F.Capozzi, G.Piro L.A.Grieco, G.Boggia, P.Camarda, &amp;quot;Downlink Packet Scheduling in LTE Cellular Networks: Key Design Issues and a Survey&amp;quot;, IEEE Comm. Surveys and Tutorials, to appear.&lt;br /&gt;
* [2] F.A. Bokhari, H. Yanikomeroglu, W.K. Wong, M. Rahman, &amp;quot;Cross-Layer Resource Scheduling for Video Traffic in the Downlink of OFDMA-Based Wireless 4G Networks&amp;quot;,EURASIP J. Wirel. Commun. Netw., vol.2009, no.3, pp. 1-10, Jan. 2009.&lt;br /&gt;
* [3] W.K. Wong, H.Y. Tang, V.C.M, Leung, &amp;quot;Token bank fair queuing: a new scheduling algorithm for wireless multimedia services&amp;quot;, Int. J. Commun. Syst., vol.17, no.6, pp.591-614, Aug.2004.&lt;br /&gt;
* [4] G.Mongha, K.I. Pedersen, I.Z. Kovacs, P.E. Mogensen, &amp;quot; QoS Oriented Time and Frequency Domain Packet Schedulers for The UTRAN Long Term Evolution&amp;quot;, In Proc. IEEE VTC, 2008.&lt;br /&gt;
* [5] http://lena.cttc.es/manual/index.html&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6982</id>
		<title>GSOC2012LTEScheduling</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6982"/>
		<updated>2012-08-23T15:30:51Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Weekly Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LTE Scheduling with the FemtoForum MAC Scheduler API  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:nicola.baldo@cttc.es Nicola Baldo], [mailto:marco.miozzo@cttc.es Marco Miozzo]&lt;br /&gt;
* Abstract: The ns-3 LTE module released by the LENA project supports the FemtoForum MAC LTE MAC Scheduler Interface Specification for the implementation of MAC schedulers. Currently, only simple Round Robin and Proportional Fair schedulers are supported. This project will develop several main MAC schedulers for LTE. It also includes corresponding test suites and user manual. The complete proposal can be found in [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dizhizhou/1 here].&lt;br /&gt;
* Code: http://code.nsnam.org/dizhizhou/gsoc-lte-mac-scheduler/ns-3-dev&lt;br /&gt;
* Midterm report: https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests are multipath transmission for video streaming in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ here].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
&lt;br /&gt;
== LTE packet scheduler list ==&lt;br /&gt;
&lt;br /&gt;
Except PSS and TTA, each scheduler has two versions: frequency domain(FD) and time domain(FD). FD scheduler calculates priority metric on each RBG using subband cqi while TD scheduler calculates metric by wideband cqi. In other words, TD scheduler allocates all RBGs to one UE with highest priority metric.&lt;br /&gt;
&lt;br /&gt;
* 1, Maximum Throughput (MT)[1]: MT is a channel-aware/QoS-unaware scheduler. In MT, eNB allocates RBG k to UE j with largest instantaneous supportable data rate calculated by subband cqi on this RBG's frequency. &lt;br /&gt;
* 2, Blind Equal Throughput (BET)[1]: BET is a channel-unaware/QoS-unaware scheduler. It reaches the same throughput for all users, regardless of their radio channel quality. The priority is the reciprocal of past average throughput.&lt;br /&gt;
* 3, Throughput to Average (TTA)[1]: TTa is a channel-aware/QoS-unaware scheduler. TTA can be considered as a combination of MT and PF. The priority metric equals to expected datarate for UE j at time t on k-th RBG over wideband expected datarate for the UE j at time t. It guarantees that the best RBs are allocated to each user. NOTE: TTA can only be used in frequency domain.&lt;br /&gt;
* 4, Adaptive Token Bucket (TBFQ)[2][3]: TBFQ is a channel-aware/QoS-aware scheduler which derives from the leaky-bucket mechanism. It guarantees the fairness by utilizing a shared token bank. In addition, each flow has a token generation rate.The QoS is guaranteed by setting token generation rate to different values (such as Guarantee Bit Rate (GBR) in EPC bearer QoS parameter). In TBFQ, ﬂows belonging to UEs that are suffering from severe interference, and shadowing conditions in particular, will have a higher priority metric.&lt;br /&gt;
* 5, Priority set scheduling (PSS)[4]: PSS is a joint frequency domain and time domain scheduler. It is also a channel-aware/QoS-aware scheduler. It aims at providing a deﬁned Target Bit Rate (TBR) to all users. Specifically, in TD scheduler part, the scheduler first sets all available users into two sets based on the target bit rate (TBR): set 1: users below TBR, calculate priority metric in BET style; set 2: users above TBR, calculate priority metric in PF style; Users belonged to set 1 have higher priority than ones in set 2. Then TD scheduler will selects N UEs and forward them to FD scheduler which allocates RBGs k to UE j based on two algrorithms: PFsch and CoItA. Details of PFsch and CoItA can be found in [4] or LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
== Development methodology ==&lt;br /&gt;
&lt;br /&gt;
 for each scheduler s&lt;br /&gt;
    write design documentation of s&lt;br /&gt;
    find reference throughput for s&lt;br /&gt;
    implement s&lt;br /&gt;
    write test code for s&lt;br /&gt;
    write test documentation for s&lt;br /&gt;
    publish code of s in public repository&lt;br /&gt;
    submit code of s for review using the codereview tool&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
== Testing approach ==&lt;br /&gt;
&lt;br /&gt;
Because this GSoC project is an extension of current LTE MAC scheduler implementations, the test approach will follow the system test part in [6], test suites for each scheduler will be created as:&lt;br /&gt;
&lt;br /&gt;
* 1, compare the throughput performance obtained from simulation to the reference throughput. If their values are within a given tolerance, then test is passed.&lt;br /&gt;
    Test case: one eNB, multiple UEs&lt;br /&gt;
    For single test case, all UEs have same SINR (same distance to eNB)&lt;br /&gt;
    For different test case, each UE has different SINR (different distance to eNB)    and different number of UE&lt;br /&gt;
&lt;br /&gt;
* 2, check the fairness of scheduler: compare the throughput ratiro get from simulation to the reference throughput ratio    &lt;br /&gt;
   Test case: one eNB, multiple UEs&lt;br /&gt;
   For single test case, all UEs have different SINR different distance to eNB)     &lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
All schedulers developed are components of NS-3 LTE model. How to build and simulate LTE network can be found in [http://www.nsnam.org/docs/release/3.14/models/singlehtml/index.html#document-lte here]. If users want to use LTE MAC scheduler in this project, following codes can be added in your script:&lt;br /&gt;
&lt;br /&gt;
  FD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TTA scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TtaFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  PSS scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::PssFfMacScheduler&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
TBFQ and PSS have more parameters than other schedulers. Users can define those parameters in following way:&lt;br /&gt;
&lt;br /&gt;
TBFQ scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;DebtLimit&amp;quot;, IntegerValue(yourvalue)); // default value -625000 bytes (-5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditLimit&amp;quot;, UintegerValue(yourvalue)); // default value 625000 bytes (5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;TokenPoolSize&amp;quot;, UintegerValue(yourvalue)); // default value 1 byte&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditableThreshold&amp;quot;, UintegerValue(yourvalue)); // default value 0&lt;br /&gt;
&lt;br /&gt;
PSS scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;nMux&amp;quot;, UIntegerValue(yourvalue)); // the maximum number of UE selected by TD scheduler&lt;br /&gt;
&lt;br /&gt;
In addition, token generation rate in TBFQ and target bit rate in PSS need to be configured by Guarantee Bit Rate (GBR) or Maximum Bit Rate (MBR) in epc bearer respectively. Users can use following codes to define GBR and MBR in both downlink and uplink:&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  enum EpsBearer::Qci q = EpsBearer::yourvalue;  // define Qci type&lt;br /&gt;
  GbrQosInformation qos;&lt;br /&gt;
  qos.gbrDl = yourvalue; // Downlink GBR&lt;br /&gt;
  qos.gbrUl = yourvalue; // Uplink GBR&lt;br /&gt;
  qos.mbrDl = yourvalue; // Downlink MBR&lt;br /&gt;
  qos.mbrUl = yourvalue; // Uplink MBR&lt;br /&gt;
  EpsBearer bearer (q, qos);&lt;br /&gt;
  lteHelper-&amp;gt;ActivateEpsBearer (ueDevs, bearer, EpcTft::Default ());&lt;br /&gt;
&lt;br /&gt;
How to choose value for those parameters is out of the scope of this page. Users can find more suggestions on this topic in LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
= Deliverables =&lt;br /&gt;
&lt;br /&gt;
* LTE MAC scheduler code:  TD-MT,TF-MT; FD-TTA; D-BET,TF-BET; TD-TBFQ,TF-TBFQ; TD-PSS;&lt;br /&gt;
* Test suites of above schedulers;&lt;br /&gt;
* Documentation of above schedulers;&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
&lt;br /&gt;
* Week 1     May.21 -- May.27:  FD-MT scheduler &lt;br /&gt;
* Week 2     May.28 -- Jun.03:  TD-MT scheduler&lt;br /&gt;
* Week 3     Jun.4  -- Jun.10:  FD-TTA scheduler&lt;br /&gt;
* Week 4     Jun.11 -- Jun.17:  FD-BET scheduler&lt;br /&gt;
* Week 5     Jun.18 -- Jun.24:  FD-BET scheduler&lt;br /&gt;
* Week 6     Jun.25 -- Jul.01:  TD-BET scheduler&lt;br /&gt;
* Week 7     Jul.02 -- Jul.08:  Buffer&lt;br /&gt;
* Week 8     Jul.09 -- Jul.15:  Mid-term review&lt;br /&gt;
* Week 9     Jul.16 -- Jul.22:  FD-TBFQ scheduler&lt;br /&gt;
* Week 10    Jul.23 -- Jul.29:  TD-TBFQ scheduler&lt;br /&gt;
* Week 11    Jul.30 -- Aug.5:   FD-TBFQ scheduler&lt;br /&gt;
* Week 12    Aug.06 -- Aug.12:  TD-PSS scheduler&lt;br /&gt;
* Week 13    Aug.13 -- Aug.19:  Final review&lt;br /&gt;
&lt;br /&gt;
All schedulers will follow the procedures in Development methodology section.&lt;br /&gt;
&lt;br /&gt;
= Weekly Progress =&lt;br /&gt;
&lt;br /&gt;
* '''Week 1 : May.21 -- May.27'''&lt;br /&gt;
  * Complete code reading for LTE MAC scheduler and related part. Draw class relationship figure for MAC scheduler. Learning background knowledge of OFDMA&lt;br /&gt;
  * Write design documentation of FD-MT and scheduler framework &lt;br /&gt;
&lt;br /&gt;
* '''Week 2 : May.28 -- Jun.03'''&lt;br /&gt;
  * Complete FD-MT documentation and code and submit it to codereview.&lt;br /&gt;
  * Get review from mentors on FD-MT code. &lt;br /&gt;
&lt;br /&gt;
* '''Week 3 : Jun.4  -- Jun.10'''&lt;br /&gt;
  * Modify FD-MT documentation and code based on mentors' comment&lt;br /&gt;
  * Complete  TD-MT documentation and code and submit it to internal code review by mentors&lt;br /&gt;
  * Complete FD-TTA design &lt;br /&gt;
&lt;br /&gt;
* '''Week 4 : Jun.11 -- Jun.17'''&lt;br /&gt;
  * Complete TTA scheduler, including code, testing and documentation&lt;br /&gt;
  * Complete TD-BET and test it in the same SNR testcase.&lt;br /&gt;
  * Complete design document of FD-BET&lt;br /&gt;
&lt;br /&gt;
* '''Week 5 : Jun.18 -- Jun.24'''&lt;br /&gt;
  * Complete FD-BET, including code, same SNR test case &lt;br /&gt;
&lt;br /&gt;
* '''Week 6 : Jun.25 -- Jul.01'''&lt;br /&gt;
  * Modify the MT, TTA and BET codes based on naming style in NS-3&lt;br /&gt;
  * Propose a proof method for the user throughput calculation in FD-BET different SNR testcase  &lt;br /&gt;
&lt;br /&gt;
* '''Week 7 : Jul.02 -- Jul.08'''&lt;br /&gt;
  * Complete all FD-BET test cases and documentations&lt;br /&gt;
&lt;br /&gt;
* '''Week 8 : Jul.09 -- Jul.15'''&lt;br /&gt;
  * [https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport Midterm report]&lt;br /&gt;
&lt;br /&gt;
* '''Week 9 : Jul.16 -- Jul.22'''&lt;br /&gt;
  * Read four background papers of FBFQ scheduler in ATM, TDMA and LTE network&lt;br /&gt;
  * Complete first version of FD FBFQ scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 10 : Jul.23 -- Jul.29'''&lt;br /&gt;
  * Implement FD FBFQ scheduler for realistic application; several design issues faced, Unnecessary RBG allocation, GBR configuration and RLC packet header calculation&lt;br /&gt;
  * FD FBFQ testsuites for homogeneous traffic flows (traffic with the same sending rate) &lt;br /&gt;
&lt;br /&gt;
* '''Week 11 : Jul.30 -- Aug.5'''&lt;br /&gt;
  * Complete FD TBFQ scheduler, including scheduler codes and testsuites&lt;br /&gt;
  * Complete TD TBFQ scheduler, including scheduler codes and testsuites &lt;br /&gt;
&lt;br /&gt;
* '''Week 12 : Aug.06 -- Aug.12'''&lt;br /&gt;
  * Complete first version of PSS:&lt;br /&gt;
       TD scheduler: TD-BET + TD-PF&lt;br /&gt;
       FD scheduler: CoItA&lt;br /&gt;
  * Complete TBFQ document &lt;br /&gt;
&lt;br /&gt;
* '''Week 13 : Aug.13 -- Aug.19'''&lt;br /&gt;
  * Complete PFsch model in PSS FD scheduler&lt;br /&gt;
  * Complete testcase and document for PSS scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 14 : Aug.20 -- Aug.24'''&lt;br /&gt;
  * [http://mailman.isi.edu/pipermail/ns-developers/2012-August/010595.html Final report]&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to my two mentors, Nicola Baldo and Marco Miozzo, also thanks of Lalith Suresh, Tom Henderson and Biljana Bojovic. Thanks for their valuable comments and helps on my work.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
* [1] F.Capozzi, G.Piro L.A.Grieco, G.Boggia, P.Camarda, &amp;quot;Downlink Packet Scheduling in LTE Cellular Networks: Key Design Issues and a Survey&amp;quot;, IEEE Comm. Surveys and Tutorials, to appear.&lt;br /&gt;
* [2] F.A. Bokhari, H. Yanikomeroglu, W.K. Wong, M. Rahman, &amp;quot;Cross-Layer Resource Scheduling for Video Traffic in the Downlink of OFDMA-Based Wireless 4G Networks&amp;quot;,EURASIP J. Wirel. Commun. Netw., vol.2009, no.3, pp. 1-10, Jan. 2009.&lt;br /&gt;
* [3] W.K. Wong, H.Y. Tang, V.C.M, Leung, &amp;quot;Token bank fair queuing: a new scheduling algorithm for wireless multimedia services&amp;quot;, Int. J. Commun. Syst., vol.17, no.6, pp.591-614, Aug.2004.&lt;br /&gt;
* [4] G.Mongha, K.I. Pedersen, I.Z. Kovacs, P.E. Mogensen, &amp;quot; QoS Oriented Time and Frequency Domain Packet Schedulers for The UTRAN Long Term Evolution&amp;quot;, In Proc. IEEE VTC, 2008.&lt;br /&gt;
* [5] ]http://lena.cttc.es/manual/index.html&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6981</id>
		<title>GSOC2012LTEScheduling</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6981"/>
		<updated>2012-08-23T15:30:12Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Weekly Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LTE Scheduling with the FemtoForum MAC Scheduler API  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:nicola.baldo@cttc.es Nicola Baldo], [mailto:marco.miozzo@cttc.es Marco Miozzo]&lt;br /&gt;
* Abstract: The ns-3 LTE module released by the LENA project supports the FemtoForum MAC LTE MAC Scheduler Interface Specification for the implementation of MAC schedulers. Currently, only simple Round Robin and Proportional Fair schedulers are supported. This project will develop several main MAC schedulers for LTE. It also includes corresponding test suites and user manual. The complete proposal can be found in [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dizhizhou/1 here].&lt;br /&gt;
* Code: http://code.nsnam.org/dizhizhou/gsoc-lte-mac-scheduler/ns-3-dev&lt;br /&gt;
* Midterm report: https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests are multipath transmission for video streaming in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ here].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
&lt;br /&gt;
== LTE packet scheduler list ==&lt;br /&gt;
&lt;br /&gt;
Except PSS and TTA, each scheduler has two versions: frequency domain(FD) and time domain(FD). FD scheduler calculates priority metric on each RBG using subband cqi while TD scheduler calculates metric by wideband cqi. In other words, TD scheduler allocates all RBGs to one UE with highest priority metric.&lt;br /&gt;
&lt;br /&gt;
* 1, Maximum Throughput (MT)[1]: MT is a channel-aware/QoS-unaware scheduler. In MT, eNB allocates RBG k to UE j with largest instantaneous supportable data rate calculated by subband cqi on this RBG's frequency. &lt;br /&gt;
* 2, Blind Equal Throughput (BET)[1]: BET is a channel-unaware/QoS-unaware scheduler. It reaches the same throughput for all users, regardless of their radio channel quality. The priority is the reciprocal of past average throughput.&lt;br /&gt;
* 3, Throughput to Average (TTA)[1]: TTa is a channel-aware/QoS-unaware scheduler. TTA can be considered as a combination of MT and PF. The priority metric equals to expected datarate for UE j at time t on k-th RBG over wideband expected datarate for the UE j at time t. It guarantees that the best RBs are allocated to each user. NOTE: TTA can only be used in frequency domain.&lt;br /&gt;
* 4, Adaptive Token Bucket (TBFQ)[2][3]: TBFQ is a channel-aware/QoS-aware scheduler which derives from the leaky-bucket mechanism. It guarantees the fairness by utilizing a shared token bank. In addition, each flow has a token generation rate.The QoS is guaranteed by setting token generation rate to different values (such as Guarantee Bit Rate (GBR) in EPC bearer QoS parameter). In TBFQ, ﬂows belonging to UEs that are suffering from severe interference, and shadowing conditions in particular, will have a higher priority metric.&lt;br /&gt;
* 5, Priority set scheduling (PSS)[4]: PSS is a joint frequency domain and time domain scheduler. It is also a channel-aware/QoS-aware scheduler. It aims at providing a deﬁned Target Bit Rate (TBR) to all users. Specifically, in TD scheduler part, the scheduler first sets all available users into two sets based on the target bit rate (TBR): set 1: users below TBR, calculate priority metric in BET style; set 2: users above TBR, calculate priority metric in PF style; Users belonged to set 1 have higher priority than ones in set 2. Then TD scheduler will selects N UEs and forward them to FD scheduler which allocates RBGs k to UE j based on two algrorithms: PFsch and CoItA. Details of PFsch and CoItA can be found in [4] or LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
== Development methodology ==&lt;br /&gt;
&lt;br /&gt;
 for each scheduler s&lt;br /&gt;
    write design documentation of s&lt;br /&gt;
    find reference throughput for s&lt;br /&gt;
    implement s&lt;br /&gt;
    write test code for s&lt;br /&gt;
    write test documentation for s&lt;br /&gt;
    publish code of s in public repository&lt;br /&gt;
    submit code of s for review using the codereview tool&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
== Testing approach ==&lt;br /&gt;
&lt;br /&gt;
Because this GSoC project is an extension of current LTE MAC scheduler implementations, the test approach will follow the system test part in [6], test suites for each scheduler will be created as:&lt;br /&gt;
&lt;br /&gt;
* 1, compare the throughput performance obtained from simulation to the reference throughput. If their values are within a given tolerance, then test is passed.&lt;br /&gt;
    Test case: one eNB, multiple UEs&lt;br /&gt;
    For single test case, all UEs have same SINR (same distance to eNB)&lt;br /&gt;
    For different test case, each UE has different SINR (different distance to eNB)    and different number of UE&lt;br /&gt;
&lt;br /&gt;
* 2, check the fairness of scheduler: compare the throughput ratiro get from simulation to the reference throughput ratio    &lt;br /&gt;
   Test case: one eNB, multiple UEs&lt;br /&gt;
   For single test case, all UEs have different SINR different distance to eNB)     &lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
All schedulers developed are components of NS-3 LTE model. How to build and simulate LTE network can be found in [http://www.nsnam.org/docs/release/3.14/models/singlehtml/index.html#document-lte here]. If users want to use LTE MAC scheduler in this project, following codes can be added in your script:&lt;br /&gt;
&lt;br /&gt;
  FD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TTA scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TtaFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  PSS scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::PssFfMacScheduler&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
TBFQ and PSS have more parameters than other schedulers. Users can define those parameters in following way:&lt;br /&gt;
&lt;br /&gt;
TBFQ scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;DebtLimit&amp;quot;, IntegerValue(yourvalue)); // default value -625000 bytes (-5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditLimit&amp;quot;, UintegerValue(yourvalue)); // default value 625000 bytes (5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;TokenPoolSize&amp;quot;, UintegerValue(yourvalue)); // default value 1 byte&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditableThreshold&amp;quot;, UintegerValue(yourvalue)); // default value 0&lt;br /&gt;
&lt;br /&gt;
PSS scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;nMux&amp;quot;, UIntegerValue(yourvalue)); // the maximum number of UE selected by TD scheduler&lt;br /&gt;
&lt;br /&gt;
In addition, token generation rate in TBFQ and target bit rate in PSS need to be configured by Guarantee Bit Rate (GBR) or Maximum Bit Rate (MBR) in epc bearer respectively. Users can use following codes to define GBR and MBR in both downlink and uplink:&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  enum EpsBearer::Qci q = EpsBearer::yourvalue;  // define Qci type&lt;br /&gt;
  GbrQosInformation qos;&lt;br /&gt;
  qos.gbrDl = yourvalue; // Downlink GBR&lt;br /&gt;
  qos.gbrUl = yourvalue; // Uplink GBR&lt;br /&gt;
  qos.mbrDl = yourvalue; // Downlink MBR&lt;br /&gt;
  qos.mbrUl = yourvalue; // Uplink MBR&lt;br /&gt;
  EpsBearer bearer (q, qos);&lt;br /&gt;
  lteHelper-&amp;gt;ActivateEpsBearer (ueDevs, bearer, EpcTft::Default ());&lt;br /&gt;
&lt;br /&gt;
How to choose value for those parameters is out of the scope of this page. Users can find more suggestions on this topic in LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
= Deliverables =&lt;br /&gt;
&lt;br /&gt;
* LTE MAC scheduler code:  TD-MT,TF-MT; FD-TTA; D-BET,TF-BET; TD-TBFQ,TF-TBFQ; TD-PSS;&lt;br /&gt;
* Test suites of above schedulers;&lt;br /&gt;
* Documentation of above schedulers;&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
&lt;br /&gt;
* Week 1     May.21 -- May.27:  FD-MT scheduler &lt;br /&gt;
* Week 2     May.28 -- Jun.03:  TD-MT scheduler&lt;br /&gt;
* Week 3     Jun.4  -- Jun.10:  FD-TTA scheduler&lt;br /&gt;
* Week 4     Jun.11 -- Jun.17:  FD-BET scheduler&lt;br /&gt;
* Week 5     Jun.18 -- Jun.24:  FD-BET scheduler&lt;br /&gt;
* Week 6     Jun.25 -- Jul.01:  TD-BET scheduler&lt;br /&gt;
* Week 7     Jul.02 -- Jul.08:  Buffer&lt;br /&gt;
* Week 8     Jul.09 -- Jul.15:  Mid-term review&lt;br /&gt;
* Week 9     Jul.16 -- Jul.22:  FD-TBFQ scheduler&lt;br /&gt;
* Week 10    Jul.23 -- Jul.29:  TD-TBFQ scheduler&lt;br /&gt;
* Week 11    Jul.30 -- Aug.5:   FD-TBFQ scheduler&lt;br /&gt;
* Week 12    Aug.06 -- Aug.12:  TD-PSS scheduler&lt;br /&gt;
* Week 13    Aug.13 -- Aug.19:  Final review&lt;br /&gt;
&lt;br /&gt;
All schedulers will follow the procedures in Development methodology section.&lt;br /&gt;
&lt;br /&gt;
= Weekly Progress =&lt;br /&gt;
&lt;br /&gt;
* '''Week 1 : May.21 -- May.27'''&lt;br /&gt;
  * Complete code reading for LTE MAC scheduler and related part. Draw class relationship figure for MAC scheduler. Learning background knowledge of OFDMA&lt;br /&gt;
  * Write design documentation of FD-MT and scheduler framework &lt;br /&gt;
&lt;br /&gt;
* '''Week 2 : May.28 -- Jun.03'''&lt;br /&gt;
  * Complete FD-MT documentation and code and submit it to codereview.&lt;br /&gt;
  * Get review from mentors on FD-MT code. &lt;br /&gt;
&lt;br /&gt;
* '''Week 3 : Jun.4  -- Jun.10'''&lt;br /&gt;
  * Modify FD-MT documentation and code based on mentors' comment&lt;br /&gt;
  * Complete  TD-MT documentation and code and submit it to internal code review by mentors&lt;br /&gt;
  * Complete FD-TTA design &lt;br /&gt;
&lt;br /&gt;
* '''Week 4 : Jun.11 -- Jun.17'''&lt;br /&gt;
  * Complete TTA scheduler, including code, testing and documentation&lt;br /&gt;
  * Complete TD-BET and test it in the same SNR testcase.&lt;br /&gt;
  * Complete design document of FD-BET&lt;br /&gt;
&lt;br /&gt;
* '''Week 5 : Jun.18 -- Jun.24'''&lt;br /&gt;
  * Complete FD-BET, including code, same SNR test case &lt;br /&gt;
&lt;br /&gt;
* '''Week 6 : Jun.25 -- Jul.01'''&lt;br /&gt;
  * Modify the MT, TTA and BET codes based on naming style in NS-3&lt;br /&gt;
  * Propose a proof method for the user throughput calculation in FD-BET different SNR testcase  &lt;br /&gt;
&lt;br /&gt;
* '''Week 7 : Jul.02 -- Jul.08'''&lt;br /&gt;
  * Complete all FD-BET test cases and documentations&lt;br /&gt;
&lt;br /&gt;
* '''Week 8 : Jul.09 -- Jul.15'''&lt;br /&gt;
  * [https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport Midterm report]&lt;br /&gt;
&lt;br /&gt;
* '''Week 9 : Jul.16 -- Jul.22'''&lt;br /&gt;
  * Read four background papers of FBFQ scheduler in ATM, TDMA and LTE network&lt;br /&gt;
  * Complete first version of FD FBFQ scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 10 : Jul.23 -- Jul.29'''&lt;br /&gt;
  * Implement FD FBFQ scheduler for realistic application; several design issues faced, Unnecessary RBG allocation, GBR configuration and RLC packet header calculation&lt;br /&gt;
  * FD FBFQ testsuites for homogeneous traffic flows (traffic with the same sending rate) &lt;br /&gt;
&lt;br /&gt;
* '''Week 11 : Jul.30 -- Aug.5'''&lt;br /&gt;
  * Complete FD TBFQ scheduler, including scheduler codes and testsuites&lt;br /&gt;
  * Complete TD TBFQ scheduler, including scheduler codes and testsuites &lt;br /&gt;
&lt;br /&gt;
* '''Week 12 : Aug.06 -- Aug.12'''&lt;br /&gt;
  * Complete first version of PSS:&lt;br /&gt;
       TD scheduler: TD-BET + TD-PF&lt;br /&gt;
       FD scheduler: CoItA&lt;br /&gt;
  * Complete TBFQ document &lt;br /&gt;
&lt;br /&gt;
* '''Week 13 : Aug.13 -- Aug.19'''&lt;br /&gt;
  * Complete PFsch model in PSS FD scheduler&lt;br /&gt;
  * Complete testcase and document for PSS scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 14 : Aug.20 -- Aug.24'''&lt;br /&gt;
  * Final report&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to my two mentors, Nicola Baldo and Marco Miozzo, also thanks of Lalith Suresh, Tom Henderson and Biljana Bojovic. Thanks for their valuable comments and helps on my work.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
* [1] F.Capozzi, G.Piro L.A.Grieco, G.Boggia, P.Camarda, &amp;quot;Downlink Packet Scheduling in LTE Cellular Networks: Key Design Issues and a Survey&amp;quot;, IEEE Comm. Surveys and Tutorials, to appear.&lt;br /&gt;
* [2] F.A. Bokhari, H. Yanikomeroglu, W.K. Wong, M. Rahman, &amp;quot;Cross-Layer Resource Scheduling for Video Traffic in the Downlink of OFDMA-Based Wireless 4G Networks&amp;quot;,EURASIP J. Wirel. Commun. Netw., vol.2009, no.3, pp. 1-10, Jan. 2009.&lt;br /&gt;
* [3] W.K. Wong, H.Y. Tang, V.C.M, Leung, &amp;quot;Token bank fair queuing: a new scheduling algorithm for wireless multimedia services&amp;quot;, Int. J. Commun. Syst., vol.17, no.6, pp.591-614, Aug.2004.&lt;br /&gt;
* [4] G.Mongha, K.I. Pedersen, I.Z. Kovacs, P.E. Mogensen, &amp;quot; QoS Oriented Time and Frequency Domain Packet Schedulers for The UTRAN Long Term Evolution&amp;quot;, In Proc. IEEE VTC, 2008.&lt;br /&gt;
* [5] ]http://lena.cttc.es/manual/index.html&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6980</id>
		<title>GSOC2012LTEScheduling</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6980"/>
		<updated>2012-08-23T15:29:46Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LTE Scheduling with the FemtoForum MAC Scheduler API  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:nicola.baldo@cttc.es Nicola Baldo], [mailto:marco.miozzo@cttc.es Marco Miozzo]&lt;br /&gt;
* Abstract: The ns-3 LTE module released by the LENA project supports the FemtoForum MAC LTE MAC Scheduler Interface Specification for the implementation of MAC schedulers. Currently, only simple Round Robin and Proportional Fair schedulers are supported. This project will develop several main MAC schedulers for LTE. It also includes corresponding test suites and user manual. The complete proposal can be found in [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dizhizhou/1 here].&lt;br /&gt;
* Code: http://code.nsnam.org/dizhizhou/gsoc-lte-mac-scheduler/ns-3-dev&lt;br /&gt;
* Midterm report: https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests are multipath transmission for video streaming in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ here].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
&lt;br /&gt;
== LTE packet scheduler list ==&lt;br /&gt;
&lt;br /&gt;
Except PSS and TTA, each scheduler has two versions: frequency domain(FD) and time domain(FD). FD scheduler calculates priority metric on each RBG using subband cqi while TD scheduler calculates metric by wideband cqi. In other words, TD scheduler allocates all RBGs to one UE with highest priority metric.&lt;br /&gt;
&lt;br /&gt;
* 1, Maximum Throughput (MT)[1]: MT is a channel-aware/QoS-unaware scheduler. In MT, eNB allocates RBG k to UE j with largest instantaneous supportable data rate calculated by subband cqi on this RBG's frequency. &lt;br /&gt;
* 2, Blind Equal Throughput (BET)[1]: BET is a channel-unaware/QoS-unaware scheduler. It reaches the same throughput for all users, regardless of their radio channel quality. The priority is the reciprocal of past average throughput.&lt;br /&gt;
* 3, Throughput to Average (TTA)[1]: TTa is a channel-aware/QoS-unaware scheduler. TTA can be considered as a combination of MT and PF. The priority metric equals to expected datarate for UE j at time t on k-th RBG over wideband expected datarate for the UE j at time t. It guarantees that the best RBs are allocated to each user. NOTE: TTA can only be used in frequency domain.&lt;br /&gt;
* 4, Adaptive Token Bucket (TBFQ)[2][3]: TBFQ is a channel-aware/QoS-aware scheduler which derives from the leaky-bucket mechanism. It guarantees the fairness by utilizing a shared token bank. In addition, each flow has a token generation rate.The QoS is guaranteed by setting token generation rate to different values (such as Guarantee Bit Rate (GBR) in EPC bearer QoS parameter). In TBFQ, ﬂows belonging to UEs that are suffering from severe interference, and shadowing conditions in particular, will have a higher priority metric.&lt;br /&gt;
* 5, Priority set scheduling (PSS)[4]: PSS is a joint frequency domain and time domain scheduler. It is also a channel-aware/QoS-aware scheduler. It aims at providing a deﬁned Target Bit Rate (TBR) to all users. Specifically, in TD scheduler part, the scheduler first sets all available users into two sets based on the target bit rate (TBR): set 1: users below TBR, calculate priority metric in BET style; set 2: users above TBR, calculate priority metric in PF style; Users belonged to set 1 have higher priority than ones in set 2. Then TD scheduler will selects N UEs and forward them to FD scheduler which allocates RBGs k to UE j based on two algrorithms: PFsch and CoItA. Details of PFsch and CoItA can be found in [4] or LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
== Development methodology ==&lt;br /&gt;
&lt;br /&gt;
 for each scheduler s&lt;br /&gt;
    write design documentation of s&lt;br /&gt;
    find reference throughput for s&lt;br /&gt;
    implement s&lt;br /&gt;
    write test code for s&lt;br /&gt;
    write test documentation for s&lt;br /&gt;
    publish code of s in public repository&lt;br /&gt;
    submit code of s for review using the codereview tool&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
== Testing approach ==&lt;br /&gt;
&lt;br /&gt;
Because this GSoC project is an extension of current LTE MAC scheduler implementations, the test approach will follow the system test part in [6], test suites for each scheduler will be created as:&lt;br /&gt;
&lt;br /&gt;
* 1, compare the throughput performance obtained from simulation to the reference throughput. If their values are within a given tolerance, then test is passed.&lt;br /&gt;
    Test case: one eNB, multiple UEs&lt;br /&gt;
    For single test case, all UEs have same SINR (same distance to eNB)&lt;br /&gt;
    For different test case, each UE has different SINR (different distance to eNB)    and different number of UE&lt;br /&gt;
&lt;br /&gt;
* 2, check the fairness of scheduler: compare the throughput ratiro get from simulation to the reference throughput ratio    &lt;br /&gt;
   Test case: one eNB, multiple UEs&lt;br /&gt;
   For single test case, all UEs have different SINR different distance to eNB)     &lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
All schedulers developed are components of NS-3 LTE model. How to build and simulate LTE network can be found in [http://www.nsnam.org/docs/release/3.14/models/singlehtml/index.html#document-lte here]. If users want to use LTE MAC scheduler in this project, following codes can be added in your script:&lt;br /&gt;
&lt;br /&gt;
  FD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TTA scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TtaFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  PSS scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::PssFfMacScheduler&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
TBFQ and PSS have more parameters than other schedulers. Users can define those parameters in following way:&lt;br /&gt;
&lt;br /&gt;
TBFQ scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;DebtLimit&amp;quot;, IntegerValue(yourvalue)); // default value -625000 bytes (-5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditLimit&amp;quot;, UintegerValue(yourvalue)); // default value 625000 bytes (5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;TokenPoolSize&amp;quot;, UintegerValue(yourvalue)); // default value 1 byte&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditableThreshold&amp;quot;, UintegerValue(yourvalue)); // default value 0&lt;br /&gt;
&lt;br /&gt;
PSS scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;nMux&amp;quot;, UIntegerValue(yourvalue)); // the maximum number of UE selected by TD scheduler&lt;br /&gt;
&lt;br /&gt;
In addition, token generation rate in TBFQ and target bit rate in PSS need to be configured by Guarantee Bit Rate (GBR) or Maximum Bit Rate (MBR) in epc bearer respectively. Users can use following codes to define GBR and MBR in both downlink and uplink:&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  enum EpsBearer::Qci q = EpsBearer::yourvalue;  // define Qci type&lt;br /&gt;
  GbrQosInformation qos;&lt;br /&gt;
  qos.gbrDl = yourvalue; // Downlink GBR&lt;br /&gt;
  qos.gbrUl = yourvalue; // Uplink GBR&lt;br /&gt;
  qos.mbrDl = yourvalue; // Downlink MBR&lt;br /&gt;
  qos.mbrUl = yourvalue; // Uplink MBR&lt;br /&gt;
  EpsBearer bearer (q, qos);&lt;br /&gt;
  lteHelper-&amp;gt;ActivateEpsBearer (ueDevs, bearer, EpcTft::Default ());&lt;br /&gt;
&lt;br /&gt;
How to choose value for those parameters is out of the scope of this page. Users can find more suggestions on this topic in LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
= Deliverables =&lt;br /&gt;
&lt;br /&gt;
* LTE MAC scheduler code:  TD-MT,TF-MT; FD-TTA; D-BET,TF-BET; TD-TBFQ,TF-TBFQ; TD-PSS;&lt;br /&gt;
* Test suites of above schedulers;&lt;br /&gt;
* Documentation of above schedulers;&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
&lt;br /&gt;
* Week 1     May.21 -- May.27:  FD-MT scheduler &lt;br /&gt;
* Week 2     May.28 -- Jun.03:  TD-MT scheduler&lt;br /&gt;
* Week 3     Jun.4  -- Jun.10:  FD-TTA scheduler&lt;br /&gt;
* Week 4     Jun.11 -- Jun.17:  FD-BET scheduler&lt;br /&gt;
* Week 5     Jun.18 -- Jun.24:  FD-BET scheduler&lt;br /&gt;
* Week 6     Jun.25 -- Jul.01:  TD-BET scheduler&lt;br /&gt;
* Week 7     Jul.02 -- Jul.08:  Buffer&lt;br /&gt;
* Week 8     Jul.09 -- Jul.15:  Mid-term review&lt;br /&gt;
* Week 9     Jul.16 -- Jul.22:  FD-TBFQ scheduler&lt;br /&gt;
* Week 10    Jul.23 -- Jul.29:  TD-TBFQ scheduler&lt;br /&gt;
* Week 11    Jul.30 -- Aug.5:   FD-TBFQ scheduler&lt;br /&gt;
* Week 12    Aug.06 -- Aug.12:  TD-PSS scheduler&lt;br /&gt;
* Week 13    Aug.13 -- Aug.19:  Final review&lt;br /&gt;
&lt;br /&gt;
All schedulers will follow the procedures in Development methodology section.&lt;br /&gt;
&lt;br /&gt;
= Weekly Progress =&lt;br /&gt;
&lt;br /&gt;
* '''Week 1 : May.21 -- May.27'''&lt;br /&gt;
  * Complete code reading for LTE MAC scheduler and related part. Draw class relationship figure for MAC scheduler. Learning background knowledge of OFDMA&lt;br /&gt;
  * Write design documentation of FD-MT and scheduler framework &lt;br /&gt;
&lt;br /&gt;
* '''Week 2 : May.28 -- Jun.03'''&lt;br /&gt;
  * Complete FD-MT documentation and code and submit it to codereview.&lt;br /&gt;
  * Get review from mentors on FD-MT code. &lt;br /&gt;
&lt;br /&gt;
* '''Week 3 : Jun.4  -- Jun.10'''&lt;br /&gt;
  * Modify FD-MT documentation and code based on mentors' comment&lt;br /&gt;
  * Complete  TD-MT documentation and code and submit it to internal code review by mentors&lt;br /&gt;
  * Complete FD-TTA design &lt;br /&gt;
&lt;br /&gt;
* '''Week 4 : Jun.11 -- Jun.17'''&lt;br /&gt;
  * Complete TTA scheduler, including code, testing and documentation&lt;br /&gt;
  * Complete TD-BET and test it in the same SNR testcase.&lt;br /&gt;
  * Complete design document of FD-BET&lt;br /&gt;
&lt;br /&gt;
* '''Week 5 : Jun.18 -- Jun.24'''&lt;br /&gt;
  * Complete FD-BET, including code, same SNR test case &lt;br /&gt;
&lt;br /&gt;
* '''Week 6 : Jun.25 -- Jul.01'''&lt;br /&gt;
  * Modify the MT, TTA and BET codes based on naming style in NS-3&lt;br /&gt;
  * Propose a proof method for the user throughput calculation in FD-BET different SNR testcase  &lt;br /&gt;
&lt;br /&gt;
* '''Week 7 : Jul.02 -- Jul.08'''&lt;br /&gt;
  * Complete all FD-BET test cases and documentations&lt;br /&gt;
&lt;br /&gt;
* '''Week 8 : Jul.09 -- Jul.15'''&lt;br /&gt;
  * Midterm report [https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport]&lt;br /&gt;
&lt;br /&gt;
* '''Week 9 : Jul.16 -- Jul.22'''&lt;br /&gt;
  * Read four background papers of FBFQ scheduler in ATM, TDMA and LTE network&lt;br /&gt;
  * Complete first version of FD FBFQ scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 10 : Jul.23 -- Jul.29'''&lt;br /&gt;
  * Implement FD FBFQ scheduler for realistic application; several design issues faced, Unnecessary RBG allocation, GBR configuration and RLC packet header calculation&lt;br /&gt;
  * FD FBFQ testsuites for homogeneous traffic flows (traffic with the same sending rate) &lt;br /&gt;
&lt;br /&gt;
* '''Week 11 : Jul.30 -- Aug.5'''&lt;br /&gt;
  * Complete FD TBFQ scheduler, including scheduler codes and testsuites&lt;br /&gt;
  * Complete TD TBFQ scheduler, including scheduler codes and testsuites &lt;br /&gt;
&lt;br /&gt;
* '''Week 12 : Aug.06 -- Aug.12'''&lt;br /&gt;
  * Complete first version of PSS:&lt;br /&gt;
       TD scheduler: TD-BET + TD-PF&lt;br /&gt;
       FD scheduler: CoItA&lt;br /&gt;
  * Complete TBFQ document &lt;br /&gt;
&lt;br /&gt;
* '''Week 13 : Aug.13 -- Aug.19'''&lt;br /&gt;
  * Complete PFsch model in PSS FD scheduler&lt;br /&gt;
  * Complete testcase and document for PSS scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 14 : Aug.20 -- Aug.24'''&lt;br /&gt;
  * Final report&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to my two mentors, Nicola Baldo and Marco Miozzo, also thanks of Lalith Suresh, Tom Henderson and Biljana Bojovic. Thanks for their valuable comments and helps on my work.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
* [1] F.Capozzi, G.Piro L.A.Grieco, G.Boggia, P.Camarda, &amp;quot;Downlink Packet Scheduling in LTE Cellular Networks: Key Design Issues and a Survey&amp;quot;, IEEE Comm. Surveys and Tutorials, to appear.&lt;br /&gt;
* [2] F.A. Bokhari, H. Yanikomeroglu, W.K. Wong, M. Rahman, &amp;quot;Cross-Layer Resource Scheduling for Video Traffic in the Downlink of OFDMA-Based Wireless 4G Networks&amp;quot;,EURASIP J. Wirel. Commun. Netw., vol.2009, no.3, pp. 1-10, Jan. 2009.&lt;br /&gt;
* [3] W.K. Wong, H.Y. Tang, V.C.M, Leung, &amp;quot;Token bank fair queuing: a new scheduling algorithm for wireless multimedia services&amp;quot;, Int. J. Commun. Syst., vol.17, no.6, pp.591-614, Aug.2004.&lt;br /&gt;
* [4] G.Mongha, K.I. Pedersen, I.Z. Kovacs, P.E. Mogensen, &amp;quot; QoS Oriented Time and Frequency Domain Packet Schedulers for The UTRAN Long Term Evolution&amp;quot;, In Proc. IEEE VTC, 2008.&lt;br /&gt;
* [5] ]http://lena.cttc.es/manual/index.html&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6979</id>
		<title>GSOC2012LTEScheduling</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6979"/>
		<updated>2012-08-23T15:28:37Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LTE Scheduling with the FemtoForum MAC Scheduler API  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:nicola.baldo@cttc.es Nicola Baldo], [mailto:marco.miozzo@cttc.es Marco Miozzo]&lt;br /&gt;
* Abstract: The ns-3 LTE module released by the LENA project supports the FemtoForum MAC LTE MAC Scheduler Interface Specification for the implementation of MAC schedulers. Currently, only simple Round Robin and Proportional Fair schedulers are supported. This project will develop several main MAC schedulers for LTE. It also includes corresponding test suites and user manual. The complete proposal can be found in [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dizhizhou/1 here].&lt;br /&gt;
* Code: http://code.nsnam.org/dizhizhou/gsoc-lte-mac-scheduler/ns-3-dev&lt;br /&gt;
* Midterm report: https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests are multipath transmission for video streaming in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ here].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
&lt;br /&gt;
== LTE packet scheduler list ==&lt;br /&gt;
&lt;br /&gt;
Except PSS and TTA, each scheduler has two versions: frequency domain(FD) and time domain(FD). FD scheduler calculates priority metric on each RBG using subband cqi while TD scheduler calculates metric by wideband cqi. In other words, TD scheduler allocates all RBGs to one UE with highest priority metric.&lt;br /&gt;
&lt;br /&gt;
* 1, Maximum Throughput (MT)[1]: MT is a channel-aware/QoS-unaware scheduler. In MT, eNB allocates RBG k to UE j with largest instantaneous supportable data rate calculated by subband cqi on this RBG's frequency. &lt;br /&gt;
* 2, Blind Equal Throughput (BET)[1]: BET is a channel-unaware/QoS-unaware scheduler. It reaches the same throughput for all users, regardless of their radio channel quality. The priority is the reciprocal of past average throughput.&lt;br /&gt;
* 3, Throughput to Average (TTA)[1]: TTa is a channel-aware/QoS-unaware scheduler. TTA can be considered as a combination of MT and PF. The priority metric equals to expected datarate for UE j at time t on k-th RBG over wideband expected datarate for the UE j at time t. It guarantees that the best RBs are allocated to each user. NOTE: TTA can only be used in frequency domain.&lt;br /&gt;
* 4, Adaptive Token Bucket (TBFQ)[2][3]: TBFQ is a channel-aware/QoS-aware scheduler which derives from the leaky-bucket mechanism. It guarantees the fairness by utilizing a shared token bank. In addition, each flow has a token generation rate.The QoS is guaranteed by setting token generation rate to different values (such as Guarantee Bit Rate (GBR) in EPC bearer QoS parameter). In TBFQ, ﬂows belonging to UEs that are suffering from severe interference, and shadowing conditions in particular, will have a higher priority metric.&lt;br /&gt;
* 5, Priority set scheduling (PSS)[4]: PSS is a joint frequency domain and time domain scheduler. It is also a channel-aware/QoS-aware scheduler. It aims at providing a deﬁned Target Bit Rate (TBR) to all users. Specifically, in TD scheduler part, the scheduler first sets all available users into two sets based on the target bit rate (TBR): set 1: users below TBR, calculate priority metric in BET style; set 2: users above TBR, calculate priority metric in PF style; Users belonged to set 1 have higher priority than ones in set 2. Then TD scheduler will selects N UEs and forward them to FD scheduler which allocates RBGs k to UE j based on two algrorithms: PFsch and CoItA. Details of PFsch and CoItA can be found in [4] or LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
== Development methodology ==&lt;br /&gt;
&lt;br /&gt;
 for each scheduler s&lt;br /&gt;
    write design documentation of s&lt;br /&gt;
    find reference throughput for s&lt;br /&gt;
    implement s&lt;br /&gt;
    write test code for s&lt;br /&gt;
    write test documentation for s&lt;br /&gt;
    publish code of s in public repository&lt;br /&gt;
    submit code of s for review using the codereview tool&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
== Testing approach ==&lt;br /&gt;
&lt;br /&gt;
Because this GSoC project is an extension of current LTE MAC scheduler implementations, the test approach will follow the system test part in [6], test suites for each scheduler will be created as:&lt;br /&gt;
&lt;br /&gt;
* 1, compare the throughput performance obtained from simulation to the reference throughput. If their values are within a given tolerance, then test is passed.&lt;br /&gt;
    Test case: one eNB, multiple UEs&lt;br /&gt;
    For single test case, all UEs have same SINR (same distance to eNB)&lt;br /&gt;
    For different test case, each UE has different SINR (different distance to eNB)    and different number of UE&lt;br /&gt;
&lt;br /&gt;
* 2, check the fairness of scheduler: compare the throughput ratiro get from simulation to the reference throughput ratio    &lt;br /&gt;
   Test case: one eNB, multiple UEs&lt;br /&gt;
   For single test case, all UEs have different SINR different distance to eNB)     &lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
All schedulers developed are components of NS-3 LTE model. How to build and simulate LTE network can be found in here [http://www.nsnam.org/docs/release/3.14/models/singlehtml/index.html#document-lte]. If users want to use LTE MAC scheduler in this project, following codes can be added in your script:&lt;br /&gt;
&lt;br /&gt;
  FD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TTA scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TtaFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  PSS scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::PssFfMacScheduler&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
TBFQ and PSS have more parameters than other schedulers. Users can define those parameters in following way:&lt;br /&gt;
&lt;br /&gt;
TBFQ scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;DebtLimit&amp;quot;, IntegerValue(yourvalue)); // default value -625000 bytes (-5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditLimit&amp;quot;, UintegerValue(yourvalue)); // default value 625000 bytes (5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;TokenPoolSize&amp;quot;, UintegerValue(yourvalue)); // default value 1 byte&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditableThreshold&amp;quot;, UintegerValue(yourvalue)); // default value 0&lt;br /&gt;
&lt;br /&gt;
PSS scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;nMux&amp;quot;, UIntegerValue(yourvalue)); // the maximum number of UE selected by TD scheduler&lt;br /&gt;
&lt;br /&gt;
In addition, token generation rate in TBFQ and target bit rate in PSS need to be configured by Guarantee Bit Rate (GBR) or Maximum Bit Rate (MBR) in epc bearer respectively. Users can use following codes to define GBR and MBR in both downlink and uplink:&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  enum EpsBearer::Qci q = EpsBearer::yourvalue;  // define Qci type&lt;br /&gt;
  GbrQosInformation qos;&lt;br /&gt;
  qos.gbrDl = yourvalue; // Downlink GBR&lt;br /&gt;
  qos.gbrUl = yourvalue; // Uplink GBR&lt;br /&gt;
  qos.mbrDl = yourvalue; // Downlink MBR&lt;br /&gt;
  qos.mbrUl = yourvalue; // Uplink MBR&lt;br /&gt;
  EpsBearer bearer (q, qos);&lt;br /&gt;
  lteHelper-&amp;gt;ActivateEpsBearer (ueDevs, bearer, EpcTft::Default ());&lt;br /&gt;
&lt;br /&gt;
How to choose value for those parameters is out of the scope of this page. Users can find more suggestions on this topic in LTE manual&lt;br /&gt;
&lt;br /&gt;
= Deliverables =&lt;br /&gt;
&lt;br /&gt;
* LTE MAC scheduler code:  TD-MT,TF-MT; FD-TTA; D-BET,TF-BET; TD-TBFQ,TF-TBFQ; TD-PSS;&lt;br /&gt;
* Test suites of above schedulers;&lt;br /&gt;
* Documentation of above schedulers;&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
&lt;br /&gt;
* Week 1     May.21 -- May.27:  FD-MT scheduler &lt;br /&gt;
* Week 2     May.28 -- Jun.03:  TD-MT scheduler&lt;br /&gt;
* Week 3     Jun.4  -- Jun.10:  FD-TTA scheduler&lt;br /&gt;
* Week 4     Jun.11 -- Jun.17:  FD-BET scheduler&lt;br /&gt;
* Week 5     Jun.18 -- Jun.24:  FD-BET scheduler&lt;br /&gt;
* Week 6     Jun.25 -- Jul.01:  TD-BET scheduler&lt;br /&gt;
* Week 7     Jul.02 -- Jul.08:  Buffer&lt;br /&gt;
* Week 8     Jul.09 -- Jul.15:  Mid-term review&lt;br /&gt;
* Week 9     Jul.16 -- Jul.22:  FD-TBFQ scheduler&lt;br /&gt;
* Week 10    Jul.23 -- Jul.29:  TD-TBFQ scheduler&lt;br /&gt;
* Week 11    Jul.30 -- Aug.5:   FD-TBFQ scheduler&lt;br /&gt;
* Week 12    Aug.06 -- Aug.12:  TD-PSS scheduler&lt;br /&gt;
* Week 13    Aug.13 -- Aug.19:  Final review&lt;br /&gt;
&lt;br /&gt;
All schedulers will follow the procedures in Development methodology section.&lt;br /&gt;
&lt;br /&gt;
= Weekly Progress =&lt;br /&gt;
&lt;br /&gt;
* '''Week 1 : May.21 -- May.27'''&lt;br /&gt;
  * Complete code reading for LTE MAC scheduler and related part. Draw class relationship figure for MAC scheduler. Learning background knowledge of OFDMA&lt;br /&gt;
  * Write design documentation of FD-MT and scheduler framework &lt;br /&gt;
&lt;br /&gt;
* '''Week 2 : May.28 -- Jun.03'''&lt;br /&gt;
  * Complete FD-MT documentation and code and submit it to codereview.&lt;br /&gt;
  * Get review from mentors on FD-MT code. &lt;br /&gt;
&lt;br /&gt;
* '''Week 3 : Jun.4  -- Jun.10'''&lt;br /&gt;
  * Modify FD-MT documentation and code based on mentors' comment&lt;br /&gt;
  * Complete  TD-MT documentation and code and submit it to internal code review by mentors&lt;br /&gt;
  * Complete FD-TTA design &lt;br /&gt;
&lt;br /&gt;
* '''Week 4 : Jun.11 -- Jun.17'''&lt;br /&gt;
  * Complete TTA scheduler, including code, testing and documentation&lt;br /&gt;
  * Complete TD-BET and test it in the same SNR testcase.&lt;br /&gt;
  * Complete design document of FD-BET&lt;br /&gt;
&lt;br /&gt;
* '''Week 5 : Jun.18 -- Jun.24'''&lt;br /&gt;
  * Complete FD-BET, including code, same SNR test case &lt;br /&gt;
&lt;br /&gt;
* '''Week 6 : Jun.25 -- Jul.01'''&lt;br /&gt;
  * Modify the MT, TTA and BET codes based on naming style in NS-3&lt;br /&gt;
  * Propose a proof method for the user throughput calculation in FD-BET different SNR testcase  &lt;br /&gt;
&lt;br /&gt;
* '''Week 7 : Jul.02 -- Jul.08'''&lt;br /&gt;
  * Complete all FD-BET test cases and documentations&lt;br /&gt;
&lt;br /&gt;
* '''Week 8 : Jul.09 -- Jul.15'''&lt;br /&gt;
  * Midterm report [https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport]&lt;br /&gt;
&lt;br /&gt;
* '''Week 9 : Jul.16 -- Jul.22'''&lt;br /&gt;
  * Read four background papers of FBFQ scheduler in ATM, TDMA and LTE network&lt;br /&gt;
  * Complete first version of FD FBFQ scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 10 : Jul.23 -- Jul.29'''&lt;br /&gt;
  * Implement FD FBFQ scheduler for realistic application; several design issues faced, Unnecessary RBG allocation, GBR configuration and RLC packet header calculation&lt;br /&gt;
  * FD FBFQ testsuites for homogeneous traffic flows (traffic with the same sending rate) &lt;br /&gt;
&lt;br /&gt;
* '''Week 11 : Jul.30 -- Aug.5'''&lt;br /&gt;
  * Complete FD TBFQ scheduler, including scheduler codes and testsuites&lt;br /&gt;
  * Complete TD TBFQ scheduler, including scheduler codes and testsuites &lt;br /&gt;
&lt;br /&gt;
* '''Week 12 : Aug.06 -- Aug.12'''&lt;br /&gt;
  * Complete first version of PSS:&lt;br /&gt;
       TD scheduler: TD-BET + TD-PF&lt;br /&gt;
       FD scheduler: CoItA&lt;br /&gt;
  * Complete TBFQ document &lt;br /&gt;
&lt;br /&gt;
* '''Week 13 : Aug.13 -- Aug.19'''&lt;br /&gt;
  * Complete PFsch model in PSS FD scheduler&lt;br /&gt;
  * Complete testcase and document for PSS scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 14 : Aug.20 -- Aug.24'''&lt;br /&gt;
  * Final report&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to my two mentors, Nicola Baldo and Marco Miozzo, also thanks of Lalith Suresh, Tom Henderson and Biljana Bojovic. Thanks for their valuable comments and helps on my work.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
* [1] F.Capozzi, G.Piro L.A.Grieco, G.Boggia, P.Camarda, &amp;quot;Downlink Packet Scheduling in LTE Cellular Networks: Key Design Issues and a Survey&amp;quot;, IEEE Comm. Surveys and Tutorials, to appear.&lt;br /&gt;
* [2] F.A. Bokhari, H. Yanikomeroglu, W.K. Wong, M. Rahman, &amp;quot;Cross-Layer Resource Scheduling for Video Traffic in the Downlink of OFDMA-Based Wireless 4G Networks&amp;quot;,EURASIP J. Wirel. Commun. Netw., vol.2009, no.3, pp. 1-10, Jan. 2009.&lt;br /&gt;
* [3] W.K. Wong, H.Y. Tang, V.C.M, Leung, &amp;quot;Token bank fair queuing: a new scheduling algorithm for wireless multimedia services&amp;quot;, Int. J. Commun. Syst., vol.17, no.6, pp.591-614, Aug.2004.&lt;br /&gt;
* [4] G.Mongha, K.I. Pedersen, I.Z. Kovacs, P.E. Mogensen, &amp;quot; QoS Oriented Time and Frequency Domain Packet Schedulers for The UTRAN Long Term Evolution&amp;quot;, In Proc. IEEE VTC, 2008.&lt;br /&gt;
* [5] ]http://lena.cttc.es/manual/index.html&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6978</id>
		<title>GSOC2012LTEScheduling</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6978"/>
		<updated>2012-08-23T15:18:58Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Weekly Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LTE Scheduling with the FemtoForum MAC Scheduler API  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:nicola.baldo@cttc.es Nicola Baldo], [mailto:marco.miozzo@cttc.es Marco Miozzo]&lt;br /&gt;
* Abstract: The ns-3 LTE module released by the LENA project supports the FemtoForum MAC LTE MAC Scheduler Interface Specification for the implementation of MAC schedulers. Currently, only simple Round Robin and Proportional Fair schedulers are supported. This project will develop several main MAC schedulers for LTE. It also includes corresponding test suites and user manual. The complete proposal can be found in [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dizhizhou/1 here].&lt;br /&gt;
* Code: http://code.nsnam.org/dizhizhou/gsoc-lte-mac-scheduler/ns-3-dev&lt;br /&gt;
* Midterm report: https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests are multipath transmission for video streaming in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ here].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
&lt;br /&gt;
== LTE packet scheduler list ==&lt;br /&gt;
&lt;br /&gt;
Except PSS and TTA, each scheduler has two versions: frequency domain(FD) and time domain(FD). FD scheduler calculates priority metric on each RBG using subband cqi while TD scheduler calculates metric by wideband cqi. In other words, TD scheduler allocates all RBGs to one UE with highest priority metric.&lt;br /&gt;
&lt;br /&gt;
* 1, Maximum Throughput (MT)[1]: MT is a channel-aware/QoS-unaware scheduler. In MT, eNB allocates RBG k to UE j with largest instantaneous supportable data rate calculated by subband cqi on this RBG's frequency. &lt;br /&gt;
* 2, Blind Equal Throughput (BET)[1]: BET is a channel-unaware/QoS-unaware scheduler. It reaches the same throughput for all users, regardless of their radio channel quality. The priority is the reciprocal of past average throughput.&lt;br /&gt;
* 3, Throughput to Average (TTA)[1]: TTa is a channel-aware/QoS-unaware scheduler. TTA can be considered as a combination of MT and PF. The priority metric equals to expected datarate for UE j at time t on k-th RBG over wideband expected datarate for the UE j at time t. It guarantees that the best RBs are allocated to each user. NOTE: TTA can only be used in frequency domain.&lt;br /&gt;
* 4, Adaptive Token Bucket (TBFQ)[2][3]: TBFQ is a channel-aware/QoS-aware scheduler which derives from the leaky-bucket mechanism. It guarantees the fairness by utilizing a shared token bank. In addition, each flow has a token generation rate.The QoS is guaranteed by setting token generation rate to different values (such as Guarantee Bit Rate (GBR) in EPC bearer QoS parameter). In TBFQ, ﬂows belonging to UEs that are suffering from severe interference, and shadowing conditions in particular, will have a higher priority metric.&lt;br /&gt;
* 5, Priority set scheduling (PSS)[4]: PSS is a joint frequency domain and time domain scheduler. It is also a channel-aware/QoS-aware scheduler. It aims at providing a deﬁned Target Bit Rate (TBR) to all users. Specifically, in TD scheduler part, the scheduler first sets all available users into two sets based on the target bit rate (TBR): set 1: users below TBR, calculate priority metric in BET style; set 2: users above TBR, calculate priority metric in PF style; Users belonged to set 1 have higher priority than ones in set 2. Then TD scheduler will selects N UEs and forward them to FD scheduler which allocates RBGs k to UE j based on two algrorithms: PFsch and CoItA. Details of PFsch and CoItA can be found in [4] or LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
== Development methodology ==&lt;br /&gt;
&lt;br /&gt;
 for each scheduler s&lt;br /&gt;
    write design documentation of s&lt;br /&gt;
    find reference throughput for s&lt;br /&gt;
    implement s&lt;br /&gt;
    write test code for s&lt;br /&gt;
    write test documentation for s&lt;br /&gt;
    publish code of s in public repository&lt;br /&gt;
    submit code of s for review using the codereview tool&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
== Testing approach ==&lt;br /&gt;
&lt;br /&gt;
Because this GSoC project is an extension of current LTE MAC scheduler implementations, the test approach will follow the system test part in [6], test suites for each scheduler will be created as:&lt;br /&gt;
&lt;br /&gt;
* 1, compare the throughput performance obtained from simulation to the reference throughput. If their values are within a given tolerance, then test is passed.&lt;br /&gt;
    Test case: one eNB, multiple UEs&lt;br /&gt;
    For single test case, all UEs have same SINR (same distance to eNB)&lt;br /&gt;
    For different test case, each UE has different SINR (different distance to eNB)    and different number of UE&lt;br /&gt;
&lt;br /&gt;
* 2, check the fairness of scheduler: compare the throughput ratiro get from simulation to the reference throughput ratio    &lt;br /&gt;
   Test case: one eNB, multiple UEs&lt;br /&gt;
   For single test case, all UEs have different SINR different distance to eNB)     &lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
All schedulers developed are components of NS-3 LTE model. How to build and simulate LTE network can be found in here [http://www.nsnam.org/docs/release/3.14/models/singlehtml/index.html#document-lte]. If you want to use LTE MAC scheduler in this project, following codes can be added in your script:&lt;br /&gt;
&lt;br /&gt;
  FD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TTA scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TtaFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  PSS scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::PssFfMacScheduler&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
In addition, TBFQ and PSS have more parameters than other schedulers. You can define those parameters in following way:&lt;br /&gt;
&lt;br /&gt;
TBFQ scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;DebtLimit&amp;quot;, IntegerValue(yourvalue)); // default value -625000 bytes (-5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditLimit&amp;quot;, UintegerValue(yourvalue)); // default value 625000 bytes (5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;TokenPoolSize&amp;quot;, UintegerValue(yourvalue)); // default value 1 byte&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditableThreshold&amp;quot;, UintegerValue(yourvalue)); // default value 0&lt;br /&gt;
&lt;br /&gt;
PSS scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;nMux&amp;quot;, UIntegerValue(yourvalue)); // the maximum number of UE selected by TD scheduler&lt;br /&gt;
&lt;br /&gt;
= Deliverables =&lt;br /&gt;
&lt;br /&gt;
* LTE MAC scheduler code:  TD-MT,TF-MT; FD-TTA; D-BET,TF-BET; TD-TBFQ,TF-TBFQ; TD-PSS;&lt;br /&gt;
* Test suites of above schedulers;&lt;br /&gt;
* Documentation of above schedulers;&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
&lt;br /&gt;
* Week 1     May.21 -- May.27:  FD-MT scheduler &lt;br /&gt;
* Week 2     May.28 -- Jun.03:  TD-MT scheduler&lt;br /&gt;
* Week 3     Jun.4  -- Jun.10:  FD-TTA scheduler&lt;br /&gt;
* Week 4     Jun.11 -- Jun.17:  FD-BET scheduler&lt;br /&gt;
* Week 5     Jun.18 -- Jun.24:  FD-BET scheduler&lt;br /&gt;
* Week 6     Jun.25 -- Jul.01:  TD-BET scheduler&lt;br /&gt;
* Week 7     Jul.02 -- Jul.08:  Buffer&lt;br /&gt;
* Week 8     Jul.09 -- Jul.15:  Mid-term review&lt;br /&gt;
* Week 9     Jul.16 -- Jul.22:  FD-TBFQ scheduler&lt;br /&gt;
* Week 10    Jul.23 -- Jul.29:  TD-TBFQ scheduler&lt;br /&gt;
* Week 11    Jul.30 -- Aug.5:   FD-TBFQ scheduler&lt;br /&gt;
* Week 12    Aug.06 -- Aug.12:  TD-PSS scheduler&lt;br /&gt;
* Week 13    Aug.13 -- Aug.19:  Final review&lt;br /&gt;
&lt;br /&gt;
All schedulers will follow the procedures in Development methodology section.&lt;br /&gt;
&lt;br /&gt;
= Weekly Progress =&lt;br /&gt;
&lt;br /&gt;
* '''Week 1 : May.21 -- May.27'''&lt;br /&gt;
  * Complete code reading for LTE MAC scheduler and related part. Draw class relationship figure for MAC scheduler. Learning background knowledge of OFDMA&lt;br /&gt;
  * Write design documentation of FD-MT and scheduler framework &lt;br /&gt;
&lt;br /&gt;
* '''Week 2 : May.28 -- Jun.03'''&lt;br /&gt;
  * Complete FD-MT documentation and code and submit it to codereview.&lt;br /&gt;
  * Get review from mentors on FD-MT code. &lt;br /&gt;
&lt;br /&gt;
* '''Week 3 : Jun.4  -- Jun.10'''&lt;br /&gt;
  * Modify FD-MT documentation and code based on mentors' comment&lt;br /&gt;
  * Complete  TD-MT documentation and code and submit it to internal code review by mentors&lt;br /&gt;
  * Complete FD-TTA design &lt;br /&gt;
&lt;br /&gt;
* '''Week 4 : Jun.11 -- Jun.17'''&lt;br /&gt;
  * Complete TTA scheduler, including code, testing and documentation&lt;br /&gt;
  * Complete TD-BET and test it in the same SNR testcase.&lt;br /&gt;
  * Complete design document of FD-BET&lt;br /&gt;
&lt;br /&gt;
* '''Week 5 : Jun.18 -- Jun.24'''&lt;br /&gt;
  * Complete FD-BET, including code, same SNR test case &lt;br /&gt;
&lt;br /&gt;
* '''Week 6 : Jun.25 -- Jul.01'''&lt;br /&gt;
  * Modify the MT, TTA and BET codes based on naming style in NS-3&lt;br /&gt;
  * Propose a proof method for the user throughput calculation in FD-BET different SNR testcase  &lt;br /&gt;
&lt;br /&gt;
* '''Week 7 : Jul.02 -- Jul.08'''&lt;br /&gt;
  * Complete all FD-BET test cases and documentations&lt;br /&gt;
&lt;br /&gt;
* '''Week 8 : Jul.09 -- Jul.15'''&lt;br /&gt;
  * Midterm report [https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport]&lt;br /&gt;
&lt;br /&gt;
* '''Week 9 : Jul.16 -- Jul.22'''&lt;br /&gt;
  * Read four background papers of FBFQ scheduler in ATM, TDMA and LTE network&lt;br /&gt;
  * Complete first version of FD FBFQ scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 10 : Jul.23 -- Jul.29'''&lt;br /&gt;
  * Implement FD FBFQ scheduler for realistic application; several design issues faced, Unnecessary RBG allocation, GBR configuration and RLC packet header calculation&lt;br /&gt;
  * FD FBFQ testsuites for homogeneous traffic flows (traffic with the same sending rate) &lt;br /&gt;
&lt;br /&gt;
* '''Week 11 : Jul.30 -- Aug.5'''&lt;br /&gt;
  * Complete FD TBFQ scheduler, including scheduler codes and testsuites&lt;br /&gt;
  * Complete TD TBFQ scheduler, including scheduler codes and testsuites &lt;br /&gt;
&lt;br /&gt;
* '''Week 12 : Aug.06 -- Aug.12'''&lt;br /&gt;
  * Complete first version of PSS:&lt;br /&gt;
       TD scheduler: TD-BET + TD-PF&lt;br /&gt;
       FD scheduler: CoItA&lt;br /&gt;
  * Complete TBFQ document &lt;br /&gt;
&lt;br /&gt;
* '''Week 13 : Aug.13 -- Aug.19'''&lt;br /&gt;
  * Complete PFsch model in PSS FD scheduler&lt;br /&gt;
  * Complete testcase and document for PSS scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 14 : Aug.20 -- Aug.24'''&lt;br /&gt;
  * Final report&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to my two mentors, Nicola Baldo and Marco Miozzo, also thanks of Lalith Suresh, Tom Henderson and Biljana Bojovic. Thanks for their valuable comments and helps on my work.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
* [1] F.Capozzi, G.Piro L.A.Grieco, G.Boggia, P.Camarda, &amp;quot;Downlink Packet Scheduling in LTE Cellular Networks: Key Design Issues and a Survey&amp;quot;, IEEE Comm. Surveys and Tutorials, to appear.&lt;br /&gt;
* [2] F.A. Bokhari, H. Yanikomeroglu, W.K. Wong, M. Rahman, &amp;quot;Cross-Layer Resource Scheduling for Video Traffic in the Downlink of OFDMA-Based Wireless 4G Networks&amp;quot;,EURASIP J. Wirel. Commun. Netw., vol.2009, no.3, pp. 1-10, Jan. 2009.&lt;br /&gt;
* [3] W.K. Wong, H.Y. Tang, V.C.M, Leung, &amp;quot;Token bank fair queuing: a new scheduling algorithm for wireless multimedia services&amp;quot;, Int. J. Commun. Syst., vol.17, no.6, pp.591-614, Aug.2004.&lt;br /&gt;
* [4] G.Mongha, K.I. Pedersen, I.Z. Kovacs, P.E. Mogensen, &amp;quot; QoS Oriented Time and Frequency Domain Packet Schedulers for The UTRAN Long Term Evolution&amp;quot;, In Proc. IEEE VTC, 2008.&lt;br /&gt;
* [5] ]http://lena.cttc.es/manual/index.html&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6977</id>
		<title>GSOC2012LTEScheduling</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6977"/>
		<updated>2012-08-23T15:16:18Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LTE Scheduling with the FemtoForum MAC Scheduler API  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:nicola.baldo@cttc.es Nicola Baldo], [mailto:marco.miozzo@cttc.es Marco Miozzo]&lt;br /&gt;
* Abstract: The ns-3 LTE module released by the LENA project supports the FemtoForum MAC LTE MAC Scheduler Interface Specification for the implementation of MAC schedulers. Currently, only simple Round Robin and Proportional Fair schedulers are supported. This project will develop several main MAC schedulers for LTE. It also includes corresponding test suites and user manual. The complete proposal can be found in [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dizhizhou/1 here].&lt;br /&gt;
* Code: http://code.nsnam.org/dizhizhou/gsoc-lte-mac-scheduler/ns-3-dev&lt;br /&gt;
* Midterm report: https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests are multipath transmission for video streaming in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ here].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
&lt;br /&gt;
== LTE packet scheduler list ==&lt;br /&gt;
&lt;br /&gt;
Except PSS and TTA, each scheduler has two versions: frequency domain(FD) and time domain(FD). FD scheduler calculates priority metric on each RBG using subband cqi while TD scheduler calculates metric by wideband cqi. In other words, TD scheduler allocates all RBGs to one UE with highest priority metric.&lt;br /&gt;
&lt;br /&gt;
* 1, Maximum Throughput (MT)[1]: MT is a channel-aware/QoS-unaware scheduler. In MT, eNB allocates RBG k to UE j with largest instantaneous supportable data rate calculated by subband cqi on this RBG's frequency. &lt;br /&gt;
* 2, Blind Equal Throughput (BET)[1]: BET is a channel-unaware/QoS-unaware scheduler. It reaches the same throughput for all users, regardless of their radio channel quality. The priority is the reciprocal of past average throughput.&lt;br /&gt;
* 3, Throughput to Average (TTA)[1]: TTa is a channel-aware/QoS-unaware scheduler. TTA can be considered as a combination of MT and PF. The priority metric equals to expected datarate for UE j at time t on k-th RBG over wideband expected datarate for the UE j at time t. It guarantees that the best RBs are allocated to each user. NOTE: TTA can only be used in frequency domain.&lt;br /&gt;
* 4, Adaptive Token Bucket (TBFQ)[2][3]: TBFQ is a channel-aware/QoS-aware scheduler which derives from the leaky-bucket mechanism. It guarantees the fairness by utilizing a shared token bank. In addition, each flow has a token generation rate.The QoS is guaranteed by setting token generation rate to different values (such as Guarantee Bit Rate (GBR) in EPC bearer QoS parameter). In TBFQ, ﬂows belonging to UEs that are suffering from severe interference, and shadowing conditions in particular, will have a higher priority metric.&lt;br /&gt;
* 5, Priority set scheduling (PSS)[4]: PSS is a joint frequency domain and time domain scheduler. It is also a channel-aware/QoS-aware scheduler. It aims at providing a deﬁned Target Bit Rate (TBR) to all users. Specifically, in TD scheduler part, the scheduler first sets all available users into two sets based on the target bit rate (TBR): set 1: users below TBR, calculate priority metric in BET style; set 2: users above TBR, calculate priority metric in PF style; Users belonged to set 1 have higher priority than ones in set 2. Then TD scheduler will selects N UEs and forward them to FD scheduler which allocates RBGs k to UE j based on two algrorithms: PFsch and CoItA. Details of PFsch and CoItA can be found in [4] or LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
== Development methodology ==&lt;br /&gt;
&lt;br /&gt;
 for each scheduler s&lt;br /&gt;
    write design documentation of s&lt;br /&gt;
    find reference throughput for s&lt;br /&gt;
    implement s&lt;br /&gt;
    write test code for s&lt;br /&gt;
    write test documentation for s&lt;br /&gt;
    publish code of s in public repository&lt;br /&gt;
    submit code of s for review using the codereview tool&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
== Testing approach ==&lt;br /&gt;
&lt;br /&gt;
Because this GSoC project is an extension of current LTE MAC scheduler implementations, the test approach will follow the system test part in [6], test suites for each scheduler will be created as:&lt;br /&gt;
&lt;br /&gt;
* 1, compare the throughput performance obtained from simulation to the reference throughput. If their values are within a given tolerance, then test is passed.&lt;br /&gt;
    Test case: one eNB, multiple UEs&lt;br /&gt;
    For single test case, all UEs have same SINR (same distance to eNB)&lt;br /&gt;
    For different test case, each UE has different SINR (different distance to eNB)    and different number of UE&lt;br /&gt;
&lt;br /&gt;
* 2, check the fairness of scheduler: compare the throughput ratiro get from simulation to the reference throughput ratio    &lt;br /&gt;
   Test case: one eNB, multiple UEs&lt;br /&gt;
   For single test case, all UEs have different SINR different distance to eNB)     &lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
All schedulers developed are components of NS-3 LTE model. How to build and simulate LTE network can be found in here [http://www.nsnam.org/docs/release/3.14/models/singlehtml/index.html#document-lte]. If you want to use LTE MAC scheduler in this project, following codes can be added in your script:&lt;br /&gt;
&lt;br /&gt;
  FD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TTA scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TtaFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  PSS scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::PssFfMacScheduler&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
In addition, TBFQ and PSS have more parameters than other schedulers. You can define those parameters in following way:&lt;br /&gt;
&lt;br /&gt;
TBFQ scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;DebtLimit&amp;quot;, IntegerValue(yourvalue)); // default value -625000 bytes (-5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditLimit&amp;quot;, UintegerValue(yourvalue)); // default value 625000 bytes (5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;TokenPoolSize&amp;quot;, UintegerValue(yourvalue)); // default value 1 byte&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditableThreshold&amp;quot;, UintegerValue(yourvalue)); // default value 0&lt;br /&gt;
&lt;br /&gt;
PSS scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;nMux&amp;quot;, UIntegerValue(yourvalue)); // the maximum number of UE selected by TD scheduler&lt;br /&gt;
&lt;br /&gt;
= Deliverables =&lt;br /&gt;
&lt;br /&gt;
* LTE MAC scheduler code:  TD-MT,TF-MT; FD-TTA; D-BET,TF-BET; TD-TBFQ,TF-TBFQ; TD-PSS;&lt;br /&gt;
* Test suites of above schedulers;&lt;br /&gt;
* Documentation of above schedulers;&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
&lt;br /&gt;
* Week 1     May.21 -- May.27:  FD-MT scheduler &lt;br /&gt;
* Week 2     May.28 -- Jun.03:  TD-MT scheduler&lt;br /&gt;
* Week 3     Jun.4  -- Jun.10:  FD-TTA scheduler&lt;br /&gt;
* Week 4     Jun.11 -- Jun.17:  FD-BET scheduler&lt;br /&gt;
* Week 5     Jun.18 -- Jun.24:  FD-BET scheduler&lt;br /&gt;
* Week 6     Jun.25 -- Jul.01:  TD-BET scheduler&lt;br /&gt;
* Week 7     Jul.02 -- Jul.08:  Buffer&lt;br /&gt;
* Week 8     Jul.09 -- Jul.15:  Mid-term review&lt;br /&gt;
* Week 9     Jul.16 -- Jul.22:  FD-TBFQ scheduler&lt;br /&gt;
* Week 10    Jul.23 -- Jul.29:  TD-TBFQ scheduler&lt;br /&gt;
* Week 11    Jul.30 -- Aug.5:   FD-TBFQ scheduler&lt;br /&gt;
* Week 12    Aug.06 -- Aug.12:  TD-PSS scheduler&lt;br /&gt;
* Week 13    Aug.13 -- Aug.19:  Final review&lt;br /&gt;
&lt;br /&gt;
All schedulers will follow the procedures in Development methodology section.&lt;br /&gt;
&lt;br /&gt;
= Weekly Progress =&lt;br /&gt;
&lt;br /&gt;
* '''Week 1 : May.21 -- May.27'''&lt;br /&gt;
  * Complete code reading for LTE MAC scheduler and related part. Draw class relationship figure for MAC scheduler. Learning background knowledge of OFDMA&lt;br /&gt;
  * Write design documentation of FD-MT and scheduler framework &lt;br /&gt;
&lt;br /&gt;
* '''Week 2 : May.28 -- Jun.03'''&lt;br /&gt;
  * Complete FD-MT documentation and code and submit it to codereview.&lt;br /&gt;
  * Get review from mentors on FD-MT code. &lt;br /&gt;
&lt;br /&gt;
* '''Week 3 : Jun.4  -- Jun.10'''&lt;br /&gt;
  * Modify FD-MT documentation and code based on mentors' comment&lt;br /&gt;
  * Complete  TD-MT documentation and code and submit it to internal code review by mentors&lt;br /&gt;
  * Complete FD-TTA design &lt;br /&gt;
&lt;br /&gt;
* '''Week 4 : Jun.11 -- Jun.17'''&lt;br /&gt;
  * Complete TTA scheduler, including code, testing and documentation&lt;br /&gt;
  * Complete TD-BET and test it in the same SNR testcase.&lt;br /&gt;
  * Complete design document of FD-BET&lt;br /&gt;
&lt;br /&gt;
* '''Week 5 : Jun.18 -- Jun.24'''&lt;br /&gt;
  * Complete FD-BET, including code, same SNR test case &lt;br /&gt;
&lt;br /&gt;
* '''Week 6 : Jun.25 -- Jul.01'''&lt;br /&gt;
  * Modify the MT, TTA and BET codes based on naming style in NS-3&lt;br /&gt;
  * Propose a proof method for the user throughput calculation in FD-BET different SNR testcase  &lt;br /&gt;
&lt;br /&gt;
* '''Week 7 : Jul.02 -- Jul.08'''&lt;br /&gt;
  * Complete all FD-BET test cases and documentations&lt;br /&gt;
&lt;br /&gt;
* '''Week 8 : Jul.09 -- Jul.15'''&lt;br /&gt;
  * Midterm report [[https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport]]&lt;br /&gt;
&lt;br /&gt;
* '''Week 9 : Jul.16 -- Jul.22'''&lt;br /&gt;
  * Read four background papers of FBFQ scheduler in ATM, TDMA and LTE network&lt;br /&gt;
  * Complete first version of FD FBFQ scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 10 : Jul.23 -- Jul.29'''&lt;br /&gt;
  * Implement FD FBFQ scheduler for realistic application; several design issues faced, Unnecessary RBG allocation, GBR configuration and RLC packet header calculation&lt;br /&gt;
  * FD FBFQ testsuites for homogeneous traffic flows (traffic with the same sending rate) &lt;br /&gt;
&lt;br /&gt;
* '''Week 11 : Jul.30 -- Aug.5'''&lt;br /&gt;
  * Complete FD TBFQ scheduler, including scheduler codes and testsuites&lt;br /&gt;
  * Complete TD TBFQ scheduler, including scheduler codes and testsuites &lt;br /&gt;
&lt;br /&gt;
* '''Week 12 : Aug.06 -- Aug.12'''&lt;br /&gt;
  * Complete first version of PSS:&lt;br /&gt;
       TD scheduler: TD-BET + TD-PF&lt;br /&gt;
       FD scheduler: CoItA&lt;br /&gt;
  * Complete TBFQ document &lt;br /&gt;
&lt;br /&gt;
* '''Week 13 : Aug.13 -- Aug.19'''&lt;br /&gt;
  * Complete PFsch model in PSS FD scheduler&lt;br /&gt;
  * Complete testcase and document for PSS scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 14 : Aug.20 -- Aug.24'''&lt;br /&gt;
  * Final report&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to my two mentors, Nicola Baldo and Marco Miozzo, also thanks of Lalith Suresh, Tom Henderson and Biljana Bojovic. Thanks for their valuable comments and helps on my work.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
* [1] F.Capozzi, G.Piro L.A.Grieco, G.Boggia, P.Camarda, &amp;quot;Downlink Packet Scheduling in LTE Cellular Networks: Key Design Issues and a Survey&amp;quot;, IEEE Comm. Surveys and Tutorials, to appear.&lt;br /&gt;
* [2] F.A. Bokhari, H. Yanikomeroglu, W.K. Wong, M. Rahman, &amp;quot;Cross-Layer Resource Scheduling for Video Traffic in the Downlink of OFDMA-Based Wireless 4G Networks&amp;quot;,EURASIP J. Wirel. Commun. Netw., vol.2009, no.3, pp. 1-10, Jan. 2009.&lt;br /&gt;
* [3] W.K. Wong, H.Y. Tang, V.C.M, Leung, &amp;quot;Token bank fair queuing: a new scheduling algorithm for wireless multimedia services&amp;quot;, Int. J. Commun. Syst., vol.17, no.6, pp.591-614, Aug.2004.&lt;br /&gt;
* [4] G.Mongha, K.I. Pedersen, I.Z. Kovacs, P.E. Mogensen, &amp;quot; QoS Oriented Time and Frequency Domain Packet Schedulers for The UTRAN Long Term Evolution&amp;quot;, In Proc. IEEE VTC, 2008.&lt;br /&gt;
* [5] ]http://lena.cttc.es/manual/index.html&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6976</id>
		<title>GSOC2012LTEScheduling</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6976"/>
		<updated>2012-08-23T15:15:47Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* Usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LTE Scheduling with the FemtoForum MAC Scheduler API  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:nicola.baldo@cttc.es Nicola Baldo], [mailto:marco.miozzo@cttc.es Marco Miozzo]&lt;br /&gt;
* Abstract: The ns-3 LTE module released by the LENA project supports the FemtoForum MAC LTE MAC Scheduler Interface Specification for the implementation of MAC schedulers. Currently, only simple Round Robin and Proportional Fair schedulers are supported. This project will develop several main MAC schedulers for LTE. It also includes corresponding test suites and user manual. The complete proposal can be found in [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dizhizhou/1 here].&lt;br /&gt;
* Code: http://code.nsnam.org/dizhizhou/gsoc-lte-mac-scheduler/ns-3-dev&lt;br /&gt;
* Midterm report: https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests are multipath transmission for video streaming in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ here].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
&lt;br /&gt;
== LTE packet scheduler list ==&lt;br /&gt;
&lt;br /&gt;
Except PSS and TTA, each scheduler has two versions: frequency domain(FD) and time domain(FD). FD scheduler calculates priority metric on each RBG using subband cqi while TD scheduler calculates metric by wideband cqi. In other words, TD scheduler allocates all RBGs to one UE with highest priority metric.&lt;br /&gt;
&lt;br /&gt;
* 1, Maximum Throughput (MT)[1]: MT is a channel-aware/QoS-unaware scheduler. In MT, eNB allocates RBG k to UE j with largest instantaneous supportable data rate calculated by subband cqi on this RBG's frequency. &lt;br /&gt;
* 2, Blind Equal Throughput (BET)[1]: BET is a channel-unaware/QoS-unaware scheduler. It reaches the same throughput for all users, regardless of their radio channel quality. The priority is the reciprocal of past average throughput.&lt;br /&gt;
* 3, Throughput to Average (TTA)[1]: TTa is a channel-aware/QoS-unaware scheduler. TTA can be considered as a combination of MT and PF. The priority metric equals to expected datarate for UE j at time t on k-th RBG over wideband expected datarate for the UE j at time t. It guarantees that the best RBs are allocated to each user. NOTE: TTA can only be used in frequency domain.&lt;br /&gt;
* 4, Adaptive Token Bucket (TBFQ)[2][3]: TBFQ is a channel-aware/QoS-aware scheduler which derives from the leaky-bucket mechanism. It guarantees the fairness by utilizing a shared token bank. In addition, each flow has a token generation rate.The QoS is guaranteed by setting token generation rate to different values (such as Guarantee Bit Rate (GBR) in EPC bearer QoS parameter). In TBFQ, ﬂows belonging to UEs that are suffering from severe interference, and shadowing conditions in particular, will have a higher priority metric.&lt;br /&gt;
* 5, Priority set scheduling (PSS)[4]: PSS is a joint frequency domain and time domain scheduler. It is also a channel-aware/QoS-aware scheduler. It aims at providing a deﬁned Target Bit Rate (TBR) to all users. Specifically, in TD scheduler part, the scheduler first sets all available users into two sets based on the target bit rate (TBR): set 1: users below TBR, calculate priority metric in BET style; set 2: users above TBR, calculate priority metric in PF style; Users belonged to set 1 have higher priority than ones in set 2. Then TD scheduler will selects N UEs and forward them to FD scheduler which allocates RBGs k to UE j based on two algrorithms: PFsch and CoItA. Details of PFsch and CoItA can be found in [4] or LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
== Development methodology ==&lt;br /&gt;
&lt;br /&gt;
 for each scheduler s&lt;br /&gt;
    write design documentation of s&lt;br /&gt;
    find reference throughput for s&lt;br /&gt;
    implement s&lt;br /&gt;
    write test code for s&lt;br /&gt;
    write test documentation for s&lt;br /&gt;
    publish code of s in public repository&lt;br /&gt;
    submit code of s for review using the codereview tool&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
== Testing approach ==&lt;br /&gt;
&lt;br /&gt;
Because this GSoC project is an extension of current LTE MAC scheduler implementations, the test approach will follow the system test part in [6], test suites for each scheduler will be created as:&lt;br /&gt;
&lt;br /&gt;
* 1, compare the throughput performance obtained from simulation to the reference throughput. If their values are within a given tolerance, then test is passed.&lt;br /&gt;
    Test case: one eNB, multiple UEs&lt;br /&gt;
    For single test case, all UEs have same SINR (same distance to eNB)&lt;br /&gt;
    For different test case, each UE has different SINR (different distance to eNB)    and different number of UE&lt;br /&gt;
&lt;br /&gt;
* 2, check the fairness of scheduler: compare the throughput ratiro get from simulation to the reference throughput ratio    &lt;br /&gt;
   Test case: one eNB, multiple UEs&lt;br /&gt;
   For single test case, all UEs have different SINR different distance to eNB)     &lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
All schedulers developed are components of NS-3 LTE model. How to build and simulate LTE network can be found in here [http://www.nsnam.org/docs/release/3.14/models/singlehtml/index.html#document-lte]. If you want to use LTE MAC scheduler in this project, following codes can be added in your script:&lt;br /&gt;
&lt;br /&gt;
  FD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
  TTA scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TtaFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
  FD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  TD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
  PSS scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::PssFfMacScheduler&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
In addition, TBFQ and PSS have more parameters than other schedulers. You can define those parameters in following way:&lt;br /&gt;
&lt;br /&gt;
TBFQ scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;DebtLimit&amp;quot;, IntegerValue(yourvalue)); // default value -625000 bytes (-5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditLimit&amp;quot;, UintegerValue(yourvalue)); // default value 625000 bytes (5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;TokenPoolSize&amp;quot;, UintegerValue(yourvalue)); // default value 1 byte&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditableThreshold&amp;quot;, UintegerValue(yourvalue)); // default value 0&lt;br /&gt;
&lt;br /&gt;
PSS scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;nMux&amp;quot;, UIntegerValue(yourownvalue)); // the maximum number of UE selected by TD scheduler&lt;br /&gt;
&lt;br /&gt;
= Deliverables =&lt;br /&gt;
&lt;br /&gt;
* LTE MAC scheduler code:  TD-MT,TF-MT; FD-TTA; D-BET,TF-BET; TD-TBFQ,TF-TBFQ; TD-PSS;&lt;br /&gt;
* Test suites of above schedulers;&lt;br /&gt;
* Documentation of above schedulers;&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
&lt;br /&gt;
* Week 1     May.21 -- May.27:  FD-MT scheduler &lt;br /&gt;
* Week 2     May.28 -- Jun.03:  TD-MT scheduler&lt;br /&gt;
* Week 3     Jun.4  -- Jun.10:  FD-TTA scheduler&lt;br /&gt;
* Week 4     Jun.11 -- Jun.17:  FD-BET scheduler&lt;br /&gt;
* Week 5     Jun.18 -- Jun.24:  FD-BET scheduler&lt;br /&gt;
* Week 6     Jun.25 -- Jul.01:  TD-BET scheduler&lt;br /&gt;
* Week 7     Jul.02 -- Jul.08:  Buffer&lt;br /&gt;
* Week 8     Jul.09 -- Jul.15:  Mid-term review&lt;br /&gt;
* Week 9     Jul.16 -- Jul.22:  FD-TBFQ scheduler&lt;br /&gt;
* Week 10    Jul.23 -- Jul.29:  TD-TBFQ scheduler&lt;br /&gt;
* Week 11    Jul.30 -- Aug.5:   FD-TBFQ scheduler&lt;br /&gt;
* Week 12    Aug.06 -- Aug.12:  TD-PSS scheduler&lt;br /&gt;
* Week 13    Aug.13 -- Aug.19:  Final review&lt;br /&gt;
&lt;br /&gt;
All schedulers will follow the procedures in Development methodology section.&lt;br /&gt;
&lt;br /&gt;
= Weekly Progress =&lt;br /&gt;
&lt;br /&gt;
* '''Week 1 : May.21 -- May.27'''&lt;br /&gt;
  * Complete code reading for LTE MAC scheduler and related part. Draw class relationship figure for MAC scheduler. Learning background knowledge of OFDMA&lt;br /&gt;
  * Write design documentation of FD-MT and scheduler framework &lt;br /&gt;
&lt;br /&gt;
* '''Week 2 : May.28 -- Jun.03'''&lt;br /&gt;
  * Complete FD-MT documentation and code and submit it to codereview.&lt;br /&gt;
  * Get review from mentors on FD-MT code. &lt;br /&gt;
&lt;br /&gt;
* '''Week 3 : Jun.4  -- Jun.10'''&lt;br /&gt;
  * Modify FD-MT documentation and code based on mentors' comment&lt;br /&gt;
  * Complete  TD-MT documentation and code and submit it to internal code review by mentors&lt;br /&gt;
  * Complete FD-TTA design &lt;br /&gt;
&lt;br /&gt;
* '''Week 4 : Jun.11 -- Jun.17'''&lt;br /&gt;
  * Complete TTA scheduler, including code, testing and documentation&lt;br /&gt;
  * Complete TD-BET and test it in the same SNR testcase.&lt;br /&gt;
  * Complete design document of FD-BET&lt;br /&gt;
&lt;br /&gt;
* '''Week 5 : Jun.18 -- Jun.24'''&lt;br /&gt;
  * Complete FD-BET, including code, same SNR test case &lt;br /&gt;
&lt;br /&gt;
* '''Week 6 : Jun.25 -- Jul.01'''&lt;br /&gt;
  * Modify the MT, TTA and BET codes based on naming style in NS-3&lt;br /&gt;
  * Propose a proof method for the user throughput calculation in FD-BET different SNR testcase  &lt;br /&gt;
&lt;br /&gt;
* '''Week 7 : Jul.02 -- Jul.08'''&lt;br /&gt;
  * Complete all FD-BET test cases and documentations&lt;br /&gt;
&lt;br /&gt;
* '''Week 8 : Jul.09 -- Jul.15'''&lt;br /&gt;
  * Midterm report [[https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport]]&lt;br /&gt;
&lt;br /&gt;
* '''Week 9 : Jul.16 -- Jul.22'''&lt;br /&gt;
  * Read four background papers of FBFQ scheduler in ATM, TDMA and LTE network&lt;br /&gt;
  * Complete first version of FD FBFQ scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 10 : Jul.23 -- Jul.29'''&lt;br /&gt;
  * Implement FD FBFQ scheduler for realistic application; several design issues faced, Unnecessary RBG allocation, GBR configuration and RLC packet header calculation&lt;br /&gt;
  * FD FBFQ testsuites for homogeneous traffic flows (traffic with the same sending rate) &lt;br /&gt;
&lt;br /&gt;
* '''Week 11 : Jul.30 -- Aug.5'''&lt;br /&gt;
  * Complete FD TBFQ scheduler, including scheduler codes and testsuites&lt;br /&gt;
  * Complete TD TBFQ scheduler, including scheduler codes and testsuites &lt;br /&gt;
&lt;br /&gt;
* '''Week 12 : Aug.06 -- Aug.12'''&lt;br /&gt;
  * Complete first version of PSS:&lt;br /&gt;
       TD scheduler: TD-BET + TD-PF&lt;br /&gt;
       FD scheduler: CoItA&lt;br /&gt;
  * Complete TBFQ document &lt;br /&gt;
&lt;br /&gt;
* '''Week 13 : Aug.13 -- Aug.19'''&lt;br /&gt;
  * Complete PFsch model in PSS FD scheduler&lt;br /&gt;
  * Complete testcase and document for PSS scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 14 : Aug.20 -- Aug.24'''&lt;br /&gt;
  * Final report&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to my two mentors, Nicola Baldo and Marco Miozzo, also thanks of Lalith Suresh, Tom Henderson and Biljana Bojovic. Thanks for their valuable comments and helps on my work.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
* [1] F.Capozzi, G.Piro L.A.Grieco, G.Boggia, P.Camarda, &amp;quot;Downlink Packet Scheduling in LTE Cellular Networks: Key Design Issues and a Survey&amp;quot;, IEEE Comm. Surveys and Tutorials, to appear.&lt;br /&gt;
* [2] F.A. Bokhari, H. Yanikomeroglu, W.K. Wong, M. Rahman, &amp;quot;Cross-Layer Resource Scheduling for Video Traffic in the Downlink of OFDMA-Based Wireless 4G Networks&amp;quot;,EURASIP J. Wirel. Commun. Netw., vol.2009, no.3, pp. 1-10, Jan. 2009.&lt;br /&gt;
* [3] W.K. Wong, H.Y. Tang, V.C.M, Leung, &amp;quot;Token bank fair queuing: a new scheduling algorithm for wireless multimedia services&amp;quot;, Int. J. Commun. Syst., vol.17, no.6, pp.591-614, Aug.2004.&lt;br /&gt;
* [4] G.Mongha, K.I. Pedersen, I.Z. Kovacs, P.E. Mogensen, &amp;quot; QoS Oriented Time and Frequency Domain Packet Schedulers for The UTRAN Long Term Evolution&amp;quot;, In Proc. IEEE VTC, 2008.&lt;br /&gt;
* [5] ]http://lena.cttc.es/manual/index.html&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6975</id>
		<title>GSOC2012LTEScheduling</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6975"/>
		<updated>2012-08-23T15:15:19Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LTE Scheduling with the FemtoForum MAC Scheduler API  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:nicola.baldo@cttc.es Nicola Baldo], [mailto:marco.miozzo@cttc.es Marco Miozzo]&lt;br /&gt;
* Abstract: The ns-3 LTE module released by the LENA project supports the FemtoForum MAC LTE MAC Scheduler Interface Specification for the implementation of MAC schedulers. Currently, only simple Round Robin and Proportional Fair schedulers are supported. This project will develop several main MAC schedulers for LTE. It also includes corresponding test suites and user manual. The complete proposal can be found in [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dizhizhou/1 here].&lt;br /&gt;
* Code: http://code.nsnam.org/dizhizhou/gsoc-lte-mac-scheduler/ns-3-dev&lt;br /&gt;
* Midterm report: https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests are multipath transmission for video streaming in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ here].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
&lt;br /&gt;
== LTE packet scheduler list ==&lt;br /&gt;
&lt;br /&gt;
Except PSS and TTA, each scheduler has two versions: frequency domain(FD) and time domain(FD). FD scheduler calculates priority metric on each RBG using subband cqi while TD scheduler calculates metric by wideband cqi. In other words, TD scheduler allocates all RBGs to one UE with highest priority metric.&lt;br /&gt;
&lt;br /&gt;
* 1, Maximum Throughput (MT)[1]: MT is a channel-aware/QoS-unaware scheduler. In MT, eNB allocates RBG k to UE j with largest instantaneous supportable data rate calculated by subband cqi on this RBG's frequency. &lt;br /&gt;
* 2, Blind Equal Throughput (BET)[1]: BET is a channel-unaware/QoS-unaware scheduler. It reaches the same throughput for all users, regardless of their radio channel quality. The priority is the reciprocal of past average throughput.&lt;br /&gt;
* 3, Throughput to Average (TTA)[1]: TTa is a channel-aware/QoS-unaware scheduler. TTA can be considered as a combination of MT and PF. The priority metric equals to expected datarate for UE j at time t on k-th RBG over wideband expected datarate for the UE j at time t. It guarantees that the best RBs are allocated to each user. NOTE: TTA can only be used in frequency domain.&lt;br /&gt;
* 4, Adaptive Token Bucket (TBFQ)[2][3]: TBFQ is a channel-aware/QoS-aware scheduler which derives from the leaky-bucket mechanism. It guarantees the fairness by utilizing a shared token bank. In addition, each flow has a token generation rate.The QoS is guaranteed by setting token generation rate to different values (such as Guarantee Bit Rate (GBR) in EPC bearer QoS parameter). In TBFQ, ﬂows belonging to UEs that are suffering from severe interference, and shadowing conditions in particular, will have a higher priority metric.&lt;br /&gt;
* 5, Priority set scheduling (PSS)[4]: PSS is a joint frequency domain and time domain scheduler. It is also a channel-aware/QoS-aware scheduler. It aims at providing a deﬁned Target Bit Rate (TBR) to all users. Specifically, in TD scheduler part, the scheduler first sets all available users into two sets based on the target bit rate (TBR): set 1: users below TBR, calculate priority metric in BET style; set 2: users above TBR, calculate priority metric in PF style; Users belonged to set 1 have higher priority than ones in set 2. Then TD scheduler will selects N UEs and forward them to FD scheduler which allocates RBGs k to UE j based on two algrorithms: PFsch and CoItA. Details of PFsch and CoItA can be found in [4] or LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
== Development methodology ==&lt;br /&gt;
&lt;br /&gt;
 for each scheduler s&lt;br /&gt;
    write design documentation of s&lt;br /&gt;
    find reference throughput for s&lt;br /&gt;
    implement s&lt;br /&gt;
    write test code for s&lt;br /&gt;
    write test documentation for s&lt;br /&gt;
    publish code of s in public repository&lt;br /&gt;
    submit code of s for review using the codereview tool&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
== Testing approach ==&lt;br /&gt;
&lt;br /&gt;
Because this GSoC project is an extension of current LTE MAC scheduler implementations, the test approach will follow the system test part in [6], test suites for each scheduler will be created as:&lt;br /&gt;
&lt;br /&gt;
* 1, compare the throughput performance obtained from simulation to the reference throughput. If their values are within a given tolerance, then test is passed.&lt;br /&gt;
    Test case: one eNB, multiple UEs&lt;br /&gt;
    For single test case, all UEs have same SINR (same distance to eNB)&lt;br /&gt;
    For different test case, each UE has different SINR (different distance to eNB)    and different number of UE&lt;br /&gt;
&lt;br /&gt;
* 2, check the fairness of scheduler: compare the throughput ratiro get from simulation to the reference throughput ratio    &lt;br /&gt;
   Test case: one eNB, multiple UEs&lt;br /&gt;
   For single test case, all UEs have different SINR different distance to eNB)     &lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
All schedulers developed are components of NS-3 LTE model. How to build and simulate LTE network can be found in here [http://www.nsnam.org/docs/release/3.14/models/singlehtml/index.html#document-lte]. If you want to use LTE MAC scheduler in this project, following codes can be added in your script:&lt;br /&gt;
&lt;br /&gt;
FD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
TD-MT scheduler:   lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdMtFfMacScheduler&amp;quot;);&lt;br /&gt;
TTA scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TtaFfMacScheduler&amp;quot;);&lt;br /&gt;
FD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
TD-BET scheduler:  lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdBetFfMacScheduler&amp;quot;);&lt;br /&gt;
FD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::FdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
TD-TBFQ scheduler: lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::TdTbfqFfMacScheduler&amp;quot;);&lt;br /&gt;
PSS scheduler:     lteHelper-&amp;gt;SetSchedulerType (&amp;quot;ns3::PssFfMacScheduler&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
In addition, TBFQ and PSS have more parameters than other schedulers. You can define those parameters in following way:&lt;br /&gt;
&lt;br /&gt;
TBFQ scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;DebtLimit&amp;quot;, IntegerValue(yourvalue)); // default value -625000 bytes (-5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditLimit&amp;quot;, UintegerValue(yourvalue)); // default value 625000 bytes (5Mb)&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;TokenPoolSize&amp;quot;, UintegerValue(yourvalue)); // default value 1 byte&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;CreditableThreshold&amp;quot;, UintegerValue(yourvalue)); // default value 0&lt;br /&gt;
&lt;br /&gt;
PSS scheduler&lt;br /&gt;
&lt;br /&gt;
  Ptr&amp;lt;LteHelper&amp;gt; lteHelper = CreateObject&amp;lt;LteHelper&amp;gt; ();&lt;br /&gt;
  lteHelper-&amp;gt;SetSchedulerAttribute(&amp;quot;nMux&amp;quot;, UIntegerValue(yourownvalue)); // the maximum number of UE selected by TD scheduler&lt;br /&gt;
&lt;br /&gt;
= Deliverables =&lt;br /&gt;
&lt;br /&gt;
* LTE MAC scheduler code:  TD-MT,TF-MT; FD-TTA; D-BET,TF-BET; TD-TBFQ,TF-TBFQ; TD-PSS;&lt;br /&gt;
* Test suites of above schedulers;&lt;br /&gt;
* Documentation of above schedulers;&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
&lt;br /&gt;
* Week 1     May.21 -- May.27:  FD-MT scheduler &lt;br /&gt;
* Week 2     May.28 -- Jun.03:  TD-MT scheduler&lt;br /&gt;
* Week 3     Jun.4  -- Jun.10:  FD-TTA scheduler&lt;br /&gt;
* Week 4     Jun.11 -- Jun.17:  FD-BET scheduler&lt;br /&gt;
* Week 5     Jun.18 -- Jun.24:  FD-BET scheduler&lt;br /&gt;
* Week 6     Jun.25 -- Jul.01:  TD-BET scheduler&lt;br /&gt;
* Week 7     Jul.02 -- Jul.08:  Buffer&lt;br /&gt;
* Week 8     Jul.09 -- Jul.15:  Mid-term review&lt;br /&gt;
* Week 9     Jul.16 -- Jul.22:  FD-TBFQ scheduler&lt;br /&gt;
* Week 10    Jul.23 -- Jul.29:  TD-TBFQ scheduler&lt;br /&gt;
* Week 11    Jul.30 -- Aug.5:   FD-TBFQ scheduler&lt;br /&gt;
* Week 12    Aug.06 -- Aug.12:  TD-PSS scheduler&lt;br /&gt;
* Week 13    Aug.13 -- Aug.19:  Final review&lt;br /&gt;
&lt;br /&gt;
All schedulers will follow the procedures in Development methodology section.&lt;br /&gt;
&lt;br /&gt;
= Weekly Progress =&lt;br /&gt;
&lt;br /&gt;
* '''Week 1 : May.21 -- May.27'''&lt;br /&gt;
  * Complete code reading for LTE MAC scheduler and related part. Draw class relationship figure for MAC scheduler. Learning background knowledge of OFDMA&lt;br /&gt;
  * Write design documentation of FD-MT and scheduler framework &lt;br /&gt;
&lt;br /&gt;
* '''Week 2 : May.28 -- Jun.03'''&lt;br /&gt;
  * Complete FD-MT documentation and code and submit it to codereview.&lt;br /&gt;
  * Get review from mentors on FD-MT code. &lt;br /&gt;
&lt;br /&gt;
* '''Week 3 : Jun.4  -- Jun.10'''&lt;br /&gt;
  * Modify FD-MT documentation and code based on mentors' comment&lt;br /&gt;
  * Complete  TD-MT documentation and code and submit it to internal code review by mentors&lt;br /&gt;
  * Complete FD-TTA design &lt;br /&gt;
&lt;br /&gt;
* '''Week 4 : Jun.11 -- Jun.17'''&lt;br /&gt;
  * Complete TTA scheduler, including code, testing and documentation&lt;br /&gt;
  * Complete TD-BET and test it in the same SNR testcase.&lt;br /&gt;
  * Complete design document of FD-BET&lt;br /&gt;
&lt;br /&gt;
* '''Week 5 : Jun.18 -- Jun.24'''&lt;br /&gt;
  * Complete FD-BET, including code, same SNR test case &lt;br /&gt;
&lt;br /&gt;
* '''Week 6 : Jun.25 -- Jul.01'''&lt;br /&gt;
  * Modify the MT, TTA and BET codes based on naming style in NS-3&lt;br /&gt;
  * Propose a proof method for the user throughput calculation in FD-BET different SNR testcase  &lt;br /&gt;
&lt;br /&gt;
* '''Week 7 : Jul.02 -- Jul.08'''&lt;br /&gt;
  * Complete all FD-BET test cases and documentations&lt;br /&gt;
&lt;br /&gt;
* '''Week 8 : Jul.09 -- Jul.15'''&lt;br /&gt;
  * Midterm report [[https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport]]&lt;br /&gt;
&lt;br /&gt;
* '''Week 9 : Jul.16 -- Jul.22'''&lt;br /&gt;
  * Read four background papers of FBFQ scheduler in ATM, TDMA and LTE network&lt;br /&gt;
  * Complete first version of FD FBFQ scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 10 : Jul.23 -- Jul.29'''&lt;br /&gt;
  * Implement FD FBFQ scheduler for realistic application; several design issues faced, Unnecessary RBG allocation, GBR configuration and RLC packet header calculation&lt;br /&gt;
  * FD FBFQ testsuites for homogeneous traffic flows (traffic with the same sending rate) &lt;br /&gt;
&lt;br /&gt;
* '''Week 11 : Jul.30 -- Aug.5'''&lt;br /&gt;
  * Complete FD TBFQ scheduler, including scheduler codes and testsuites&lt;br /&gt;
  * Complete TD TBFQ scheduler, including scheduler codes and testsuites &lt;br /&gt;
&lt;br /&gt;
* '''Week 12 : Aug.06 -- Aug.12'''&lt;br /&gt;
  * Complete first version of PSS:&lt;br /&gt;
       TD scheduler: TD-BET + TD-PF&lt;br /&gt;
       FD scheduler: CoItA&lt;br /&gt;
  * Complete TBFQ document &lt;br /&gt;
&lt;br /&gt;
* '''Week 13 : Aug.13 -- Aug.19'''&lt;br /&gt;
  * Complete PFsch model in PSS FD scheduler&lt;br /&gt;
  * Complete testcase and document for PSS scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 14 : Aug.20 -- Aug.24'''&lt;br /&gt;
  * Final report&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to my two mentors, Nicola Baldo and Marco Miozzo, also thanks of Lalith Suresh, Tom Henderson and Biljana Bojovic. Thanks for their valuable comments and helps on my work.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
* [1] F.Capozzi, G.Piro L.A.Grieco, G.Boggia, P.Camarda, &amp;quot;Downlink Packet Scheduling in LTE Cellular Networks: Key Design Issues and a Survey&amp;quot;, IEEE Comm. Surveys and Tutorials, to appear.&lt;br /&gt;
* [2] F.A. Bokhari, H. Yanikomeroglu, W.K. Wong, M. Rahman, &amp;quot;Cross-Layer Resource Scheduling for Video Traffic in the Downlink of OFDMA-Based Wireless 4G Networks&amp;quot;,EURASIP J. Wirel. Commun. Netw., vol.2009, no.3, pp. 1-10, Jan. 2009.&lt;br /&gt;
* [3] W.K. Wong, H.Y. Tang, V.C.M, Leung, &amp;quot;Token bank fair queuing: a new scheduling algorithm for wireless multimedia services&amp;quot;, Int. J. Commun. Syst., vol.17, no.6, pp.591-614, Aug.2004.&lt;br /&gt;
* [4] G.Mongha, K.I. Pedersen, I.Z. Kovacs, P.E. Mogensen, &amp;quot; QoS Oriented Time and Frequency Domain Packet Schedulers for The UTRAN Long Term Evolution&amp;quot;, In Proc. IEEE VTC, 2008.&lt;br /&gt;
* [5] ]http://lena.cttc.es/manual/index.html&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6974</id>
		<title>GSOC2012LTEScheduling</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6974"/>
		<updated>2012-08-23T14:56:35Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LTE Scheduling with the FemtoForum MAC Scheduler API  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:nicola.baldo@cttc.es Nicola Baldo], [mailto:marco.miozzo@cttc.es Marco Miozzo]&lt;br /&gt;
* Abstract: The ns-3 LTE module released by the LENA project supports the FemtoForum MAC LTE MAC Scheduler Interface Specification for the implementation of MAC schedulers. Currently, only simple Round Robin and Proportional Fair schedulers are supported. This project will develop several main MAC schedulers for LTE. It also includes corresponding test suites and user manual. The complete proposal can be found in [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dizhizhou/1 here].&lt;br /&gt;
* Code: http://code.nsnam.org/dizhizhou/gsoc-lte-mac-scheduler/ns-3-dev&lt;br /&gt;
* Midterm report: https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests are multipath transmission for video streaming in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ here].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
&lt;br /&gt;
== LTE packet scheduler list ==&lt;br /&gt;
&lt;br /&gt;
Except PSS and TTA, each scheduler has two versions: frequency domain(FD) and time domain(FD). FD scheduler calculates priority metric on each RBG using subband cqi while TD scheduler calculates metric by wideband cqi. In other words, TD scheduler allocates all RBGs to one UE with highest priority metric.&lt;br /&gt;
&lt;br /&gt;
* 1, Maximum Throughput (MT)[1]: MT is a channel-aware/QoS-unaware scheduler. In MT, eNB allocates RBG k to UE j with largest instantaneous supportable data rate calculated by subband cqi on this RBG's frequency. &lt;br /&gt;
* 2, Blind Equal Throughput (BET)[1]: BET is a channel-unaware/QoS-unaware scheduler. It reaches the same throughput for all users, regardless of their radio channel quality. The priority is the reciprocal of past average throughput.&lt;br /&gt;
* 3, Throughput to Average (TTA)[1]: TTa is a channel-aware/QoS-unaware scheduler. TTA can be considered as a combination of MT and PF. The priority metric equals to expected datarate for UE j at time t on k-th RBG over wideband expected datarate for the UE j at time t. It guarantees that the best RBs are allocated to each user. NOTE: TTA can only be used in frequency domain.&lt;br /&gt;
* 4, Adaptive Token Bucket (TBFQ)[2][3]: TBFQ is a channel-aware/QoS-aware scheduler which derives from the leaky-bucket mechanism. It guarantees the fairness by utilizing a shared token bank. In addition, each flow has a token generation rate.The QoS is guaranteed by setting token generation rate to different values (such as Guarantee Bit Rate (GBR) in EPC bearer QoS parameter). In TBFQ, ﬂows belonging to UEs that are suffering from severe interference, and shadowing conditions in particular, will have a higher priority metric.&lt;br /&gt;
* 5, Priority set scheduling (PSS)[4]: PSS is a joint frequency domain and time domain scheduler. It is also a channel-aware/QoS-aware scheduler. It aims at providing a deﬁned Target Bit Rate (TBR) to all users. Specifically, in TD scheduler part, the scheduler first sets all available users into two sets based on the target bit rate (TBR): set 1: users below TBR, calculate priority metric in BET style; set 2: users above TBR, calculate priority metric in PF style; Users belonged to set 1 have higher priority than ones in set 2. Then TD scheduler will selects N UEs and forward them to FD scheduler which allocates RBGs k to UE j based on two algrorithms: PFsch and CoItA. Details of PFsch and CoItA can be found in [4] or LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
== Development methodology ==&lt;br /&gt;
&lt;br /&gt;
 for each scheduler s&lt;br /&gt;
    write design documentation of s&lt;br /&gt;
    find reference throughput for s&lt;br /&gt;
    implement s&lt;br /&gt;
    write test code for s&lt;br /&gt;
    write test documentation for s&lt;br /&gt;
    publish code of s in public repository&lt;br /&gt;
    submit code of s for review using the codereview tool&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
== Testing approach ==&lt;br /&gt;
&lt;br /&gt;
Because this GSoC project is an extension of current LTE MAC scheduler implementations, the test approach will follow the system test part in [6], test suites for each scheduler will be created as:&lt;br /&gt;
&lt;br /&gt;
* 1, compare the throughput performance obtained from simulation to the reference throughput. If their values are within a given tolerance, then test is passed.&lt;br /&gt;
    Test case: one eNB, multiple UEs&lt;br /&gt;
    For single test case, all UEs have same SINR (same distance to eNB)&lt;br /&gt;
    For different test case, each UE has different SINR (different distance to eNB)    and different number of UE&lt;br /&gt;
&lt;br /&gt;
* 2, check the fairness of scheduler: compare the throughput ratiro get from simulation to the reference throughput ratio    &lt;br /&gt;
   Test case: one eNB, multiple UEs&lt;br /&gt;
   For single test case, all UEs have different SINR different distance to eNB)     &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Deliverables =&lt;br /&gt;
&lt;br /&gt;
* LTE MAC scheduler code:  TD-MT,TF-MT; FD-TTA; D-BET,TF-BET; TD-TBFQ,TF-TBFQ; TD-PSS;&lt;br /&gt;
* Test suites of above schedulers;&lt;br /&gt;
* Documentation of above schedulers;&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
&lt;br /&gt;
* Week 1     May.21 -- May.27:  FD-MT scheduler &lt;br /&gt;
* Week 2     May.28 -- Jun.03:  TD-MT scheduler&lt;br /&gt;
* Week 3     Jun.4  -- Jun.10:  FD-TTA scheduler&lt;br /&gt;
* Week 4     Jun.11 -- Jun.17:  FD-BET scheduler&lt;br /&gt;
* Week 5     Jun.18 -- Jun.24:  FD-BET scheduler&lt;br /&gt;
* Week 6     Jun.25 -- Jul.01:  TD-BET scheduler&lt;br /&gt;
* Week 7     Jul.02 -- Jul.08:  Buffer&lt;br /&gt;
* Week 8     Jul.09 -- Jul.15:  Mid-term review&lt;br /&gt;
* Week 9     Jul.16 -- Jul.22:  FD-TBFQ scheduler&lt;br /&gt;
* Week 10    Jul.23 -- Jul.29:  TD-TBFQ scheduler&lt;br /&gt;
* Week 11    Jul.30 -- Aug.5:   FD-TBFQ scheduler&lt;br /&gt;
* Week 12    Aug.06 -- Aug.12:  TD-PSS scheduler&lt;br /&gt;
* Week 13    Aug.13 -- Aug.19:  Final review&lt;br /&gt;
&lt;br /&gt;
All schedulers will follow the procedures in Development methodology section.&lt;br /&gt;
&lt;br /&gt;
= Weekly Progress =&lt;br /&gt;
&lt;br /&gt;
* '''Week 1 : May.21 -- May.27'''&lt;br /&gt;
  * Complete code reading for LTE MAC scheduler and related part. Draw class relationship figure for MAC scheduler. Learning background knowledge of OFDMA&lt;br /&gt;
  * Write design documentation of FD-MT and scheduler framework &lt;br /&gt;
&lt;br /&gt;
* '''Week 2 : May.28 -- Jun.03'''&lt;br /&gt;
  * Complete FD-MT documentation and code and submit it to codereview.&lt;br /&gt;
  * Get review from mentors on FD-MT code. &lt;br /&gt;
&lt;br /&gt;
* '''Week 3 : Jun.4  -- Jun.10'''&lt;br /&gt;
  * Modify FD-MT documentation and code based on mentors' comment&lt;br /&gt;
  * Complete  TD-MT documentation and code and submit it to internal code review by mentors&lt;br /&gt;
  * Complete FD-TTA design &lt;br /&gt;
&lt;br /&gt;
* '''Week 4 : Jun.11 -- Jun.17'''&lt;br /&gt;
  * Complete TTA scheduler, including code, testing and documentation&lt;br /&gt;
  * Complete TD-BET and test it in the same SNR testcase.&lt;br /&gt;
  * Complete design document of FD-BET&lt;br /&gt;
&lt;br /&gt;
* '''Week 5 : Jun.18 -- Jun.24'''&lt;br /&gt;
  * Complete FD-BET, including code, same SNR test case &lt;br /&gt;
&lt;br /&gt;
* '''Week 6 : Jun.25 -- Jul.01'''&lt;br /&gt;
  * Modify the MT, TTA and BET codes based on naming style in NS-3&lt;br /&gt;
  * Propose a proof method for the user throughput calculation in FD-BET different SNR testcase  &lt;br /&gt;
&lt;br /&gt;
* '''Week 7 : Jul.02 -- Jul.08'''&lt;br /&gt;
  * Complete all FD-BET test cases and documentations&lt;br /&gt;
&lt;br /&gt;
* '''Week 8 : Jul.09 -- Jul.15'''&lt;br /&gt;
  * Midterm report [[https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport]]&lt;br /&gt;
&lt;br /&gt;
* '''Week 9 : Jul.16 -- Jul.22'''&lt;br /&gt;
  * Read four background papers of FBFQ scheduler in ATM, TDMA and LTE network&lt;br /&gt;
  * Complete first version of FD FBFQ scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 10 : Jul.23 -- Jul.29'''&lt;br /&gt;
  * Implement FD FBFQ scheduler for realistic application; several design issues faced, Unnecessary RBG allocation, GBR configuration and RLC packet header calculation&lt;br /&gt;
  * FD FBFQ testsuites for homogeneous traffic flows (traffic with the same sending rate) &lt;br /&gt;
&lt;br /&gt;
* '''Week 11 : Jul.30 -- Aug.5'''&lt;br /&gt;
  * Complete FD TBFQ scheduler, including scheduler codes and testsuites&lt;br /&gt;
  * Complete TD TBFQ scheduler, including scheduler codes and testsuites &lt;br /&gt;
&lt;br /&gt;
* '''Week 12 : Aug.06 -- Aug.12'''&lt;br /&gt;
  * Complete first version of PSS:&lt;br /&gt;
       TD scheduler: TD-BET + TD-PF&lt;br /&gt;
       FD scheduler: CoItA&lt;br /&gt;
  * Complete TBFQ document &lt;br /&gt;
&lt;br /&gt;
* '''Week 13 : Aug.13 -- Aug.19'''&lt;br /&gt;
  * Complete PFsch model in PSS FD scheduler&lt;br /&gt;
  * Complete testcase and document for PSS scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 14 : Aug.20 -- Aug.24'''&lt;br /&gt;
  * Final report&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to my two mentors, Nicola Baldo and Marco Miozzo, also thanks of Lalith Suresh, Tom Henderson and Biljana Bojovic. Thanks for their valuable comments and helps on my work.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
* [1] F.Capozzi, G.Piro L.A.Grieco, G.Boggia, P.Camarda, &amp;quot;Downlink Packet Scheduling in LTE Cellular Networks: Key Design Issues and a Survey&amp;quot;, IEEE Comm. Surveys and Tutorials, to appear.&lt;br /&gt;
* [2] F.A. Bokhari, H. Yanikomeroglu, W.K. Wong, M. Rahman, &amp;quot;Cross-Layer Resource Scheduling for Video Traffic in the Downlink of OFDMA-Based Wireless 4G Networks&amp;quot;,EURASIP J. Wirel. Commun. Netw., vol.2009, no.3, pp. 1-10, Jan. 2009.&lt;br /&gt;
* [3] W.K. Wong, H.Y. Tang, V.C.M, Leung, &amp;quot;Token bank fair queuing: a new scheduling algorithm for wireless multimedia services&amp;quot;, Int. J. Commun. Syst., vol.17, no.6, pp.591-614, Aug.2004.&lt;br /&gt;
* [4] G.Mongha, K.I. Pedersen, I.Z. Kovacs, P.E. Mogensen, &amp;quot; QoS Oriented Time and Frequency Domain Packet Schedulers for The UTRAN Long Term Evolution&amp;quot;, In Proc. IEEE VTC, 2008.&lt;br /&gt;
* [5] ]http://lena.cttc.es/manual/index.html&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6973</id>
		<title>GSOC2012LTEScheduling</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSOC2012LTEScheduling&amp;diff=6973"/>
		<updated>2012-08-23T14:47:52Z</updated>

		<summary type="html">&lt;p&gt;Dizhizhou: /* LTE packet scheduler list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= LTE Scheduling with the FemtoForum MAC Scheduler API  =&lt;br /&gt;
&lt;br /&gt;
* Student: [mailto:q5frc@unb.ca Dizhi Zhou]&lt;br /&gt;
* Mentors: : [mailto:nicola.baldo@cttc.es Nicola Baldo], [mailto:marco.miozzo@cttc.es Marco Miozzo]&lt;br /&gt;
* Abstract: The ns-3 LTE module released by the LENA project supports the FemtoForum MAC LTE MAC Scheduler Interface Specification for the implementation of MAC schedulers. Currently, only simple Round Robin and Proportional Fair schedulers are supported. This project will develop several main MAC schedulers for LTE. It also includes corresponding test suites and user manual. The complete proposal can be found in [http://www.google-melange.com/gsoc/proposal/review/google/gsoc2012/dizhizhou/1 here].&lt;br /&gt;
* Code: http://code.nsnam.org/dizhizhou/gsoc-lte-mac-scheduler/ns-3-dev&lt;br /&gt;
* Midterm report: https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport&lt;br /&gt;
* About me: I'm a Ph.D. student in the University of New Brunswick, Canada. My research interests are multipath transmission for video streaming in cooperative wireless network and network simulation. You can find more information about my research in [http://www.cs.unb.ca/~q5frc/ here].&lt;br /&gt;
&lt;br /&gt;
= Approach =&lt;br /&gt;
&lt;br /&gt;
== LTE packet scheduler list ==&lt;br /&gt;
&lt;br /&gt;
Except PSS and TTA, each scheduler has two versions: frequency domain(FD) and time domain(FD). FD scheduler calculates priority metric on each RBG using subband cqi while TD scheduler calculates metric by wideband cqi. In other words, TD scheduler allocates all RBGs to one UE with highest priority metric.&lt;br /&gt;
&lt;br /&gt;
* 1, Maximum Throughput (MT)[1]: MT is a channel-aware/QoS-unaware scheduler. In MT, eNB allocates RBG k to UE j with largest instantaneous supportable data rate calculated by subband cqi on this RBG's frequency. &lt;br /&gt;
* 2, Blind Equal Throughput (BET)[1]: BET is a channel-unaware/QoS-unaware scheduler. It reaches the same throughput for all users, regardless of their radio channel quality. The priority is the reciprocal of past average throughput.&lt;br /&gt;
* 3, Throughput to Average (TTA)[1]: TTa is a channel-aware/QoS-unaware scheduler. TTA can be considered as a combination of MT and PF. The priority metric equals to expected datarate for UE j at time t on k-th RBG over wideband expected datarate for the UE j at time t. It guarantees that the best RBs are allocated to each user. NOTE: TTA can only be used in frequency domain.&lt;br /&gt;
* 4, Adaptive Token Bucket (TBFQ)[2][3]: TBFQ is a channel-aware/QoS-aware scheduler which derives from the leaky-bucket mechanism. It guarantees the fairness by utilizing a shared token bank. In addition, each flow has a token generation rate.The QoS is guaranteed by setting token generation rate to different values (such as Guarantee Bit Rate (GBR) in EPC bearer QoS parameter). In TBFQ, ﬂows belonging to UEs that are suffering from severe interference, and shadowing conditions in particular, will have a higher priority metric.&lt;br /&gt;
* 5, Priority set scheduling (PSS)[4]: PSS is a joint frequency domain and time domain scheduler. It is also a channel-aware/QoS-aware scheduler. It aims at providing a deﬁned Target Bit Rate (TBR) to all users. Specifically, in TD scheduler part, the scheduler first sets all available users into two sets based on the target bit rate (TBR): set 1: users below TBR, calculate priority metric in BET style; set 2: users above TBR, calculate priority metric in PF style; Users belonged to set 1 have higher priority than ones in set 2. Then TD scheduler will selects N UEs and forward them to FD scheduler which allocates RBGs k to UE j based on two algrorithms: PFsch and CoItA. Details of PFsch and CoItA can be found in [4] or LTE manual[5].&lt;br /&gt;
&lt;br /&gt;
== Scheduler strcture == &lt;br /&gt;
&lt;br /&gt;
Each scheduler has two versions: time-domain and frequency domain. The scheduler for LTE consists of two parts: TD-PS and FD-PS. TD-PS can select which user can be served for one TTI based on varied priority metrics, such as RR, PF, BET and so on. The output of TD-PS is a group of user, called scheduling candidate set (SCS). Then FD-PS will allocate RBs for those users (the SCS will also be limited by the number of PDCCHs).  It seems that, in the current implementation of RR and PF schedulers for LENA LTE, only FD-PS is used.  Therefore, I plan to define a TD-PS + FD-PS scheduler structure in this GSoC project. In related work, some researchers compare the performance of using different priority metric combinations for above scheduler structure. For example, in paper [2], authors evaluate the performance of TD-PF/FD-PF, TD-BET/TD-TTA, TD-MT/FD-MT.&lt;br /&gt;
&lt;br /&gt;
In this GSoC project, one of my idea is that I can develop TD-PS and FD-PS independently with varied priority metrics. Users can selcet their own combinations based on the available PS models.&lt;br /&gt;
&lt;br /&gt;
== Development methodology ==&lt;br /&gt;
&lt;br /&gt;
 for each scheduler s&lt;br /&gt;
    write design documentation of s&lt;br /&gt;
    find reference throughput for s&lt;br /&gt;
    implement s&lt;br /&gt;
    write test code for s&lt;br /&gt;
    write test documentation for s&lt;br /&gt;
    publish code of s in public repository&lt;br /&gt;
    submit code of s for review using the codereview tool&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
== Testing approach ==&lt;br /&gt;
&lt;br /&gt;
Becasue this GSoC project is an extension of current LTE MAC scheduler implementations, the test approach will follow the system test part in [6], test suites for each scheduler will be created as:&lt;br /&gt;
&lt;br /&gt;
* 1, compare the throughput performance obtained from simulation to the reference throughput. If their values are within a given tolerance, then test is passed.&lt;br /&gt;
    Test case: one eNB, multiple UEs&lt;br /&gt;
    For single test case, all UEs have same SINR (same distance to eNB)&lt;br /&gt;
    For different test case, each UE has different SINR (different distance to eNB)    and different number of UE&lt;br /&gt;
&lt;br /&gt;
* 2, check the fairness of scheduler: compare the throughput ratiro get from simulation to the reference throughput ratio    &lt;br /&gt;
   Test case: one eNB, multiple UEs&lt;br /&gt;
   For single test case, all UEs have different SINR different distance to eNB)     &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Deliverables =&lt;br /&gt;
&lt;br /&gt;
* LTE MAC scheduler:  TD-MT,TF-MT; FD-TTA; D-BET,TF-BET; TD-TBFQ,TF-TBFQ; TD-PSS;&lt;br /&gt;
* Test suites of above schedulers;&lt;br /&gt;
* Documentation of above schedulers;&lt;br /&gt;
&lt;br /&gt;
= Plan =&lt;br /&gt;
&lt;br /&gt;
* Week 1     May.21 -- May.27:  FD-MT scheduler &lt;br /&gt;
* Week 2     May.28 -- Jun.03:  TD-MT scheduler&lt;br /&gt;
* Week 3     Jun.4  -- Jun.10:  FD-TTA scheduler&lt;br /&gt;
* Week 4     Jun.11 -- Jun.17:  FD-BET scheduler&lt;br /&gt;
* Week 5     Jun.18 -- Jun.24:  TD-BET scheduler&lt;br /&gt;
* Week 6     Jun.25 -- Jul.01:  FD-PO scheduler&lt;br /&gt;
* Week 7     Jul.02 -- Jul.08:  TD-PO scheduler&lt;br /&gt;
* Week 8     Jul.09 -- Jul.15:  Mid-term report&lt;br /&gt;
* Week 9     Jul.16 -- Jul.22:  FD-TBFQ scheduler&lt;br /&gt;
* Week 10    Jul.23 -- Jul.29:  TD-TBFQ scheduler&lt;br /&gt;
* Week 11    Jul.30 -- Aug.5:   FD-TBFQ scheduler&lt;br /&gt;
* Week 12    Aug.06 -- Aug.12:  TD-PSS scheduler&lt;br /&gt;
* Week 13    Aug.13 -- Aug.19:  Final report&lt;br /&gt;
&lt;br /&gt;
All schedulers will follow the procedures in Development methodology section.&lt;br /&gt;
&lt;br /&gt;
= Weekly Progress =&lt;br /&gt;
&lt;br /&gt;
* '''Week 1 : May.21 -- May.27'''&lt;br /&gt;
  * Complete code reading for LTE MAC scheduler and related part. Draw class relationship figure for MAC scheduler. Learning background knowledge of OFDMA&lt;br /&gt;
  * Write design documentation of FD-MT (including reference throughput) and scheduler framework &lt;br /&gt;
&lt;br /&gt;
* '''Week 2 : May.28 -- Jun.03'''&lt;br /&gt;
  * Complete FD-MT documentation and code and submit it to codereview.&lt;br /&gt;
  * Get review from mentors on FD-MT code. &lt;br /&gt;
&lt;br /&gt;
* '''Week 3 : Jun.4  -- Jun.10'''&lt;br /&gt;
  * Modify FD-MT documentation and code based on mentors' comment&lt;br /&gt;
  * Complete  TD-MT documentation and code and submit it to internal code review by mentors&lt;br /&gt;
  * Complete FD-TTA design &lt;br /&gt;
&lt;br /&gt;
* '''Week 4 : Jun.11 -- Jun.17'''&lt;br /&gt;
  * Complete TTA scheduler, including code, testing and documentation&lt;br /&gt;
  * Complete TD-BET and test it in the same SINR testcase.&lt;br /&gt;
  * Complete design document of FD-BET&lt;br /&gt;
&lt;br /&gt;
* '''Week 5 : Jun.18 -- Jun.24'''&lt;br /&gt;
  * Complete FD-BET, including code, test case 1&lt;br /&gt;
&lt;br /&gt;
* '''Week 6 : Jun.25 -- Jul.01'''&lt;br /&gt;
  * Modify the MT, TTA and BET codes based on naming style in NS-3&lt;br /&gt;
  * Propose a proof method for the user throughput calculation in FD-BET testcase 2 &lt;br /&gt;
&lt;br /&gt;
* '''Week 7 : Jul.02 -- Jul.08'''&lt;br /&gt;
  * Complete all FD-BET test case and documentation&lt;br /&gt;
&lt;br /&gt;
* '''Week 8 : Jul.09 -- Jul.15'''&lt;br /&gt;
  * Midterm report [[https://www.nsnam.org/wiki/index.php/GSOC2012LTEScheduling/MidTermReport]]&lt;br /&gt;
&lt;br /&gt;
* '''Week 9 : Jul.16 -- Jul.22'''&lt;br /&gt;
  * Read four background papers of FBFQ scheduler in ATM, TDMA and LTE network&lt;br /&gt;
  * Complete first version of FD FBFQ scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 10 : Jul.23 -- Jul.29'''&lt;br /&gt;
  * Implement FD FBFQ scheduler for realistic application; several design issues faced, Unnecessary RBG allocation, GBR configuration and RLC packet header calculation&lt;br /&gt;
  * FD FBFQ testsuites for homogeneous traffic flows (traffic with the same sending rate) &lt;br /&gt;
&lt;br /&gt;
* '''Week 11 : Jul.30 -- Aug.5'''&lt;br /&gt;
  * Complete FD TBFQ scheduler, including scheduler codes and testsuites&lt;br /&gt;
  * Complete TD TBFQ scheduler, including scheduler codes and testsuites &lt;br /&gt;
&lt;br /&gt;
* '''Week 12 : Aug.06 -- Aug.12'''&lt;br /&gt;
  * Complete first version of PSS:&lt;br /&gt;
       TD scheduler: TD-BET + TD-PF&lt;br /&gt;
       FD scheduler: CoItA&lt;br /&gt;
  * Complete TBFQ document &lt;br /&gt;
&lt;br /&gt;
* '''Week 13 : Aug.13 -- Aug.19'''&lt;br /&gt;
  * Complete FD-PFsch model in PSS scheduler&lt;br /&gt;
  * Complete testcase and document for PSS scheduler &lt;br /&gt;
&lt;br /&gt;
* '''Week 14 : Aug.20 -- Aug.24'''&lt;br /&gt;
  * Final report&lt;br /&gt;
&lt;br /&gt;
=Acknowledgement=&lt;br /&gt;
I would like to express my special thanks of gratitude to my two mentors, Nicola Baldo and Marco Miozzo, also thanks of Lalith Suresh, Tom Henderson and Biljana Bojovic. Thanks for their valuable comments and helps on my work.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
&lt;br /&gt;
* [1] F.Capozzi, G.Piro L.A.Grieco, G.Boggia, P.Camarda, &amp;quot;Downlink Packet Scheduling in LTE Cellular Networks: Key Design Issues and a Survey&amp;quot;, IEEE Comm. Surveys and Tutorials, to appear.&lt;br /&gt;
* [2] F.A. Bokhari, H. Yanikomeroglu, W.K. Wong, M. Rahman, &amp;quot;Cross-Layer Resource Scheduling for Video Traffic in the Downlink of OFDMA-Based Wireless 4G Networks&amp;quot;,EURASIP J. Wirel. Commun. Netw., vol.2009, no.3, pp. 1-10, Jan. 2009.&lt;br /&gt;
* [3] W.K. Wong, H.Y. Tang, V.C.M, Leung, &amp;quot;Token bank fair queuing: a new scheduling algorithm for wireless multimedia services&amp;quot;, Int. J. Commun. Syst., vol.17, no.6, pp.591-614, Aug.2004.&lt;br /&gt;
* [4] G.Mongha, K.I. Pedersen, I.Z. Kovacs, P.E. Mogensen, &amp;quot; QoS Oriented Time and Frequency Domain Packet Schedulers for The UTRAN Long Term Evolution&amp;quot;, In Proc. IEEE VTC, 2008.&lt;br /&gt;
* [5] ]http://lena.cttc.es/manual/index.html&lt;/div&gt;</summary>
		<author><name>Dizhizhou</name></author>
	</entry>
</feed>