I Path Inference in Wireless Sensor Networks
I Path Inference in Wireless Sensor Networks
NETWORKS
ABSTRACT:
Recent wireless sensor networks (WSNs) are becoming increasingly complex with the
growing network scale and the dynamic nature of wireless communications. Many
measurement and diagnostic approaches depend on per-packet routing paths for
accurate and fine-grained analysis of the complex network behaviors. In this project,
we propose iPath, a novel path inference approach to reconstructing the per-packet
routing paths in dynamic and large-scale networks. The basic idea of iPath is to
exploit high path similarity to iteratively infer long paths from short ones. iPath starts
with an initial known set of paths and performs path inference iteratively. iPath
includes a novel design of a lightweight hash function for verification of the inferred
paths. In order to further improve the inference capability as well as the execution
efficiency, iPath includes a fast bootstrapping algorithm to reconstruct the initial set
of paths. We also implement iPath and evaluate its performance using traces from
large-scale WSN deployments as well as extensive simulations. Results show that
iPath achieves much higher reconstruction ratios under different network settings
compared to other state-of-the-art approaches.
TABLE OF CONTENTS
CHAPTER-1: INTRODUCTION 1
1.1 Introduction 2
3.3.3-Sequence Diagram 19
CHAPTER-4: IMPLEMENTATION 20
4.1 Modules 21
4.2 Modules Description 21
CHAPTER-5: TESTING 28
CHAPTER-6: RESULTS 36
CONCLUSION
REFERENCES
CHAPTER -1
INTRODUCTION
INTRODUCTION:
INTRODUCTION
WIRELESS sensor networks (WSNs) can be applied in many
application scenarios, e.g., structural protection [1], ecosystem
management [2], and urban CO monitoring [3]. In a typical
WSN, a number of self-organized sensor nodes report the
sensing data periodically to a central sink via multi hop
wireless. Recent years have witnessed a rapid growth of sensor
network scale. Some sensor networks include hundreds even
thousands of sensor nodes [2], [3]. These networks often
employ dynamic routing protocols [4]–[6] to achieve fast
adaptation to the dynamic wireless channel conditions. The
growing network scale and the dynamic nature of wireless
channel make WSNs become increasingly complex and hard to
manage. M Reconstructing the routing path of each received
packet at the sink side is an effective way to understand the
network's complex internal behaviors [7], [8]. With the routing
path of each packet, many measurement and diagnostic
approaches [9]–[13] are able to conduct effective management
and protocol optimizations for deployed WSNs consisting of a
large number of unattended sensor nodes. For example, PAD
[10] depends on the routing path information to build a
Bayesian network for inferring the root causes of abnormal
phenomena. Path information is also important for a network
manager to effectively manage a sensor network. For example,
given the per-packet path information, a network manager can
easily find out the nodes with a lot of packets forwarded by
them, i.e., network hop spots. Then, the manager can take
actions to deal with that problem, such as deploying more
nodes to that area and modifying the routing layer protocols.
Furthermore, per-packet path information is essential to
monitor the fine-grained per-link metrics. For example, most
existing delay and loss measurement approaches [9], [14]
assume that the routing topology is given as a priori. The time-
varying routing topology can be effectively obtained by per-
packet routing path, significantly improving the values of
existing WSN delay and loss tomography approaches. A
straightforward approach is to attach the entire routing path in
each packet. The problem of this approach is that its message
overhead can be large for packets with long routing paths.
Considering the limited communication resources of WSNs,
this approach is usually not desirable in practice. In this
project, we propose I Path, a novel path inference approach to
reconstruct routing paths at the sink side. Based on a real-
world complex urban sensing network with all node generating
local packets, we find a key observation: It is highly probable
that a packet from node and one of the packets from 's parent
will follow the same path starting from 's parent toward the
sink. We refer to this observation as high path similarity. Fig. 1
shows a simple example where S is the sink node. Denotes a
packet from A, and denotes packets from B (A's parent). High
path similarity states that it is highly probable that will follow
the same path (i.e., , which means the subpath by removing
node A from ) as one of B's packet, say , i.e., . The basic idea
of iPath is to exploit high path similarity to iteratively infer
long paths from short ones. iPath starts with a known set of
paths (e.g., the one-hop paths are already known) and performs
path inference iteratively. During each iteration, it tries to infer
paths one hop longer until no paths can be inferred. In order to
ensure correct inference, iPath needs to verify whether a short
path can be used for inferring a long path. For this purpose,
iPath includes a novel design of a lightweight hash function.
Each data packet attaches a hash value that is updated hop by
hop. This recorded hash value is compared against the
calculated hash value of an inferred path. If these two values
match, the path is correctly inferred with a very high
probability. In order to further improve the inference capability
as well as its execution efficiency, iPath includes a fast
bootstrapping algorithm to reconstruct a known set of paths.
iPath achieves a much higher reconstruction ratio in networks
with relatively low packet delivery ratio and high routing
dynamics.
SYSTEM ANALYSIS
EXISTING SYSTEM:
With the routing path of each packet, many measurement and diagnostic
approaches are able to conduct effective management and protocol
optimizations for deployed WSNs consisting of a large number of
unattended sensor nodes. For example, PAD depends on the routing path
information to build a Bayesian network for inferring the root causes of
abnormal phenomena.
Path information is also important for a network manager to effectively
manage a sensor network. For example, given the per-packet path
information, a network manager can easily find out the nodes with a lot of
packets forwarded by them, i.e., network hop spots. Then, the manager can
take actions to deal with that problem, such as deploying more nodes to
that area and modifying the routing layer protocols.
Furthermore, per-packet path information is essential to monitor the fine-
grained per-link metrics. For example, most existing delay and loss
measurement approaches assume that the routing topology is given as a
priori.
The time-varying routing topology can be effectively obtained by per-
packet routing path, significantly improving the values of existing WSN
delay and loss tomography approaches.
The growing network scale and the dynamic nature of wireless channel
make WSNs become increasingly complex and hard to manage.
The problem of existing approach is that its message overhead can be large
for packets with long routing paths.
Considering the limited communication resources of WSNs, this approach
is usually not desirable in practice.
PROPOSED SYSTEM:
FEASIBILITY STUDY
ECONOMICAL FEASIBILITY
TECHNICAL FEASIBILITY
SOCIAL FEASIBILITY
ECONOMICAL FEASIBILITY
This study is carried out to check the economic impact that the system
will have on the organization. The amount of fund that the company can pour
into the research and development of the system is limited. The expenditures
must be justified. Thus the developed system as well within the budget and
this was achieved because most of the technologies used are freely available.
Only the customized products had to be purchased.
TECHNICAL FEASIBILITY
This study is carried out to check the technical feasibility, that is,
the technical requirements of the system. Any system developed must not have
a high demand on the available technical resources. This will lead to high
demands on the available technical resources. This will lead to high demands
being placed on the client. The developed system must have a modest
requirement, as only minimal or null changes are required for implementing
this system.
SOCIAL FEASIBILITY
HARDWARE REQUIREMENTS:
Software Requirements:
Platform : Java
IDE : Eclipse/sTS
CHAPTER- 2
LITERATION SURVEY
CHAPTER- 3
SYSTEM DESIGN:
Input Design
Info configuration is the way toward changing over the client made
contribution to a PC based organization. The objective of the information
configuration is to make the information section intelligent & liberated from
blunders. The mistake is in the information are constrained by the information
plan. The application has been created in easy to understand way. The
structures have been planned in such a manner during the preparing the cursor
is set in the position where must be entered. The client is additionally given
inside a choice to choose a proper contribution from different choices
identified with the field in specific cases.
Output Design
The Output from the PC is needed to essentially make a proficient strategy for
correspondence inside the organization fundamentally among the venture chief
& his colleagues, as such, the overseer & the customers. The yield of VPN is
the framework which permits the task chief to deal with his customers as far as
making new customers & appointing new undertakings to them, keeping up a
record of the venture legitimacy & giving envelope level admittance to every
customer on the client side contingent upon the activities apportioned to him.
After consummation of a task, another venture might be doled out to the
customer. Client validation methods are kept up at the underlying stages itself.
Another client might be made by the director himself or a client would himself
be able to enroll as another client yet the errand of allotting ventures &
approving another client rests with the overseer as it were.
SYSTEM DESIGN
GOALS:
The Primary goals in the design of the UML are as follows:
1. Provide users a ready-to-use, expressive visual modeling Language so
that they can develop and exchange meaningful models.
2. Provide extendibility and specialization mechanisms to extend the core
concepts.
3. Be independent of particular programming languages and development
process.
4. Provide a formal basis for understanding the modeling language.
5. Encourage the growth of OO tools market.
6. Support higher level development concepts such as collaborations,
frameworks, patterns and components.
7. Integrate best practices.
USE CASE DIAGRAM:
Class Diagram
Receiver
Merge(),
Receive(), Store()
Methods
Destination,
fname, store
Members
SEQUENCE DIAGRAM:
Sequence Diagram
File Receiving
Confirmation Find Congestion
Store Confirmation
CHAPTER- 4
IMPLEMENTATION:
MODULES:
• Source
• iPath Router
• Receiver
MODULES DESCSRIPTION:
SOURCE
In this module, service provider browses the file; enter the
file name and sends to the iPath router. Service provider
encrypts the data and send to the router.
iPath ROUTER
In this module, router receives the file packets from the source,
if packets size is greater than node BW then congestion occurs
and then path inference will take place in order to find an
alternative path. It takes another node and reaches the
destination and load balancing takes place. When congestion
occurs node band width can be increased.
RECEIVER
SOFTWARE ENVIRONMENT
Java Technology
Simple
Architecture neutral
Object oriented
Portable
Distributed
High performance
Interpreted
Multithreaded
Robust
Dynamic
Secure
You can think of Java byte codes as the machine code instructions for
the Java Virtual Machine (Java VM). Every Java interpreter, whether it’s a
development tool or a Web browser that can run applets, is an implementation
of the Java VM. Java byte codes help make “write once, run anywhere”
possible. You can compile your program into byte codes on any platform that
has a Java compiler. The byte codes can then be run on any implementation of
the Java VM. That means that as long as a computer has a Java VM, the same
program written in the Java programming language can run on Windows 2000,
a Solaris workstation, or on an iMac.
The Java Platform
A platform is the hardware or software environment in which a
program runs. We’ve already mentioned some of the most popular
platforms like Windows 2000, Linux, Solaris, and MacOS. Most
platforms can be described as a combination of the operating system
and hardware. The Java platform differs from most other platforms in
that it’s a software-only platform that runs on top of other hardware-
based platforms.
The Java platform has two components:
The Java Virtual Machine (Java VM)
The Java Application Programming Interface (Java API)
You’ve already been introduced to the Java VM. It’s the base for
the Java platform and is ported onto various hardware-based platforms.
The Java API is a large collection of ready-made software
components that provide many useful capabilities, such as graphical
user interface (GUI) widgets. The Java API is grouped into libraries of
related classes and interfaces; these libraries are known as packages.
The next section, What Can Java Technology Do? Highlights what
functionality some of the packages in the Java API provide.
The following figure depicts a program that’s running on the Java
platform. As the figure shows, the Java API and the virtual machine
insulate the program from the hardware.
Native code is code that after you compile it, the compiled code
runs on a specific hardware platform. As a platform-independent
environment, the Java platform can be a bit slower than native code.
However, smart compilers, well-tuned interpreters, and just-in-time
byte code compilers can bring performance close to that of native code
without threatening portability.
What Can Java Technology Do?
The most common types of programs written in the Java programming
language are applets and applications. If you’ve surfed the Web,
you’re probably already familiar with applets. An applet is a program
that adheres to certain conventions that allow it to run within a Java-
enabled browser.
However, the Java programming language is not just for writing cute,
entertaining applets for the Web. The general-purpose, high-level Java
programming language is also a powerful software platform. Using the
generous API, you can write many types of programs.
An application is a standalone program that runs directly on the Java
platform. A special kind of application known as a server serves and
supports clients on a network. Examples of servers are Web servers,
proxy servers, mail servers, and print servers. Another specialized
program is a servlet. A servlet can almost be thought of as an applet
that runs on the server side. Java Servlets are a popular choice for
building interactive web applications, replacing the use of CGI scripts.
Servlets are similar to applets in that they are runtime extensions of
applications. Instead of working in browsers, though, servlets run
within Java Web servers, configuring or tailoring the server.
How does the API support all these kinds of programs? It does so with
packages of software components that provides a wide range of
functionality. Every full implementation of the Java platform gives you
the following features:
The essentials: Objects, strings, threads, numbers, input and
output, data structures, system properties, date and time, and so
on.
Applets: The set of conventions used by applets.
Networking: URLs, TCP (Transmission Control Protocol),
UDP (User Data gram Protocol) sockets, and IP (Internet
Protocol) addresses.
Internationalization: Help for writing programs that can be
localized for users worldwide. Programs can automatically
adapt to specific locales and be displayed in the appropriate
language.
Security: Both low level and high level, including electronic
signatures, public and private key management, access control,
and certificates.
Software components: Known as JavaBeansTM, can plug into
existing component architectures.
Object serialization: Allows lightweight persistence and
communication via Remote Method Invocation (RMI).
Java Database Connectivity (JDBCTM): Provides uniform
access to a wide range of relational databases.
The Java platform also has APIs for 2D and 3D graphics, accessibility,
servers, collaboration, telephony, speech, animation, and more. The
following figure depicts what is included in the Java 2 SDK.
We can’t promise you fame, fortune, or even a job if you learn the
Java programming language. Still, it is likely to make your programs
better and requires less effort than other languages. We believe that
Java technology will help you do the following:
JDBC
In an effort to set an independent database standard API for Java; Sun
Microsystems developed Java Database Connectivity, or JDBC. JDBC offers a
generic SQL database access mechanism that provides a consistent interface to
a variety of RDBMSs. This consistent interface is achieved through the use of
“plug-in” database connectivity modules, or drivers. If a database vendor
wishes to have JDBC support, he or she must provide the driver for each
platform that the database and Java run on.
To gain a wider acceptance of JDBC, Sun based JDBC’s framework on
ODBC. As you discovered earlier in this chapter, ODBC has widespread
support on a variety of platforms. Basing JDBC on ODBC will allow vendors
to bring JDBC drivers to market much faster than developing a completely
new connectivity solution.
JDBC was announced in March of 1996. It was released for a 90 day
public review that ended June 8, 1996. Because of user input, the final JDBC
v1.0 specification was released soon after.
The remainder of this section will cover enough information about JDBC for
you to know what it is about and how to use it effectively. This is by no means
a complete overview of JDBC. That would fill an entire book.
JDBC Goals
Few software packages are designed without goals in mind. JDBC is
one that, because of its many goals, drove the development of the API. These
goals, in conjunction with early reviewer feedback, have finalized the JDBC
class library into a solid framework for building database applications in Java.
The goals that were set for JDBC are important. They will give you some
insight as to why certain classes and functionalities behave the way they do.
The eight design goals for JDBC are as follows:
Simple
Architecture-neutral
Object-oriented
Portable
Distributed
High-performance
Interpreted
multithreaded
Robust
Dynamic
Secure
Networking
TCP/IP stack
The TCP/IP stack is shorter than the OSI one:
TCP
TCP supplies logic to give a reliable connection-oriented
protocol above IP. It provides a virtual circuit that two processes can
use to communicate.
Internet addresses
In order to use a service, you must be able to find it. The Internet
uses an address scheme for machines so that they can be located. The
address is a 32 bit integer which gives the IP address. This encodes a
network ID and more addressing. The network ID falls into various
classes according to the size of the network address.
Network address
Class A uses 8 bits for the network address with 24 bits left over
for other addressing. Class B uses 16 bit network addressing. Class C
uses 24 bit network addressing and class D uses all 32.
Subnet address
Internally, the UNIX network is divided into sub networks.
Building 11 is currently on one sub network and uses 10-bit
addressing, allowing 1024 different hosts.
Host address
8 bits are finally used for host addresses within our subnet. This
places a limit of 256 machines that can be on the subnet.
Total address
Port addresses
A service exists on a host, and is identified by its port. This is a
16 bit number. To send a message to a server, you send it to the port
for that service of the host that it is running on. This is not location
transparency! Certain of these ports are "well known".
Sockets
A socket is a data structure maintained by the system to handle
network connections. A socket is created using the call socket. It
returns an integer that is like a file descriptor. In fact, under
Windows, this handle can be used with Read File and Write File
functions.
#include <sys/types.h>
#include <sys/socket.h>
int socket(int family, int type, int protocol);
Here "family" will be AF_INET for IP communications, protocol
will be zero, and type will depend on whether TCP or UDP is used.
Two processes wishing to communicate over a network create a
socket each. These are similar to two ends of a pipe - but the actual
pipe does not yet exist.
JFree Chart
JFreeChart is a free 100% Java chart library that makes it easy
for developers to display professional quality charts in their
applications. JFreeChart's extensive feature set includes:
A consistent and well-documented API, supporting a wide
range of chart types;
A flexible design that is easy to extend, and targets both server-
side and client-side applications;
Support for many output types, including Swing components,
image files (including PNG and JPEG), and vector graphics file
formats (including PDF, EPS and SVG);
JFreeChart is "open source" or, more specifically, free
software. It is distributed under the terms of the GNU Lesser General
Public Licence (LGPL), which permits use in proprietary applications.
1. Map Visualizations
Charts showing values that relate to geographical areas. Some
examples include: (a) population density in each state of the United
States, (b) income per capita for each country in Europe, (c) life
expectancy in each country of the world. The tasks in this project
include:
Sourcing freely redistributable vector outlines for the countries
of the world, states/provinces in particular countries (USA in
particular, but also other areas);
Creating an appropriate dataset interface (plus default
implementation), a rendered, and integrating this with the existing
XYPlot class in JFreeChart;
Testing, documenting, testing some more, documenting some
more.
4. Property Editors
MIME Type or Content Type: If you see above sample HTTP response
header, it contains tag “Content-Type”. It’s also called MIME type and server
sends it to client to let them know the kind of data it’s sending. It helps client
in rendering the data for user. Some of the mostly used mime types are
text/html, text/xml, application/xml etc.
Understanding URL
URL is acronym of Universal Resource Locator and it’s used to locate the
server and resource. Every resource on the web has it’s own unique address.
Let’s see parts of URL with an example.
http://localhost:8080/FirstServletProject/jsps/hello.jsp
http:// – This is the first part of URL and provides the communication
protocol to be used in server-client communication.
localhost – The unique address of the server, most of the times it’s the
hostname of the server that maps to unique IP address. Sometimes multiple
hostnames point to same IP addresses and web server virtual host takes care of
sending request to the particular server instance.
8080 – This is the port on which server is listening, it’s optional and if we
don’t provide it in URL then request goes to the default port of the protocol.
Port numbers 0 to 1023 are reserved ports for well known services, for
example 80 for HTTP, 443 for HTTPS, 21 for FTP etc.
Web Container
Tomcat is a web container, when a request is made from Client to web server,
it passes the request to web container and it’s web container job to find the
correct resource to handle the request (servlet or JSP) and then use the
response from the resource to generate the response and provide it to web
server. Then web server sends the response back to the client.
When web container gets the request and if it’s for servlet then container
creates two Objects HTTPServletRequest and HTTPServletResponse. Then it
finds the correct servlet based on the URL and creates a thread for the request.
Then it invokes the servlet service() method and based on the HTTP method
service() method invokes doGet() or doPost() methods. Servlet methods
generate the dynamic page and write it to response. Once servlet thread is
complete, container converts the response to HTTP response and send it back
to client.
Some of the important work done by web container are:
Communication Support – Container provides easy way of
communication between web server and the servlets and JSPs. Because
of container, we don’t need to build a server socket to listen for any
request from web server, parse the request and generate response. All
these important and complex tasks are done by container and all we
need to focus is on our business logic for our applications.
Lifecycle and Resource Management – Container takes care of
managing the life cycle of servlet. Container takes care of loading the
servlets into memory, initializing servlets, invoking servlet methods
and destroying them. Container also provides utility like JNDI for
resource pooling and management.
Multithreading Support – Container creates new thread for every
request to the servlet and when it’s processed the thread dies. So
servlets are not initialized for each request and saves time and memory.
JSP Support – JSPs doesn’t look like normal java classes and web
container provides support for JSP. Every JSP in the application is
compiled by container and converted to Servlet and then container
manages them like other servlets.
Miscellaneous Task – Web container manages the resource pool, does
memory optimizations, run garbage collector, provides security
configurations, support for multiple applications, hot deployment and
several other tasks behind the scene that makes our life easier.
MySQL:
MySQL, the most popular Open Source SQL database management system, is
developed, distributed, and supported by Oracle Corporation.
The MySQL Web site (http://www.mysql.com/) provides the latest
information about MySQL software.
The official way to pronounce “MySQL” is “My Ess Que Ell” (not “my
sequel”), but we do not mind if you pronounce it as “my sequel” or in some
other localized way.
SAMPLE CODE
CHAPTER- 5
TESTING
SYSTEM TESTING
The purpose of testing is to discover errors. Testing is the process of
trying to discover every conceivable fault or weakness in a work product. It
provides a way to check the functionality of components, sub assemblies,
assemblies and/or a finished product It is the process of exercising software
with the intent of ensuring that the
Software system meets its requirements and user expectations and does not
fail in an unacceptable manner. There are various types of test. Each test type
addresses a specific testing requirement.
TYPES OF TESTS
Unit testing
Unit testing involves the design of test cases that validate that the
internal program logic is functioning properly, and that program inputs
produce valid outputs. All decision branches and internal code flow should be
validated. It is the testing of individual software units of the application .it is
done after the completion of an individual unit before integration. This is a
structural testing, that relies on knowledge of its construction and is invasive.
Unit tests perform basic tests at component level and test a specific business
process, application, and/or system configuration. Unit tests ensure that each
unique path of a business process performs accurately to the documented
specifications and contains clearly defined inputs and expected results.
Integration testing
System Test
System testing ensures that the entire integrated software system meets
requirements. It tests a configuration to ensure known and predictable results.
An example of system testing is the configuration oriented system integration
test. System testing is based on process descriptions and flows, emphasizing
pre-driven process links and integration points.
White Box Testing
White Box Testing is a testing in which in which the software tester has
knowledge of the inner workings, structure and language of the software, or at
least its purpose. It is purpose. It is used to test areas that cannot be reached
from a black box level.
Test objectives
All field entries must work properly.
Pages must be activated from the identified link.
The entry screen, messages and responses must not be delayed.
Features to be tested
Verify that the entries are of the correct format
No duplicate entries should be allowed
All links should take the user to the correct page.
Test Results: All the test cases mentioned above passed successfully. No
defects encountered.
Test Results: All the test cases mentioned above passed successfully. No
defects encountered.
CHAPTER- 6
RESULTS
SCREEN SHOTS:
SCREEN SHOTS:
CONCLUSION