<?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=Jude.niroshan</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=Jude.niroshan"/>
	<link rel="alternate" type="text/html" href="https://www.nsnam.org/wiki/Special:Contributions/Jude.niroshan"/>
	<updated>2026-05-07T12:09:40Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11241</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11241"/>
		<updated>2018-07-15T04:43:38Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Trust calculation algorithm */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
Trust value will be calculated based on different routing parameters''(rreq, rply, err, etc)'' or routing metrics''(bandwidth, cost, etc)''. Therefore, trust will become a routing metric which can be used to determine the optimal route for forwarding packets. Eventually trust value can be considered as a security factor for making the routing decision.&lt;br /&gt;
&lt;br /&gt;
== Administer trust values ==&lt;br /&gt;
There is a separate new table to hold the trust values in each node within the network. Trust values in ad-hoc networks will have no affect on the routing table. &lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
&lt;br /&gt;
=== Trust Table ===&lt;br /&gt;
Similar to routing table, there will an additional table called ''trust table.'' It is required to have a trust table per each node within the network. Trust framework has a trust table which has columns of ''Address, Trust value, Timestamp''. Each row in the trust table represent a trust record for directly connected ''(1 hop)'' nodes for a considering node. One row in &amp;lt;code&amp;gt;trust-table.h&amp;lt;/code&amp;gt; is represented by &amp;lt;code&amp;gt;trust-entry.h&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
Users can extend &amp;lt;code&amp;gt;trust-entry&amp;lt;/code&amp;gt; object and add additional columns as they wish. This will give great flexibility over adding more attributes for the trust table.&lt;br /&gt;
&lt;br /&gt;
=== Trust calculation algorithm ===&lt;br /&gt;
Almost all the research papers published have different algorithms for trust calculation. Therefore, the framework has allowed any trust calculation algorithm to work by simply defining how the calculation should work. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;simple-aodv-trust-handler&amp;lt;/code&amp;gt; is proper example usage of trust calculation of the trust framework. &amp;lt;code&amp;gt;trust-handler&amp;lt;/code&amp;gt; is the abstract class which has &amp;lt;code&amp;gt;CalcuateTrust()&amp;lt;/code&amp;gt; method. This method must be implemented in a concrete class.&lt;br /&gt;
&lt;br /&gt;
=== Architecture ===&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simply extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;br /&gt;
&lt;br /&gt;
# Documentation and added more description about the trust framework&lt;br /&gt;
# Modified the aodv-routing-protocol.cc to collect metrics for the trust calculation&lt;br /&gt;
&lt;br /&gt;
== Week 7 (June 25 - July 02) ==&lt;br /&gt;
&lt;br /&gt;
# Re-designed the architecture for the trust framework as we have concerns about changing the protocol classes&lt;br /&gt;
# New promiscuous callback function considered to collect the metrics for trust value calculation&lt;br /&gt;
&lt;br /&gt;
== Week 8 (July 03 - July 10) ==&lt;br /&gt;
&lt;br /&gt;
# Created a simple simulation with a simple promiscuous callback to collect the metrics for trust calculation&lt;br /&gt;
# Removed the boolean flag which is unnecessary code. (We will decide whether to switch to trust tables if we have a trust table for a given node)&lt;br /&gt;
&lt;br /&gt;
== Week 9 (July 10 - July 17) ==&lt;br /&gt;
&lt;br /&gt;
# Re-designed the trust framework architecture as follows:&lt;br /&gt;
[[File:Updated_trust_framework_uml.jpeg|1000px]]&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11240</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11240"/>
		<updated>2018-07-15T04:39:15Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Trust Table */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
Trust value will be calculated based on different routing parameters''(rreq, rply, err, etc)'' or routing metrics''(bandwidth, cost, etc)''. Therefore, trust will become a routing metric which can be used to determine the optimal route for forwarding packets. Eventually trust value can be considered as a security factor for making the routing decision.&lt;br /&gt;
&lt;br /&gt;
== Administer trust values ==&lt;br /&gt;
There is a separate new table to hold the trust values in each node within the network. Trust values in ad-hoc networks will have no affect on the routing table. &lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
&lt;br /&gt;
=== Trust Table ===&lt;br /&gt;
Similar to routing table, there will an additional table called ''trust table.'' It is required to have a trust table per each node within the network. Trust framework has a trust table which has columns of ''Address, Trust value, Timestamp''. Each row in the trust table represent a trust record for directly connected ''(1 hop)'' nodes for a considering node. One row in &amp;lt;code&amp;gt;trust-table.h&amp;lt;/code&amp;gt; is represented by &amp;lt;code&amp;gt;trust-entry.h&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
Users can extend &amp;lt;code&amp;gt;trust-entry&amp;lt;/code&amp;gt; object and add additional columns as they wish. This will give great flexibility over adding more attributes for the trust table.&lt;br /&gt;
&lt;br /&gt;
=== Trust calculation algorithm ===&lt;br /&gt;
Almost all the research papers published have different algorithms for trust calculation. Therefore, the framework will allow the users to define their own algorithm for the trust calculation. &lt;br /&gt;
&lt;br /&gt;
By default, there is a generic trust calculation defined in &amp;lt;code&amp;gt;abstract-trust-calculation.h&amp;lt;/code&amp;gt;. Users can extend that class and define their own algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Architecture ===&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simply extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;br /&gt;
&lt;br /&gt;
# Documentation and added more description about the trust framework&lt;br /&gt;
# Modified the aodv-routing-protocol.cc to collect metrics for the trust calculation&lt;br /&gt;
&lt;br /&gt;
== Week 7 (June 25 - July 02) ==&lt;br /&gt;
&lt;br /&gt;
# Re-designed the architecture for the trust framework as we have concerns about changing the protocol classes&lt;br /&gt;
# New promiscuous callback function considered to collect the metrics for trust value calculation&lt;br /&gt;
&lt;br /&gt;
== Week 8 (July 03 - July 10) ==&lt;br /&gt;
&lt;br /&gt;
# Created a simple simulation with a simple promiscuous callback to collect the metrics for trust calculation&lt;br /&gt;
# Removed the boolean flag which is unnecessary code. (We will decide whether to switch to trust tables if we have a trust table for a given node)&lt;br /&gt;
&lt;br /&gt;
== Week 9 (July 10 - July 17) ==&lt;br /&gt;
&lt;br /&gt;
# Re-designed the trust framework architecture as follows:&lt;br /&gt;
[[File:Updated_trust_framework_uml.jpeg|1000px]]&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11239</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11239"/>
		<updated>2018-07-15T04:38:52Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Trust Table */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
Trust value will be calculated based on different routing parameters''(rreq, rply, err, etc)'' or routing metrics''(bandwidth, cost, etc)''. Therefore, trust will become a routing metric which can be used to determine the optimal route for forwarding packets. Eventually trust value can be considered as a security factor for making the routing decision.&lt;br /&gt;
&lt;br /&gt;
== Administer trust values ==&lt;br /&gt;
There is a separate new table to hold the trust values in each node within the network. Trust values in ad-hoc networks will have no affect on the routing table. &lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
&lt;br /&gt;
=== Trust Table ===&lt;br /&gt;
Similar to routing table, there will an additional table called ''trust table.'' It is required to have a trust table per each node within the network. Trust framework has a trust table which has columns of ''Address, Trust value, Timestamp''. Each row in the trust table represent a trust record for directly connected ''(1 hop)'' nodes for a considering node. One row in &amp;lt;code&amp;gt;trust-table.h&amp;lt;/code&amp;gt; is represented by &amp;lt;code&amp;gt;trust-entry.h&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
Users can extend &amp;lt;code&amp;gt;trust-entry&amp;lt;/code&amp;gt; object and add additional columns as they wish. This will give great flexibility over adding more attributes for the trust table.&lt;br /&gt;
&lt;br /&gt;
=== Trust calculation algorithm ===&lt;br /&gt;
Almost all the research papers published have different algorithms for trust calculation. Therefore, the framework will allow the users to define their own algorithm for the trust calculation. &lt;br /&gt;
&lt;br /&gt;
By default, there is a generic trust calculation defined in &amp;lt;code&amp;gt;abstract-trust-calculation.h&amp;lt;/code&amp;gt;. Users can extend that class and define their own algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Architecture ===&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simply extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;br /&gt;
&lt;br /&gt;
# Documentation and added more description about the trust framework&lt;br /&gt;
# Modified the aodv-routing-protocol.cc to collect metrics for the trust calculation&lt;br /&gt;
&lt;br /&gt;
== Week 7 (June 25 - July 02) ==&lt;br /&gt;
&lt;br /&gt;
# Re-designed the architecture for the trust framework as we have concerns about changing the protocol classes&lt;br /&gt;
# New promiscuous callback function considered to collect the metrics for trust value calculation&lt;br /&gt;
&lt;br /&gt;
== Week 8 (July 03 - July 10) ==&lt;br /&gt;
&lt;br /&gt;
# Created a simple simulation with a simple promiscuous callback to collect the metrics for trust calculation&lt;br /&gt;
# Removed the boolean flag which is unnecessary code. (We will decide whether to switch to trust tables if we have a trust table for a given node)&lt;br /&gt;
&lt;br /&gt;
== Week 9 (July 10 - July 17) ==&lt;br /&gt;
&lt;br /&gt;
# Re-designed the trust framework architecture as follows:&lt;br /&gt;
[[File:Updated_trust_framework_uml.jpeg|1000px]]&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11238</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11238"/>
		<updated>2018-07-15T03:48:01Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* What is Trust value */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
Trust value will be calculated based on different routing parameters''(rreq, rply, err, etc)'' or routing metrics''(bandwidth, cost, etc)''. Therefore, trust will become a routing metric which can be used to determine the optimal route for forwarding packets. Eventually trust value can be considered as a security factor for making the routing decision.&lt;br /&gt;
&lt;br /&gt;
== Administer trust values ==&lt;br /&gt;
There is a separate new table to hold the trust values in each node within the network. Trust values in ad-hoc networks will have no affect on the routing table. &lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
&lt;br /&gt;
=== Trust Table ===&lt;br /&gt;
Similar to routing table, there will an additional table called ''trust table.'' It is required to have a trust table per each node within the network. Trust framework has an abstract trust table which has columns of ''Address, Trust value, Timestamp''. Each row in the trust table represent a trust record for directly connected ''(1 hop)'' nodes for a considering node. One row in &amp;lt;code&amp;gt;abstract-trust-table.h&amp;lt;/code&amp;gt; is represented by &amp;lt;code&amp;gt;abstract-trust-entry.h&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
Users can extend &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object and add additional columns as they wish. This will give great flexibility over adding more attributes for the trust calculation algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Trust calculation algorithm ===&lt;br /&gt;
Almost all the research papers published have different algorithms for trust calculation. Therefore, the framework will allow the users to define their own algorithm for the trust calculation. &lt;br /&gt;
&lt;br /&gt;
By default, there is a generic trust calculation defined in &amp;lt;code&amp;gt;abstract-trust-calculation.h&amp;lt;/code&amp;gt;. Users can extend that class and define their own algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Architecture ===&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simply extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;br /&gt;
&lt;br /&gt;
# Documentation and added more description about the trust framework&lt;br /&gt;
# Modified the aodv-routing-protocol.cc to collect metrics for the trust calculation&lt;br /&gt;
&lt;br /&gt;
== Week 7 (June 25 - July 02) ==&lt;br /&gt;
&lt;br /&gt;
# Re-designed the architecture for the trust framework as we have concerns about changing the protocol classes&lt;br /&gt;
# New promiscuous callback function considered to collect the metrics for trust value calculation&lt;br /&gt;
&lt;br /&gt;
== Week 8 (July 03 - July 10) ==&lt;br /&gt;
&lt;br /&gt;
# Created a simple simulation with a simple promiscuous callback to collect the metrics for trust calculation&lt;br /&gt;
# Removed the boolean flag which is unnecessary code. (We will decide whether to switch to trust tables if we have a trust table for a given node)&lt;br /&gt;
&lt;br /&gt;
== Week 9 (July 10 - July 17) ==&lt;br /&gt;
&lt;br /&gt;
# Re-designed the trust framework architecture as follows:&lt;br /&gt;
[[File:Updated_trust_framework_uml.jpeg|1000px]]&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=File:Updated_trust_framework_uml.jpeg&amp;diff=11237</id>
		<title>File:Updated trust framework uml.jpeg</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=File:Updated_trust_framework_uml.jpeg&amp;diff=11237"/>
		<updated>2018-07-15T03:40:36Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11236</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11236"/>
		<updated>2018-07-15T03:39:50Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
Trust value will be calculated based on different routing parameters''(rreq, rply, err, etc)'' or routing metrics''(bandwidth, cost, etc)''. Therefore, trust will become a routing metric which can be used to determine the optimal route for forwarding packets. Eventually trust value can be considered as a security factor for making the routing decision.&lt;br /&gt;
&lt;br /&gt;
'''Default trust calculation''' in the framework has only considered ''interaction count.'' If someone wants to consider more parameters''(rreq, rply, err, etc)'' for trust calculation, trust table can be modified accordingly.&lt;br /&gt;
&lt;br /&gt;
== Administer trust values ==&lt;br /&gt;
There is a separate new table to hold the trust values in each node within the network. Trust values in ad-hoc networks will have no affect on the routing table. &lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
&lt;br /&gt;
=== Trust Table ===&lt;br /&gt;
Similar to routing table, there will an additional table called ''trust table.'' It is required to have a trust table per each node within the network. Trust framework has an abstract trust table which has columns of ''Address, Trust value, Timestamp''. Each row in the trust table represent a trust record for directly connected ''(1 hop)'' nodes for a considering node. One row in &amp;lt;code&amp;gt;abstract-trust-table.h&amp;lt;/code&amp;gt; is represented by &amp;lt;code&amp;gt;abstract-trust-entry.h&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
Users can extend &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object and add additional columns as they wish. This will give great flexibility over adding more attributes for the trust calculation algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Trust calculation algorithm ===&lt;br /&gt;
Almost all the research papers published have different algorithms for trust calculation. Therefore, the framework will allow the users to define their own algorithm for the trust calculation. &lt;br /&gt;
&lt;br /&gt;
By default, there is a generic trust calculation defined in &amp;lt;code&amp;gt;abstract-trust-calculation.h&amp;lt;/code&amp;gt;. Users can extend that class and define their own algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Architecture ===&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simply extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;br /&gt;
&lt;br /&gt;
# Documentation and added more description about the trust framework&lt;br /&gt;
# Modified the aodv-routing-protocol.cc to collect metrics for the trust calculation&lt;br /&gt;
&lt;br /&gt;
== Week 7 (June 25 - July 02) ==&lt;br /&gt;
&lt;br /&gt;
# Re-designed the architecture for the trust framework as we have concerns about changing the protocol classes&lt;br /&gt;
# New promiscuous callback function considered to collect the metrics for trust value calculation&lt;br /&gt;
&lt;br /&gt;
== Week 8 (July 03 - July 10) ==&lt;br /&gt;
&lt;br /&gt;
# Created a simple simulation with a simple promiscuous callback to collect the metrics for trust calculation&lt;br /&gt;
# Removed the boolean flag which is unnecessary code. (We will decide whether to switch to trust tables if we have a trust table for a given node)&lt;br /&gt;
&lt;br /&gt;
== Week 9 (July 10 - July 17) ==&lt;br /&gt;
&lt;br /&gt;
# Re-designed the trust framework architecture as follows:&lt;br /&gt;
[[File:Updated_trust_framework_uml.jpeg|1000px]]&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11195</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11195"/>
		<updated>2018-07-09T09:21:58Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: Updated weekly progress&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
Trust value will be calculated based on different routing parameters''(rreq, rply, err, etc)'' or routing metrics''(bandwidth, cost, etc)''. Therefore, trust will become a routing metric which can be used to determine the optimal route for forwarding packets. Eventually trust value can be considered as a security factor for making the routing decision.&lt;br /&gt;
&lt;br /&gt;
'''Default trust calculation''' in the framework has only considered ''interaction count.'' If someone wants to consider more parameters''(rreq, rply, err, etc)'' for trust calculation, trust table can be modified accordingly.&lt;br /&gt;
&lt;br /&gt;
== Administer trust values ==&lt;br /&gt;
There is a separate new table to hold the trust values in each node within the network. Trust values in ad-hoc networks will have no affect on the routing table. &lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
&lt;br /&gt;
=== Trust Table ===&lt;br /&gt;
Similar to routing table, there will an additional table called ''trust table.'' It is required to have a trust table per each node within the network. Trust framework has an abstract trust table which has columns of ''Address, Trust value, Timestamp''. Each row in the trust table represent a trust record for directly connected ''(1 hop)'' nodes for a considering node. One row in &amp;lt;code&amp;gt;abstract-trust-table.h&amp;lt;/code&amp;gt; is represented by &amp;lt;code&amp;gt;abstract-trust-entry.h&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
Users can extend &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object and add additional columns as they wish. This will give great flexibility over adding more attributes for the trust calculation algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Trust calculation algorithm ===&lt;br /&gt;
Almost all the research papers published have different algorithms for trust calculation. Therefore, the framework will allow the users to define their own algorithm for the trust calculation. &lt;br /&gt;
&lt;br /&gt;
By default, there is a generic trust calculation defined in &amp;lt;code&amp;gt;abstract-trust-calculation.h&amp;lt;/code&amp;gt;. Users can extend that class and define their own algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Scheduler task ===&lt;br /&gt;
There will be a new scheduler task to update the trust values in the trust table. This will involve the trust table attributes and feed them into the trust calculation algorithm and finally '''update the trust value''' in the trust table. Users can change the '''scheduler timer value'''. By default the timer value is set to 5 seconds.&lt;br /&gt;
&lt;br /&gt;
=== Broadcasting malicious nodes === &lt;br /&gt;
Identifying malicious nodes''(for e.g.: black hole nodes, grey hole nodes, etc.)'' in the network is a fundamental requirement in any trust based protocols. This will increase the security of the network as well as the reliability of the routes. Scheduler task is capable of identifying the malicious nodes by scanning the trust table. &lt;br /&gt;
&lt;br /&gt;
Once a malicious node is identified, it should notify it to the network. This will reflect that all nodes in the network are synchronized about the malicious nodes within the network. It will be helpful when making the best route to forward the packet.&lt;br /&gt;
&lt;br /&gt;
There will be a new broadcast message define in the framework''(trust framework)''. This will be  used to notify the malicious nodes within the network.&lt;br /&gt;
&lt;br /&gt;
=== Architecture ===&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simply extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;br /&gt;
&lt;br /&gt;
# Documentation and added more description about the trust framework&lt;br /&gt;
# Modified the aodv-routing-protocol.cc to collect metrics for the trust calculation&lt;br /&gt;
&lt;br /&gt;
== Week 7 (June 25 - July 02) ==&lt;br /&gt;
&lt;br /&gt;
# Re-designed the architecture for the trust framework as we have concerns about changing the protocol classes&lt;br /&gt;
# New promiscuous callback function considered to collect the metrics for trust value calculation&lt;br /&gt;
&lt;br /&gt;
== Week 8 (July 03 - July 10) ==&lt;br /&gt;
&lt;br /&gt;
# Created a simple simulation with a simple promiscuous callback to collect the metrics for trust calculation&lt;br /&gt;
# Removed the boolean flag which is unnecessary code. (We will decide whether to switch to trust tables if we have a trust table for a given node)&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11182</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11182"/>
		<updated>2018-06-26T12:03:04Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Week 6 (June 18 - June 24) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
Trust value will be calculated based on different routing parameters''(rreq, rply, err, etc)'' or routing metrics''(bandwidth, cost, etc)''. Therefore, trust will become a routing metric which can be used to determine the optimal route for forwarding packets. Eventually trust value can be considered as a security factor for making the routing decision.&lt;br /&gt;
&lt;br /&gt;
'''Default trust calculation''' in the framework has only considered ''interaction count.'' If someone wants to consider more parameters''(rreq, rply, err, etc)'' for trust calculation, trust table can be modified accordingly.&lt;br /&gt;
&lt;br /&gt;
== Administer trust values ==&lt;br /&gt;
There is a separate new table to hold the trust values in each node within the network. Trust values in ad-hoc networks will have no affect on the routing table. &lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
&lt;br /&gt;
=== Trust Table ===&lt;br /&gt;
Similar to routing table, there will an additional table called ''trust table.'' It is required to have a trust table per each node within the network. Trust framework has an abstract trust table which has columns of ''Address, Trust value, Timestamp''. Each row in the trust table represent a trust record for directly connected ''(1 hop)'' nodes for a considering node. One row in &amp;lt;code&amp;gt;abstract-trust-table.h&amp;lt;/code&amp;gt; is represented by &amp;lt;code&amp;gt;abstract-trust-entry.h&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
Users can extend &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object and add additional columns as they wish. This will give great flexibility over adding more attributes for the trust calculation algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Trust calculation algorithm ===&lt;br /&gt;
Almost all the research papers published have different algorithms for trust calculation. Therefore, the framework will allow the users to define their own algorithm for the trust calculation. &lt;br /&gt;
&lt;br /&gt;
By default, there is a generic trust calculation defined in &amp;lt;code&amp;gt;abstract-trust-calculation.h&amp;lt;/code&amp;gt;. Users can extend that class and define their own algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Scheduler task ===&lt;br /&gt;
There will be a new scheduler task to update the trust values in the trust table. This will involve the trust table attributes and feed them into the trust calculation algorithm and finally '''update the trust value''' in the trust table. Users can change the '''scheduler timer value'''. By default the timer value is set to 5 seconds.&lt;br /&gt;
&lt;br /&gt;
=== Broadcasting malicious nodes === &lt;br /&gt;
Identifying malicious nodes''(for e.g.: black hole nodes, grey hole nodes, etc.)'' in the network is a fundamental requirement in any trust based protocols. This will increase the security of the network as well as the reliability of the routes. Scheduler task is capable of identifying the malicious nodes by scanning the trust table. &lt;br /&gt;
&lt;br /&gt;
Once a malicious node is identified, it should notify it to the network. This will reflect that all nodes in the network are synchronized about the malicious nodes within the network. It will be helpful when making the best route to forward the packet.&lt;br /&gt;
&lt;br /&gt;
There will be a new broadcast message define in the framework''(trust framework)''. This will be  used to notify the malicious nodes within the network.&lt;br /&gt;
&lt;br /&gt;
=== Architecture ===&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simply extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;br /&gt;
&lt;br /&gt;
# Documentation and added more description about the trust framework&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11169</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11169"/>
		<updated>2018-06-23T11:37:23Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
Trust value will be calculated based on different routing parameters''(rreq, rply, err, etc)'' or routing metrics''(bandwidth, cost, etc)''. Therefore, trust will become a routing metric which can be used to determine the optimal route for forwarding packets. Eventually trust value can be considered as a security factor for making the routing decision.&lt;br /&gt;
&lt;br /&gt;
'''Default trust calculation''' in the framework has only considered ''interaction count.'' If someone wants to consider more parameters''(rreq, rply, err, etc)'' for trust calculation, trust table can be modified accordingly.&lt;br /&gt;
&lt;br /&gt;
== Administer trust values ==&lt;br /&gt;
There is a separate new table to hold the trust values in each node within the network. Trust values in ad-hoc networks will have no affect on the routing table. &lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
&lt;br /&gt;
=== Trust Table ===&lt;br /&gt;
Similar to routing table, there will an additional table called ''trust table.'' It is required to have a trust table per each node within the network. Trust framework has an abstract trust table which has columns of ''Address, Trust value, Timestamp''. Each row in the trust table represent a trust record for directly connected ''(1 hop)'' nodes for a considering node. One row in &amp;lt;code&amp;gt;abstract-trust-table.h&amp;lt;/code&amp;gt; is represented by &amp;lt;code&amp;gt;abstract-trust-entry.h&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
Users can extend &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object and add additional columns as they wish. This will give great flexibility over adding more attributes for the trust calculation algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Trust calculation algorithm ===&lt;br /&gt;
Almost all the research papers published have different algorithms for trust calculation. Therefore, the framework will allow the users to define their own algorithm for the trust calculation. &lt;br /&gt;
&lt;br /&gt;
By default, there is a generic trust calculation defined in &amp;lt;code&amp;gt;abstract-trust-calculation.h&amp;lt;/code&amp;gt;. Users can extend that class and define their own algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Scheduler task ===&lt;br /&gt;
There will be a new scheduler task to update the trust values in the trust table. This will involve the trust table attributes and feed them into the trust calculation algorithm and finally '''update the trust value''' in the trust table. Users can change the '''scheduler timer value'''. By default the timer value is set to 5 seconds.&lt;br /&gt;
&lt;br /&gt;
=== Broadcasting malicious nodes === &lt;br /&gt;
Identifying malicious nodes''(for e.g.: black hole nodes, grey hole nodes, etc.)'' in the network is a fundamental requirement in any trust based protocols. This will increase the security of the network as well as the reliability of the routes. Scheduler task is capable of identifying the malicious nodes by scanning the trust table. &lt;br /&gt;
&lt;br /&gt;
Once a malicious node is identified, it should notify it to the network. This will reflect that all nodes in the network are synchronized about the malicious nodes within the network. It will be helpful when making the best route to forward the packet.&lt;br /&gt;
&lt;br /&gt;
There will be a new broadcast message define in the framework''(trust framework)''. This will be  used to notify the malicious nodes within the network.&lt;br /&gt;
&lt;br /&gt;
=== Architecture ===&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simply extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11168</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11168"/>
		<updated>2018-06-23T11:25:12Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* What is Trust value */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
Trust value will be calculated based on different routing parameters''(rreq, rply, err, etc)'' or routing metrics''(bandwidth, cost, etc)''. Therefore, trust will become a routing metric which can be used to determine the optimal route for forwarding packets. Eventually trust value can be considered as a security factor for making the routing decision.&lt;br /&gt;
&lt;br /&gt;
'''Default trust calculation''' in the framework has only considered ''interaction count.'' If someone wants to consider more parameters''(rreq, rply, err, etc)'' for trust calculation, trust table can be modified accordingly.&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
&lt;br /&gt;
=== Trust Table ===&lt;br /&gt;
Similar to routing table, there will an additional table called ''trust table.'' It is required to have a trust table per each node within the network. Trust framework has an abstract trust table which has columns of ''Address, Trust value, Timestamp''. Each row in the trust table represent a trust record for directly connected ''(1 hop)'' nodes for a considering node. One row in &amp;lt;code&amp;gt;abstract-trust-table.h&amp;lt;/code&amp;gt; is represented by &amp;lt;code&amp;gt;abstract-trust-entry.h&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
Users can extend &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object and add additional columns as they wish. This will give great flexibility over adding more attributes for the trust calculation algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Trust calculation algorithm ===&lt;br /&gt;
Almost all the research papers published have different algorithms for trust calculation. Therefore, the framework will allow the users to define their own algorithm for the trust calculation. &lt;br /&gt;
&lt;br /&gt;
By default, there is a generic trust calculation defined in &amp;lt;code&amp;gt;abstract-trust-calculation.h&amp;lt;/code&amp;gt;. Users can extend that class and define their own algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Scheduler task ===&lt;br /&gt;
There will be a new scheduler task to update the trust values in the trust table. This will involve the trust table attributes and feed them into the trust calculation algorithm and finally '''update the trust value''' in the trust table. Users can change the '''scheduler timer value'''. By default the timer value is set to 5 seconds.&lt;br /&gt;
&lt;br /&gt;
=== Broadcasting malicious nodes === &lt;br /&gt;
Identifying malicious nodes''(for e.g.: black hole nodes, grey hole nodes, etc.)'' in the network is a fundamental requirement in any trust based protocols. This will increase the security of the network as well as the reliability of the routes. Scheduler task is capable of identifying the malicious nodes by scanning the trust table. &lt;br /&gt;
&lt;br /&gt;
Once a malicious node is identified, it should notify it to the network. This will reflect that all nodes in the network are synchronized about the malicious nodes within the network. It will be helpful when making the best route to forward the packet.&lt;br /&gt;
&lt;br /&gt;
There will be a new broadcast message define in the framework''(trust framework)''. This will be  used to notify the malicious nodes within the network.&lt;br /&gt;
&lt;br /&gt;
=== Architecture ===&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simply extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11167</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11167"/>
		<updated>2018-06-23T11:08:51Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* What is Trust value */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
Trust value will be calculated based on different routing parameters''(rreq, rply, err, etc)''. Therefore, trust will become a routing metric which can be used to determine the optimal route for forwarding packets.&lt;br /&gt;
&lt;br /&gt;
'''Default trust calculation''' in the framework has only considered ''interaction count.'' If someone wants to consider more parameters''(rreq, rply, err, etc)'' for trust calculation, trust table can be modified accordingly.&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
&lt;br /&gt;
=== Trust Table ===&lt;br /&gt;
Similar to routing table, there will an additional table called ''trust table.'' It is required to have a trust table per each node within the network. Trust framework has an abstract trust table which has columns of ''Address, Trust value, Timestamp''. Each row in the trust table represent a trust record for directly connected ''(1 hop)'' nodes for a considering node. One row in &amp;lt;code&amp;gt;abstract-trust-table.h&amp;lt;/code&amp;gt; is represented by &amp;lt;code&amp;gt;abstract-trust-entry.h&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
Users can extend &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object and add additional columns as they wish. This will give great flexibility over adding more attributes for the trust calculation algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Trust calculation algorithm ===&lt;br /&gt;
Almost all the research papers published have different algorithms for trust calculation. Therefore, the framework will allow the users to define their own algorithm for the trust calculation. &lt;br /&gt;
&lt;br /&gt;
By default, there is a generic trust calculation defined in &amp;lt;code&amp;gt;abstract-trust-calculation.h&amp;lt;/code&amp;gt;. Users can extend that class and define their own algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Scheduler task ===&lt;br /&gt;
There will be a new scheduler task to update the trust values in the trust table. This will involve the trust table attributes and feed them into the trust calculation algorithm and finally '''update the trust value''' in the trust table. Users can change the '''scheduler timer value'''. By default the timer value is set to 5 seconds.&lt;br /&gt;
&lt;br /&gt;
=== Broadcasting malicious nodes === &lt;br /&gt;
Identifying malicious nodes''(for e.g.: black hole nodes, grey hole nodes, etc.)'' in the network is a fundamental requirement in any trust based protocols. This will increase the security of the network as well as the reliability of the routes. Scheduler task is capable of identifying the malicious nodes by scanning the trust table. &lt;br /&gt;
&lt;br /&gt;
Once a malicious node is identified, it should notify it to the network. This will reflect that all nodes in the network are synchronized about the malicious nodes within the network. It will be helpful when making the best route to forward the packet.&lt;br /&gt;
&lt;br /&gt;
There will be a new broadcast message define in the framework''(trust framework)''. This will be  used to notify the malicious nodes within the network.&lt;br /&gt;
&lt;br /&gt;
=== Architecture ===&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simply extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11166</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11166"/>
		<updated>2018-06-23T11:03:46Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* What is Trust value */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Trust value will be calculated based on different routing parameters''(rreq, rply, err, etc)''. Therefore, trust will become a routing metric which can be used to determine the optimal route for forwarding packets.&lt;br /&gt;
&lt;br /&gt;
'''Default trust calculation''' in the framework has only considered ''interaction count.'' If someone wants to consider more parameters''(rreq, rply, err, etc)'' for trust calculation, trust table can be modified accordingly.&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
&lt;br /&gt;
=== Trust Table ===&lt;br /&gt;
Similar to routing table, there will an additional table called ''trust table.'' It is required to have a trust table per each node within the network. Trust framework has an abstract trust table which has columns of ''Address, Trust value, Timestamp''. Each row in the trust table represent a trust record for directly connected ''(1 hop)'' nodes for a considering node. One row in &amp;lt;code&amp;gt;abstract-trust-table.h&amp;lt;/code&amp;gt; is represented by &amp;lt;code&amp;gt;abstract-trust-entry.h&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
Users can extend &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object and add additional columns as they wish. This will give great flexibility over adding more attributes for the trust calculation algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Trust calculation algorithm ===&lt;br /&gt;
Almost all the research papers published have different algorithms for trust calculation. Therefore, the framework will allow the users to define their own algorithm for the trust calculation. &lt;br /&gt;
&lt;br /&gt;
By default, there is a generic trust calculation defined in &amp;lt;code&amp;gt;abstract-trust-calculation.h&amp;lt;/code&amp;gt;. Users can extend that class and define their own algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Scheduler task ===&lt;br /&gt;
There will be a new scheduler task to update the trust values in the trust table. This will involve the trust table attributes and feed them into the trust calculation algorithm and finally '''update the trust value''' in the trust table. Users can change the '''scheduler timer value'''. By default the timer value is set to 5 seconds.&lt;br /&gt;
&lt;br /&gt;
=== Broadcasting malicious nodes === &lt;br /&gt;
Identifying malicious nodes''(for e.g.: black hole nodes, grey hole nodes, etc.)'' in the network is a fundamental requirement in any trust based protocols. This will increase the security of the network as well as the reliability of the routes. Scheduler task is capable of identifying the malicious nodes by scanning the trust table. &lt;br /&gt;
&lt;br /&gt;
Once a malicious node is identified, it should notify it to the network. This will reflect that all nodes in the network are synchronized about the malicious nodes within the network. It will be helpful when making the best route to forward the packet.&lt;br /&gt;
&lt;br /&gt;
There will be a new broadcast message define in the framework''(trust framework)''. This will be  used to notify the malicious nodes within the network.&lt;br /&gt;
&lt;br /&gt;
=== Architecture ===&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simply extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11165</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11165"/>
		<updated>2018-06-23T11:01:24Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* What is Trust value */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Trust value will be calculated based on different routing parameters''(rreq, rply, err, etc)''. Therefore, trust will become a routing metric which can be used to determine the optimal route for forwarding packets.&lt;br /&gt;
&lt;br /&gt;
For example, '''default trust calculation''' has only considered ''interaction count.'' If someone wants to consider more parameters for trust calculation, trust table can be modified accordingly.&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
&lt;br /&gt;
=== Trust Table ===&lt;br /&gt;
Similar to routing table, there will an additional table called ''trust table.'' It is required to have a trust table per each node within the network. Trust framework has an abstract trust table which has columns of ''Address, Trust value, Timestamp''. Each row in the trust table represent a trust record for directly connected ''(1 hop)'' nodes for a considering node. One row in &amp;lt;code&amp;gt;abstract-trust-table.h&amp;lt;/code&amp;gt; is represented by &amp;lt;code&amp;gt;abstract-trust-entry.h&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
Users can extend &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object and add additional columns as they wish. This will give great flexibility over adding more attributes for the trust calculation algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Trust calculation algorithm ===&lt;br /&gt;
Almost all the research papers published have different algorithms for trust calculation. Therefore, the framework will allow the users to define their own algorithm for the trust calculation. &lt;br /&gt;
&lt;br /&gt;
By default, there is a generic trust calculation defined in &amp;lt;code&amp;gt;abstract-trust-calculation.h&amp;lt;/code&amp;gt;. Users can extend that class and define their own algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Scheduler task ===&lt;br /&gt;
There will be a new scheduler task to update the trust values in the trust table. This will involve the trust table attributes and feed them into the trust calculation algorithm and finally '''update the trust value''' in the trust table. Users can change the '''scheduler timer value'''. By default the timer value is set to 5 seconds.&lt;br /&gt;
&lt;br /&gt;
=== Broadcasting malicious nodes === &lt;br /&gt;
Identifying malicious nodes''(for e.g.: black hole nodes, grey hole nodes, etc.)'' in the network is a fundamental requirement in any trust based protocols. This will increase the security of the network as well as the reliability of the routes. Scheduler task is capable of identifying the malicious nodes by scanning the trust table. &lt;br /&gt;
&lt;br /&gt;
Once a malicious node is identified, it should notify it to the network. This will reflect that all nodes in the network are synchronized about the malicious nodes within the network. It will be helpful when making the best route to forward the packet.&lt;br /&gt;
&lt;br /&gt;
There will be a new broadcast message define in the framework''(trust framework)''. This will be  used to notify the malicious nodes within the network.&lt;br /&gt;
&lt;br /&gt;
=== Architecture ===&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simply extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11164</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11164"/>
		<updated>2018-06-23T10:27:45Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* What is Trust value */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Trust value will be calculated based on different routing parameters. These parameters configured based on the requirement. For example, default trust calculation has only considered for &lt;br /&gt;
&lt;br /&gt;
A routing metric is calculated by routing algorithms when determining the optimal route for sending network traffic. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Metrics are assigned to each different route available in the routing table and are calculated using many different techniques and methods based on the routing algorithms in use.&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
&lt;br /&gt;
=== Trust Table ===&lt;br /&gt;
Similar to routing table, there will an additional table called ''trust table.'' It is required to have a trust table per each node within the network. Trust framework has an abstract trust table which has columns of ''Address, Trust value, Timestamp''. Each row in the trust table represent a trust record for directly connected ''(1 hop)'' nodes for a considering node. One row in &amp;lt;code&amp;gt;abstract-trust-table.h&amp;lt;/code&amp;gt; is represented by &amp;lt;code&amp;gt;abstract-trust-entry.h&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
Users can extend &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object and add additional columns as they wish. This will give great flexibility over adding more attributes for the trust calculation algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Trust calculation algorithm ===&lt;br /&gt;
Almost all the research papers published have different algorithms for trust calculation. Therefore, the framework will allow the users to define their own algorithm for the trust calculation. &lt;br /&gt;
&lt;br /&gt;
By default, there is a generic trust calculation defined in &amp;lt;code&amp;gt;abstract-trust-calculation.h&amp;lt;/code&amp;gt;. Users can extend that class and define their own algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Scheduler task ===&lt;br /&gt;
There will be a new scheduler task to update the trust values in the trust table. This will involve the trust table attributes and feed them into the trust calculation algorithm and finally '''update the trust value''' in the trust table. Users can change the '''scheduler timer value'''. By default the timer value is set to 5 seconds.&lt;br /&gt;
&lt;br /&gt;
=== Broadcasting malicious nodes === &lt;br /&gt;
Identifying malicious nodes''(for e.g.: black hole nodes, grey hole nodes, etc.)'' in the network is a fundamental requirement in any trust based protocols. This will increase the security of the network as well as the reliability of the routes. Scheduler task is capable of identifying the malicious nodes by scanning the trust table. &lt;br /&gt;
&lt;br /&gt;
Once a malicious node is identified, it should notify it to the network. This will reflect that all nodes in the network are synchronized about the malicious nodes within the network. It will be helpful when making the best route to forward the packet.&lt;br /&gt;
&lt;br /&gt;
There will be a new broadcast message define in the framework''(trust framework)''. This will be  used to notify the malicious nodes within the network.&lt;br /&gt;
&lt;br /&gt;
=== Architecture ===&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simply extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11163</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11163"/>
		<updated>2018-06-23T05:44:23Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Technical Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
&lt;br /&gt;
=== Trust Table ===&lt;br /&gt;
Similar to routing table, there will an additional table called ''trust table.'' It is required to have a trust table per each node within the network. Trust framework has an abstract trust table which has columns of ''Address, Trust value, Timestamp''. Each row in the trust table represent a trust record for directly connected ''(1 hop)'' nodes for a considering node. One row in &amp;lt;code&amp;gt;abstract-trust-table.h&amp;lt;/code&amp;gt; is represented by &amp;lt;code&amp;gt;abstract-trust-entry.h&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
Users can extend &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object and add additional columns as they wish. This will give great flexibility over adding more attributes for the trust calculation algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Trust calculation algorithm ===&lt;br /&gt;
Almost all the research papers published have different algorithms for trust calculation. Therefore, the framework will allow the users to define their own algorithm for the trust calculation. &lt;br /&gt;
&lt;br /&gt;
By default, there is a generic trust calculation defined in &amp;lt;code&amp;gt;abstract-trust-calculation.h&amp;lt;/code&amp;gt;. Users can extend that class and define their own algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Scheduler task ===&lt;br /&gt;
There will be a new scheduler task to update the trust values in the trust table. This will involve the trust table attributes and feed them into the trust calculation algorithm and finally '''update the trust value''' in the trust table. Users can change the '''scheduler timer value'''. By default the timer value is set to 5 seconds.&lt;br /&gt;
&lt;br /&gt;
=== Broadcasting malicious nodes === &lt;br /&gt;
Identifying malicious nodes''(for e.g.: black hole nodes, grey hole nodes, etc.)'' in the network is a fundamental requirement in any trust based protocols. This will increase the security of the network as well as the reliability of the routes. Scheduler task is capable of identifying the malicious nodes by scanning the trust table. &lt;br /&gt;
&lt;br /&gt;
Once a malicious node is identified, it should notify it to the network. This will reflect that all nodes in the network are synchronized about the malicious nodes within the network. It will be helpful when making the best route to forward the packet.&lt;br /&gt;
&lt;br /&gt;
There will be a new broadcast message define in the framework''(trust framework)''. This will be  used to notify the malicious nodes within the network.&lt;br /&gt;
&lt;br /&gt;
=== Architecture ===&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simply extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11162</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11162"/>
		<updated>2018-06-23T05:37:51Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Technical Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
&lt;br /&gt;
=== Trust Table ===&lt;br /&gt;
Similar to routing table, there will an additional table called ''trust table.'' It is required to have a trust table per each node within the network. Trust framework has an abstract trust table which has columns of ''Address, Trust value, Timestamp''. Each row in the trust table represent a trust record for directly connected ''(1 hop)'' nodes for a considering node. One row in &amp;lt;code&amp;gt;abstract-trust-table.h&amp;lt;/code&amp;gt; is represented by &amp;lt;code&amp;gt;abstract-trust-entry.h&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
Users can extend &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object and add additional columns as they wish. This will give great flexibility over adding more attributes for the trust calculation algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Trust calculation algorithm ===&lt;br /&gt;
Almost all the research papers published have different algorithms for trust calculation. Therefore, the framework will allow the users to define their own algorithm for the trust calculation. &lt;br /&gt;
&lt;br /&gt;
By default, there is a generic trust calculation defined in &amp;lt;code&amp;gt;abstract-trust-calculation.h&amp;lt;/code&amp;gt;. Users can extend that class and define their own algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Scheduler task ===&lt;br /&gt;
There will be a new scheduler task to update the trust values in the trust table. This will involve the trust table attributes and feed them into the trust calculation algorithm and finally '''update the trust value''' in the trust table. Users can change the '''scheduler timer value'''. By default the timer value is set to 5 seconds.&lt;br /&gt;
&lt;br /&gt;
=== Bird's eye view ===&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simply extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11161</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11161"/>
		<updated>2018-06-23T05:31:57Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Bird's eye view */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
&lt;br /&gt;
=== Trust Table ===&lt;br /&gt;
Similar to routing table, there will an additional table called ''trust table.'' It is required to have a trust table per each node within the network. Trust framework has an abstract trust table which has columns of ''Address, Trust value, Timestamp''. Each row in the trust table represent a trust record for directly connected ''(1 hop)'' nodes for a considering node. One row in &amp;lt;code&amp;gt;abstract-trust-table.h&amp;lt;/code&amp;gt; is represented by &amp;lt;code&amp;gt;abstract-trust-entry.h&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
Users can extend &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object and add additional columns as they wish. This will give great flexibility over adding more attributes for the trust calculation algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Trust calculation algorithm ===&lt;br /&gt;
Almost all the research papers published have different algorithms for trust calculation. Therefore, the framework will allow the users to define their own algorithm for the trust calculation. &lt;br /&gt;
&lt;br /&gt;
By default, there is a generic trust calculation defined in &amp;lt;code&amp;gt;abstract-trust-calculation.h&amp;lt;/code&amp;gt;. Users can extend that class and define their own algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Bird's eye view ===&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simply extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11160</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11160"/>
		<updated>2018-06-23T05:31:02Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Technical Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
&lt;br /&gt;
=== Trust Table ===&lt;br /&gt;
Similar to routing table, there will an additional table called ''trust table.'' It is required to have a trust table per each node within the network. Trust framework has an abstract trust table which has columns of ''Address, Trust value, Timestamp''. Each row in the trust table represent a trust record for directly connected ''(1 hop)'' nodes for a considering node. One row in &amp;lt;code&amp;gt;abstract-trust-table.h&amp;lt;/code&amp;gt; is represented by &amp;lt;code&amp;gt;abstract-trust-entry.h&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
Users can extend &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object and add additional columns as they wish. This will give great flexibility over adding more attributes for the trust calculation algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Trust calculation algorithm ===&lt;br /&gt;
Almost all the research papers published have different algorithms for trust calculation. Therefore, the framework will allow the users to define their own algorithm for the trust calculation. &lt;br /&gt;
&lt;br /&gt;
By default, there is a generic trust calculation defined in &amp;lt;code&amp;gt;abstract-trust-calculation.h&amp;lt;/code&amp;gt;. Users can extend that class and define their own algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Bird's eye view ===&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11159</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11159"/>
		<updated>2018-06-23T05:30:26Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Trust calculation algorithm */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
&lt;br /&gt;
=== Trust Table ===&lt;br /&gt;
Similar to routing table, there will an additional table called ''trust table.'' It is required to have a trust table per each node within the network. Trust framework has an abstract trust table which has columns of ''Address, Trust value, Timestamp''. Each row in the trust table represent a trust record for directly connected ''(1 hop)'' nodes for a considering node. One row in &amp;lt;code&amp;gt;abstract-trust-table&amp;lt;/code&amp;gt; is represented by &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
Users can extend &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object and add additional columns as they wish. This will give great flexibility over adding more attributes for the trust calculation algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Trust calculation algorithm ===&lt;br /&gt;
Almost all the research papers published have different algorithms for trust calculation. Therefore, the framework will allow the users to define their own algorithm for the trust calculation. &lt;br /&gt;
&lt;br /&gt;
By default, there is a generic trust calculation defined in &amp;lt;code&amp;gt;abstract-trust-calculation.h&amp;lt;/code&amp;gt;. Users can extend that class and define their own algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Bird's eye view ===&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11158</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11158"/>
		<updated>2018-06-23T05:28:55Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Technical Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
&lt;br /&gt;
=== Trust Table ===&lt;br /&gt;
Similar to routing table, there will an additional table called ''trust table.'' It is required to have a trust table per each node within the network. Trust framework has an abstract trust table which has columns of ''Address, Trust value, Timestamp''. Each row in the trust table represent a trust record for directly connected ''(1 hop)'' nodes for a considering node. One row in &amp;lt;code&amp;gt;abstract-trust-table&amp;lt;/code&amp;gt; is represented by &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
Users can extend &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object and add additional columns as they wish. This will give great flexibility over adding more attributes for the trust calculation algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Trust calculation algorithm ===&lt;br /&gt;
Almost all the research papers published within the domain of trust based routing protocols have different algorithms for trust calculation. Therefore, trust framework will allow the users to define their own algorithm for the trust calculation. &lt;br /&gt;
&lt;br /&gt;
By default, there is a generic trust calculation defined in &amp;lt;code&amp;gt;abstract-trust-calculation.h&amp;lt;/code&amp;gt;. Users can extend that class and define their own algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Bird's eye view ===&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11157</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11157"/>
		<updated>2018-06-23T05:24:55Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Trust Table */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
&lt;br /&gt;
=== Trust Table ===&lt;br /&gt;
Similar to routing table, there will an additional table called ''trust table.'' It is required to have a trust table per each node within the network. Trust framework has an abstract trust table which has columns of ''Address, Trust value, Timestamp''. Each row in the trust table represent a trust record for directly connected ''(1 hop)'' nodes for a considering node. One row in &amp;lt;code&amp;gt;abstract-trust-table&amp;lt;/code&amp;gt; is represented by &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
Users can extend &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object and add additional columns as they wish. This will give great flexibility over adding more attributes for the trust calculation algorithm.&lt;br /&gt;
&lt;br /&gt;
=== Bird's eye view ===&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11156</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11156"/>
		<updated>2018-06-23T05:24:14Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Technical Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
&lt;br /&gt;
=== Trust Table ===&lt;br /&gt;
Similar to routing table, there will an additional table called ''trust table.'' It is required to have a trust table per each node within the network. Trust framework has an abstract trust table which has columns of ''Address, Trust value, Timestamp''. Each row in the trust table represent a trust record for directly connected ''(1 hop)'' nodes for a considering node. One row in &amp;lt;code&amp;gt;abstract-trust-table&amp;lt;/code&amp;gt; is represented by &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
Users can extend &amp;lt;code&amp;gt;abstract-trust-entry&amp;lt;/code&amp;gt; object and add additional columns as they wish. This will give great flexibility over adding more attributes for the trust calculation algorithm.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bird's eye view ===&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11155</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11155"/>
		<updated>2018-06-22T16:02:12Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Technical Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
It is required to have a trust table per each router. Similar to routing table, there will an additional table called ''trust table.''&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|left|400px|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|400px|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=all&amp;gt; &lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11154</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11154"/>
		<updated>2018-06-22T09:31:18Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Technical Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
It is required to have a trust table per each router. Similar to routing table, there will an additional table called ''trust table.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|right|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
[[File:Trust_based_framework_concrete_trusttable.jpg |frame|right|alt=Alt text|Trust table with entries of extending abstract-trust-entry and added additional columns]]&lt;br /&gt;
&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=File:Trust_based_framework_concrete_trusttable.jpg&amp;diff=11153</id>
		<title>File:Trust based framework concrete trusttable.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=File:Trust_based_framework_concrete_trusttable.jpg&amp;diff=11153"/>
		<updated>2018-06-22T09:21:09Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11152</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11152"/>
		<updated>2018-06-22T09:10:35Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Technical Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
It is required to have a trust table per each router. Similar to routing table, there will an additional table called ''trust table.''&lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|none|alt=Alt text|Trust table with abstract-trust-entry type records]]&lt;br /&gt;
&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11151</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11151"/>
		<updated>2018-06-22T09:09:08Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Technical Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
It is required to have a trust table per each router. Same like routing table, there will an additional table called trust table.&lt;br /&gt;
[[File:Trust_based_framework_abstract_trusttable.jpg |frame|none|alt=Alt text|Trust table with abstract trust table entry]]&lt;br /&gt;
&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can see in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=File:Trust_based_framework_abstract_trusttable.jpg&amp;diff=11150</id>
		<title>File:Trust based framework abstract trusttable.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=File:Trust_based_framework_abstract_trusttable.jpg&amp;diff=11150"/>
		<updated>2018-06-22T09:04:18Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11149</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11149"/>
		<updated>2018-06-22T08:44:48Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* What is the Trust value */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11148</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11148"/>
		<updated>2018-06-22T04:40:23Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Why need a trust based framework */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is the Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation run through a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11147</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11147"/>
		<updated>2018-06-22T04:35:58Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust value''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is the Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation as a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11146</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11146"/>
		<updated>2018-06-22T04:35:18Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust factor''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is the Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. NS-3 cannot define only one way of calculating trust value as each of the above mentioned methods/approaches have written to serve specific concerns/issues. Therefore, it's clear that ''allowing any custom trust calculation as a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11145</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11145"/>
		<updated>2018-06-22T04:26:20Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Technical Approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust factor''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is the Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
NS-3 cannot define only one way of calculating trust value as each of these methods/approaches have written to serve specific concerns/issues. Therefore, it is clear that ''allowing any custom trust calculation as a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
Current NS-3 version''(ns-3.28)'' does not welcome trust based routing protocols by default. If someone wants to simulate a trust based protocol in NS-3, there are lot of changes needs to be done in many concrete level classes. This is cumbersome and it's against the conventions that we follow from the maintenance point of view. &lt;br /&gt;
&lt;br /&gt;
There will be a new '''trust module''' consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the &amp;lt;code&amp;gt;abstract-trust-calculation&amp;lt;/code&amp;gt; class and implement their own logic to calculate the trust value.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;trust-table&amp;lt;/code&amp;gt; is a new table which is similar to ''routing table.'' Trust table contains trust value related information for '''directly connected nodes'''. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11144</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11144"/>
		<updated>2018-06-22T02:08:59Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Project Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git/tree/gsoc2018 Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust factor''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is the Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
NS-3 cannot define only one way of calculating trust value as each of these methods/approaches have written to serve specific concerns/issues. Therefore, it is clear that ''allowing any custom trust calculation as a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
As of now NS-3 does not support to simulate the above mentioned trust based routing protocols. If somebody wants to simulate such an environment, there are lot of changes needs to be done in many concrete classes. This is cumbersome and it is against the conventions that we follow from the maintainence point of view. Therefore, this project is aimed to facilitate a new trust module which enables the capability of implementing a trust based algorithm to NS-3 and let the users to tryout the simulations based upon them. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
New trust module consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the AbstractTrustCalculation class and implement their own logic to calculate the trust measurement.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
TrustTable is a new table which is similar to ''routing table.'' Trust table contains trust value related information for directly connected nodes. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11143</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11143"/>
		<updated>2018-06-22T02:02:54Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Week 4 (June 3 - June 10) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust factor''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is the Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
NS-3 cannot define only one way of calculating trust value as each of these methods/approaches have written to serve specific concerns/issues. Therefore, it is clear that ''allowing any custom trust calculation as a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
As of now NS-3 does not support to simulate the above mentioned trust based routing protocols. If somebody wants to simulate such an environment, there are lot of changes needs to be done in many concrete classes. This is cumbersome and it is against the conventions that we follow from the maintainence point of view. Therefore, this project is aimed to facilitate a new trust module which enables the capability of implementing a trust based algorithm to NS-3 and let the users to tryout the simulations based upon them. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
New trust module consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the AbstractTrustCalculation class and implement their own logic to calculate the trust measurement.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
TrustTable is a new table which is similar to ''routing table.'' Trust table contains trust value related information for directly connected nodes. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
''Note:'' It has decided to remove the trust module until we have a fully working trust framework. Therefore, all classes planned to go to new trust module has been moved to internet module.&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11142</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11142"/>
		<updated>2018-06-22T01:59:58Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Week 5 (June 11 - June 17) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust factor''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is the Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
NS-3 cannot define only one way of calculating trust value as each of these methods/approaches have written to serve specific concerns/issues. Therefore, it is clear that ''allowing any custom trust calculation as a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
As of now NS-3 does not support to simulate the above mentioned trust based routing protocols. If somebody wants to simulate such an environment, there are lot of changes needs to be done in many concrete classes. This is cumbersome and it is against the conventions that we follow from the maintainence point of view. Therefore, this project is aimed to facilitate a new trust module which enables the capability of implementing a trust based algorithm to NS-3 and let the users to tryout the simulations based upon them. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
New trust module consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the AbstractTrustCalculation class and implement their own logic to calculate the trust measurement.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
TrustTable is a new table which is similar to ''routing table.'' Trust table contains trust value related information for directly connected nodes. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
&amp;lt;pre&amp;gt; abstract-trust-entry.h&lt;br /&gt;
 abstract-trust-calculation.h&lt;br /&gt;
 trust-table.h&lt;br /&gt;
 ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11141</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11141"/>
		<updated>2018-06-22T01:57:50Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Week 5 (June 11 - June 17) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust factor''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is the Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
NS-3 cannot define only one way of calculating trust value as each of these methods/approaches have written to serve specific concerns/issues. Therefore, it is clear that ''allowing any custom trust calculation as a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
As of now NS-3 does not support to simulate the above mentioned trust based routing protocols. If somebody wants to simulate such an environment, there are lot of changes needs to be done in many concrete classes. This is cumbersome and it is against the conventions that we follow from the maintainence point of view. Therefore, this project is aimed to facilitate a new trust module which enables the capability of implementing a trust based algorithm to NS-3 and let the users to tryout the simulations based upon them. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
New trust module consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the AbstractTrustCalculation class and implement their own logic to calculate the trust measurement.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
TrustTable is a new table which is similar to ''routing table.'' Trust table contains trust value related information for directly connected nodes. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
:: &amp;lt;pre&amp;gt;abstract-trust-entry.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
:: &amp;lt;pre&amp;gt;abstract-trust-calculation.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
:: &amp;lt;pre&amp;gt;trust-table.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
:: &amp;lt;pre&amp;gt;ipv4-routing-helper.h&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11140</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11140"/>
		<updated>2018-06-22T01:55:40Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Week 5 (June 11 - June 17) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust factor''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is the Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
NS-3 cannot define only one way of calculating trust value as each of these methods/approaches have written to serve specific concerns/issues. Therefore, it is clear that ''allowing any custom trust calculation as a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
As of now NS-3 does not support to simulate the above mentioned trust based routing protocols. If somebody wants to simulate such an environment, there are lot of changes needs to be done in many concrete classes. This is cumbersome and it is against the conventions that we follow from the maintainence point of view. Therefore, this project is aimed to facilitate a new trust module which enables the capability of implementing a trust based algorithm to NS-3 and let the users to tryout the simulations based upon them. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
New trust module consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the AbstractTrustCalculation class and implement their own logic to calculate the trust measurement.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
TrustTable is a new table which is similar to ''routing table.'' Trust table contains trust value related information for directly connected nodes. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented inside internet module&lt;br /&gt;
::abstract-trust-entry.h&lt;br /&gt;
::abstract-trust-calculation.h&lt;br /&gt;
::trust-table.h&lt;br /&gt;
::ipv4-routing-helper.h&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
 Ipv4RoutingHelper::Ipv4RoutingHelper (bool enableTrust)&lt;br /&gt;
 {&lt;br /&gt;
  this-&amp;gt;enableTrust = enableTrust;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11139</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11139"/>
		<updated>2018-06-22T01:25:53Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Why need a trust based framework */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust factor''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is the Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
NS-3 cannot define only one way of calculating trust value as each of these methods/approaches have written to serve specific concerns/issues. Therefore, it is clear that ''allowing any custom trust calculation as a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
As of now NS-3 does not support to simulate the above mentioned trust based routing protocols. If somebody wants to simulate such an environment, there are lot of changes needs to be done in many concrete classes. This is cumbersome and it is against the conventions that we follow from the maintainence point of view. Therefore, this project is aimed to facilitate a new trust module which enables the capability of implementing a trust based algorithm to NS-3 and let the users to tryout the simulations based upon them. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
New trust module consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the AbstractTrustCalculation class and implement their own logic to calculate the trust measurement.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
TrustTable is a new table which is similar to ''routing table.'' Trust table contains trust value related information for directly connected nodes. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented in internet module&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11138</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11138"/>
		<updated>2018-06-22T01:23:32Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* What is the Trust value */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust factor''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is the Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''[1]&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
NS-3 cannot define only one way of calculating trust value because each of these methods/approaches have written to serve specific concerns/issues. Therefore, it is clear that ''allowing any custom way of trust calculation as a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
As of now NS-3 does not support to simulate the above mentioned trust based routing protocols. If somebody wants to simulate such an environment, there are lot of changes needs to be done in many concrete classes. This is cumbersome and it is against the conventions that we follow from the maintainence point of view. Therefore, this project is aimed to facilitate a new trust module which enables the capability of implementing a trust based algorithm to NS-3 and let the users to tryout the simulations based upon them. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
New trust module consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the AbstractTrustCalculation class and implement their own logic to calculate the trust measurement.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
TrustTable is a new table which is similar to ''routing table.'' Trust table contains trust value related information for directly connected nodes. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented in internet module&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11137</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11137"/>
		<updated>2018-06-22T01:22:54Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Project Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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.'' Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust factor''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is the Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
NS-3 cannot define only one way of calculating trust value because each of these methods/approaches have written to serve specific concerns/issues. Therefore, it is clear that ''allowing any custom way of trust calculation as a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
As of now NS-3 does not support to simulate the above mentioned trust based routing protocols. If somebody wants to simulate such an environment, there are lot of changes needs to be done in many concrete classes. This is cumbersome and it is against the conventions that we follow from the maintainence point of view. Therefore, this project is aimed to facilitate a new trust module which enables the capability of implementing a trust based algorithm to NS-3 and let the users to tryout the simulations based upon them. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
New trust module consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the AbstractTrustCalculation class and implement their own logic to calculate the trust measurement.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
TrustTable is a new table which is similar to ''routing table.'' Trust table contains trust value related information for directly connected nodes. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented in internet module&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11136</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11136"/>
		<updated>2018-06-22T00:58:26Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: Added reference for trust value definition&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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. Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust factor''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is the Trust value ==&lt;br /&gt;
''Trust is a relationship established between two entities for a specific action. In particular, one entity trusts the other entity to perform an action. In this work, the first entity is called the subject, the second entity is called the agent.''' [1]&lt;br /&gt;
&lt;br /&gt;
''Trust is a function of uncertainty. In particular, if the subject believes that the agent will perform the action for sure, the subject fully “trusts” the agent to perform the action and there is no uncertainty; if the subject believes that the agent will not perform the action for sure, the subject “trusts” the agent not to perform the action, and there is no uncertainty either; if the subject does not have any idea of whether the agent will perform the action or not, the subject does not have trust in the agent. In this case, the subject has the highest uncertainty.''&lt;br /&gt;
&lt;br /&gt;
''Trust value should represent uncertainty.''[1] Uncertainly always stick to the probability which always has the value ranging from 0 - 1. Therefore, trust value will also be ranging from 0 - 1 by denoting the trust between nodes in the network.&lt;br /&gt;
&lt;br /&gt;
:[1] Sun, Y.L., Yu, W., Han, Z. and Liu, K.R., 2006. Information theoretic framework of trust modeling and evaluation for ad hoc networks. ''IEEE Journal on Selected Areas in Communications, 24(2), pp.305-317.''&lt;br /&gt;
&lt;br /&gt;
== Why need a trust based framework ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[2]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[3]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[4] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
NS-3 cannot define only one way of calculating trust value because each of these methods/approaches have written to serve specific concerns/issues. Therefore, it is clear that ''allowing any custom way of trust calculation as a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
As of now NS-3 does not support to simulate the above mentioned trust based routing protocols. If somebody wants to simulate such an environment, there are lot of changes needs to be done in many concrete classes. This is cumbersome and it is against the conventions that we follow from the maintainence point of view. Therefore, this project is aimed to facilitate a new trust module which enables the capability of implementing a trust based algorithm to NS-3 and let the users to tryout the simulations based upon them. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
New trust module consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the AbstractTrustCalculation class and implement their own logic to calculate the trust measurement.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
TrustTable is a new table which is similar to ''routing table.'' Trust table contains trust value related information for directly connected nodes. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented in internet module&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11134</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11134"/>
		<updated>2018-06-21T18:46:47Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Project Timeline */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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. Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust factor''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust factor ==&lt;br /&gt;
Trust factor also called as the trust value is the indicator which denotes the maturity of a communication link. It can also be defined as if one node expects something to happen on the destination node, what is the probability of happening that event as expected. ''Therefore the trust measurement is more likely a probability value which range from 0 - 1.''&lt;br /&gt;
&lt;br /&gt;
== Why a Trust based framework? ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[1]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[2]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[3] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
NS-3 cannot define only one way of calculating trust value because each of these methods/approaches have written to serve specific concerns/issues. Therefore, it is clear that ''allowing any custom way of trust calculation as a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
As of now NS-3 does not support to simulate the above mentioned trust based routing protocols. If somebody wants to simulate such an environment, there are lot of changes needs to be done in many concrete classes. This is cumbersome and it is against the conventions that we follow from the maintainence point of view. Therefore, this project is aimed to facilitate a new trust module which enables the capability of implementing a trust based algorithm to NS-3 and let the users to tryout the simulations based upon them. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
New trust module consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the AbstractTrustCalculation class and implement their own logic to calculate the trust measurement.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
TrustTable is a new table which is similar to ''routing table.'' Trust table contains trust value related information for directly connected nodes. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented in internet module&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;br /&gt;
&lt;br /&gt;
== Week 6 (June 18 - June 24) ==&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11133</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11133"/>
		<updated>2018-06-21T18:45:50Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: Added project timeline&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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. Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust factor''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust factor ==&lt;br /&gt;
Trust factor also called as the trust value is the indicator which denotes the maturity of a communication link. It can also be defined as if one node expects something to happen on the destination node, what is the probability of happening that event as expected. ''Therefore the trust measurement is more likely a probability value which range from 0 - 1.''&lt;br /&gt;
&lt;br /&gt;
== Why a Trust based framework? ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[1]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[2]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[3] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
NS-3 cannot define only one way of calculating trust value because each of these methods/approaches have written to serve specific concerns/issues. Therefore, it is clear that ''allowing any custom way of trust calculation as a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
As of now NS-3 does not support to simulate the above mentioned trust based routing protocols. If somebody wants to simulate such an environment, there are lot of changes needs to be done in many concrete classes. This is cumbersome and it is against the conventions that we follow from the maintainence point of view. Therefore, this project is aimed to facilitate a new trust module which enables the capability of implementing a trust based algorithm to NS-3 and let the users to tryout the simulations based upon them. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
New trust module consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the AbstractTrustCalculation class and implement their own logic to calculate the trust measurement.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
TrustTable is a new table which is similar to ''routing table.'' Trust table contains trust value related information for directly connected nodes. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;br /&gt;
&lt;br /&gt;
= Project Timeline =&lt;br /&gt;
== Week 1 (May 14 - May 20) ==&lt;br /&gt;
* Clone appropriate git repository&lt;br /&gt;
* Investigate on the internal and external network attack types&lt;br /&gt;
&lt;br /&gt;
== Week 2 (May 21 - May 27) ==&lt;br /&gt;
* Create a well structured UML diagram&lt;br /&gt;
* Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
* Create the Abstract trust table class&lt;br /&gt;
&lt;br /&gt;
== Week 3 (May 28 - June 3) ==&lt;br /&gt;
* Create a new ns-3 module called 'trust'&lt;br /&gt;
* Move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 (June 3 - June 10) ==&lt;br /&gt;
* Write up a trust implementation before making a abstract module&lt;br /&gt;
* Test the AODV specific implementation&lt;br /&gt;
&lt;br /&gt;
== Week 5 (June 11 - June 17) ==&lt;br /&gt;
* Write doxygen documentation for abstract classes implemented in internet module&lt;br /&gt;
* Modify the helper classes to place the main boolean flag to turn on or off the trust based framework&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11132</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11132"/>
		<updated>2018-06-21T18:39:14Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: Added what is trust factor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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. Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust factor''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== What is Trust factor ==&lt;br /&gt;
Trust factor also called as the trust value is the indicator which denotes the maturity of a communication link. It can also be defined as if one node expects something to happen on the destination node, what is the probability of happening that event as expected. ''Therefore the trust measurement is more likely a probability value which range from 0 - 1.''&lt;br /&gt;
&lt;br /&gt;
== Why a Trust based framework? ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[1]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[2]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[3] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
NS-3 cannot define only one way of calculating trust value because each of these methods/approaches have written to serve specific concerns/issues. Therefore, it is clear that ''allowing any custom way of trust calculation as a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
As of now NS-3 does not support to simulate the above mentioned trust based routing protocols. If somebody wants to simulate such an environment, there are lot of changes needs to be done in many concrete classes. This is cumbersome and it is against the conventions that we follow from the maintainence point of view. Therefore, this project is aimed to facilitate a new trust module which enables the capability of implementing a trust based algorithm to NS-3 and let the users to tryout the simulations based upon them. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
New trust module consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the AbstractTrustCalculation class and implement their own logic to calculate the trust measurement.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
TrustTable is a new table which is similar to ''routing table.'' Trust table contains trust value related information for directly connected nodes. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11131</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11131"/>
		<updated>2018-06-21T18:31:46Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Why a Trust based framework? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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. Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust factor''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== Why a Trust based framework? ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has '''various methodologies of calculating the trust value''' for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[1]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[2]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[3] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
NS-3 cannot define only one way of calculating trust value because each of these methods/approaches have written to serve specific concerns/issues. Therefore, it is clear that ''allowing any custom way of trust calculation as a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
As of now NS-3 does not support to simulate the above mentioned trust based routing protocols. If somebody wants to simulate such an environment, there are lot of changes needs to be done in many concrete classes. This is cumbersome and it is against the conventions that we follow from the maintainence point of view. Therefore, this project is aimed to facilitate a new trust module which enables the capability of implementing a trust based algorithm to NS-3 and let the users to tryout the simulations based upon them. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
New trust module consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the AbstractTrustCalculation class and implement their own logic to calculate the trust measurement.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
TrustTable is a new table which is similar to ''routing table.'' Trust table contains trust value related information for directly connected nodes. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11130</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11130"/>
		<updated>2018-06-21T18:29:00Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: Added the purpose of a trust framework&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC}}&lt;br /&gt;
&lt;br /&gt;
Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* '''Project name:''' Trust-based routing protocols framework&lt;br /&gt;
* '''Student:''' Jude Niroshan&lt;br /&gt;
* '''Mentor:''' Tommaso Pecorella&lt;br /&gt;
* '''Abstract:''' ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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. Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* '''Code:''' [https://github.com/JudeNiroshan/ns-3-dev-git Github repository]&lt;br /&gt;
* '''About me:''' I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Usually, routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, ''finding a trusted route'' is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a '''trust factor''' by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
== Why a Trust based framework? ==&lt;br /&gt;
Trust is a subjective measurement. There are many research papers have published which has various methodologies of calculating the trust value for the same routing protocol.&lt;br /&gt;
&lt;br /&gt;
''For e.g.:'' If we consider AODV routing protocol; following papers have came up with different approaches for trust value calculation.&lt;br /&gt;
&lt;br /&gt;
:[1]  Li, X., Lyu, M.R. and Liu, J., 2004, March. A trust model based routing protocol for secure ad hoc networks. ''In Aerospace Conference, 2004. Proceedings. 2004 IEEE (Vol. 2, pp. 1286-1295). IEEE.''&lt;br /&gt;
&lt;br /&gt;
:[2]  Marchang, N. and Datta, R., 2012. Light-weight trust-based routing protocol for mobile ad hoc networks. ''IET information security, 6(2), pp.77-83.''&lt;br /&gt;
&lt;br /&gt;
:[3] Pushpa, A.M., 2009, December. Trust based secure routing in AODV routing protocol. ''In Internet Multimedia Services Architecture and Applications (IMSAA), 2009 IEEE International Conference on (pp. 1-6). IEEE.''&lt;br /&gt;
&lt;br /&gt;
NS-3 cannot define only one way of calculating trust because each of these methods/approaches have written to serve specific concerns/issues. Therefore, it is clear that ''allowing any custom way of trust calculation as a framework'' is a better move from NS-3. This will help the developers to try out trust based frameworks in NS-3 with ''minimal amount of coding''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technical Approach ==&lt;br /&gt;
As of now NS-3 does not support to simulate the above mentioned trust based routing protocols. If somebody wants to simulate such an environment, there are lot of changes needs to be done in many concrete classes. This is cumbersome and it is against the conventions that we follow from the maintainence point of view. Therefore, this project is aimed to facilitate a new trust module which enables the capability of implementing a trust based algorithm to NS-3 and let the users to tryout the simulations based upon them. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
New trust module consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the AbstractTrustCalculation class and implement their own logic to calculate the trust measurement.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
TrustTable is a new table which is similar to ''routing table.'' Trust table contains trust value related information for directly connected nodes. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11129</id>
		<title>GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11129"/>
		<updated>2018-06-21T17:10:05Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: refactored the introduction section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Return to [https://www.nsnam.org/wiki/Summer_Projects#Google_Summer_of_Code_2018 GSoC 2018 Accepted Projects] page.&lt;br /&gt;
&lt;br /&gt;
== Project Overview ==&lt;br /&gt;
&lt;br /&gt;
* Project name: Trust-based routing protocols framework&lt;br /&gt;
* Student: Jude Niroshan&lt;br /&gt;
* Mentor: Tommaso Pecorella&lt;br /&gt;
* Abstract: ns-3 contains different routing modules, both for IPv4 and for IPv6. None of them are trust-based routing protocols. 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 protocol (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. Therefore, it would be beneficial for many developers to have a generic trust-based framework which accommodates the alteration of well-known protocols to work as trust based protocols. &lt;br /&gt;
* Code: [https://github.com/JudeNiroshan/ns-3-dev-git Github repository]&lt;br /&gt;
* About me: I am an undergraduate student at the Sri Lanka Institute of Information Technology(SLIIT), Sri Lanka. I'm so excited to work with ns-3 community during the summer of 2018. You can find more about me on [https://www.linkedin.com/in/jude-niroshan-92693086/ LinkedIn]&lt;br /&gt;
&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
Networks are susceptible to attacks by '''malicious nodes''' that could easily bring down the whole network. Therefore, it is important to have a reliable mechanism for ''detecting and isolating malicious nodes before they can do any harm to the network.'' Routing protocols  discover usable multi-hop routes between source and destination nodes. However, some of the routes found and used may not be as reliable or trust-worthy as expected. Thus, finding a trusted route is an important component for ''enhancing the security of communication''. Enhanced trust and security are achieved by the maintenance of a trust factor by the nodes in the network. This factor is established and refined over time and it increases for each node when it participates successfully in data transmissions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Technical Approach ===&lt;br /&gt;
As of now NS-3 does not support to simulate the above mentioned trust based routing protocols. If somebody wants to simulate such an environment, there are lot of changes needs to be done in many concrete classes. This is cumbersome and it is against the conventions that we follow from the maintainence point of view. Therefore, this project is aimed to facilitate a new trust module which enables the capability of implementing a trust based algorithm to NS-3 and let the users to tryout the simulations based upon them. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
New trust module consists of abstract classes which can be extended and implemented as the user's preferences. Users can extend the AbstractTrustCalculation class and implement their own logic to calculate the trust measurement.&lt;br /&gt;
&lt;br /&gt;
[[File:Trust_based_framework_uml.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
TrustTable is a new table which is similar to ''routing table.'' Trust table contains trust value related information for directly connected nodes. Users will be able to add new properties to trust table as they wish. At the same time, trust calculation logic is also feasible to change according to the above framework structure. As you can in UML, any user can define the trust calculation algorithm by simple extending the ''AbstractTrustCalculation'' class.&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=Talk:GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11104</id>
		<title>Talk:GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=Talk:GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11104"/>
		<updated>2018-06-04T16:47:40Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Week 1 Goals ==&lt;br /&gt;
''Skype call with mentor on Monday, April 30, 2018''&lt;br /&gt;
# Clone appropriate git repo (Done)&lt;br /&gt;
# Investigate on the internal and external network attack types (Done)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Week 2 Goals ==&lt;br /&gt;
''Skype call with mentor on Monday, May 7, 2018''&lt;br /&gt;
# Create a well structured UML (Done)&lt;br /&gt;
# Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
# Create the Abstract trust table class (Done)&lt;br /&gt;
&lt;br /&gt;
== Week 3 Goals ==&lt;br /&gt;
# Create a new ns-3 module called 'trust' (Done)&lt;br /&gt;
# move abstract classes into that new module and test (Done, but raised dependency issues)&lt;br /&gt;
&lt;br /&gt;
== Week 4 Goals ==&lt;br /&gt;
# Write up a trust implementation before making a abstract module&lt;br /&gt;
# Test the aodv specific implementation&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
	<entry>
		<id>https://www.nsnam.org/mediawiki/index.php?title=Talk:GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11103</id>
		<title>Talk:GSoC2018:Trust-based routing protocols framework</title>
		<link rel="alternate" type="text/html" href="https://www.nsnam.org/mediawiki/index.php?title=Talk:GSoC2018:Trust-based_routing_protocols_framework&amp;diff=11103"/>
		<updated>2018-06-04T16:45:15Z</updated>

		<summary type="html">&lt;p&gt;Jude.niroshan: /* Week 2 Goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Week 1 Goals ==&lt;br /&gt;
''Skype call with mentor on Monday, April 30, 2018''&lt;br /&gt;
# Clone appropriate git repo (Done)&lt;br /&gt;
# Investigate on the internal and external network attack types (Done)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Week 2 Goals ==&lt;br /&gt;
''Skype call with mentor on Monday, May 7, 2018''&lt;br /&gt;
# Create a well structured UML (Done)&lt;br /&gt;
# Create a simple simulation with 2 network nodes. Analyze the data packets that transfer between those nodes.&lt;br /&gt;
# Create the Abstract trust table class (Done)&lt;/div&gt;</summary>
		<author><name>Jude.niroshan</name></author>
	</entry>
</feed>