Hello RIOT team,
While experimenting with RIOT i found the RPL module implementation behaviour which sort of stops my network from building up.
Scenario: If i have a RIOT 6lr node and it has an FIB with, let’s say, 10 active entries, then when the 6lr next sends DAO, it concatenates multiple target containers (from multiple FIB entries) in the same DAO message. This results in a packet size crossing link MTU limit (127 in my case) and for my case i do not have 6lo fragmentation enabled. Thus the DAO is getting dropped.
I skimmed through the code but could not find a way to send DAO with max x target containers, where x is predefined.
To reiterate, if the FIB active entries are more, then RIOT aggregates all the entries into the same DAO as target containers and forwards it. While aggregating if the packet crosses MTU boundary and if the 6lo frag is not on then it (6lo module) will drop the packet. Thus the network wont form. (i do not want 6lo fragmentation to happen for RPL control packets).
Just want to understand, is there any way to handle this situation without turning on 6lo frag?
Thanks, Rahul
--------------[log snippet]-------
RPL: Send DAO - building internal transit
RPL: Send DAO - building target fd00::302:304:506:3/128
RPL: Send DAO - building target fd00::302:304:506:8/128
RPL: Send DAO - building target fd00::302:304:506:d/128
RPL: Send DAO - building target fd00::302:304:506:10/128
RPL: Send DAO - building target fd00::302:304:506:11/128
RPL: Send DAO - building target fd00::302:304:506:12/128
RPL: Send DAO - building target fd00::302:304:506:e/128
RPL: Send DAO - building target fd00::302:304:506:9/128
RPL: Send DAO - building target fd00::302:304:506:4/128
RPL: Send DAO - building target fd00::302:304:506:6/128
::::::::
6lo: iface->max_frag_size = 127 for interface 6
6lo: packet too big (254 > 127)
6lo: waiting for incoming message.
::::::::
-----------[end of log]------------