Webex detail ROLL use-of-rpi Tuesday, September 29, 20159:00 am  |  Eastern Daylight Time (New York, GMT-04:00)  | 2 hrs Join WebEx meeting https://ietf.webex.com/ietf/j.php?MTID=m05c1064b5d2c2aa56ec932073514a5c8 Meeting number:642 820 567 Meeting password:roll Join by phone1-877-668-4493 Call-in toll free number (US/Canada)1-650-479-3208 Call-in toll number (US/Canada) Access code: 642 820 567    PLEASE PUT YOUR NAME FOR BLUESHEET RECORDING REQUERIMENTS    Please also put your handle in the upper right pull down, so that your typing colour is associated with your name. Participants:    Michael Richardson (mcr)    Cenk Gündoğan    Alexander Aring    Ines Robles    Pascal Thubert    Alvaro Retana Goal    Fill the respective uses cases TOPIC Explain Traffic flows: Posibility to transmit in Storing or                Non-Storing mode: RPI,  RH3, IP-in-IP encapsulation      -Flow from RPL-aware-leaf to root:                           RPI - RH3 -IP-in-IP -- || Non-S RPI, Non-S RH3, NonS-IP-in-IP      -Flow from root to RPL-aware-leaf:                           RPI - RH3 -IP-in-IP -- || Non-S RPI, Non-S RH3, NonS-IP-in-IP      -Flow from not-RPL-aware-leaf to root:                       RPI - RH3 -IP-in-IP -- || Non-S RPI, Non-S RH3, NonS-IP-in-IP      -Flow from root to not-RPL-aware-leaf:                       RPI - RH3 -IP-in-IP -- || Non-S RPI, Non-S RH3, NonS-IP-in-IP      -Flow from RPL-aware-leaf to Internet:                       RPI - RH3 -IP-in-IP -- || Non-S RPI, Non-S RH3, NonS-IP-in-IP      -Flow from Internet to RPL-aware-leaf:                       RPI - RH3 -IP-in-IP -- || Non-S RPI, Non-S RH3, NonS-IP-in-IP      -Flow from not-RPL-aware-leaf to Internet:                   RPI - RH3 -IP-in-IP -- || Non-S RPI, Non-S RH3, NonS-IP-in-IP      -Flow from Internet to not-RPL-aware-leaf:                   RPI - RH3 -IP-in-IP -- || Non-S RPI, Non-S RH3, NonS-IP-in-IP      -Flow from RPL-aware-leaf to RPL-aware-leaf:                 RPI - RH3 -IP-in-IP -- || Non-S RPI, Non-S RH3, NonS-IP-in-IP      -Flow from RPL-aware-leaf to not-RPL-aware-leaf:             RPI - RH3 -IP-in-IP -- || Non-S RPI, Non-S RH3, NonS-IP-in-IP      -Flow from not-RPL-aware-leaf to RPL-aware-leaf:             RPI - RH3 -IP-in-IP -- || Non-S RPI, Non-S RH3, NonS-IP-in-IP      -Flow from not-RPL-aware-leaf to not-RPL-aware-leaf: :       RPI - RH3 -IP-in-IP -- || Non-S RPI, Non-S RH3, NonS-IP-in-IP Rule for IPIP header: if we need to insertion or deletion of an extension header. - only headers that are in the outer IPIP can be removed by removing the IPIP header. - this requires that if a header needs to be removed, then it must be behind an IPIP header. RPI should be present in every single RPL data packet. exception- in non-storing mode, a packet going down from the route: the entire route is written, so there are no loops of confusion about which table to use (purpose of instanceID) HEADERS  FOR NON-STORING MODE Flow from RPL-aware-leaf to root RPL-aware-leaf (6LN) --> 6LR --> root (6LBR) not need to use ip-ip because no header is not going to be removed not rh3 6LN:    Inserted headers: RPI    Removed headers: ----     Re-added headers:  ----     Modified headers:  ----     Untouched headers: 6LR:    Inserted headers: RH3??? should be the DODAG ROOT    Removed headers ----     Re-added headers     Modified headers     Untouched headers 6LBR:    Inserted headers:    Removed headers:     Re-added headers     Modified headers     Untouched headers 2. Flow from root to RPL-aware-leaf   root (6LBR)--> 6LR --> RPL-aware-leaf (6LN) 6LBR:    Inserted headers: (optional: RPI) - RH3 - IPinIP    Removed headers     Re-added headers     Modified headers     Untouched headers 6LR:    Inserted headers    Removed headers     Re-added headers     Modified headers: RH3     Untouched headers 6LN:    Inserted headers    Removed headers: RH3 - RPI     Re-added headers     Modified headers     Untouched headers 3. Flow from not-RPL-aware-leaf to root IPv6-node  --> (6LR) --> 6LR --> root (6LBR) 6LR1:    Inserted headers : IPIP(RPI)    Removed headers     Re-added headers     Modified headers     Untouched headers 6LR2:    Inserted headers: RPI, RH3, IPinIP    Removed headers         Re-added headers     Modified headers     Untouched headers: IPIP(RPI) 6LBR:    Inserted headers    Removed headers:     Re-added headers     Modified headers     Untouched headers 4 - Flow from root to not-RPL-aware-leaf 6LBR:    Inserted headers: optional:RPI, RH3, IPinIP    Removed headers     Re-added headers     Modified headers     Untouched headers 6LR:    Inserted headers    Removed headers     Re-added headers     Modified headers: RH3 (fully consumed, but left there)     Untouched headers: RPI If the RPI is present, the IPv6 node which does not understand it, will drop it (because 6553: 0x63 says to drop if unknown) So, we need to remove RPI, so we might have to put an IPIP if the end machine is there. The DAO from 6LR about IPv6 could say if that the final IPv6 is not RPL (RPI) capable.   rfc6550: https://tools.ietf.org/html/rfc6550#section-6.7.8 IPv6: presence of RPI will cause packet to be dropped.    Inserted headers    Removed headers: RPI, RH3, IPinIP     Re-added headers     Modified headers     Untouched headers TODO - recommendation that RPI always be omitted. 5 - Flow from RPL-aware-leaf to Internet    (requires awareness of what is *external* to LLN) 6LN:    Inserted headers: IPIP(RPI)IP2(payload)    Removed headers     Re-added headers     Modified headers     Untouched headers 6LR:    Inserted headers:    Removed headers:     Re-added headers:     Modified headers:     Untouched headers: RPI 6LBR:    Inserted headers:    Removed headers: IPIP(RPI)     Re-added headers     Modified headers: IP2 - flow-label computed if zero.     Untouched headers INTERNET: never sees RPI or IPIP header.    Inserted headers: Out of scope?    Removed headers:  Out of scope?     Re-added headers:  Out of scope?     Modified headers:  Out of scope?     Untouched headers:  Out of scope? 6  -Flow from Internet to RPL-aware-leaf   If the last RH3 entry is the 6LR, then the IPIP will be removed there, if the last entry is the 6LN, then the RH3 will go all the way to the leaf. INTERNET    Inserted headers: Out of scope?    Removed headers:  Out of scope?     Re-added headers:  Out of scope?     Modified headers:  Out of scope?     Untouched headers: FLOW label may be set! 6LBR:    Inserted headers: IPIP(RH3,optional:RPI)   LAST RH3 hop SHOULD be 6LR (saves bytes)    Removed headers:     Re-added headers:     Modified headers: IP2 - flow label may be "zeroed"     Untouched headers: 6LR:    Inserted headers    Removed headers: IPIP can be removed if RH3 consumed, and no RPI (saved bytes in last hop)                     (IPIP MUST be removed if last node is not RPL aware)     Re-added headers     Modified headers: ipip(RH3) opt RPI     Untouched headers 6LN:    Inserted headers    Removed headers     Re-added headers     Modified headers     Untouched headers 7 -Flow from not-RPL-aware-leaf to Internet IPv6:    Inserted headers: IP2 - ignorant of RPL, no headers added.    Removed headers     Re-added headers     Modified headers: flow label is recommended to be zero     Untouched headers 6LR:    Inserted headers: IPIP(RPI) IP2    Removed headers     Re-added headers     Modified headers     Untouched headers 6LBR:    Inserted headers    Removed headers: IPIP(RPI)     Re-added headers     Modified headers: IP2 - flow-label computed if zero.     Untouched headers INTERNET    Inserted headers: sees no special headers    Removed headers:  Out of scope?     Re-added headers:  Out of scope?     Modified headers:  Out of scope?     Untouched headers:  Out of scope? 8   -Flow from Internet to not-RPL-aware-leaf INTERNET    Inserted headers: Out of scope?    Removed headers:  Out of scope?     Re-added headers:  Out of scope?     Modified headers:  Out of scope?     Untouched headers:  Out of scope? 6LBR:    Inserted headers: IPIP(RH3,optional:RPI) RH3 must end at 6LR.    Removed headers     Re-added headers     Modified headers: flow label SHOULD be zeroed     Untouched headers: 6LR:    Inserted headers    Removed headers: IPIP(RH3, RPI)     Re-added headers     Modified headers     Untouched headers IPv6:    Inserted headers: sees no magic headers    Removed headers     Re-added headers     Modified headers     Untouched headers 9    -Flow from RPL-aware-leaf to RPL-aware-leaf (in same RPL Instance - domain)  https://tools.ietf.org/html/rfc6550#section-3.1.3 6LN src:    Inserted headers: IP,RPI,payload              two: IPIP(RPI),IP,payload {IPIP addressed to 6LBR}    Removed headers     Re-added headers     Modified headers     Untouched headers 6LBR:    Inserted headers: IPIP(RH3 to 6LN) {IP,RPI,payload}, two: IPIP(RH3 to 6LR; opt RPI), IP,payload    Removed headers:                                          IPIP(RPI)     Re-added headers     Modified headers     Untouched headers: RPI (some implementations have removed RPI at 6LBR.   WHICH IS AGAINST RULES) 6LR:    Inserted headers    Removed headers: IPIP(RH3, opt RPI) (two)     Re-added headers:     Modified headers     Untouched headers: RPI 6LN dst:    Inserted headers:    Removed headers: IPIP(RH3) {IP,RPI,payload}  (one)     Re-added headers     Modified headers     Untouched headers TODO: Add a case for different RPL Instance/ Domain If RPI goes down, then if the 6LN dst is really an IPv6, then the RPI gets to the destination! The root knows if the dst is known to be IPv6, and can act properly. Can only use situation one if 6LN src knows that dst is 6LN. 6LN src:    Inserted headers: IP,RH3(empty-but-big-enough),RPI,payload 10     -Flow from RPL-aware-leaf to not-RPL-aware-leaf 6LN Src:    Inserted headers: IPIP(RPI),IP,payload {IPIP addressed to 6LBR}    Removed headers     Re-added headers     Modified headers     Untouched headers 6LBR:    Inserted headers: IPIP(RH3, opt RPI), IP, Payload    Removed headers:  IPIP(RPI)     Re-added headers     Modified headers     Untouched headers 6LR:    Inserted headers    Removed headers: IPIP(RH3, opt RPI)     Re-added headers     Modified headers     Untouched headers IPv6:    Inserted headers    Removed headers     Re-added headers     Modified headers     Untouched headers 11   -Flow from not-RPL-aware-leaf to RPL-aware-leaf (same as example 9, case "two") IPv6:    Inserted headers    Removed headers     Re-added headers     Modified headers     Untouched headers 6LR:    Inserted headers:  IPIP(RPI), IP, Payload 6LBR:    Inserted headers:  IPIP(RH3), IP, Payload    Removed headers: IPIP(RPI)     Re-added headers     Modified headers     Untouched headers 6LR:    Inserted headers    Removed headers     Re-added headers     Modified headers     Untouched headers 6LN Dst:    Inserted headers    Removed headers     Re-added headers     Modified headers     Untouched headers 12    -Flow from not-RPL-aware-leaf to not-RPL-aware-leaf going down case 2 of 9 IPv6:    Inserted headers    Removed headers     Re-added headers     Modified headers     Untouched headers 6LR:    Inserted headers:  IPIP(RPI), IP, Payload 6LBR:    Inserted headers:  IPIP(RH3), IP, Payload    Removed headers: IPIP(RPI)     Re-added headers     Modified headers     Untouched headers 6LR:    Inserted headers     Removed headers: IPIP(RH3, opt RPI)     Re-added headers     Modified headers     Untouched headers IPv6:    Inserted headers    Removed headers     Re-added headers     Modified headers     Untouched headers HEADERS  FOR  STORING MODE 13 -Flow from RPL-aware-leaf to root RPL-aware-leaf (6LN) --> 6LR --> root (6LBR CASE 1, going up there is not difference between S non-S 6LN:    Inserted headers: RPI   Removed headers     Re-added headers     Modified headers     Untouched headers 6LR:    Inserted headers    Removed headers     Re-added headers     Modified headers: decrement rank in RPI     Untouched headers: RPI 6LBR:    Inserted headers    Removed headers: consumes packet, including RPI     Re-added headers     Modified headers     Untouched headers 14   -Flow from root to RPL-aware-leaf      root (6LBR)--> 6LR --> RPL-aware-leaf (6LN) 6LBR:    Inserted headers: RPI    Removed headers     Re-added headers     Modified headers     Untouched headers 6LR:    Inserted headers    Removed headers     Re-added headers     Modified headers: increments rank in RPI (examines instanceID for multiple tables)     Untouched headers 6LN:    Inserted headers    Removed headers: consumes packet, RPI     Re-added headers     Modified headers     Untouched headers 15  -Flow from not-RPL-aware-leaf to root case 3: going up there is not difference between S non-S IPv6:    Inserted headers: nothing    Removed headers     Re-added headers     Modified headers     Untouched headers 6LR:    Inserted headers: IPIP(RPI) [also addressed to root]    Removed headers     Re-added headers     Modified headers     Untouched headers 6LBR:    Inserted headers    Removed headers: IPIP(RPI) packet consumed.     Re-added headers     Modified headers     Untouched headers 16  -Flow from root to not-RPL-aware-leaf 6LBR:    Inserted headers: IPIP(RPI) [addressed to 6LR]    Removed headers     Re-added headers     Modified headers     Untouched headers 6LR:    Inserted headers    Removed headers: IPIP(RPI)     Re-added headers     Modified headers     Untouched headers IPv6: sees no extra headers    Inserted headers    Removed headers     Re-added headers     Modified headers     Untouched headers 17     -Flow from RPL-aware-leaf to Internet [same as case 5?] 6LN:    Inserted headers: IPIP(RPI) IP[internet]    Removed headers     Re-added headers     Modified headers     Untouched headers 6LR:    Inserted headers    Removed headers     Re-added headers     Modified headers: modifies rank in RPI     Untouched headers 6LBR:    Inserted headers    Removed headers: IPIP(RPI)     Re-added headers     Modified headers     Untouched headers INTERNET    Inserted headers: Out of scope    Removed headers:  Out of scope?     Re-added headers:  Out of scope?     Modified headers:  Out of scope?     Untouched headers:  Out of scope? 18 -Flow from Internet to RPL-aware-leaf INTERNET    Inserted headers: Out of scope?    Removed headers:  Out of scope?     Re-added headers:  Out of scope?     Modified headers:  Out of scope?     Untouched headers:  Out of scope? 6LBR:    Inserted headers: IPIP(RPI)    Removed headers     Re-added headers     Modified headers     Untouched headers 6LR:    Inserted headers    Removed headers     Re-added headers     Modified headers: modified rank in RPI     Untouched headers 6LN:    Inserted headers    Removed headers: IPIP(RPI), consumes packet.     Re-added headers     Modified headers     Untouched headers 19     -Flow from not-RPL-aware-leaf to Internet      Same as case 7? IPv6:    Inserted headers    Removed headers     Re-added headers     Modified headers: flow label assumed to be zero     Untouched headers 6LR:    Inserted headers: IPIP(RPI)    Removed headers     Re-added headers     Modified headers     Untouched headers 6LBR:    Inserted headers         Removed headers: IPIP(RPI)         Re-added headers         Modified headers: should set flow label if not set         Untouched headers INTERNET    Inserted headers: Out of scope    Removed headers:  Out of scope     Re-added headers:  Out of scope     Modified headers:  Out of scope     Untouched headers:  Out of scope 20     -Flow from Internet to not-RPL-aware-leaf INTERNET    Inserted headers: Out of scope?    Removed headers:  Out of scope?     Re-added headers:  Out of scope?     Modified headers:  Out of scope?     Untouched headers:  Out of scope? 6LBR:    Inserted headers: IPIP(RPI) [addressed to 6LR]    Removed headers     Re-added headers     Modified headers: zero flow label on inner IP.     Untouched headers 6LR:    Inserted headers    Removed headers: IPIP(RPI)     Re-added headers     Modified headers     Untouched headers IPv6:    Inserted headers    Removed headers     Re-added headers     Modified headers: flow label MAY arrive zero     Untouched headers 21    -Flow from RPL-aware-leaf to RPL-aware-leaf (same RPL Domain), commun parent, change the direction RPI, 6LN Src:    Inserted headers: RPI    Removed headers     Re-added headers     Modified headers     Untouched headers 6LR (common parent):    Inserted headers    Removed headers     Re-added headers     Modified headers: RPI  (change direction of rank --- now incrementing)     Untouched headers 6LR:    Inserted headers    Removed headers     Re-added headers     Modified headers: RPI     Untouched headers 6LN Dst:    Inserted headers    Removed headers     Re-added headers     Modified headers     Untouched headers 22     -Flow from RPL-aware-leaf to not-RPL-aware-leaf Somehow, the sender has to know that the receiver is not RPL aware, and needs to know 6LR, and not even the root knows where the 6LR is (in storing mode).  This case FAILS. 6LN src:    Inserted headers: IPIP(RPI)  [do not even know where to send IPIP, winds up being root?]    Removed headers     Re-added headers     Modified headers     Untouched headers 6LR: (common parent)    Inserted headers    Removed headers     Re-added headers     Modified headers     Untouched headers 6LR:    Inserted headers    Removed headers: IPIP(RPI)     Re-added headers     Modified headers     Untouched headers This can only work if 6LR violates 6man rules and removed RPI header here. Or can send new ICMP error to sender... IPv6:    Inserted headers    Removed headers     Re-added headers     Modified headers     Untouched headers 23    -Flow from not-RPL-aware-leaf to RPL-aware-leaf (not special: but reverse flow results in case 22) IPv6:    Inserted headers    Removed headers     Re-added headers     Modified headers     Untouched headers 6LBR:    Inserted headers: IPIP(RPI) [dest is 6LN dst]    Removed headers     Re-added headers     Modified headers     Untouched headers 6LR:    Inserted headers    Removed headers     Re-added headers     Modified headers: ?     Untouched headers 6LN Dst:    Inserted headers    Removed headers: IPIP(RPI)    Re-added headers    Modified headers    Untouched headers 24    -Flow from not-RPL-aware-leaf to not-RPL-aware-leaf IPv6 Src:    Inserted headers    Removed headers     Re-added headers     Modified headers     Untouched headers 6LR:    Inserted headers: IPIP(RPI) --- same problem as 22 - where to send    Removed headers     Re-added headers     Modified headers     Untouched headers 6LR:  (common parent)    Inserted headers:    Removed headers     Re-added headers     Modified headers     Untouched headers 6LR:    Inserted headers    Removed headers: IPIP(RPI)     Re-added headers     Modified headers     Untouched headers IPv6 Dst:    Inserted headers    Removed headers     Re-added headers     Modified headers     Untouched headers