Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

transceiver buffer too small #1747

Closed
Lotterleben opened this issue Oct 1, 2014 · 3 comments · Fixed by #1904
Closed

transceiver buffer too small #1747

Lotterleben opened this issue Oct 1, 2014 · 3 comments · Fixed by #1904
Assignees
Labels
Area: network Area: Networking Platform: native Platform: This PR/issue effects the native platform Type: cleanup The issue proposes a clean-up / The PR cleans-up parts of the codebase / documentation

Comments

@Lotterleben
Copy link
Member

Would it be possible to enlarge the transceiver buffer a bit (or provide different options, depending on the platform)? With AODVv2 and the current buffer size of nativenet, I am running into the following problem:
While Route Requests (RREQ) are broadcasted, they are answered with Route Replies (RREP), which are unicast. Because they are up against so many broadcasted RREQ (and other RREPs), about 2/3 of my RREQ are dropped because the transceiver buffer is full somewhere along the way towards the originating node, making route discoveries fail even in perfect environments (desvirt grid with 0% lossrate).
This happened with each node of a 4x4 grid starting a route discovery every 1-180 seconds.

@Lotterleben Lotterleben added Platform: native Platform: This PR/issue effects the native platform Area: network Area: Networking Type: cleanup The issue proposes a clean-up / The PR cleans-up parts of the codebase / documentation labels Oct 1, 2014
@Lotterleben Lotterleben added this to the Release NEXT MAJOR milestone Oct 1, 2014
Lotterleben added a commit to Lotterleben/RIOT that referenced this issue Oct 6, 2014
This is a minimal implementation of the AODVv2 routing protocol.
*Not* implemented are:

	- AckReqs
	- alternate metrics
	- multiple interfaces
	- clients and Client Networks
	- buffering
	- all addresses, TLVs, and features that are marked as optional

An example application can be found at https:/Lotterleben/RIOT-AODVv2/tree/master/aodvv2_demo.

The implementation relies heavily on a functioning Neighbor Discovery Protocol.
It might be necessary to fill the neighbor cache manually with the current state
of RIOTs NDP implementation.

The value of AODVV2_MAX_UNREACHABLE_NODES has been chosen arbitrarily and will be subject to
future improvement.

Please note that based on my experience, with the default transceiver
buffer size (3) of the native port, about 2/3 of the route discoveries
will fail. This has been addressed in issue RIOT-OS#1747. It is advised to increase
the transceiver buffer size when using AODVv2 as a routing protocol.
Lotterleben added a commit to Lotterleben/RIOT that referenced this issue Oct 6, 2014
This PR depends on RIOT-OS#1766.

It contains a minimal implementation of the AODVv2 routing protocol.
*Not* implemented are:

	- AckReqs
	- alternate metrics
	- multiple interfaces
	- clients and Client Networks
	- buffering
	- all addresses, TLVs, and features that are marked as optional

An example application can be found at https:/Lotterleben/RIOT-AODVv2/tree/master/aodvv2_demo.

The implementation relies heavily on a functioning Neighbor Discovery Protocol.
It might be necessary to fill the neighbor cache manually with the current state
of RIOTs NDP implementation.

The value of AODVV2_MAX_UNREACHABLE_NODES has been chosen arbitrarily and will be subject to
future improvement.

Please note that based on my experience, with the default transceiver
buffer size (3) of the native port, about 2/3 of the route discoveries
will fail. This has been addressed in issue RIOT-OS#1747. It is advised to increase
the transceiver buffer size when using AODVv2 as a routing protocol.
Lotterleben added a commit to Lotterleben/RIOT that referenced this issue Oct 7, 2014
This PR depends on RIOT-OS#1766.

It contains a minimal implementation of the AODVv2 routing protocol.
*Not* implemented are:

	- AckReqs
	- alternate metrics
	- multiple interfaces
	- clients and Client Networks
	- buffering
	- all addresses, TLVs, and features that are marked as optional

An example application can be found at https:/Lotterleben/RIOT-AODVv2/tree/master/aodvv2_demo.

The implementation relies heavily on a functioning Neighbor Discovery Protocol.
It might be necessary to fill the neighbor cache manually with the current state
of RIOTs NDP implementation.

The value of AODVV2_MAX_UNREACHABLE_NODES has been chosen arbitrarily and will be subject to
future improvement.

Please note that based on my experience, with the default transceiver
buffer size (3) of the native port, about 2/3 of the route discoveries
will fail. This has been addressed in issue RIOT-OS#1747. It is advised to increase
the transceiver buffer size when using AODVv2 as a routing protocol.
Lotterleben added a commit to Lotterleben/RIOT that referenced this issue Oct 8, 2014
This PR depends on RIOT-OS#1766.

It contains a minimal implementation of the AODVv2 routing protocol.
*Not* implemented are:

	- AckReqs
	- alternate metrics
	- multiple interfaces
	- clients and Client Networks
	- buffering
	- all addresses, TLVs, and features that are marked as optional

An example application can be found at https:/Lotterleben/RIOT-AODVv2/tree/master/aodvv2_demo.

The implementation relies heavily on a functioning Neighbor Discovery Protocol.
It might be necessary to fill the neighbor cache manually with the current state
of RIOTs NDP implementation.

The value of AODVV2_MAX_UNREACHABLE_NODES has been chosen arbitrarily and will be subject to
future improvement.

Please note that based on my experience, with the default transceiver
buffer size (3) of the native port, about 2/3 of the route discoveries
will fail. This has been addressed in issue RIOT-OS#1747. It is advised to increase
the transceiver buffer size when using AODVv2 as a routing protocol.
Lotterleben added a commit to Lotterleben/RIOT that referenced this issue Oct 8, 2014
This PR depends on RIOT-OS#1766.

It contains a minimal implementation of the AODVv2 routing protocol.
*Not* implemented are:

	- AckReqs
	- alternate metrics
	- multiple interfaces
	- clients and Client Networks
	- buffering
	- all addresses, TLVs, and features that are marked as optional

An example application can be found at https:/Lotterleben/RIOT-AODVv2/tree/master/aodvv2_demo.

The implementation relies heavily on a functioning Neighbor Discovery Protocol.
It might be necessary to fill the neighbor cache manually with the current state
of RIOTs NDP implementation.

The value of AODVV2_MAX_UNREACHABLE_NODES has been chosen arbitrarily and will be subject to
future improvement.

Please note that based on my experience, with the default transceiver
buffer size (3) of the native port, about 2/3 of the route discoveries
will fail. This has been addressed in issue RIOT-OS#1747. It is advised to increase
the transceiver buffer size when using AODVv2 as a routing protocol.
Lotterleben added a commit to Lotterleben/RIOT that referenced this issue Oct 9, 2014
This PR depends on RIOT-OS#1766.

It contains a minimal implementation of the AODVv2 routing protocol.
*Not* implemented are:

	- AckReqs
	- alternate metrics
	- multiple interfaces
	- clients and Client Networks
	- buffering
	- all addresses, TLVs, and features that are marked as optional

An example application can be found at https:/Lotterleben/RIOT-AODVv2/tree/master/aodvv2_demo.

The implementation relies heavily on a functioning Neighbor Discovery Protocol.
It might be necessary to fill the neighbor cache manually with the current state
of RIOTs NDP implementation.

The value of AODVV2_MAX_UNREACHABLE_NODES has been chosen arbitrarily and will be subject to
future improvement.

Please note that based on my experience, with the default transceiver
buffer size (3) of the native port, about 2/3 of the route discoveries
will fail. This has been addressed in issue RIOT-OS#1747. It is advised to increase
the transceiver buffer size when using AODVv2 as a routing protocol.
Lotterleben added a commit to Lotterleben/RIOT that referenced this issue Oct 29, 2014
This PR depends on RIOT-OS#1766.

It contains a minimal implementation of the AODVv2 routing protocol.
*Not* implemented are:

	- AckReqs
	- alternate metrics
	- multiple interfaces
	- clients and Client Networks
	- buffering
	- all addresses, TLVs, and features that are marked as optional

An example application can be found at https:/Lotterleben/RIOT-AODVv2/tree/master/aodvv2_demo.

The implementation relies heavily on a functioning Neighbor Discovery Protocol.
It might be necessary to fill the neighbor cache manually with the current state
of RIOTs NDP implementation.

The value of AODVV2_MAX_UNREACHABLE_NODES has been chosen arbitrarily and will be subject to
future improvement.

Please note that based on my experience, with the default transceiver
buffer size (3) of the native port, about 2/3 of the route discoveries
will fail. This has been addressed in issue RIOT-OS#1747. It is advised to increase
the transceiver buffer size when using AODVv2 as a routing protocol.
@OlegHahm
Copy link
Member

I guess the rationale behind setting the buffer to 3 in native was to behave similar like real radios. However, since the data rate on native is (or at least can be) much higher than in a real wireless environment, I think increasing this value is reasonable. Memory is not a real issue on native anyway.

@LudwigKnuepfer
Copy link
Member

I see no problem with making native more "reliable" per default, will open a PR.

@LudwigKnuepfer
Copy link
Member

^ I did.

Lotterleben added a commit to Lotterleben/RIOT that referenced this issue Oct 31, 2014
This PR depends on RIOT-OS#1766.

It contains a minimal implementation of the AODVv2 routing protocol.
*Not* implemented are:

	- AckReqs
	- alternate metrics
	- multiple interfaces
	- clients and Client Networks
	- buffering
	- all addresses, TLVs, and features that are marked as optional

An example application can be found at https:/Lotterleben/RIOT-AODVv2/tree/master/aodvv2_demo.

The implementation relies heavily on a functioning Neighbor Discovery Protocol.
It might be necessary to fill the neighbor cache manually with the current state
of RIOTs NDP implementation.

The value of AODVV2_MAX_UNREACHABLE_NODES has been chosen arbitrarily and will be subject to
future improvement.

Please note that based on my experience, with the default transceiver
buffer size (3) of the native port, about 2/3 of the route discoveries
will fail. This has been addressed in issue RIOT-OS#1747. It is advised to increase
the transceiver buffer size when using AODVv2 as a routing protocol.
Lotterleben added a commit to Lotterleben/RIOT that referenced this issue Nov 25, 2014
This PR depends on RIOT-OS#1766.

It contains a minimal implementation of the AODVv2 routing protocol.
*Not* implemented are:

	- AckReqs
	- alternate metrics
	- multiple interfaces
	- clients and Client Networks
	- buffering
	- all addresses, TLVs, and features that are marked as optional

An example application can be found at https:/Lotterleben/RIOT-AODVv2/tree/master/aodvv2_demo.

The implementation relies heavily on a functioning Neighbor Discovery Protocol.
It might be necessary to fill the neighbor cache manually with the current state
of RIOTs NDP implementation.

The value of AODVV2_MAX_UNREACHABLE_NODES has been chosen arbitrarily and will be subject to
future improvement.

Please note that based on my experience, with the default transceiver
buffer size (3) of the native port, about 2/3 of the route discoveries
will fail. This has been addressed in issue RIOT-OS#1747. It is advised to increase
the transceiver buffer size when using AODVv2 as a routing protocol.
Lotterleben added a commit to Lotterleben/RIOT that referenced this issue Nov 25, 2014
This PR depends on RIOT-OS#1766.

It contains a minimal implementation of the AODVv2 routing protocol.
*Not* implemented are:

	- AckReqs
	- alternate metrics
	- multiple interfaces
	- clients and Client Networks
	- buffering
	- all addresses, TLVs, and features that are marked as optional

An example application can be found at https:/Lotterleben/RIOT-AODVv2/tree/master/aodvv2_demo.

The implementation relies heavily on a functioning Neighbor Discovery Protocol.
It might be necessary to fill the neighbor cache manually with the current state
of RIOTs NDP implementation.

The value of AODVV2_MAX_UNREACHABLE_NODES has been chosen arbitrarily and will be subject to
future improvement.

Please note that based on my experience, with the default transceiver
buffer size (3) of the native port, about 2/3 of the route discoveries
will fail. This has been addressed in issue RIOT-OS#1747. It is advised to increase
the transceiver buffer size when using AODVv2 as a routing protocol.
Lotterleben added a commit to Lotterleben/RIOT that referenced this issue Nov 27, 2014
This PR depends on RIOT-OS#1766.

It contains a minimal implementation of the AODVv2 routing protocol.
*Not* implemented are:

	- AckReqs
	- alternate metrics
	- multiple interfaces
	- clients and Client Networks
	- buffering
	- all addresses, TLVs, and features that are marked as optional

An example application can be found at https:/Lotterleben/RIOT-AODVv2/tree/master/aodvv2_demo.

The implementation relies heavily on a functioning Neighbor Discovery Protocol.
It might be necessary to fill the neighbor cache manually with the current state
of RIOTs NDP implementation.

The value of AODVV2_MAX_UNREACHABLE_NODES has been chosen arbitrarily and will be subject to
future improvement.

Please note that based on my experience, with the default transceiver
buffer size (3) of the native port, about 2/3 of the route discoveries
will fail. This has been addressed in issue RIOT-OS#1747. It is advised to increase
the transceiver buffer size when using AODVv2 as a routing protocol.
Lotterleben added a commit to Lotterleben/RIOT that referenced this issue Nov 27, 2014
This PR depends on RIOT-OS#1766.

It contains a minimal implementation of the AODVv2 routing protocol.
*Not* implemented are:

	- AckReqs
	- alternate metrics
	- multiple interfaces
	- clients and Client Networks
	- buffering
	- all addresses, TLVs, and features that are marked as optional

An example application can be found at https:/Lotterleben/RIOT-AODVv2/tree/master/aodvv2_demo.

The implementation relies heavily on a functioning Neighbor Discovery Protocol.
It might be necessary to fill the neighbor cache manually with the current state
of RIOTs NDP implementation.

The value of AODVV2_MAX_UNREACHABLE_NODES has been chosen arbitrarily and will be subject to
future improvement.

Please note that based on my experience, with the default transceiver
buffer size (3) of the native port, about 2/3 of the route discoveries
will fail. This has been addressed in issue RIOT-OS#1747. It is advised to increase
the transceiver buffer size when using AODVv2 as a routing protocol.
@OlegHahm OlegHahm modified the milestones: Release 2014.12, Release NEXT MAJOR Jan 6, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area: network Area: Networking Platform: native Platform: This PR/issue effects the native platform Type: cleanup The issue proposes a clean-up / The PR cleans-up parts of the codebase / documentation
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants