Skip to content

gnrc/RPL: instance ID not updated on reconnect #14407

@haukepetersen

Description

@haukepetersen

Expected results

When debugging something unrelated I just stumbled over the following behavior:

  • start two RIOT nodes in the same network, node A as RPL root: let instance ID := 11, node B as RPL node
  • node B selects node A as parent and updates its internal state:
node A:
2020-07-01 10:06:31,591 # rpl                           
2020-07-01 10:06:31,593 # instance table:       [X]                                                                    
2020-07-01 10:06:31,595 # parent table: [ ]     [ ]     [ ]
2020-07-01 10:06:31,595 #                                                                                              
2020-07-01 10:06:31,601 # instance [11 | Iface: 8 | mop: 2 | ocp: 0 | mhri: 256 | mri 0]                               
2020-07-01 10:06:31,608 #       dodag [affe::1 | R: 256 | OP: Router | PIO: on | TR(I=[8,20], k=10, c=1, TC=6s)]  
node B:
2020-07-01 10:06:33,161 # rpl      
2020-07-01 10:06:33,163 # instance table:       [X]
2020-07-01 10:06:33,166 # parent table: [X]     [ ]     [ ]
2020-07-01 10:06:33,166 #                                  
2020-07-01 10:06:33,171 # instance [11 | Iface: 8 | mop: 2 | ocp: 0 | mhri: 256 | mri 0]                               
2020-07-01 10:06:33,179 #       dodag [affe::1 | R: 512 | OP: Router | PIO: on | TR(I=[8,20], k=10, c=0, TC=3s)]       
2020-07-01 10:06:33,183 #               parent [addr: fe80::d18c:56ff:fe24:3ef | rank: 256] 
  • now we reboot the RPL root (node A) and re-initialize it with a new instance ID (22):
node A:
2020-07-01 10:07:03,783 # instance table:       [X]     
2020-07-01 10:07:03,786 # parent table: [ ]     [ ]     [ ]
2020-07-01 10:07:03,786 #                    
2020-07-01 10:07:03,791 # instance [22 | Iface: 8 | mop: 2 | ocp: 0 | mhri: 256 | mri 0]                               
2020-07-01 10:07:03,799 #       dodag [affe::1 | R: 256 | OP: Router | PIO: on | TR(I=[8,20], k=10, c=0, TC=0s)]

Problem: node B will does re-selects node A as parent after the reboot, but it will not update its instance ID:

node B:
2020-07-01 10:07:14,090 # rpl send dis  
2020-07-01 10:07:14,094 # success: send a DIS                                                                          
2020-07-01 10:07:14,094 #                     
2020-07-01 10:07:20,075 #  rpl                                                                                         
2020-07-01 10:07:20,077 # instance table:       [X]                                                                    
2020-07-01 10:07:20,080 # parent table: [X]     [ ]     [ ]                                                            
2020-07-01 10:07:20,080 #                                                                                              
2020-07-01 10:07:20,085 # instance [11 | Iface: 8 | mop: 2 | ocp: 0 | mhri: 256 | mri 0]                               
2020-07-01 10:07:20,093 #       dodag [affe::1 | R: 512 | OP: Router | PIO: on | TR(I=[8,20], k=10, c=0, TC=8s)]       
2020-07-01 10:07:20,097 #               parent [addr: fe80::d18c:56ff:fe24:3ef | rank: 256]    

I would expect node B updating its parent table to the new instance ID, right?!

Actual results

see above

Versions

Observed in current master, using two nrf52dk nodes running IP-over-BLE.

Metadata

Metadata

Labels

Area: networkArea: NetworkingType: bugThe issue reports a bug / The PR fixes a bug (including spelling errors)

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions