SPIN NS2


What is  SPIN Protocol?Concepts involved in SPIN Protocol projects?

SPIN referred as Sensor Protocols for Information via Negotiation.It is used for distributing information efficient in a constrained Wireless Sensor Network.Nodes in SPIN Protocol is usually referred as meta-data for high level data descriptors.This is helpful in eliminating redundant data in a network.

 

 

Types of messages used in spin protocol:

  • ADY.
  • DATA.
  • REQ.

 

Concepts involved in spin routing protocol:

  • To realize traffic reduction for information dissemination.
  • Gossiping and ideal protocol for energy and bandwidth consumption.
  • For ensure the elimination of redundant data and transfer of useful information takes place.
  • For flat routing.

Architecture of spin routing:

Architecture-of-Spin-Routing

 

Sample NS2 Code for spin routing protocol:

This code has enough information of what are the process are involved in sending and receiving messages in spin routing protocol.

void RCAgent::sendmsg(int data_size, const char* meta_data, int mac_dst, int link_dst)
{
 
Packet *p = allocpkt();
hdr_cmn *hdr = HDR_CMN(p);
hdr->size() = data_size;
 
  hdr_rca *rca_hdr = HDR_RCA(p);
rca_hdr->msg_type() = packetMsg_;
rca_hdr->set_meta(meta_data);
rca_hdr->rca_mac_dst() = mac_dst;
rca_hdr->rca_link_dst() = link_dst;
rca_hdr->rca_src() = mac->addr();
 
//printf("Sending: Type=%d data_size=%d\n\tMeta = %s\n\tSource=%x\n\tTarget = %x\n",rca_hdr->msg_type(), hdr->size(), rca_hdr->meta(),rca_hdr->rca_src(),rca_hdr->rca_mac_dst());
//printf("\tTime = %f\n",Scheduler::instance().clock());
//printf("\tLink_dst = %x\n",rca_hdr->rca_link_dst());
 
//Packet::PrintRcHeader(p,"RCAgent");
Scheduler::instance().schedule(ll, p, 0);
 return;
 
}
 
void RCAgent::recv(Packet* p, Handler*)
{
 
  hdr_cmn *hdr = HDR_CMN(p);
  hdr_rca *rca_hdr = HDR_RCA(p);
 
//printf("Receiving: Link_dst = %x, Type=%d data_size=%d\n\tMeta = %s, source = %d\n",rca_hdr->rca_link_dst(),rca_hdr->msg_type(), hdr->size(), rca_hdr->meta(),rca_hdr->rca_src());
 
packetMsg_ = rca_hdr->msg_type();
 
if (app_)
app_->recv(rca_hdr->rca_link_dst(), hdr->size(), rca_hdr->meta(),
 rca_hdr->rca_src());
 
/*
 * didn't expect packet (or we're a null agent?)
 */
Packet::free(p);
 
}

Journal Support for NS2 Projects: (SPIN NS2)

NS2-Projects-Journal-Support