adamdunkels
148bd60fe1
Bugfix: the defensive retransmission timer setting must be made before the packet is transmitted, otherwise the retransmission timer will always be for the defensive retransmit
2011-01-09 23:49:27 +00:00
adamdunkels
50a3e6ea23
Increased the max ETX to allow for longer paths even with the initial conservative ETX estimate; made collect use announcements by default
2011-01-09 23:48:33 +00:00
adamdunkels
acf45ec648
Bugfix: memory wasn't freed when a neighbor was dropped from the list. Also increase the max age to 180 minutes to allow for regular beacons to refresh the neighbor before it is dropped.
2011-01-09 21:20:05 +00:00
adamdunkels
90dc0ceebf
Replaced default link estimator with an exponential weighted moving average, which reduces memory consumption per neighbor.
2011-01-09 21:14:22 +00:00
adamdunkels
4e91d9303e
Added safeguard timer if the MAC layer would fail to call back after transmission.
2011-01-09 21:13:20 +00:00
dak664
322d835fee
Fix avr-gcc compiler warnings
2010-12-18 22:12:53 +00:00
adamdunkels
4914739e5d
Revived the timesynch module, which has been switched off since the introduction of the new radio API after Contiki 2.4. The new code uses explicit timestamp messages instead of piggybacking timestamps on every transmission. It is also significantly better in terms of exactness.
2010-12-16 22:47:38 +00:00
adamdunkels
10fb99a89d
Reduced the value of the max depth, so that a count-to-infinity loop will not count too long before hitting the maximum value. This is important when a network loses its sink, so that packets are not forwarded around the network for ever.
2010-12-16 22:46:34 +00:00
adamdunkels
19e930e6f2
Changed the behaviour of retransmissions to work better with the in-order CSMA code. The retransmission timer is now set when the packet is known to be sent by the MAC layer.
2010-12-16 22:45:15 +00:00
dak664
240d478c1f
Allow platform to specify COLLECT_CONF_BROADCAST_ANNOUNCEMENT_MAX_TIME
2010-12-14 22:14:33 +00:00
adamdunkels
8f745a6ea6
Added a function for obtaining the current parent
2010-11-06 14:32:10 +00:00
adamdunkels
677575fc8c
Rewrote proactive link estimator to be invoked randomly instead of triggered by an empty queue; this makes network bootups because nodes are not synchronized
2010-10-28 15:36:02 +00:00
adamdunkels
9ecc0437f4
Left-over debug printf removed
2010-10-25 12:25:39 +00:00
adamdunkels
77ecfb0366
Rewrote parts of the retransmission logic so that collect is robust against the situation where the MAC layer will fail to callback after a packet has been transmitted.
2010-10-24 21:08:19 +00:00
adamdunkels
5585d72c86
A simple but substantial change: uIP used the htons()/HTONS() macro
...
functions for converting between host and network byte order. These
names are the de facto standard names for this functionality because
of the original BSD TCP/IP implementation. But they cause problems for
uIP/Contiki: some platforms define these names themselves (Mac OS,
most notably), causing compilation problems for Contiki on those
platforms.
This commit changes all htons to uip_htons instead. Same goes for
htonl, ntohs, and ntohl. All-caps versions as well.
2010-10-19 18:29:03 +00:00
adamdunkels
34cba78ca8
Bugfix: bump advertisements only when a parent changes, not because of an upstream parent change
2010-10-19 07:34:29 +00:00
oliverschmidt
2f89e69ff7
Fixed build for platforms which use the default value for QUEUEBUF_NUM.
2010-10-12 19:51:28 +00:00
adamdunkels
020da4e8ba
Added a function for obtaining beacon intervals
2010-10-11 23:44:24 +00:00
adamdunkels
ec716ea62d
Do not reduce transmission interval, unless explicitly told so with the bump flag
2010-10-11 23:43:01 +00:00
adamdunkels
37adf130b4
Rewrite of the congestion logic. A node now report it being congested
...
when half the transmission queue is full. When a neighbor is heard to
be congested, the rtmetric of that node is inflated to avoid sending
more traffic in its direction.
Fixed problems with beacon intervals: intervals are now not reduced
when a path gets significantly worse, only when they get better.
2010-10-11 23:42:01 +00:00
adamdunkels
d821ba5e22
Added a lifetime for link estimates: if they are too old, they are
...
reset so that a new probing period can produce more up-to-date
estimates. Added a congestion mechanism whereby a neighbor can be
marked as being congested for a period of time, during which the ETX
for the neighbor will be artificially inflated.
2010-10-11 23:38:46 +00:00
adamdunkels
5eb4a0fe8d
Rewrote the initial link estimate logic: link estimates are now
...
computed only over the actual samples, not over the entire
buffer. Also, the initial link estimate is much more conservative now
(16 transmissions) to favor links that have been probed, and which
therefore are likely to have better ETXs.
2010-10-11 23:34:02 +00:00
adamdunkels
0cabe483c3
Don't call sink recv function for zero-size packets, since these most likely are link estimate probes or keepalive packets. Explicitly set eseqno to zero when opening a new connection.
2010-10-07 15:52:28 +00:00
adamdunkels
ad35c54473
Bugfix: when a node's rtmetric was lower than SIGNIFICANT_RTMETRIC_PARENT_CHANGE, its beacon timers would always be bumped to its lowest value
2010-10-05 20:06:47 +00:00
adamdunkels
52e9a6f1fb
Turned the DRAW_TREE debug flag off by default
2010-10-04 22:36:47 +00:00
adamdunkels
65d640ac53
Several bugfixes to the proactive link estimate maintenance code, which is now enabled by default. Simplified DRAW_TREE code for drawing routing graph in Cooja. Added routing metric penalty to parents that are congested or that drop packets.
2010-10-04 20:27:50 +00:00
adamdunkels
40583fe112
Removed the polite announcement code, since it was not used, and enabled the broadcast announcement code by default. Increased the default intervals for broadcast announcements.
2010-10-03 20:10:22 +00:00
adamdunkels
605392522f
Bugfixes and improvements: rtmetrics are now 16-bit clean. Added experimental feature that proactively probes neighbors that have not yet been tried out, in order to get an initial ETX for them.
2010-10-03 20:08:44 +00:00
adamdunkels
d0579c8a81
Cleaned up the collect neighbor management code
2010-10-03 20:07:10 +00:00
adamdunkels
b23a364397
rtmetric values should always be computed as 16-bit values
2010-10-03 20:06:25 +00:00
adamdunkels
32ba90ea4c
Bugfix: make sure that neighbor exists before attempting to update tx
...
count.
2010-09-28 06:53:02 +00:00
adamdunkels
eed22a6f3c
A number of changes to the collect code:
...
* Added an optional "keep alive" mechanism whereby an idle network is
periodically probed by dummy packets to maintain a recent quality
metric when there is no traffic.
* Bugfix in when new routing metrics should be advertised
* Rewrote the ACK logic so that a queuebuf is not allocated for each
ack, only for those acks generated by the sink node.
* Updated the wrap-around logic for sequence numbers: when a sequence
number wraps, it won't go back to 0. Instead, it wraps to 128. This
allows us to understand when a node has rebooted: when its seqno is <
128, it has recently rebooted.
2010-09-22 22:08:08 +00:00
adamdunkels
2cae71e89b
Added a function for obtaining the link estimate and rtmetric for a neighbor
2010-09-22 22:04:55 +00:00
adamdunkels
46b2451969
Made the initial link estimate explicit
2010-09-22 22:03:21 +00:00
adamdunkels
18e31f33b9
Minor tweaks. Removed debug output from CVS.
2010-09-14 06:48:36 +00:00
adamdunkels
591766e663
Significant improvements to the Collect protocol:
...
* Loop detection and untangling. Now uses in-band loop detection that
works.
* Link quality estimation. Now starts with a conservative /
pessimistic estimate for new links.
* Retransmissions. MAC layer and network layer retransmissions are now
decoupled.
* Loss handling. Deals better with losses now.
* Concurrent applications. Each connection now maintains its own
neighbor table with separated cost to sink estimates for each
connection.
2010-09-13 13:28:14 +00:00
adamdunkels
4e0744954a
Rewrite of important parts of the Collect logic: link estimation
...
calculation and parent selection. This fixes a severe bug that caused
loops when packets were erroneously retransmitted due to ACK loss.
2010-09-08 19:21:45 +00:00
nifi
f05952c926
Changed packet id to use 8 bit instead of 4 bit
2010-08-31 13:14:49 +00:00
dak664
12479c32bc
Fix compiler warnings
2010-08-01 21:18:07 +00:00
nifi
e965b74cf5
added missing include
2010-06-18 08:28:56 +00:00
nifi
4741b95858
added missing include
2010-06-16 10:10:10 +00:00
adamdunkels
7647cbd8aa
Use the list_item_next() API
2010-06-15 19:22:25 +00:00
adamdunkels
3fa8ffda1a
Moved the modules packetbuf, queuebuf, and packetqueue from net/rime to net/, since they are not Rime-specific
2010-06-14 19:19:16 +00:00
adamdunkels
8f8393aadc
Moved ctimer.[ch] from their old and illogical location in core/net/rime to a more appropriate place in core/sys
2010-06-14 07:34:36 +00:00
adamdunkels
baa62e9314
Addresses are not const
2010-06-14 06:55:26 +00:00
adamdunkels
2647f879c2
Bugfix: select the best parent if current parent is NULL
2010-06-14 06:54:47 +00:00
nifi
f6e0b46f38
* Made Chameleon header processing module configurable (CHAMELEON_CONF_MODULE)
...
* Removed the unused init function from header processing modules
* Added option CHAMELEON_CONF_WITH_MAC_LINK_ADDRESSES to specify that
MAC link addresses should be used instead of Chameleon's own encoding
of sender and receiver. This avoids encoding the link addresses twice
when the MAC RDC has its own addresses.
2010-05-28 06:18:39 +00:00
nifi
b7b2c8fcde
Added macro to identify address attributes for use in header processing modules
2010-05-27 20:28:29 +00:00
nifi
6c86398778
Added check to not copy or create too large packets
2010-05-02 14:59:11 +00:00
nifi
a04372adc4
Fixed conversion of packetbuf address type to address index and corrected return value
2010-05-02 12:21:34 +00:00
adamdunkels
3d10dedecf
Added a safety measure against a problem where a node in rare situations would turn itself into a sink. Not entirely sure why this happens, but the safety measure should at least avoid the results of the problem. Added more debug messages.
2010-04-30 07:33:51 +00:00
adamdunkels
55b6129bd2
Debug printout fix
2010-04-30 07:29:31 +00:00
adamdunkels
e523c36cdf
Removed the (unused) header packet of the queuebuf. Added a function for accessing address attributes in the queuebuf
2010-04-30 07:29:08 +00:00
adamdunkels
3c735fcea4
Added a packetbuf flag that indicates if the link layer acks should be used or not
2010-04-30 07:25:51 +00:00
fros4943
18e5718c97
avoid freeing queuebuf multiple times, and free buffer after cancelling connection
2010-04-27 13:08:55 +00:00
nifi
875ad7ffda
Fixed to not change the header if the header allocation fails
2010-04-26 22:05:40 +00:00
nvt-se
2e5d97366a
ensure matching format and type in debug printf
2010-04-09 16:21:07 +00:00
adamdunkels
f2bf8965d5
MAC sequence number attribute
2010-04-08 09:46:30 +00:00
adamdunkels
83eaa70f03
Added pending flag
2010-04-03 13:34:20 +00:00
fros4943
59357e8b75
PRINTF():ed debugging output
2010-04-01 11:08:36 +00:00
adamdunkels
a8d8b6d31d
Improved parent management: parent neighbor is retained until a better neighbor is found (with 1 ETX less than parent). Don't drop parent neighbors when loop is detected (loops are transient anyway).
2010-04-01 10:45:21 +00:00
adamdunkels
d7457bc340
Improved parent management: parent neighbor is retained until a better neighbor is found (with 1 ETX less than parent). Don't drop parent neighbors when loop is detected (loops are transient anyway).
2010-04-01 10:03:19 +00:00
adamdunkels
4e33112d3e
Guard against malformed broadcast announcements
2010-03-31 12:17:24 +00:00
adamdunkels
4e3268e2e2
Added function that removes the header
2010-03-29 21:53:04 +00:00
adamdunkels
4c3b69dc07
Configuration parameter for number of MAC-layer retransmissions
2010-03-29 21:52:25 +00:00
fros4943
0fcbfae836
updated function: has_value argument was missing
2010-03-29 12:13:35 +00:00
nifi
9508d2c4d7
* Added configurable default number of transmissions for CSMA to use when not specified using packetbuf attributes (CSMA_CONF_MAX_MAC_TRANSMISSIONS).
...
* Renamed packetbuf attribute PACKETBUF_ATTR_MAX_MAC_REXMIT to PACKETBUF_ATTR_MAX_MAC_TRANSMISSIONS where value 0 (attribute not set) means that default number of transmissions should be used.
2010-03-26 12:29:29 +00:00
adamdunkels
a4f9e62295
Added a parameter to collect_open() that specifies whether or not the node should be a router for packets, or only an originator of packets. Updated the collect module to the new annoucement API.
2010-03-25 08:51:07 +00:00
adamdunkels
2559e27414
API change to the announcement module: an annoucement can now be registered without a value. Such announcements are never transmitted to neighbors, until the announcement's value is set.
2010-03-25 08:49:56 +00:00
fros4943
95e870cc46
bugfix: structs should be declared static
2010-03-22 11:32:29 +00:00
adamdunkels
9d06d84255
Renamed the neighbor module to collect-neighbor, as it is only used by the collect module and is not a generic neighbor module
2010-03-19 13:25:15 +00:00
adamdunkels
2e8bfa5d9a
Include new broadcast-announcement and renamed collect-neighbor in compilation
2010-03-19 13:21:24 +00:00
adamdunkels
f2c9b3e813
Remove old neighbor.h inclusion
2010-03-19 13:20:40 +00:00
adamdunkels
3a5be4a7e4
Added broadcast announcement module and collect-neighbor module
2010-03-19 13:17:55 +00:00
adamdunkels
14453e9fb7
Slight API change to support bump functionality
2010-03-19 13:17:31 +00:00
adamdunkels
7b0606cd58
Renamed the neighbor module to collect-neighbor, as it is only used by the collect module and is not a generic neighbor module
2010-03-19 13:17:00 +00:00
adamdunkels
137e02baac
Added a bump method that tells the announcement module that a value has changed sufficiently much for it to be pushed out quicker
2010-03-19 13:16:11 +00:00
adamdunkels
17db783fb0
Broadcast announcement back-end that sends announcement data as broadcasts, with increasing transmission intervals
2010-03-19 13:15:19 +00:00
fros4943
55f780ec19
removed debugging output
2010-03-17 14:36:46 +00:00
adamdunkels
36b995cc9a
Reenabled announcement support
2010-03-16 18:12:34 +00:00
adamdunkels
a9bad71fbd
Increased the number of bits that repressent the MAX_RETRANSMITS attribute to allow for more than 7 hop-by-hop retransmissions
2010-03-14 23:01:12 +00:00
dak664
0236c6e725
Leave compiler warning for 16 bit timers
2010-03-12 17:51:07 +00:00
dak664
52c9f4bde3
Remove compiler warning
2010-03-12 15:21:14 +00:00
adamdunkels
5a6fc2ade0
Bugfix: set up rtmetric before starting to announce it. Set the number of MAC layer retransmissions correctly
2010-03-09 13:21:28 +00:00
dak664
c65e09ceb2
Remove compiler warnings
2010-03-02 15:41:23 +00:00
adamdunkels
524625dfd2
Removed debug string names of packet attribtues
2010-02-28 20:20:19 +00:00
adamdunkels
ec928a2a19
Make max queueing time depend on retransmission timeout
2010-02-28 14:15:58 +00:00
adamdunkels
f95a6cce85
Added function for obtaining packet queue length
2010-02-28 09:20:32 +00:00
adamdunkels
8fe15f7b45
New packet attribute for specifiying MAC layer retransmissions; reorder and commented packet attributes
2010-02-28 09:19:43 +00:00
adamdunkels
970a9eb9c7
Increased neighbor lifetime to allow for longer neighbor announcement intervals
2010-02-28 09:19:04 +00:00
adamdunkels
7165a3866f
Significant rework of the Contiki data collection protocol:
...
* the new version makes use of MAC-layer feedback so that bad paths
can be identified quicker and then avoided.
* the new code uses transport layer ACKs that contain feedback from
the collect protocol: when a packet cannot be forwarded due to lack
of resources, the ACK contains a flag that indicates that the packet
could not be forwarded. ACKs also contain the routing metric of the
sender, which improves agility in face of rapid path changes.
* loop detection and management has been improved: with higher path
metric agility, the system is more prone to short-lived routing
loops. Instead of dropping looping packets, the new version adjusts
the routing metric for the routes that exhibit loops so that the
risk for future loops is reduced.
* make use of packet attributes to inform the MAC layer of how many
times packets should be retransmitted.
2010-02-28 09:18:01 +00:00
nifi
c20047f657
Changed the network stack to use different structures for the different layers (network_driver, mac_driver, rdc_driver, radio_driver). This helps to avoid incorrect configuration.
2010-02-23 20:09:11 +00:00
adamdunkels
ca0417a923
Added the MAC layer callback functionality so that the Rime network layer gets information from the MAC about the status of sent packets: were they successfully transmitted, or was there a collisions? How many retries were there?
2010-02-23 18:38:05 +00:00
adamdunkels
f10eedab3e
Added debug printout
2010-02-23 18:37:15 +00:00
adamdunkels
2d13fecea7
Improved backoff management: timer is now doubled on every transmission, until the using module calls the neighbor_discovery_start() function again. Don't cancel the transmission even if a lower value arrives (this fixes a problem with multi-hop ETX propagaion).
2010-02-23 18:36:50 +00:00
adamdunkels
0eade2886c
Better loop handling: when a loop is detected, the neighbor to which the packet was originally sent gets an inflated ETX; made sure that collect without announcments work; increased timeouts, to work nicer in larger networks
2010-02-23 18:35:23 +00:00
adamdunkels
a4d9d6651b
Added the option to specify the old value to observers so that they can determine if the announcement should be sent out quicklier than otherwise
2010-02-23 18:32:44 +00:00
adamdunkels
b746b7fc06
Reworked the Rime/Chameleon interface so that packets now always hit Rime before Chameleon. Chameleon is now only called by Rime. This makes packet sniffing easier, and allows for sniffing packets after their header has been processed by Chameleon, thereby making per-packet power profiling much easier to implement
2010-02-23 18:29:53 +00:00
adamdunkels
f49ebfe1c4
Temporarily disabled rime route udp because it breaks with newest MAC interfaces
2010-02-18 21:53:08 +00:00
adamdunkels
e34eb54960
A work-in-progress rework of the Contiki MAC and radio layers. The
...
main ideas are:
* Separates the Contiki low-layer network stack into four layers:
network (e.g. sicslowpan / rime), Medium Access Control MAC
(e.g. CSMA), Radio Duty Cycling RDC (e.g. ContikiMAC, X-MAC), and
radio (e.g. cc2420).
* Introduces a new way to configure the network stack. Four #defines
that specify what mechanism/protocol/driver to use at the four
layers: NETSTACK_CONF_NETWORK, NETSTACK_CONF_MAC, NETSTACK_CONF_RDC,
NETSTACK_CONF_RADIO.
* Adds a callback mechanism to inform the MAC and network layers about
the fate of a transmitted packet: if the packet was not possible to
transmit, the cause of the failure is reported, and if the packets
was successfully transmitted, the number of tries before it was
finally transmitted is reported.
* NULL-protocols at both the MAC and RDC layers: nullmac and nullrdc,
which can be used when MAC and RDC functionality is not needed.
* Extends the radio API with three new functions that enable more
efficient radio duty cycling protocols: channel check, pending
packet, and receiving packet.
* New initialization mechanism, which takes advantage of the NETSTACK
#defines.
2010-02-18 21:48:39 +00:00