<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="nlm-ta">Sensors</journal-id>
<journal-title>Sensors</journal-title>
<issn pub-type="epub">1424-8220</issn>
<publisher>
<publisher-name>Molecular Diversity Preservation International (MDPI)</publisher-name></publisher></journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3390/s110505183</article-id>
<article-id pub-id-type="publisher-id">sensors-11-05183</article-id>
<article-categories>
<subj-group>
<subject>Article</subject></subj-group></article-categories>
<title-group>
<article-title>A Cross-Layer Duty Cycle MAC Protocol Supporting a Pipeline Feature for Wireless Sensor Networks</article-title></title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Tong</surname><given-names>Fei</given-names></name><xref ref-type="aff" rid="af1-sensors-11-05183"><sup>1</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Xie</surname><given-names>Rong</given-names></name><xref ref-type="aff" rid="af1-sensors-11-05183"><sup>1</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Shu</surname><given-names>Lei</given-names></name><xref ref-type="aff" rid="af2-sensors-11-05183"><sup>2</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>Kim</surname><given-names>Young-Chon</given-names></name><xref ref-type="aff" rid="af1-sensors-11-05183"><sup>1</sup></xref><xref ref-type="corresp" rid="c1-sensors-11-05183"><sup>*</sup></xref></contrib></contrib-group>
<aff id="af1-sensors-11-05183">
<label>1</label> Department of Computer Engineering, Chonbuk National University, Jeonju 561-756, Korea; E-Mails: <email>tong1987fei@163.com</email> (F.T.); <email>xierong@jbnu.ac.kr</email> (R.X.)</aff>
<aff id="af2-sensors-11-05183">
<label>2</label> Department of Multimedia Engineering, Osaka University, Osaka 565-0871, Japan; E-Mail: <email>lei.shu@ieee.org</email></aff>
<author-notes>
<corresp id="c1-sensors-11-05183">
<label>*</label>Author to whom correspondence should be addressed; E-Mail: <email>yckim@chonbuk.ac.kr</email>; Tel.: +82-63-270-2413; Fax: +82-63-270-2394.</corresp></author-notes>
<pub-date pub-type="collection">
<year>2011</year></pub-date>
<pub-date pub-type="epub">
<day>11</day>
<month>5</month>
<year>2011</year></pub-date>
<volume>11</volume>
<fpage>5183</fpage>
<lpage>5201</lpage>
<history>
<date date-type="received">
<day>23</day>
<month>3</month>
<year>2011</year></date>
<date date-type="rev-recd">
<day>27</day>
<month>4</month>
<year>2011</year></date>
<date date-type="accepted">
<day>10</day>
<month>5</month>
<year>2011</year></date></history>
<permissions>
<copyright-statement>© 2011 by the authors; licensee MDPI, Basel, Switzerland.</copyright-statement>
<copyright-year>2011</copyright-year>
<license>
<p>This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution license (http://creativecommons.org/licenses/by/3.0/).</p></license></permissions>
<abstract>
<p>Although the conventional duty cycle MAC protocols for Wireless Sensor Networks (WSNs) such as RMAC perform well in terms of saving energy and reducing end-to-end delivery latency, they were designed independently and require an extra routing protocol in the network layer to provide path information for the MAC layer. In this paper, we propose a new cross-layer duty cycle MAC protocol with data forwarding supporting a pipeline feature (P-MAC) for WSNs. P-MAC first divides the whole network into many grades around the sink. Each node identifies its grade according to its logical hop distance to the sink and simultaneously establishes a sleep/wakeup schedule using the grade information. Those nodes in the same grade keep the same schedule, which is staggered with the schedule of the nodes in the adjacent grade. Then a variation of the RTS/CTS handshake mechanism is used to forward data continuously in a pipeline fashion from the higher grade to the lower grade nodes and finally to the sink. No extra routing overhead is needed, thus increasing the network scalability while maintaining the superiority of duty-cycling. The simulation results in OPNET show that P-MAC has better performance than S-MAC and RMAC in terms of packet delivery latency and energy efficiency.</p></abstract>
<kwd-group>
<kwd>MAC protocol</kwd>
<kwd>cross-layer</kwd>
<kwd>duty cycle</kwd>
<kwd>pipeline feature</kwd>
<kwd>wireless sensor networks</kwd></kwd-group></article-meta></front>
<body>
<sec sec-type="intro">
<label>1.</label>
<title>Introduction</title>
<p>The limitation of energy due to the limited battery capacity of sensor nodes is a fundamental problem in Wireless Sensor Networks (WSNs). Communication protocols for WSNs, including routing and MAC layer protocols should thus be designed energy-efficiently. Traditional wireless MAC protocols such as IEEE 802.11 are not suitable for this purpose since in these protocols nodes are required to stay awake to listen to the medium, even when the network becomes idle. This inefficient idle-listening mechanism wastes substantial energy [<xref ref-type="bibr" rid="b1-sensors-11-05183">1</xref>,<xref ref-type="bibr" rid="b2-sensors-11-05183">2</xref>].</p>
<p>Nowadays, many methods introduce duty-cycling mechanisms into MAC designs for WSNs to achieve low energy consumption. In the duty-cycling approach, each node periodically experiences an active state and a sleeping state. When in the active state, a node listens to the radio channel for possible transmissions, whereas in the sleeping state, it turns off its radio to save energy. Each node establishes and maintains a schedule to indicate when it should wake up or sleep based on the synchronization requirements among neighboring nodes.</p>
<p>S-MAC [<xref ref-type="bibr" rid="b3-sensors-11-05183">3</xref>] is a typical synchronized duty cycle MAC protocol for WSNs. In S-MAC, each node maintains a fixed listening/sleeping schedule. The listening interval is divided into two parts, namely <italic>SYNC</italic> and <italic>DATA</italic>. The <italic>SYNC</italic> part is for synchronization among neighboring nodes using SYNC packets, and the <italic>DATA</italic> part is for data transmission using the RTS/CTS handshake mechanism as in 802.11. Although S-MAC is energy efficient, it may introduce significant packet delivery latency, since a packet can only be forwarded to a 1-hop distance in each operational cycle. The improved S-MAC with adaptive listening [<xref ref-type="bibr" rid="b4-sensors-11-05183">4</xref>] can improve latency by delivering packets up to a 2-hop distance in each cycle. But the latency is still significant and the use of adaptive listening can significantly increase energy consumption.</p>
<p>Several protocols have been proposed to mitigate packet delivery latency without sacrificing energy efficiency of duty-cycling (e.g., RMAC [<xref ref-type="bibr" rid="b5-sensors-11-05183">5</xref>], T-MAC [<xref ref-type="bibr" rid="b6-sensors-11-05183">6</xref>] and DW-MAC [<xref ref-type="bibr" rid="b7-sensors-11-05183">7</xref>]). Take RMAC for example. Similar to S-MAC, RMAC divides the operational cycle of a sensor node into three periods: <italic>SYNC</italic>, <italic>DATA</italic> and <italic>SLEEP</italic>. But the difference lies in the fact that RMAC delivers a pioneer frame (PION) over multiple hops during the <italic>DATA</italic> period to set up a multi-hop schedule for subsequent data forwarding during the <italic>SLEEP</italic> period. Therefore, this approach can forward a data packet over several hops within a single cycle, thus improving delivery latency. Note that the PION frame has a dual function, one is to request communication like RTS, and the other is to confirm a request like CTS. This PION relaying process continues until either the PION frame has reached the final destination or the current <italic>DATA</italic> period has ended.</p>
<p>Although the improved duty-cycling mechanisms mitigate the delivery latency problem, they were designed independently without considering routing. For example, RMAC assumes a routing protocol has been deployed over it to provide the routing information it needs. But the application of a routing protocol would cause significant performance degradation of these MAC protocols. This paper designs and evaluates a new cross-layer duty cycle MAC protocol with data forwarding supporting a pipeline feature (P-MAC).</p>
<p>P-MAC divides the whole network into several groups around the sink, each with different grades. At the network layer, each sensor node identifies its grade according to its logical hop distance to the sink and simultaneously establishes a sleep/wakeup schedule based on its grade information. The sink is in grade zero and the lower a node’s grade, the fewer hops it needs to send packets to the sink. The wakeup period of a node is divided into two parts, the first one is used for receiving data from the upper grade node, and the second one is used for sending the received data to the lower grade node. Those nodes in the same grade keep the same schedule, which is staggered with the schedule of the nodes in the adjacent grade. Then at the MAC layer, a variation of the RTS/CTS handshake mechanism is used to forward data continuously from the higher grade to lower grade nodes and finally to the sink.</p>
<p>P-MAC does not need an extra independent routing mechanism to support it, thus the communication overhead in the network can be reduced considerably without increasing delivery latency and sacrificing energy efficiency. In addition, each node only maintains a grade and a schedule, which improves the scalability with respect to network topology changes such as nodes dying over time, the later addition of new nodes or nodes moving to different locations. And multiple sinks can be used to partition a large-scale WSN into several independent sub-networks to increase the network manageability and balance energy dissipation.</p>
<p>The remainder of the paper is organized as follows. In Section 2, we discuss the related work in the area of duty cycle MAC designs for WSNs. In Section 3, the details of P-MAC are presented, including the network scalability discussion. Section 4 gives the performance evaluation and analysis based on simulation using the OPNET modeler. Finally, Section 5 concludes the paper.</p></sec>
<sec>
<label>2.</label>
<title>Related Work</title>
<p>The original duty cycle MAC protocols for WSNs (e.g., S-MAC [<xref ref-type="bibr" rid="b3-sensors-11-05183">3</xref>,<xref ref-type="bibr" rid="b4-sensors-11-05183">4</xref>]) introduce significant end-to-end delivery latency. Many researchers have proposed other scheduled MAC schemes to mitigate this problem without sacrificing the energy-efficiency of the duty-cycling mechanism. These approaches can be approximately divided into two categories: synchronous and asynchronous, according to their synchronization requirements. Synchronous schemes (e.g., S-MAC [<xref ref-type="bibr" rid="b3-sensors-11-05183">3</xref>], T-MAC [<xref ref-type="bibr" rid="b6-sensors-11-05183">6</xref>], RMAC [<xref ref-type="bibr" rid="b5-sensors-11-05183">5</xref>] and DW-MAC [<xref ref-type="bibr" rid="b7-sensors-11-05183">7</xref>]) require synchronization among neighboring nodes, ensuring that they can cooperate for communication, whereas asynchronous schemes (e.g., B-MAC [<xref ref-type="bibr" rid="b8-sensors-11-05183">8</xref>], WiseMAC [<xref ref-type="bibr" rid="b9-sensors-11-05183">9</xref>], X-MAC [<xref ref-type="bibr" rid="b10-sensors-11-05183">10</xref>] and RI-MAC [<xref ref-type="bibr" rid="b11-sensors-11-05183">11</xref>]) allow each node to establish and maintain its own schedule independently, usually using preamble schemes.</p>
<p>T-MAC [<xref ref-type="bibr" rid="b6-sensors-11-05183">6</xref>] follows S-MAC using synchronization and virtual clustering schemes. It dynamically ends the active part of the listen/sleep duty cycle to further save energy when there are no packets to receive. However, the higher delivery latency problem still exists in T-MAC, since a data packet can only be forwarded a 1-hop distance within a single cycle. After becoming aware of this latency problem, the designers of S-MAC mitigated the problem by introducing the adaptive listening technique [<xref ref-type="bibr" rid="b4-sensors-11-05183">4</xref>]. In the improved S-MAC with adaptive listening, if a node overhears an RTS or CTS, it won't go to sleep when the <italic>SLEEP</italic> period begins but instead will keep awake for a short time. Thereby, if this node is the next-hop node, it can immediately receive data from its neighbor instead of waiting for the next cycle. Thus, a packet can be delivered up to a 2-hop distance within a single cycle. However, the improvement is minor and this technique also consumes more energy, because many neighboring nodes need to keep awake during adaptive listening, but only one of them will be the next hop.</p>
<p>RMAC uses a PION frame to reserve a channel over several hops during the <italic>DATA</italic> period, then, it transmits a data packet through the reserved channel during the <italic>SLEEP</italic> period. Therefore, the data packet can be forwarded across multiple hops within a single cycle, which not only reduces delivery latency significantly but also handles traffic contention efficiently. The recently proposed PRMAC [<xref ref-type="bibr" rid="b12-sensors-11-05183">12</xref>] inherits this advantage and exploits it further by using PION to schedule multi-hop transmission of multiple data packets, enabling multiple packets to be transmitted over multiple hops within a single cycle, thus ensuring that PRMAC can respond to traffic load changes better than RMAC.</p>
<p>Unlike the above synchronous duty cycle MAC protocols, asynchronous schemes [<xref ref-type="bibr" rid="b8-sensors-11-05183">8</xref>–<xref ref-type="bibr" rid="b10-sensors-11-05183">10</xref>,<xref ref-type="bibr" rid="b13-sensors-11-05183">13</xref>] using the preamble sampling technique [<xref ref-type="bibr" rid="b14-sensors-11-05183">14</xref>] were introduced into the MAC layer design for WSNs. The basic idea of this strategy is that prior to data transmission, a sender transmits a long enough preamble lasting at least as long as the receiver's sleep period. The receiver periodically wakes up and checks for activity on the channel. If a preamble is detected, the receiver keeps awake long enough to receive the data, otherwise it goes back to sleep. RI-MAC [<xref ref-type="bibr" rid="b11-sensors-11-05183">11</xref>] differs from this original asynchronous strategy since it uses the receiver-initiated mechanism, which is similar to that proposed in [<xref ref-type="bibr" rid="b15-sensors-11-05183">15</xref>] for general wireless networks, to achieve better performance, in which the sender keeps active until the receiver explicitly informs the sender when to start data transmission by sending a short beacon frame.</p>
<p>Hybrid approaches with channel polling scheme, such as SCP [<xref ref-type="bibr" rid="b16-sensors-11-05183">16</xref>] and LEMR [<xref ref-type="bibr" rid="b17-sensors-11-05183">17</xref>] have also been proposed. Compared with these duty cycle MAC protocols, P-MAC fully integrates routing into a wake-up scheduling algorithm. In P-MAC, the whole network is divided into several grades, which are used to guide data transmission. The schedules between two adjacent grades are staggered so that data can be transmitted continuously to the sink in a pipeline fashion, thus ensuring that the delivery latency is more acceptable. Actually, this pipeline scheduled pattern scheme for reducing latency is not original. For example, DMAC [<xref ref-type="bibr" rid="b18-sensors-11-05183">18</xref>] allows continuous packet forwarding by offsetting a sensor node’s sleep schedule (like a pipeline) based on a tree communication structure. Li <italic>et al.</italic> [<xref ref-type="bibr" rid="b19-sensors-11-05183">19</xref>] and Cao <italic>et al.</italic> [<xref ref-type="bibr" rid="b20-sensors-11-05183">20</xref>] also proposed a similar pipelining scheme. Keshavarzian <italic>et al.</italic> [<xref ref-type="bibr" rid="b21-sensors-11-05183">21</xref>] evaluated several existing scheduling schemes including a staggered ladder pattern scheme. P-MAC combines this scheduling scheme with grade division for routing to achieve high energy efficiency and low delivery latency.</p></sec>
<sec sec-type="methods">
<label>3.</label>
<title>P-MAC Design Integrated with Routing</title>
<p>The conventional duty cycle MAC protocols were designed independently neglecting the impact of the network layer. P-MAC considers cross-layer optimization with the goal of minimizing the communication overhead and maintaining the superiority of duty-cycling schemes. It divides all sensor nodes into different grades according to their logical hop distances to the sink. The lower a node’s grade, the fewer hops it needs to send packets to the sink.</p>
<sec>
<label>3.1.</label>
<title>Network Model</title>
<p>P-MAC is proposed for WSNs deployed for rare events detection with prompt reporting. Applications including fire or other hazards detection fall into this category. Such a network consists of many sensor nodes randomly deployed in a sensing area with one (or a few) sink(s) collecting information for an outside system. All nodes are assumed to be homogeneous with the same transmission range.</p></sec>
<sec>
<label>3.2.</label>
<title>Grade Division and Schedule Assignment (GDSA)</title>
<p>Before starting data transmission, each node need to find a grade it belongs to, and choose a schedule for periodically listening and sleeping. This is implemented by operating the <italic>GDSA</italic> mechanism at the network layer of each node.</p>
<p>GDSA is initiated from the sink. In <italic>GDSA</italic>, each node maintains grade information (denoted by <italic>G</italic><italic><sub>n</sub></italic>) with an initial value of −1, except that the sink’s grade is zero (<italic>G</italic><italic><sub>n</sub></italic> = 0) at all times. The sink first chooses a schedule according to its grade (the schedule choosing rule will be introduced in detail in Section 3.5). Then it generates a GRADE message containing a field denoted by <italic>G</italic><italic><sub>m</sub></italic>. After setting <italic>G</italic><italic><sub>m</sub></italic> to one, the sink broadcasts this message. A node receiving a GRADE message with <italic>G</italic><italic><sub>m</sub></italic> = <italic>i</italic> sets its grade to <italic>i</italic> (<italic>G</italic><italic><sub>n</sub></italic> = <italic>i</italic>), chooses a schedule corresponding with its grade, and rebroadcasts the message after increasing <italic>G</italic><italic><sub>m</sub></italic> by one, unless it has already joined an equal or a lower grade. The pseudo-code of the algorithm used by a node for processing the received GRADE message is shown in <xref ref-type="table" rid="t5-sensors-11-05183">Algorithm 1</xref>.</p>
<p>After the grade division using the above scheme, the whole network is divided into several annular grades similar to concentric circles with the center at the sink, as shown in <xref ref-type="fig" rid="f1-sensors-11-05183">Figure 1(a)</xref>. But this is not absolute. For example, if node <italic>A</italic> and <italic>A′</italic> do not exist, the network may be divided into the formation shown in <xref ref-type="fig" rid="f1-sensors-11-05183">Figure 1(b)</xref>.</p>
<p>As stated above, each node simultaneously establishes a periodical sleep/wakeup schedule according to its grade information during the grade division process. Those nodes in the same grade keep the same schedule, but schedules are staggered between two adjacent grade nodes. Suppose a node is in grade <italic>i</italic> (<italic>i</italic> &gt; 0), it repeatedly experiences three periods: receiving data from the (<italic>i</italic>+1)th grade node (the <italic>RECEIVE DATA</italic> period), sending data to the (<italic>i</italic>-1)th grade node (the <italic>SEND DATA</italic> period), and sleeping (the <italic>SLEEP</italic> period). If the upper grade nodes are in the <italic>SEND DATA</italic> period, their adjacent lower grade nodes must be in the <italic>RECEIVE DATA</italic> period (the duration of each period will be analyzed in Section 3.4). Thereby, data frames can be forwarded continuously in a pipeline way from the source node to the sink, thus making the delivery latency acceptable. Those adjacent nodes in the same grade contend with each other for the shared medium while those in different grades cooperate with each other for data transmission.</p>
<p>The pipelining concept cited in this paper is defined as follows:</p>
<p><italic>Definition 1 (Pipelining):</italic> In duty-cycling MAC protocols, a node generally can complete receiving a data frame from one of its upstream nodes and then sending this data frame to one of its downstream nodes within one cycle. This is called pipeline data transmission.</p></sec>
<sec sec-type="methods">
<label>3.3.</label>
<title>Data Transmission</title>
<p>After completing <italic>GDSA</italic>, a sensor node with pending data will not be aware of any concrete routing paths to the sink, but it can use a variation of the RTS/CTS handshake mechanism at the MAC layer to determine the next-hop node from its adjacent lower grade nodes. There are two differences between the variation and the original RTS/CTS handshake in IEEE 802.11. First, in P-MAC, the RTS sent by a source node contains the node’s grade information passed down from the network layer instead of a concrete next-hop address. All nodes in the adjacent lower grade can reply to the source node with CTS if they receive the RTS. Second, the Contention Window (CW) is also used when a node replies with CTS in P-MAC, because several lower grade nodes will simultaneously receive the RTS, and there will be contention for data relaying among these nodes.</p>
<p>Consider the network shown in <xref ref-type="fig" rid="f1-sensors-11-05183">Figure 1(a)</xref>. When nodes in grade 3 are in the <italic>SEND DATA</italic> period, those nodes in grade 2 are in the <italic>RECEIVE DATA</italic> period. Suppose node <italic>S</italic> has data to send to the sink. <italic>S</italic> first broadcasts the RTS frame in its <italic>SEND DATA</italic> period after contending with its neighboring nodes in the same grade (e.g., <italic>S′</italic>) and winning the medium. Both node <italic>A</italic> and <italic>A′</italic> can receive this RTS in their <italic>RECEIVE DATA</italic> periods. They contend with each other for replying with CTS. If node <italic>A</italic>’s CTS is first received by node <italic>S</italic>, <italic>S</italic> will send its data to <italic>A</italic>. After <italic>A</italic> receives the data, it sends an ACK frame to <italic>S</italic>. Then <italic>A</italic> waits to enter its <italic>SEND DATA</italic> period. After receiving the ACK, <italic>S</italic> enters sleep mode. Those nodes (e.g., <italic>S′</italic> and <italic>A′</italic>) that failed in the channel contention will go to sleep and wait to enter their subsequent periods. In the same manner, node <italic>A</italic> finds its next relaying node <italic>B</italic> and sends data to <italic>B</italic> in its <italic>SEND DATA</italic> period. <xref ref-type="fig" rid="f2-sensors-11-05183">Figure 2</xref> shows this data transmission process.</p>
<p>Note that the Network Allocation Vector (NAV) in IEEE 802.11-style MAC protocols for virtual carrier sense is not used in P-MAC, because each node in P-MAC only receives data during its <italic>RECEIVE DATA</italic> period and only sends data during its <italic>SEND DATA</italic> period, respectively. If a node fails in the contention for receiving/sending data or it has waited a long enough time without receiving RTS/CTS, the node will go to sleep. Thus, the virtual carrier sense used for collision avoidance is not necessary in P-MAC.</p></sec>
<sec>
<label>3.4.</label>
<title>Duration of Each Period</title>
<p>An analysis on the duration of each period in the P-MAC cycle follows:</p>
<p>(1) SEND/RECEIVE DATA period: As shown in <xref ref-type="fig" rid="f2-sensors-11-05183">Figure 2</xref>, the duration of the <italic>SEND DATA</italic> period in node <italic>S</italic> is identical to the duration of the <italic>RECEIVE DATA</italic> period in node <italic>A</italic>, if node <italic>S</italic> and <italic>A</italic> are involved in the current data transmission. The maximum time of the <italic>SEND/RECEIVE DATA</italic> period, <italic>T</italic><italic><sub>S/R</sub></italic>, is calculated as follows:
<disp-formula id="FD1">
<label>(1)</label>
<mml:math display="block">
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>R</mml:mi></mml:mrow></mml:mrow></mml:msub>
<mml:mo>=</mml:mo>
<mml:mn>2</mml:mn>
<mml:mtext mathvariant="italic">CM</mml:mtext>
<mml:mo>+</mml:mo>
<mml:mn>2</mml:mn>
<mml:mtext>DIFS</mml:mtext>
<mml:mo>+</mml:mo>
<mml:mn>2</mml:mn>
<mml:mtext>SIFS</mml:mtext>
<mml:mo>+</mml:mo>
<mml:mtext mathvariant="italic">durRTS</mml:mtext>
<mml:mo>+</mml:mo>
<mml:mtext mathvariant="italic">durCTS</mml:mtext>
<mml:mo>+</mml:mo>
<mml:mtext mathvariant="italic">durDATA</mml:mtext>
<mml:mo>+</mml:mo>
<mml:mtext mathvariant="italic">durACK</mml:mtext>
<mml:mo>,</mml:mo></mml:math></disp-formula>where <italic>durRTS</italic>, <italic>durCTS</italic>, <italic>durDATA</italic> and <italic>durACK</italic> are the transmission duration of RTS, CTS, DATA and ACK, respectively.</p>
<p>(2) SLEEP period: In P-MAC, the duration of the <italic>SLEEP</italic> period is determined by the following equation:
<disp-formula id="FD2">
<label>(2)</label>
<mml:math display="block">
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mtext mathvariant="italic">SLEEP</mml:mtext></mml:mrow></mml:msub>
<mml:mo>=</mml:mo>
<mml:mtext mathvariant="italic">sleep</mml:mtext>
<mml:mo>_</mml:mo>
<mml:mtext mathvariant="italic">factor</mml:mtext>
<mml:mo>·</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>R</mml:mi></mml:mrow></mml:mrow></mml:msub>
<mml:mo>,</mml:mo></mml:math></disp-formula>where <italic>sleep_factor</italic> is a positive integer. The whole cycle duration is given by:
<disp-formula id="FD3">
<label>(3)</label>
<mml:math display="block">
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mtext mathvariant="italic">cycle</mml:mtext></mml:mrow></mml:msub>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mtext mathvariant="italic">sleep</mml:mtext>
<mml:mo>_</mml:mo>
<mml:mtext mathvariant="italic">factor</mml:mtext>
<mml:mo>+</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>·</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>R</mml:mi></mml:mrow></mml:mrow></mml:msub>
<mml:mo>=</mml:mo>
<mml:mi>τ</mml:mi>
<mml:mo>·</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>R</mml:mi></mml:mrow></mml:mrow></mml:msub>
<mml:mo>,</mml:mo></mml:math></disp-formula>where <italic>τ</italic> is called <italic>cycle coefficient</italic>. Next we discuss how to determine the value of <italic>sleep_factor</italic>.</p>
<p><xref ref-type="fig" rid="f3-sensors-11-05183">Figure 3</xref> shows an example used for analysis. For simplicity, the RTS/CTS handshake process is not shown. There are four nodes, where node 0’s grade is zero (it is the sink node), node 1’s grade is one, and so on. Node 3 has data to send to node 0. <italic>T</italic><italic><sub>d</sub></italic> is the actual duration time for a node to finish its one-hop data transmission process. Note that <italic>T</italic><italic><sub>d</sub></italic> ≤ <italic>T</italic><italic><sub>S/R</sub></italic>, since the node may not select the last slot in CW. Thus the node’s actual sleep time is <italic>ΔT + T</italic><italic><sub>SLEEP</sub></italic>, where <italic>ΔT</italic> = <italic>T</italic><italic><sub>S/R</sub></italic> – <italic>T</italic><italic><sub>d</sub></italic>. Anyway, each node can sleep for at least <italic>T</italic><italic><sub>SLEEP</sub></italic> time in each cycle.</p>
<p>If <italic>sleep_factor</italic> is a positive integer, for example, <italic>sleep_factor</italic> = 1, when the <italic>i</italic>th (<italic>i</italic> &gt; 0) grade nodes wake up, the (<italic>i</italic> – <italic>1</italic>)th grade nodes are still in the <italic>SLEEP</italic> period, and the (<italic>i + 2</italic>)th grade nodes will go to sleep for at least <italic>sleep_factor</italic> · <italic>T</italic><italic><sub>S/R</sub></italic> = <italic>T</italic><italic><sub>S/R</sub></italic> time. Therefore, the communications between the <italic>i</italic>th grade nodes and the (<italic>i</italic> + 1)th grade nodes will not be interfered with by the (<italic>i</italic> – 1)th and (<italic>i</italic> + 2)th grade nodes. Considering that the interference range is about two times the transmission range, the value of <italic>sleep_factor</italic> needs to be at least 2. <xref ref-type="fig" rid="f3-sensors-11-05183">Figure 3</xref> shows the case of <italic>sleep_factor</italic> = 2.</p></sec>
<sec>
<label>3.5.</label>
<title>Schedule Choosing Rule and Synchronization</title>
<p>Suppose the time needed to finish the <italic>GDSA</italic> process is within <italic>T</italic><italic><sub>g</sub></italic> time. The transmission duration of a GRADE message is denoted by <italic>durGRADE</italic>. Once a node receives a GRADE message and updates its grade to <italic>i</italic>, it uses the following rules to choose an initial schedule:
<list list-type="order">
<list-item>
<p>if <italic>i</italic> % <italic>τ</italic>= 0, the node will enter the <italic>RECEIVE DATA</italic> period after (<italic>T</italic><italic><sub>g</sub></italic> – <italic>i</italic> · <italic>durGRADE</italic>) time.</p></list-item>
<list-item>
<p>if <italic>i</italic> % <italic>τ</italic>= 1, the node will enter the <italic>SEND DATA</italic> period after (<italic>T</italic><italic><sub>g</sub></italic> – <italic>i</italic> · <italic>durGRADE</italic>) time.</p></list-item>
<list-item>
<p>if <italic>i</italic> % <italic>τ</italic> ≥ 2, the node will enter the <italic>SLEEP</italic> period after (<italic>T</italic><italic><sub>g</sub></italic> – <italic>i</italic> · <italic>durGRADE</italic>) time. And its sleep duration should be:
<disp-formula id="FD4">
<label>(4)</label>
<mml:math display="block">
<mml:mtext mathvariant="italic">time</mml:mtext>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mtext mathvariant="italic">SLEEP</mml:mtext></mml:mrow></mml:msub>
<mml:mo>−</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>%</mml:mo>
<mml:mi>τ</mml:mi>
<mml:mo>−</mml:mo>
<mml:mn>2</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>·</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>R</mml:mi></mml:mrow></mml:mrow></mml:msub>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>τ</mml:mi>
<mml:mo>−</mml:mo>
<mml:mi>i</mml:mi>
<mml:mo>%</mml:mo>
<mml:mi>τ</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>·</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>R</mml:mi></mml:mrow></mml:mrow></mml:msub></mml:math></disp-formula></p></list-item></list>Note that <italic>T</italic><italic><sub>g</sub></italic> should be long enough to enable each node in the network to get its grade and corresponding schedule after the <italic>GDSA</italic> process.</p>
<p>Similar to S-MAC [<xref ref-type="bibr" rid="b3-sensors-11-05183">3</xref>] and RMAC [<xref ref-type="bibr" rid="b5-sensors-11-05183">5</xref>], synchronization is also required among neighboring nodes in P-MAC to solve the problem of clock drift as time advances. However, the difference is that P-MAC doesn’t use an extra period (e.g., <italic>SYNC</italic>) to achieve this goal. In P-MAC, each frame contains the relative start time of the current period. When a sensor node receives a frame, it will adjust its schedule if the clock drift is too serious. If a node fails to receive correct data for a long enough time, it will stay active and listen to the channel for some time to revise its grade and/or schedule. This loose synchronization mechanism is used because in P-MAC, a node with pending data to send may have several adjacent lower grade nodes, any of which may become the relay node. We suppose this mechanism will guarantee reliability for data forwarding.</p></sec>
<sec sec-type="discussion">
<label>3.6.</label>
<title>Scalability Discussion</title>
<p>P-MAC is a cross-layer duty cycle MAC protocol seamlessly integrated with routing function. It not only reduces the protocol overhead, but also helps enhance scalability when there are changes in network topology:
<list list-type="order">
<list-item>
<p>If a new node is added to the network, it will identify which grade it should join and the corresponding schedule it should choose after listening to its neighbors for some time. Subsequently, it can join the network for data transmission.</p></list-item>
<list-item>
<p>It is relatively easy for P-MAC to support node mobility. A mobile node needs to redefine its grade and schedule if it moves out of its original grade area. Like a newly added node, it can rejoin the network later, unless it moves out the network and thus becomes isolated.</p></list-item>
<list-item>
<p>In a large-scale WSN, multiple sinks are needed to increase the network manageability and balance energy dissipation. P-MAC can partition the whole network into several sub-networks using its grade division mechanism. Each sink serves one sub-network independently. <xref ref-type="fig" rid="f4-sensors-11-05183">Figure 4</xref> shows a two-sink case. For a data-gathering network, all sinks are expected to be connected to an outside system. Hence, it is irrelevant which exact sink receives the data information.</p></list-item></list></p>
<p>No further elaboration on these issues is presented in this paper, but we believe these issues are reasonable and provide a guideline for future exploration.</p></sec></sec>
<sec>
<label>4.</label>
<title>Simulation Evaluation</title>
<sec>
<label>4.1.</label>
<title>Simulation Parameters</title>
<p>In this section, we evaluate the P-MAC design in comparison with S-MAC and RMAC using the OPNET modeler. For fairness, we give the simulation result of both the basic P-MAC without the routing function and the full P-MAC that is seamlessly integrated with routing. In comparison with the full P-MAC, the difference is that in the basic P-MAC, the RTS is sent to a concrete next node, which has its address passed down by the networking layer. So only the node for which the RTS is destined will reply with CTS without waiting for CW time. <xref ref-type="fig" rid="f5-sensors-11-05183">Figure 5</xref> illustrates the basic P-MAC, and the maximum time of the <italic>SEND/RECEIVE DATA</italic> period, <italic>T</italic><italic><sub>S/R</sub></italic>, is shown below. This result differs from that calculated by <xref ref-type="disp-formula" rid="FD1">Equation (1)</xref>:
<disp-formula id="FD5">
<label>(5)</label>
<mml:math display="block">
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mrow>
<mml:mrow>
<mml:mi>S</mml:mi>
<mml:mo>/</mml:mo>
<mml:mi>R</mml:mi></mml:mrow></mml:mrow></mml:msub>
<mml:mo>=</mml:mo>
<mml:mtext mathvariant="italic">CW</mml:mtext>
<mml:mo>+</mml:mo>
<mml:mtext>DIFS</mml:mtext>
<mml:mo>+</mml:mo>
<mml:mn>3</mml:mn>
<mml:mtext>SIFS</mml:mtext>
<mml:mo>+</mml:mo>
<mml:mtext mathvariant="italic">durRTS</mml:mtext>
<mml:mo>+</mml:mo>
<mml:mtext mathvariant="italic">durCTS</mml:mtext>
<mml:mo>+</mml:mo>
<mml:mtext mathvariant="italic">durDATA</mml:mtext>
<mml:mo>+</mml:mo>
<mml:mtext mathvariant="italic">durACK</mml:mtext>
<mml:mo>.</mml:mo></mml:math></disp-formula></p>
<p>Each node uses the two-ray ground radio propagation model and has a single omni-directional antenna. <xref ref-type="table" rid="t1-sensors-11-05183">Table 1</xref> shows the key networking parameters used in our simulation. These parameters are the default settings in the standard S-MAC simulation module distributed with the ns-2.29 package. The sizes and transmission latencies of different types of packets are shown in <xref ref-type="table" rid="t2-sensors-11-05183">Table 2</xref>, and the settings are the same as in [<xref ref-type="bibr" rid="b5-sensors-11-05183">5</xref>].</p>
<p>PION relaying number <italic>N</italic> in RMAC defines the distance (hops) a PION frame can be forwarded in the <italic>DATA</italic> period. In our simulation, we set <italic>N</italic> = 4, as in [<xref ref-type="bibr" rid="b5-sensors-11-05183">5</xref>]. The cycle related parameters are shown in <xref ref-type="table" rid="t3-sensors-11-05183">Table 3</xref>. Both S-MAC and RMAC keep the same duty cycle (about 6%). Because the cycle division in P-MAC is different from that of both S-MAC and RMAC, the full P-MAC is set with <italic>sleep_factor</italic> = 14 to have the same cycle duration as RMAC and the basic P-MAC is set with <italic>sleep_factor</italic> = 21 to have a similar cycle duration to the full P-MAC.</p></sec>
<sec>
<label>4.2.</label>
<title>Simulation Topology</title>
<p>We use two types of topologies in our simulations: chain topology and random topology. <xref ref-type="fig" rid="f6-sensors-11-05183">Figure 6</xref> shows the chain topology. All nodes are equally spaced in a straight line with a 200 meter interval between neighboring nodes. Node 0 sends packets to node <italic>n</italic> through a single CBR (constant bit rate) flow. The hop length of the chains varies from 1–24 hops. For S-MAC, RMAC and the basic P-MAC, the routes for data transmission are assigned manually.</p>
<p><xref ref-type="fig" rid="f7-sensors-11-05183">Figure 7</xref> shows an example of the random topology, which consists of 200 sensor nodes and a sink node (not shown in the figure). The 200 sensor nodes are randomly distributed in a 2,000 × 2,000 m<sup>2</sup> square area, and the sink node is located at the top-left corner of the square.</p>
<p>The full P-MAC integrated with routing needn’t consider the routing issue. For fairness, we propose a routing mechanism for S-MAC, RMAC and the basic P-MAC by modifying the <italic>GDSA</italic> process in P-MAC, since it is not convenient to assign routes manually in the random topology. In the modified <italic>GDSA</italic> process, each node maintains a routing table containing only one field to record its next-hop nodes’ IDs. The process has the following steps:
<list list-type="order">
<list-item>
<p>The sink node with its grade set to zero initiates this process by generating a GRADE message packet. The packet contains two fields denoted by <italic>G</italic><italic><sub>m</sub></italic> and <italic>ID</italic><italic><sub>ph</sub></italic>. After setting <italic>ID</italic><italic><sub>ph</sub></italic> to its own ID and <italic>G</italic><italic><sub>m</sub></italic> to one, the sink node broadcasts this message.</p></list-item>
<list-item>
<p>Upon receiving a GRADE message, each node decides whether to update its routing table and/or rebroadcast the message, as shown in <xref ref-type="table" rid="t6-sensors-11-05183">Algorithm 2</xref>.</p></list-item></list></p>
<p>The completion of this process will result in one or more entries in the routing table of each node. During data transmission, the current node randomly chooses one entry and extracts the ID from the entry as the next-hop ID. Also, each node maintains a grade representing the path length from it to the sink. <xref ref-type="fig" rid="f8-sensors-11-05183">Figure 8</xref> shows the number of nodes in each grade.</p>
<p>In addition, we make the following assumptions. For S-MAC and RMAC, all nodes have already been synchronized to use a single schedule. There is no synchronization traffic during the simulation, but the SYNC period is still contained in the cycle. The original or modified GDSA process is executed only once during the initial phase and the corresponding overhead is not considered during the comparison among S-MAC, RMAC and P-MAC.</p></sec>
<sec>
<label>4.3.</label>
<title>Simulation Result</title>
<p>We first evaluate the performance of the end-to-end delivery latency. For the chain topology, node 0 generates a CBR flow at the rate of 1 packet every 10 seconds. The simulation time is set as 1,200 seconds. For the random topology, a random sensor node is selected every 10 seconds to send one packet to the sink. The simulation time is set as 19,200 seconds.</p>
<p><xref ref-type="fig" rid="f9-sensors-11-05183">Figure 9</xref> shows the growth trend of the average packet delivery latency with respect to the increase in path length in the chain topology and random topology, respectively. Both figures show that the delivery latency in P-MAC increases at a much lower rate than S-MAC and RMAC. This is because S-MAC only forwards a packet to a 1-hop distance in each operational cycle and RAMC has to wait for the start of the next <italic>DATA</italic> period to forward data again if the path length exceeds the PION relaying number, while P-MAC can forward data in a pipeline fashion.</p>
<p>Provided the path length does not exceed the PION relaying number, data transmission can be completed within a single cycle in RMAC, spending about <italic>T</italic><italic><sub>DATA</sub></italic> time. For P-MAC, the data frame moves to a 1-hop distance per <italic>SEND DATA</italic> period, spending about <italic>T</italic><italic><sub>S/R</sub></italic> time. In our simulation, <italic>T</italic><italic><sub>DATA</sub></italic> (168.0 ms) is 66.0 ms less than <italic>T</italic><italic><sub>S/R</sub></italic> (234.0 ms), so <xref ref-type="fig" rid="f9-sensors-11-05183">Figure 9</xref> shows that RMAC has slightly less delivery latency when the path length is within 4 hops, as <italic>N</italic> = 4 in our simulation.</p>
<p><xref ref-type="fig" rid="f9-sensors-11-05183">Figure 9</xref> also shows that the basic P-MAC has lower delivery latency than the full P-MAC with routing, since the RTS is sent to a certain node during data transmission in the basic P-MAC, which reduces network congestion and improves the data delivery ratio.</p>
<p>Next, we evaluate the network throughput and energy efficiency for P-MAC. The network throughput is recorded in terms of the average number of packets successfully received by the sink per second. For the chain topology, we keep <italic>n</italic> = 24, and the data input interval for node 0 varies from 10–1 seconds. For the random topology, the interval for randomly selecting a sensor node to send data varies from 10-1 seconds. In both topologies, the simulation time is set as 1,200 seconds.</p>
<p>In the chain topology, <xref ref-type="fig" rid="f10-sensors-11-05183">Figure 10(a)</xref> shows that when the input interval is less than 8 seconds, the output rate in S-MAC decreases rapidly, since S-MAC has poor traffic contention handling due to its weakness of forwarding a packet to a 1-hop distance in each operational cycle. Because the network throughput of S-MAC decreases when the input interval is less than 8 seconds, the corresponding energy consumption also decreases, as shown in <xref ref-type="fig" rid="f10-sensors-11-05183">Figure 10(b)</xref>.</p>
<p>For P-MAC and RMAC, <xref ref-type="fig" rid="f10-sensors-11-05183">Figure 10(a)</xref> shows that the output rate follows the input rate until the input interval is less than 5 seconds, and finally reaches the steady state. When the network throughput reaches its peak point, the incoming injected packets cannot continue to be sent, and the network energy consumption will not be increased, as shown in <xref ref-type="fig" rid="f10-sensors-11-05183">Figure 10(b)</xref>. When the input interval is smaller than 4 seconds, P-MAC with routing will have higher energy consumption than RMAC because of its higher throughput. The basic P-MAC has almost the same throughput as the full P-AMC but has lower energy consumption, since it doesn’t consider the routing issue.</p>
<p>In the random topology, <xref ref-type="fig" rid="f11-sensors-11-05183">Figure 11(a)</xref> shows that RMAC has better performance than the P-MAC integrated with routing in terms of throughput. But the basic P-MAC has better throughput than RMAC when the input interval is less than 4 seconds. <xref ref-type="fig" rid="f11-sensors-11-05183">Figure 11(b)</xref> shows that P-MAC is more energy efficient than RMAC and S-MAC in the random topology. For all protocols, the range of improvement of the average power consumption is not obvious as the input interval decreases. This is because each point on the curve represents the average of 200 nodes, many of which did not participate in packet relaying as much as the nodes in the chain topology.</p>
<p>Finally, we evaluate how the variation of <italic>sleep_factor</italic> in P-MAC integrated with routing affects the network performance. The value of <italic>sleep_factor</italic> determines the length of the <italic>SLEEP</italic> period (see <xref ref-type="disp-formula" rid="FD2">Equation 2</xref>). Increasing <italic>sleep_factor</italic> increases the length of the <italic>SLEEP</italic> period time and the whole cycle time. Increasing the sleeping time of sensor nodes can save more energy. However, when a packet is not generated at the start of the <italic>SEND DATA</italic> period in the current cycle, a longer cycle time makes the packet wait longer for the next cycle.</p>
<p>For the chain topology, it is still the case that <italic>n</italic> = 24. The input interval of a CBR flow in node 0 varies from 10–1 seconds. Each simulation runs for 1,200 seconds. <xref ref-type="table" rid="t4-sensors-11-05183">Table 4</xref> shows the different values of <italic>sleep_factor</italic> we used in our simulation, as well as their corresponding <italic>SLEEP</italic> period time and cycle time. The average packet delivery latency, the average power consumption per sensor node and the data throughput are observed, and the simulation results are shown in <xref ref-type="fig" rid="f12-sensors-11-05183">Figure 12</xref>.</p>
<p>Note that <xref ref-type="fig" rid="f12-sensors-11-05183">Figure 12(a)</xref> shows the delivery latency that only varies with respect to the input interval from 10–5 seconds. This is because when the input interval is less than 5 seconds, the latency in the network with <italic>sleep_factor</italic> = 17 will be too large to be displayed. <xref ref-type="fig" rid="f12-sensors-11-05183">Figure 12(a)</xref> implies that the packet delivery latency increases as the <italic>sleep_factor</italic> increases for the reason stated above. But a greater <italic>sleep_factor</italic> ensures that nodes save more energy, as shown in <xref ref-type="fig" rid="f12-sensors-11-05183">Figure 12(b)</xref>. When the network throughput is considered, a small <italic>sleep_factor</italic> is expected if the network traffic load is high, as shown in <xref ref-type="fig" rid="f12-sensors-11-05183">Figure 12(c)</xref>. <xref ref-type="fig" rid="f12-sensors-11-05183">Figure 12(c)</xref> also shows that the cycle time is almost equal to the lowest input interval, which can still ensure that the output rate follows the input rate. For example, when <italic>sleep_factor</italic> = 17, the cycle duration is about 5 seconds, which is the lowest input interval ensuring that the network has 100% throughput, as shown in <xref ref-type="fig" rid="f12-sensors-11-05183">Figure 12(c)</xref>.</p>
<p><xref ref-type="fig" rid="f13-sensors-11-05183">Figure 13</xref> shows the impact evaluation of <italic>sleep_factor</italic> in the random topology. The result is in accord with that in the chain topology. Note the evaluation doesn’t include a delivery latency evaluation, which is not convenient to be given for the random topology. Designers can select the value of <italic>sleep_factor</italic> according to the network traffic load. For example, if the network input rate doesn’t exceed 0.2 packets/second (the input interval is not less than 5 seconds), <italic>sleep_factor</italic> = 17 should be chosen, since the throughput can reach 100% with the lowest energy consumption. But if the input rate reaches 1 packet/second or higher, the minimum value of <italic>sleep_factor</italic> = 2 should be chosen.</p></sec></sec>
<sec sec-type="conclusions">
<label>5.</label>
<title>Conclusions</title>
<p>Conventional duty cycle MAC protocols are energy-efficient and some of them also have mitigated other existing problems such as the delivery latency problem, but they have been designed independently without considering routing. Adding a routing protocol would cause significant performance degradation of the whole network. The P-MAC design presented in this paper is a cross-layer duty cycle MAC protocol seamlessly integrated with routing function. It uses the <italic>Grade Division and Schedule Assignment</italic> (<italic>GDSA</italic>) scheme at the network layer to assign all sensor nodes into different grades around the sink and ensures that nodes maintain staggered schedules between any two adjacent grades. Then a variation of the RTS/CTS handshake mechanism is used at the MAC layer to forward data continuously in a pipeline fashion from the higher grade to lower grade nodes and finally to the sink. The communication overhead in the network can be significantly reduced while maintaining the superiority of duty-cycling schemes. The simulation evaluations show that P-MAC achieves better performance in terms of energy efficiency, latency reduction and throughput improvement. Future research needs to study network scalability, which was not adequately addressed.</p></sec></body>
<back>
<ack>
<p>This research was supported by Basic Science Research Program through the National Research Foundation of Korea (NRF) funded by the Ministry of Education, Science and Technology (2010-0029432).</p></ack>
<ref-list>
<title>References</title>
<ref id="b1-sensors-11-05183"><label>1.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Feeney</surname><given-names>LM</given-names></name><name><surname>Nilsson</surname><given-names>M</given-names></name></person-group><article-title>Investigating the Energy Consumption of a Wireless Network Interface in an <italic>Ad Hoc</italic> Networking Environment</article-title><conf-name>Proceedings of INFOCOM 2001: Twentieth Annual Joint Conference of the IEEE Computer and Communications Societies</conf-name><conf-loc>Anchorage, AK, USA</conf-loc><conf-date>22–26 April 2001</conf-date><volume>1543</volume><fpage>1548</fpage><lpage>1557</lpage></citation></ref>
<ref id="b2-sensors-11-05183"><label>2.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Shih</surname><given-names>E</given-names></name><name><surname>Bahl</surname><given-names>P</given-names></name><name><surname>Sinclair</surname><given-names>MJ</given-names></name></person-group><article-title>Wake on Wireless: An Event Driven Energy Saving Strategy for Battery Operated Devices</article-title><conf-name>Proceedings of the 8th Annual International Conference on Mobile Computing and Networking</conf-name><conf-loc>Atlanta, GA, USA</conf-loc><conf-date>23–28 September 2002</conf-date><fpage>160</fpage><lpage>171</lpage></citation></ref>
<ref id="b3-sensors-11-05183"><label>3.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Wei</surname><given-names>Y</given-names></name><name><surname>Heidemann</surname><given-names>J</given-names></name><name><surname>Estrin</surname><given-names>D</given-names></name></person-group><article-title>An Energy-Efficient MAC Protocol for Wireless Sensor Networks</article-title><conf-name>Proceedings of INFOCOM 2002: Twenty-First Annual Joint Conference of the IEEE Computer and Communications Societies</conf-name><conf-loc>New York, NY, USA</conf-loc><conf-date>23–27 June 2002</conf-date><volume>1563</volume><fpage>1567</fpage><lpage>1576</lpage></citation></ref>
<ref id="b4-sensors-11-05183"><label>4.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Wei</surname><given-names>Y</given-names></name><name><surname>Heidemann</surname><given-names>J</given-names></name><name><surname>Estrin</surname><given-names>D</given-names></name></person-group><article-title>Medium Access Control with Coordinated Adaptive Sleeping for Wireless Sensor Networks</article-title><source>IEEE/ACM Trans. Netw</source><year>2004</year><volume>12</volume><fpage>493</fpage><lpage>506</lpage><pub-id pub-id-type="doi">10.1109/TNET.2004.828953</pub-id></citation></ref>
<ref id="b5-sensors-11-05183"><label>5.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Shu</surname><given-names>D</given-names></name><name><surname>Saha</surname><given-names>AK</given-names></name><name><surname>Johnson</surname><given-names>DB</given-names></name></person-group><article-title>RMAC: A Routing-Enhanced Duty-Cycle MAC Protocol for Wireless Sensor Networks</article-title><conf-name>Proceedings of INFOCOM 2007: 26th IEEE International Conference on Computer Communications</conf-name><conf-loc>Anchorage, AK, USA</conf-loc><conf-date>6–12 May 2007</conf-date><fpage>1478</fpage><lpage>1486</lpage></citation></ref>
<ref id="b6-sensors-11-05183"><label>6.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Dam</surname><given-names>TV</given-names></name><name><surname>Langendoen</surname><given-names>K</given-names></name></person-group><article-title>An Adaptive Energy-Efficient MAC Protocol for Wireless Sensor Networks</article-title><conf-name>Proceedings of the 1st International Conference on Embedded Networked Sensor Systems</conf-name><conf-loc>Los Angeles, CA, USA</conf-loc><conf-date>5–7 November 2003</conf-date><fpage>171</fpage><lpage>180</lpage></citation></ref>
<ref id="b7-sensors-11-05183"><label>7.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Sun</surname><given-names>Y</given-names></name><name><surname>Du</surname><given-names>S</given-names></name><name><surname>Gurewitz</surname><given-names>O</given-names></name><name><surname>Johnson</surname><given-names>DB</given-names></name></person-group><article-title>DW-MAC: A Low Latency, Energy Efficient Demand-Wakeup MAC Protocol for Wireless Sensor Networks</article-title><conf-name>Proceedings of the 9th ACM International Symposium on Mobile Ad Hoc Networking and Computing</conf-name><conf-loc>Hong Kong</conf-loc><conf-date>26–30 May 2008</conf-date><fpage>53</fpage><lpage>62</lpage></citation></ref>
<ref id="b8-sensors-11-05183"><label>8.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Polastre</surname><given-names>J</given-names></name><name><surname>Hill</surname><given-names>J</given-names></name><name><surname>Culler</surname><given-names>D</given-names></name></person-group><article-title>Versatile Low Power Media Access for Wireless Sensor Networks</article-title><conf-name>Proceedings of the 2nd International Conference on Embedded Networked Sensor Systems</conf-name><conf-loc>Baltimore, MD, USA</conf-loc><conf-date>3–5 November 2004</conf-date><fpage>95</fpage><lpage>107</lpage></citation></ref>
<ref id="b9-sensors-11-05183"><label>9.</label><citation citation-type="book"><person-group person-group-type="author"><name><surname>El-Hoiydi</surname><given-names>A</given-names></name><name><surname>Decotignie</surname><given-names>J-D</given-names></name></person-group><article-title>WiseMAC: An Ultra Low Power MAC Protocol for Multi-hop Wireless Sensor Networks</article-title><source>Algorithmic Aspects of Wireless Sensor Networks</source><person-group person-group-type="editor"><name><surname>Nikoletseas</surname><given-names>S</given-names></name><name><surname>Rolim</surname><given-names>JDP</given-names></name></person-group><publisher-name>Springer</publisher-name><publisher-loc>Berlin/Heidelberg, Germany</publisher-loc><year>2004</year> <volume>3121</volume><fpage>18</fpage><lpage>31</lpage></citation></ref>
<ref id="b10-sensors-11-05183"><label>10.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Buettner</surname><given-names>M</given-names></name><name><surname>Yee</surname><given-names>GV</given-names></name><name><surname>Anderson</surname><given-names>E</given-names></name><name><surname>Han</surname><given-names>R</given-names></name></person-group><article-title>X-MAC: A Short Preamble MAC Protocol for Duty-Cycled Wireless Sensor Networks</article-title><conf-name>Proceedings of the 4th International Conference on Embedded Networked Sensor Systems</conf-name><conf-loc>Boulder, CO, USA</conf-loc><conf-date>31 October–3 November 2006</conf-date><fpage>307</fpage><lpage>320</lpage></citation></ref>
<ref id="b11-sensors-11-05183"><label>11.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Sun</surname><given-names>Y</given-names></name><name><surname>Gurewitz</surname><given-names>O</given-names></name><name><surname>Johnson</surname><given-names>DB</given-names></name></person-group><article-title>RI-MAC: A Receiver-Initiated Asynchronous Duty Cycle MAC Protocol for Dynamic Traffic Loads in Wireless Sensor Networks</article-title><conf-name>Proceedings of the 6th ACM conference on Embedded Network Sensor Systems</conf-name><conf-loc>Raleigh, NC, USA</conf-loc><conf-date>5–7 November 2008</conf-date><fpage>1</fpage><lpage>14</lpage></citation></ref>
<ref id="b12-sensors-11-05183"><label>12.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Canli</surname><given-names>T</given-names></name><name><surname>Khokhar</surname><given-names>A</given-names></name></person-group><article-title>PRMAC: Pipelined Routing Enhanced MAC Protocol for Wireless Sensor Networks</article-title><conf-name>Proceedings of ICC ’09: IEEE International Conference on Communications</conf-name><conf-loc>Dresden, Germany</conf-loc><conf-date>14–18 June 2009</conf-date><fpage>1</fpage><lpage>5</lpage></citation></ref>
<ref id="b13-sensors-11-05183"><label>13.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>El-Hoiydi</surname><given-names>A</given-names></name><name><surname>Decotignie</surname><given-names>J-D</given-names></name></person-group><article-title>Low Power Downlink MAC Protocols for Infrastructure Wireless Sensor Networks</article-title><source>Mob. Netw. Appl</source><year>2005</year><volume>10</volume><fpage>675</fpage><lpage>690</lpage><pub-id pub-id-type="doi">10.1007/s11036-005-3362-y</pub-id></citation></ref>
<ref id="b14-sensors-11-05183"><label>14.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>El-Hoiydi</surname><given-names>A</given-names></name></person-group><article-title>Aloha with Preamble Sampling for Sporadic Traffic in <italic>Ad Hoc</italic> Wireless Sensor Networks</article-title><conf-name>Proceedings of ICC 2002: IEEE International Conference on Communications</conf-name><conf-date>2 May 2002</conf-date><volume>3415</volume><fpage>3418</fpage><lpage>3423</lpage></citation></ref>
<ref id="b15-sensors-11-05183"><label>15.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Garcia-Luna-Aceves</surname><given-names>JJ</given-names></name><name><surname>Tzamaloukas</surname><given-names>A</given-names></name></person-group><article-title>Reversing the Collision-Avoidance Handshake in Wireless Networks</article-title><conf-name>Proceedings of the 5th Annual ACM/IEEE International Conference on Mobile Computing and Networking</conf-name><conf-loc>Seattle, Washington, DC, USA</conf-loc><conf-date>15–19 August 1999</conf-date><fpage>120</fpage><lpage>131</lpage></citation></ref>
<ref id="b16-sensors-11-05183"><label>16.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Ye</surname><given-names>W</given-names></name><name><surname>Silva</surname><given-names>F</given-names></name><name><surname>Heidemann</surname><given-names>J</given-names></name></person-group><article-title>Ultra-Low Duty Cycle MAC with Scheduled Channel Polling</article-title><conf-name>Proceedings of the 4th International Conference on Embedded Networked Sensor Systems</conf-name><conf-loc>Boulder, CO, USA</conf-loc><conf-date>31 October–3 November 2006</conf-date><fpage>321</fpage><lpage>334</lpage></citation></ref>
<ref id="b17-sensors-11-05183"><label>17.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Cabezas</surname><given-names>AC</given-names></name><name><surname>Medina</surname><given-names>RG</given-names></name><name><surname>Peña</surname><given-names>NM</given-names></name><name><surname>Labrador</surname><given-names>MA</given-names></name></person-group><article-title>Low Energy and Low Latency in Wireless Sensor Networks</article-title><conf-name>Proceedings of ICC ’09: IEEE International Conference on Communications</conf-name><conf-loc>Dresden, Germany</conf-loc><conf-date>14–18 June 2009</conf-date><fpage>1</fpage><lpage>5</lpage></citation></ref>
<ref id="b18-sensors-11-05183"><label>18.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Lu</surname><given-names>G</given-names></name><name><surname>Krishnamachari</surname><given-names>B</given-names></name><name><surname>Raghavendra</surname><given-names>CS</given-names></name></person-group><article-title>An Adaptive Energy-Efficient and Low-Latency MAC for Data Gathering in Wireless Sensor Networks</article-title><conf-name>Proceedings of 18th International Parallel and Distributed Processing Symposium</conf-name><conf-loc>Santa Fe, NM, USA</conf-loc><conf-date>26–30 April 2004</conf-date><fpage>224</fpage></citation></ref>
<ref id="b19-sensors-11-05183"><label>19.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Yuan</surname><given-names>L</given-names></name><name><surname>Wei</surname><given-names>Y</given-names></name><name><surname>Heidemann</surname><given-names>J</given-names></name></person-group><article-title>Energy and Latency Control in Low Duty Cycle MAC Protocols</article-title><conf-name>Proceedings of IEEE Wireless Communications and Networking Conference</conf-name><conf-loc>New Orleans, LA, USA</conf-loc><conf-date>13–17 March 2005</conf-date><volume>672</volume><fpage>676</fpage><lpage>682</lpage></citation></ref>
<ref id="b20-sensors-11-05183"><label>20.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Cao</surname><given-names>Q</given-names></name><name><surname>Abdelzaher</surname><given-names>T</given-names></name><name><surname>He</surname><given-names>T</given-names></name><name><surname>Stankovic</surname><given-names>J</given-names></name></person-group><article-title>Towards Optimal Sleep Scheduling in Sensor Networks for Rare-Event Detection</article-title><conf-name>Proceedings of IPSN 2005: Fourth International Symposium on Information Processing in Sensor Networks</conf-name><conf-loc>Los Angeles, CA, USA</conf-loc><conf-date>25–27 April 2005</conf-date><fpage>20</fpage><lpage>27</lpage></citation></ref>
<ref id="b21-sensors-11-05183"><label>21.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Keshavarzian</surname><given-names>A</given-names></name><name><surname>Lee</surname><given-names>H</given-names></name><name><surname>Venkatraman</surname><given-names>L</given-names></name></person-group><article-title>Wakeup Scheduling in Wireless Sensor Networks</article-title><conf-name>Proceedings of the 7th ACM International Symposium on Mobile Ad Hoc Networking and Computing</conf-name><conf-loc>Florence, Italy</conf-loc><conf-date>22–25 May 2006</conf-date><fpage>322</fpage><lpage>333</lpage></citation></ref></ref-list>
<sec sec-type="display-objects">
<title>Figures and Tables</title>
<fig id="f1-sensors-11-05183" position="float">
<label>Figure 1.</label>
<caption>
<p><bold>(a)</bold> After grade division, the network is divided into several annular grades similar to concentric circles centered at the sink; <bold>(b)</bold> if <italic>A′</italic> and <italic>A</italic> do not exist, <italic>S′</italic> and <italic>S</italic> are in grade 4 and 5, respectively.</p></caption>
<graphic xlink:href="sensors-11-05183f1.gif"/></fig>
<fig id="f2-sensors-11-05183" position="float">
<label>Figure 2.</label>
<caption>
<p>P-MAC integrated with routing. Node <italic>S</italic> has data to send to the sink.</p></caption>
<graphic xlink:href="sensors-11-05183f2.gif"/></fig>
<fig id="f3-sensors-11-05183" position="float">
<label>Figure 3.</label>
<caption>
<p>An example illustration of <italic>sleep_factor</italic>, data transmission route: 3<bold>→</bold>2<bold>→</bold>1<bold>→</bold>0.</p></caption>
<graphic xlink:href="sensors-11-05183f3.gif"/></fig>
<fig id="f4-sensors-11-05183" position="float">
<label>Figure 4.</label>
<caption>
<p>Two-sink case. Each number denotes a corresponding grade.</p></caption>
<graphic xlink:href="sensors-11-05183f4.gif"/></fig>
<fig id="f5-sensors-11-05183" position="float">
<label>Figure 5.</label>
<caption>
<p>Basic P-MAC without routing function.</p></caption>
<graphic xlink:href="sensors-11-05183f5.gif"/></fig>
<fig id="f6-sensors-11-05183" position="float">
<label>Figure 6.</label>
<caption>
<p>Chain topology.</p></caption>
<graphic xlink:href="sensors-11-05183f6.gif"/></fig>
<fig id="f7-sensors-11-05183" position="float">
<label>Figure 7.</label>
<caption>
<p>Random topology with 200 sensor nodes in 2,000 × 2,000 m<sup>2</sup> area.</p></caption>
<graphic xlink:href="sensors-11-05183f7.gif"/></fig>
<fig id="f8-sensors-11-05183" position="float">
<label>Figure 8.</label>
<caption>
<p>The number of nodes in each grade in the random topology network.</p></caption>
<graphic xlink:href="sensors-11-05183f8.gif"/></fig>
<fig id="f9-sensors-11-05183" position="float">
<label>Figure 9.</label>
<caption>
<p><bold>(a)</bold> Delivery latency in the chain topology. <bold>(b)</bold> Delivery latency in random topology.</p></caption>
<graphic xlink:href="sensors-11-05183f9.gif"/></fig>
<fig id="f10-sensors-11-05183" position="float">
<label>Figure 10.</label>
<caption>
<p><bold>(a)</bold> Throughput in the chain topology. <bold>(b)</bold> Average power consumption per sensor node in the chain topology.</p></caption>
<graphic xlink:href="sensors-11-05183f10.gif"/></fig>
<fig id="f11-sensors-11-05183" position="float">
<label>Figure 11.</label>
<caption>
<p><bold>(a)</bold> Throughput in the random topology. <bold>(b)</bold> Average power consumption per sensor node in the random topology.</p></caption>
<graphic xlink:href="sensors-11-05183f11.gif"/></fig>
<fig id="f12-sensors-11-05183" position="float">
<label>Figure 12.</label>
<caption>
<p>The impact evaluation of <italic>sleep_factor</italic> in the chain topology, <bold>(a)</bold> Packet delivery latency. <bold>(b)</bold> Average power consumption. <bold>(c)</bold> Output rate.</p></caption>
<graphic xlink:href="sensors-11-05183f12.gif"/></fig>
<fig id="f13-sensors-11-05183" position="float">
<label>Figure 13.</label>
<caption>
<p>The impact evaluation of <italic>sleep_factor</italic> in the random topology, <bold>(a)</bold> Average power consumption. <bold>(b)</bold> Output rate.</p></caption>
<graphic xlink:href="sensors-11-05183f13.gif"/></fig>
<table-wrap id="t1-sensors-11-05183" position="float">
<label>Table 1.</label>
<caption>
<p>Networking Parameters.</p></caption>
<table frame="box" rules="cols">
<tbody>
<tr>
<td align="center" valign="middle"><bold>Bandwidth</bold></td>
<td align="center" valign="middle">20 Kbps</td>
<td align="center" valign="middle"><bold>Tx Range</bold></td>
<td align="center" valign="middle">250 m</td></tr>
<tr>
<td align="center" valign="middle"><bold>Idle Power</bold></td>
<td align="center" valign="middle">0.45 W</td>
<td align="center" valign="middle"><bold>Carrier Sensing Range</bold></td>
<td align="center" valign="middle">550 m</td></tr>
<tr>
<td align="center" valign="middle"><bold>Sleep Power</bold></td>
<td align="center" valign="middle">0.05 W</td>
<td align="center" valign="middle"><bold>Contention Window (CW)</bold></td>
<td align="center" valign="middle">64 ms</td></tr>
<tr>
<td align="center" valign="middle"><bold>Rx Power</bold></td>
<td align="center" valign="middle">0.5 W</td>
<td align="center" valign="middle"><bold>DIFS</bold></td>
<td align="center" valign="middle">10 ms</td></tr>
<tr>
<td align="center" valign="middle"><bold>Tx Power</bold></td>
<td align="center" valign="middle">0.5 W</td>
<td align="center" valign="middle"><bold>SIFS</bold></td>
<td align="center" valign="middle">5 ms</td></tr></tbody></table></table-wrap>
<table-wrap id="t2-sensors-11-05183" position="float">
<label>Table 2.</label>
<caption>
<p>Transmission Duration Parameters.</p></caption>
<table frame="box" rules="cols">
<thead>
<tr>
<th align="center" valign="middle"/>
<th align="center" valign="middle"><bold>Frame Size (bytes)</bold></th>
<th align="center" valign="middle"><bold>Tx Latency (ms)</bold></th></tr>
<tr>
<th colspan="3" align="left" valign="top">
<hr/></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="middle"><bold>RTS/CTS</bold></td>
<td align="center" valign="middle">10</td>
<td align="center" valign="middle">11.0</td></tr>
<tr>
<td align="center" valign="middle"><bold>ACK</bold></td>
<td align="center" valign="middle">10</td>
<td align="center" valign="middle">11.0</td></tr>
<tr>
<td align="center" valign="middle"><bold>PION (RMAC)</bold></td>
<td align="center" valign="middle">14</td>
<td align="center" valign="middle">14.2</td></tr>
<tr>
<td align="center" valign="middle"><bold>DATA</bold></td>
<td align="center" valign="middle">50</td>
<td align="center" valign="middle">43.0</td></tr></tbody></table></table-wrap>
<table-wrap id="t3-sensors-11-05183" position="float">
<label>Table 3.</label>
<caption>
<p>Cycle Duration Parameters.</p></caption>
<table frame="box" rules="all">
<thead>
<tr>
<th align="center" valign="top"/>
<th align="center" valign="top"><bold><italic>T</italic></bold><italic><sub>SYNC</sub></italic></th>
<th align="center" valign="top"><bold><italic>T</italic></bold><italic><sub>DATA</sub></italic></th>
<th align="center" valign="top"><bold><italic>T</italic></bold><italic><sub>SLEEP</sub></italic></th>
<th align="center" valign="top"><italic><bold>T</bold><sub>cycle</sub></italic></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="middle"><bold>RMAC</bold></td>
<td align="center" valign="middle">55.2 ms</td>
<td align="center" valign="middle">168.0 ms</td>
<td align="center" valign="middle">3,520.8 ms</td>
<td align="center" valign="middle">3,744.0 ms</td></tr>
<tr>
<td align="center" valign="middle"><bold>S-MAC</bold></td>
<td align="center" valign="middle">55.2 ms</td>
<td align="center" valign="middle">104.0 ms</td>
<td align="center" valign="middle">2,511.2 ms</td>
<td align="center" valign="middle">2,670.4 ms</td></tr>
<tr>
<td align="center" valign="middle"/>
<td align="center" valign="middle"><bold><italic>T</italic></bold><italic><sub>S/R</sub></italic></td>
<td align="center" valign="middle"><bold><italic>sleep_factor</italic></bold></td>
<td align="center" valign="middle"><bold><italic>T</italic></bold><italic><sub>SLEEP</sub></italic></td>
<td align="center" valign="middle"><bold><italic>T</italic></bold><italic><sub>cycle</sub></italic></td></tr>
<tr>
<td align="center" valign="middle"><bold>Basic P-MAC</bold></td>
<td align="center" valign="middle">234.0 ms</td>
<td align="center" valign="middle">21</td>
<td align="center" valign="middle">3,465.0 ms</td>
<td align="center" valign="middle">3,795.0 ms</td></tr>
<tr>
<td align="center" valign="middle"><bold>Full P-MAC</bold></td>
<td align="center" valign="middle">234.0 ms</td>
<td align="center" valign="middle">14</td>
<td align="center" valign="middle">3,276.0 ms</td>
<td align="center" valign="middle">3,744.0 ms</td></tr></tbody></table></table-wrap>
<table-wrap id="t4-sensors-11-05183" position="float">
<label>Table 4.</label>
<caption>
<p>Cycle duration with different <italic>sleep_factor</italic>.</p></caption>
<table frame="box" rules="cols">
<thead>
<tr>
<th align="center" valign="middle"><bold><italic>sleep_factor</italic></bold></th>
<th align="center" valign="middle"><bold><italic>T</italic></bold><italic><sub>S/R</sub></italic> <bold>(ms)</bold></th>
<th align="center" valign="middle"><bold><italic>T</italic></bold><italic><sub>SLEEP</sub></italic> <bold>(ms)</bold></th>
<th align="center" valign="middle"><bold><italic>T</italic></bold><italic><sub>cycle</sub></italic> <bold>(ms)</bold></th></tr>
<tr>
<th colspan="4" align="left" valign="top">
<hr/></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="middle">2</td>
<td align="center" valign="middle">234</td>
<td align="center" valign="middle">468</td>
<td align="center" valign="middle">936</td></tr>
<tr>
<td align="center" valign="middle">5</td>
<td align="center" valign="middle">234</td>
<td align="center" valign="middle">1,170</td>
<td align="center" valign="middle">1,638</td></tr>
<tr>
<td align="center" valign="middle">8</td>
<td align="center" valign="middle">234</td>
<td align="center" valign="middle">1,872</td>
<td align="center" valign="middle">2,340</td></tr>
<tr>
<td align="center" valign="middle">11</td>
<td align="center" valign="middle">234</td>
<td align="center" valign="middle">2,574</td>
<td align="center" valign="middle">3,042</td></tr>
<tr>
<td align="center" valign="middle">14</td>
<td align="center" valign="middle">234</td>
<td align="center" valign="middle">3,276</td>
<td align="center" valign="middle">3,744</td></tr>
<tr>
<td align="center" valign="middle">17</td>
<td align="center" valign="middle">234</td>
<td align="center" valign="middle">3,987</td>
<td align="center" valign="middle">4,446</td></tr></tbody></table></table-wrap>
<table-wrap id="t5-sensors-11-05183" position="float">
<label>Algorithm 1.</label>
<caption>
<p><italic>GDSA</italic>: processing the received GRADE message.</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left" valign="middle">1:</td>
<td align="left" valign="middle"><bold>if</bold> <italic>G</italic><italic><sub>n</sub></italic> &lt; 0 <bold>then</bold></td></tr>
<tr>
<td align="left" valign="middle">2:</td>
<td align="left" valign="middle">  <italic>G</italic><italic><sub>n</sub></italic> <bold>←</bold> <italic>G</italic><italic><sub>m</sub></italic></td></tr>
<tr>
<td align="left" valign="middle">3:</td>
<td align="left" valign="middle">  choose a corresponding schedule</td></tr>
<tr>
<td align="left" valign="middle">4:</td>
<td align="left" valign="middle">  <italic>G</italic><italic><sub>m</sub></italic> <bold>←</bold> <italic>G</italic><italic><sub>m</sub></italic> + 1</td></tr>
<tr>
<td align="left" valign="middle">5:</td>
<td align="left" valign="middle">  rebroadcast the GRADE message</td></tr>
<tr>
<td align="left" valign="middle">6:</td>
<td align="left" valign="middle"><bold>else if</bold> <italic>G</italic><italic><sub>n</sub></italic> &gt; <italic>G</italic><italic><sub>m</sub></italic> <bold>then</bold></td></tr>
<tr>
<td align="left" valign="middle">7:</td>
<td align="left" valign="middle">  <italic>G</italic><italic><sub>n</sub></italic> <bold>←</bold> <italic>G</italic><italic><sub>m</sub></italic></td></tr>
<tr>
<td align="left" valign="middle">8:</td>
<td align="left" valign="middle">  update the node’s schedule</td></tr>
<tr>
<td align="left" valign="middle">9:</td>
<td align="left" valign="middle">  <italic>G</italic><italic><sub>m</sub></italic> <bold>←</bold> <italic>G</italic><italic><sub>m</sub></italic> + 1</td></tr>
<tr>
<td align="left" valign="middle">10:</td>
<td align="left" valign="middle">  rebroadcast the GRADE message</td></tr>
<tr>
<td align="left" valign="middle">11:</td>
<td align="left" valign="middle"><bold>else</bold></td></tr>
<tr>
<td align="left" valign="middle">12:</td>
<td align="left" valign="middle">  discard the GRADE message</td></tr>
<tr>
<td align="left" valign="middle">13:</td>
<td align="left" valign="middle"><bold>end if</bold></td></tr></tbody></table></table-wrap>
<table-wrap id="t6-sensors-11-05183" position="float">
<label>Algorithm 2.</label>
<caption>
<p>The modified <italic>GDSA</italic>: processing the received GRADE message.</p></caption>
<table frame="hsides" rules="groups">
<tbody>
<tr>
<td align="left" valign="middle">1:</td>
<td align="left" valign="middle"><bold>if</bold> <italic>G</italic><italic><sub>n</sub></italic> &lt; 0 || <italic>G</italic><italic><sub>m</sub></italic> &lt; <italic>G</italic><italic><sub>n</sub></italic> <bold>then</bold></td></tr>
<tr>
<td align="left" valign="middle">2:</td>
<td align="left" valign="middle">  <bold>if</bold> <italic>G</italic><italic><sub>m</sub></italic> &lt; <italic>G</italic><italic><sub>n</sub></italic> <bold>then</bold></td></tr>
<tr>
<td align="left" valign="middle">3:</td>
<td align="left" valign="middle">    clear the current node’s routing table</td></tr>
<tr>
<td align="left" valign="middle">4:</td>
<td align="left" valign="middle">  <bold>end if</bold></td></tr>
<tr>
<td align="left" valign="middle">5:</td>
<td align="left" valign="middle">  <italic>G</italic><italic><sub>n</sub></italic> <bold>←</bold> <italic>G</italic><italic><sub>m</sub></italic></td></tr>
<tr>
<td align="left" valign="middle">6:</td>
<td align="left" valign="middle">  add <italic>ID</italic><italic><sub>ph</sub></italic> into the current node’s routing table</td></tr>
<tr>
<td align="left" valign="middle">7:</td>
<td align="left" valign="middle">  <italic>G</italic><italic><sub>m</sub></italic> <bold>←</bold> <italic>G</italic><italic><sub>m</sub></italic> + 1</td></tr>
<tr>
<td align="left" valign="middle">8:</td>
<td align="left" valign="middle">  <italic>ID</italic><italic><sub>ph</sub></italic> <bold>←</bold> the current node’s ID</td></tr>
<tr>
<td align="left" valign="middle">9:</td>
<td align="left" valign="middle">  rebroadcast the GRADE message</td></tr>
<tr>
<td align="left" valign="middle">10:</td>
<td align="left" valign="middle"><bold>else if</bold> <italic>G</italic><italic><sub>n</sub></italic> == <italic>G</italic><italic><sub>m</sub></italic> <bold>then</bold></td></tr>
<tr>
<td align="left" valign="middle">11:</td>
<td align="left" valign="middle">  add <italic>ID</italic><italic><sub>ph</sub></italic> into the current node’s routing table</td></tr>
<tr>
<td align="left" valign="middle">12:</td>
<td align="left" valign="middle">    discard the GRADE message</td></tr>
<tr>
<td align="left" valign="middle">13:</td>
<td align="left" valign="middle"><bold>else</bold></td></tr>
<tr>
<td align="left" valign="middle">14:</td>
<td align="left" valign="middle">  discard the GRADE message</td></tr>
<tr>
<td align="left" valign="middle">15:</td>
<td align="left" valign="middle"><bold>end if</bold></td></tr></tbody></table></table-wrap></sec></back></article>
