{"action":"created","issue":{"url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/3050","labels_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/3050/labels{/name}","comments_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/3050/comments","events_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/3050/events","html_url":"https://github.com/RIOT-OS/RIOT/pull/3050","id":79600457,"number":3050,"title":"ng_rpl: port to the new network stack","user":{"login":"cgundogan","id":739129,"avatar_url":"https://avatars.githubusercontent.com/u/739129?v=3","gravatar_id":"","url":"https://api.github.com/users/cgundogan","html_url":"https://github.com/cgundogan","followers_url":"https://api.github.com/users/cgundogan/followers","following_url":"https://api.github.com/users/cgundogan/following{/other_user}","gists_url":"https://api.github.com/users/cgundogan/gists{/gist_id}","starred_url":"https://api.github.com/users/cgundogan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cgundogan/subscriptions","organizations_url":"https://api.github.com/users/cgundogan/orgs","repos_url":"https://api.github.com/users/cgundogan/repos","events_url":"https://api.github.com/users/cgundogan/events{/privacy}","received_events_url":"https://api.github.com/users/cgundogan/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/RIOT-OS/RIOT/labels/Hack'n'ACK%20candidate","name":"Hack'n'ACK candidate","color":"dff5df"},{"url":"https://api.github.com/repos/RIOT-OS/RIOT/labels/NEEDS%20SQUASHING","name":"NEEDS SQUASHING","color":"009800"},{"url":"https://api.github.com/repos/RIOT-OS/RIOT/labels/network","name":"network","color":"bfdadc"},{"url":"https://api.github.com/repos/RIOT-OS/RIOT/labels/new%20feature","name":"new feature","color":"e11d21"},{"url":"https://api.github.com/repos/RIOT-OS/RIOT/labels/NSTF","name":"NSTF","color":"d4c5f9"}],"state":"open","locked":false,"assignee":{"login":"Lotterleben","id":581552,"avatar_url":"https://avatars.githubusercontent.com/u/581552?v=3","gravatar_id":"","url":"https://api.github.com/users/Lotterleben","html_url":"https://github.com/Lotterleben","followers_url":"https://api.github.com/users/Lotterleben/followers","following_url":"https://api.github.com/users/Lotterleben/following{/other_user}","gists_url":"https://api.github.com/users/Lotterleben/gists{/gist_id}","starred_url":"https://api.github.com/users/Lotterleben/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Lotterleben/subscriptions","organizations_url":"https://api.github.com/users/Lotterleben/orgs","repos_url":"https://api.github.com/users/Lotterleben/repos","events_url":"https://api.github.com/users/Lotterleben/events{/privacy}","received_events_url":"https://api.github.com/users/Lotterleben/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/RIOT-OS/RIOT/milestones/12","html_url":"https://github.com/RIOT-OS/RIOT/milestones/Release%202015.06","labels_url":"https://api.github.com/repos/RIOT-OS/RIOT/milestones/12/labels","id":1088995,"number":12,"title":"Release 2015.06","description":"This release aims mainly to include the brand new network stack.","creator":{"login":"OlegHahm","id":1590423,"avatar_url":"https://avatars.githubusercontent.com/u/1590423?v=3","gravatar_id":"","url":"https://api.github.com/users/OlegHahm","html_url":"https://github.com/OlegHahm","followers_url":"https://api.github.com/users/OlegHahm/followers","following_url":"https://api.github.com/users/OlegHahm/following{/other_user}","gists_url":"https://api.github.com/users/OlegHahm/gists{/gist_id}","starred_url":"https://api.github.com/users/OlegHahm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OlegHahm/subscriptions","organizations_url":"https://api.github.com/users/OlegHahm/orgs","repos_url":"https://api.github.com/users/OlegHahm/repos","events_url":"https://api.github.com/users/OlegHahm/events{/privacy}","received_events_url":"https://api.github.com/users/OlegHahm/received_events","type":"User","site_admin":false},"open_issues":64,"closed_issues":230,"state":"open","created_at":"2015-04-29T10:11:27Z","updated_at":"2015-07-23T07:58:51Z","due_on":"2015-06-29T22:00:00Z","closed_at":null},"comments":20,"created_at":"2015-05-22T20:38:29Z","updated_at":"2015-07-23T10:01:12Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/3050","html_url":"https://github.com/RIOT-OS/RIOT/pull/3050","diff_url":"https://github.com/RIOT-OS/RIOT/pull/3050.diff","patch_url":"https://github.com/RIOT-OS/RIOT/pull/3050.patch"},"body":"~~Depends on: #2783 and #2818~~\r\n\r\nThis PR introduces RPL for the new network stack. I used the old RPL implementation as a blueprint and copied code blocks, which could be reused.\r\n\r\nFor a better internal dodag management I made use of `utlist.h` (linked list).\r\nThus, it was quite easy to adopt the code to support multiple dodags and/or instances.\r\n\r\nFurthermore, I changed the parsing of control packets. The old implementation did use a mediary data structure to parse all the information and then assign them to the internal dodag structure. I completely removed this mediary step and operate directly on the internal data structures.\r\n\r\nWhile adopting the code, I found small discrepancies betwen the implementation and the RFC. I tried to correct them to the best of my knowledge.\r\n\r\nThis port is far from being complete, as I only included the `Storing` mode of operation\r\nMissing things:\r\n\r\n- [ ] Non-Storing Mode of Operation\r\n    - [ ] Source Routing Header missing [RFC6554](https://tools.ietf.org/html/rfc6554) (see also #2898)\r\n- [ ] ETX/MrHof is not included, because ETX needs to be ported to the new network stack separately\r\n- [ ] some message options are missing, like the Prefix Information Object (in DIOs)\r\n- [ ] RPL Information Option missing [RFC6553](https://tools.ietf.org/html/rfc6553)\r\n\r\nI did all my testing with the `ng_nativenet` implementation by rebasing this to the branch of @kaspar030 #2776 and then use the test application in `./tests/driver_netdev_eth/`.\r\nThere I modifid the `Makefile` to include `ng_ipv6_default` and `ng_rpl`.\r\n\r\nWhen starting two to four nodes (tap0..tap3), I first have to add an IPv6 address to the nodes and can then initialize RPL on the given interface.\r\n```\r\nifconfig 5 add 2001:db8::x/64\r\nrpl init 5\r\n```\r\nPlease make sure, that you use the same prefix part for all nodes.\r\n\r\nOn one node I create a DODAG by issuing: `rpl root 1 2001:db8::x`, where `1` is the instance id by choice and `2001:db8::x` the dodag id. Note that you should not use the prefix notation (`*/xx`) like I did for `ifconfig` here.\r\n\r\n`rpl` shows some basic information about the dodags and `rpl help` will display some more commands, like deleting/adding dodags, starting/stoping trickle timers, sending DIS etc.\r\n\r\nI would like to test this on some iotlab m3s, but I don't know how. Could somebody point me to a test/example application, which I can use as a baseline?\r\n\r\n@OlegHahm @BytesGalore @authmillenon @gebart @Lotterleben @haukepetersen @emmanuelsearch and basically everyone else: please help me by reviewing this code of a Kraken...\r\n\r\n@authmillenon you should especially look into the communication with the network layer part, because I do not know if I implemented it the right way - it works though."},"comment":{"url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/comments/124038662","html_url":"https://github.com/RIOT-OS/RIOT/pull/3050#issuecomment-124038662","issue_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/3050","id":124038662,"user":{"login":"gebart","id":317506,"avatar_url":"https://avatars.githubusercontent.com/u/317506?v=3","gravatar_id":"","url":"https://api.github.com/users/gebart","html_url":"https://github.com/gebart","followers_url":"https://api.github.com/users/gebart/followers","following_url":"https://api.github.com/users/gebart/following{/other_user}","gists_url":"https://api.github.com/users/gebart/gists{/gist_id}","starred_url":"https://api.github.com/users/gebart/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gebart/subscriptions","organizations_url":"https://api.github.com/users/gebart/orgs","repos_url":"https://api.github.com/users/gebart/repos","events_url":"https://api.github.com/users/gebart/events{/privacy}","received_events_url":"https://api.github.com/users/gebart/received_events","type":"User","site_admin":false},"created_at":"2015-07-23T10:01:12Z","updated_at":"2015-07-23T10:01:12Z","body":"while testing this I discovered that the node is sending DAO messages repeated every 3 seconds in the beginning and then backing off to a slower rate. Is this really the right behaviour?"}}