implementing ipv6 segment routing
play

Implementing IPv6 Segment Routing David Lebrun - PowerPoint PPT Presentation

Implementing IPv6 Segment Routing David Lebrun <david.lebrun@uclouvain.be> UCLouvain Netdev 1.2, Tokyo, October 2016 1/35 Table of Contents Segment Routing Implementation Network Function Virtualization Conclusion 2/35 Table of


  1. Implementing IPv6 Segment Routing David Lebrun <david.lebrun@uclouvain.be> UCLouvain Netdev 1.2, Tokyo, October 2016 1/35

  2. Table of Contents Segment Routing Implementation Network Function Virtualization Conclusion 2/35

  3. Table of Contents Segment Routing Implementation Network Function Virtualization Conclusion 3/35

  4. Segment Routing • Source routing paradigm • State embedded in packet ( segments ) • Segments: node, adjacency, service • IETF draft-spring-segment-routing-09 4/35

  5. Segment Routing: illustration (1) 5/35

  6. Segment Routing: illustration (2) • Abstract SR Header • Segments = SD, SB, SS, SF, SE • Ptr = Segments[0] (SD) 6/35

  7. Segment Routing: illustration (3) • Abstract SR Header • Segments = SD, SB, SS, SF, SE • Ptr = Segments[0] (SD) 7/35

  8. Segment Routing: illustration (4) • Abstract SR Header • Segments = SD, SB, SS, SF, SE • Ptr = Segments[1] (SB) 8/35

  9. Segment Routing: illustration (5) • Abstract SR Header • Segments = SD, SB, SS, SF, SE • Ptr = Segments[2] (SS) 9/35

  10. Segment Routing: illustration (6) • Abstract SR Header • Segments = SD, SB, SS, SF, SE • Ptr = Segments[3] (SF) 10/35

  11. Segment Routing: illustration (7) • Abstract SR Header • Segments = SD, SB, SS, SF, SE • Ptr = Segments[4] (SE) 11/35

  12. SR flavors • SR-MPLS ( segment : 20-bit label) • SR-IPv6 ( segment : 128-bit IPv6 addr) • IPv6 Routing Header extension • HMAC TLV for authenticity & integrity 12/35

  13. SR-IPv6 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Next Header | Hdr Ext Len | Routing Type | Segments Left | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | First Segment | Flags | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Segment List[0] (128 bits IPv6 address) | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | ... | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Segment List[n] (128 bits IPv6 address) | | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // // // Optional Type Length Value objects (variable) // // // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 13/35

  14. HMAC TLV 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type | Length | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | HMAC Key ID (4 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ // // // HMAC (32 octets) // // // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 14/35

  15. SR-IPv6 operations (1) • Origin SR host: push SRH in packet build 15/35

  16. SR-IPv6 operations (2) • SR ingress: encapsulate with outer IPv6 header + SRH 16/35

  17. SR-IPv6 operations (3) • Segment endpoint: route packet to next segment 17/35

  18. SR-IPv6 operations (4) • SR egress: decapsulate packet and route inner packet to DA 18/35

  19. Table of Contents Segment Routing Implementation Network Function Virtualization Conclusion 19/35

  20. Features • SR-enabled packet processing (data plane) • SRH insertion/encapsulation (control plane) • HMAC support (control + data plane) 20/35

  21. Data plane part (1) • net/ipv6/exthdrs.c • Processing of Routing Header type 4 • Decrement segments_left index • Update ipv6_hdr(skb)->daddr with next segment • Call ip6_route_input(skb) 21/35

  22. Data plane part (2) • SRH decapsulation (egress) • pull, reset headers, netif_rx • tcpdump shows the packet twice 22/35

  23. Control plane part (1) • net/ipv6/seg6.c net/ipv6/seg6_iptunnel.c • SRH encapsulation (ingress) • Lightweight tunnels support • ip -6 route add prefix via gw encap seg6 mode encap segs seg1 , seg2 , seg3 23/35

  24. Control plane part (2) • net/ipv6/ipv6_sockglue.c net/ipv6/exthdrs.c • Per-socket SRH insertion (endhost) • Pushed by ipv6_push_nfrag_opts • Set with setsockopt(fd, IPPROTO_IPV6, IPV6_RTHDR, ...); 24/35

  25. Insertion vs encapsulation • Missing support for IPv6 extension headers in drivers • ixgbe 0000:0b:00.1: partial checksum but l4 proto=2b! • IPv6 encapsulation works well incl. w/ GRO 25/35

  26. HMAC part (1) • net/ipv6/seg6_hmac.c • Calls in net/ipv6/exthdrs.c and net/ipv6/seg6_iptunnel.c • Validate SR-enabled packets with HMAC signature • Generate valid signature for locally imposed SRHs 26/35

  27. HMAC part (2) • HMACKeyID ⇒ < algo , secret > • Controlled through genetlink interface • Interface sysctl seg6_require_hmac 27/35

  28. Table of Contents Segment Routing Implementation Network Function Virtualization Conclusion 28/35

  29. NFV with SR 29/35

  30. NFV-SR requirements • Fast, generic kernel-to-app packet transfer • Packet modifiable by app • App-to-kernel packet transfer 30/35

  31. NFV-SR attempted solution • mmap-ed netlink tx/rx rings • Buffering, reordering issues • Not GRO-friendly • Very specific • Removed from mainline 31/35

  32. NFV-SR possible solutions • nfqueue w/ NF_REPEAT ? • GRO-friendliness issue • Interface-based solution ? • Suggestions welcome 32/35

  33. Table of Contents Segment Routing Implementation Network Function Virtualization Conclusion 33/35

  34. Conclusion • Draft fully implemented • Need driver support for IPv6 extension headers • Need packet transfer mechanism for NFV support 34/35

  35. Conclusion • Thanks to Cisco and ARC-SDN grant from Fédération Wallonie-Bruxelles for funding • Patch submission by end of October • Contact: david.lebrun@uclouvain.be 35/35

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend