Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Segment Routing in Trellis

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

Segment Routing in Trellis

Avatar for Steven Chiu

Steven Chiu

July 16, 2020
Tweet

More Decks by Steven Chiu

Other Decks in Technology

Transcript

  1. Agenda • Background • Multi-Protocol Label Switching (MPLS) • Software-Defined

    Network (SDN) • Segment Routing (SR) • SR in ONOS • Trellis Usecase • 2x2 Leaf Spine Fabric 2
  2. Background • In legacy network, MPLS with 1RSVP-TE is used

    to provide • Traffic engineering (TE) • Fast rerouting (FRR) • Software-defined network (SDN) was proposed for centralized network intelligence Segment routing was introduced based on the two network technologies 4 1 Resource Reservation Protocol - Traffic Engineering
  3. Multi-Protocol Label Switching (MPLS) • Source Routing • Label Switching

    • Between layer 2 and layer 3 Layer 2 Header MPLS Header Layer 3 Header Layer 3 Payload Label Exp S TTL 0 19 22 23 31 Label: Label Value Exp: Experimental Use for QoS S: Bottom of Stack TTL: Time to Live 5
  4. Terminology • Label Edge Router (LER) • Label Switching Router

    (LSR) • Label Switching Path (LSP) • Label Distribution Protocol (LDP) 6
  5. How MPLS works? ℎ1 ℎ2 7 Add labels 1 MPLS

    lookup 2 MPLS lookup 3 MPLS & IP lookup 4
  6. Penultimate Hop Popping • Egress LSR double lookup problem •

    MPLS table lookup • IP table lookup Pop labels at penultimate nodes • Only IP table Lookup at egress nodes 8
  7. Software-Defined Network (SDN) 9 Underlying infrastructure is abstracted for applications

    and network services * Cited from https://www.opennetworking.org/sdn-definition/ Network control become directly programmable Network intelligence is (logically) centralized with a global view of network
  8. What problems are we trying to solve? • Two main

    control protocols for MPLS • LDP for scaling and simplicity • RSVP-TE for traffic engineering (TE) and fast rerouting (FRR) • RSVP-TE is hard to deploy, manage and scale 11
  9. Segment Routing (SR) • A source routing mechanism support traffic

    engineering • Without requiring mid-point state • Addressed by IETF SPRING (Source Packet Routing In NetworkinG) • 1RFC 8402 12 1 Ref. [1]
  10. More Precise… A source-routing architecture that seeks the right balance

    between distributed intelligence and centralized optimization. The application steers its packets through an ordered list of instructions and realizes end-to-end policy without creating any per-flow state in the network. 13 * Cited from http://www.segment-routing.net/
  11. Implementation • Two implementations on data plane • MPLS (SR-MPLS)

    • IPv6 (SRv6) • Two types of 1IGP segment • Prefix/Node • Adjacency 14 1 Interior Gateway Protocol
  12. IGP Prefix/Node Segment • Global unique within a SR domain

    • Typically multi-hop • ECMP-aware shortest-path first (SPF) route to designated node 15
  13. Combining IGP Segments 17 A F C B E D

    24134 14006 14003 ℎ1 ℎ2 Packet 14006 24134 14003 Packet 14006 Packet 14006 24134 14003 Packet 14006 Packet POP [14003, 24134] POP [14006] Packet Prefix/Node Segment Adjacency Segment
  14. Comparison – MPLS 18 • Each node on the new

    path should update MPLS table • Per-flow state
  15. • Only the edge switch has to be updated •

    Update added labels Comparison – SR 19
  16. 1Network Programming API in ONOS 21 1 Ref. [4] Topology

    Independent Abstraction Pipeline Independent Abstraction Control Protocol Independent Abstraction
  17. 1SR in ONOS Architecture 22 OpenFlow Netconf P4Runtime ...more OVS

    Arista Barefoot Cavium Mellanox Ciena Cisco Corsa Fujitsu HP Huawei Juniper Lumentum Microsemi Polatis ... FlowRule API Topology API FlowObjective API Intent API Packet API ... Distributed core State management, notifications, high-availability & scale-out Northbound API Device/protocol-agnostic Java, REST, CLI, gRPC Device driver Allow device-specific variants of standard protocols Shared protocol libraries Apps Apps Apps Control and configure the network using a global topology view and independently of the device-specific details Segment Routing Take OpenFlow and OvS for example 1 Ref. [4]
  18. Trellis Usecase (I) • 2x2 leaf spine fabric 24 Spine

    Switch Leaf Switch 1 Node segment ID (SID) 1
  19. Ingress Port Table Table ID Selector Treatment 0 (No traffic

    selector criteria for this flow) Transition: TABLE: 10 (VLAN Table) 29
  20. VLAN Table Table ID Selector Treatment 10 IN_PORT: 3 (Edge

    port) VLAN_VID: None VLAN_PUSH: vlan VLAN_ID: 20 (vlan-untagged configuration from users) Transition: TABLE: 20 (Termination MAC Table) 31
  21. Termination MAC Table Table ID Selector Treatment 20 IN_PORT: 3

    ETH_DST: 00:00:00:00:01:80 (Current node MAC) ETH_TYPE: ipv4 VLAN_VID: 20 Transition: TABLE: 30 (Unicast Routing Table) 33
  22. Unicast Routing Table Table ID Selector Treatment 30 ETH_TYPE: ipv4

    IPV4_DST: 10.6.2.0/24 (Destination IP subnet) Def[GROUP:0x70000021] (Deferred) Transition: TABLE: 60 (ACL Policy Table) 35
  23. ACL Policy Table Table ID Selector Treatment 60 (No traffic

    selector criteria for this flow) NOACTION 37
  24. L3 ECMP Group Group ID Type Bucket Action 0x70000021 Select

    GROUP: 0x92000020 (MPLS Label Group) GROUP: 0x9200002d (MPLS Label Group) 39
  25. MPLS Label Group Group ID Type Bucket Action 0x92000020 Indirect

    VLAN_POP MPLS_PUSH: mpls_unicast MPLS_LABEL: 202 (Destination node SID configuration from user) GROUP: 0x9000001f (MPLS Interface Group) VLAN_PUSH: vlan VLAN_ID: 4095 41
  26. MPLS Interface Group Group ID Type Bucket Action 0x9000001f Indirect

    ETH_DST: 00:00:00:00:03:80 (Next hop spine node MAC) ETH_SRC: 00:00:00:00:01:80 (Current leaf node MAC) VLAN_ID: 4094 GROUP: 0xffe0001 (L2 Interface Group) VLAN_ID 4094 is served as internal default VLAN tag 43
  27. L2 Interface Group Group ID Type Bucket Action 0xffe0001 Indirect

    VLAN_POP OUTPUT: 1 (Next hop output port) 45
  28. Ingress Port Table Table ID Selector Treatment 0 (No traffic

    selector criteria for this flow) Transition: TABLE: 10 (VLAN Table) 48
  29. VLAN Table Table ID Selector Treatment 10 IN_PORT: 1 (Leaf

    node connected port) VLAN_VID: None VLAN_PUSH: vlan VLAN_ID: 4094 Transition: TABLE: 20 (Termination MAC Table) 50
  30. Termination MAC Table Table ID Selector Treatment 20 IN_PORT: 1

    ETH_DST: 00:00:00:00:03:80 (Current node MAC) ETH_TYPE: mpls_unicast VLAN_VID: 4094 Transition: TABLE: 23 (MPLS Table) 52
  31. MPLS 0 Flow Table Table ID Selector Treatment 23 (No

    traffic selector criteria for this flow) Transition: TABLE: 24 (MPLS 1 Flow Table) 54
  32. MPLS 1 Flow Table Table ID Selector Treatment 24 ETH_TYPE:

    mpls_unicast MPLS_LABEL: 202 (Destination node SID configuration from user) MPLS_BOS: true Def[MPLS_POP:ipv4, DEC_TTL, GROUP:0x7000001e] (Deferred) Transition: TABLE: 60 (ACL Policy Table) 56
  33. ACL Policy Table Table ID Selector Treatment 60 (No traffic

    selector criteria for this flow) NOACTION 58
  34. L3 ECMP Group Group ID Type Bucket Action 0x7000001e Select

    GROUP: 0x2000001c (MPLS Label Group) 60
  35. L3 Unicast Group Group ID Type Bucket Action 0x2000001c Indirect

    ETH_DST: 00:00:00:00:02:80 (Next hop leaf switch MAC) ETH_SRC: 00:00:00:00:03:80 (Current spine switch MAC) VLAN_ID: 4094 GROUP: 0xffe0002 (L2 Interface Group) 62
  36. L2 Interface Group Group ID Type Bucket Action 0xffe0002 Indirect

    VLAN_POP OUTPUT: 2 (Next hop output port) 64
  37. Ingress Port Table Table ID Selector Treatment 0 (No traffic

    selector criteria for this flow) Transition: TABLE: 10 (VLAN Table) 67
  38. VLAN Table Table ID Selector Treatment 10 IN_PORT: 1 (Spine

    node connected port) VLAN_VID: None VLAN_PUSH: vlan VLAN_ID: 4094 Transition: TABLE: 20 (Termination MAC Table) 69
  39. Termination MAC Table Table ID Selector Treatment 20 IN_PORT: 1

    ETH_DST: 00:00:00:00:02:80 (Current node MAC) ETH_TYPE: ipv4 VLAN_VID: 4094 Transition: TABLE: 30 (Unicast Routing Table) 71
  40. Unicast Routing Table Table ID Selector Treatment 30 ETH_TYPE: ipv4

    IPV4_DST: 10.6.2.1/32 (Destination IP) Def[GROUP: 0x20000031] (Deferred) Transition: TABLE: 60 (ACL Policy Table) 73
  41. ACL Policy Table Table ID Selector Treatment 60 (No traffic

    selector criteria for this flow) NOACTION 75
  42. L3 Unicast Group Group ID Type Bucket Action 0x20000031 Indirect

    ETH_DST: 00:00:00:00:00:03 (Destination MAC) ETH_SRC: 00:00:00:00:02:80 (Current leaf switch MAC) VLAN_ID: 40 GROUP: 0x280003 (L2 Interface Group) 77
  43. L2 Interface Group Group ID Type Bucket Action 0x280003 Indirect

    VLAN_POP OUTPUT: 3 (Destination output port) 79
  44. Reference [1] “Segment Routing Architecture.” IETF. [Online]. Available: rfc8402 [2]

    “Segment Routing: A Tutorial.” APNIC, 22 Feb. 2016. [Online]. Available: https://www.slideshare.net/apnic/segment-routing-a-tutorial [3] “Segment Routing with MPLS data plane.” IETF. [Online]. Available: draft-ietf- spring-segment-routing-mpls-14 [4] “ONOS+P4 tutorial (master).” ONF. [Online]. Available: http://bit.ly/onos-p4- tutorial-slides [5] “Fabric Design Note.” OpenCORD Wiki. [Online]. Available: https://wiki.opencord.org/display/CORD/Fabric+Design+Note [6] “OpenFlow™ Data Plane Abstraction (OF-DPA): Abstract Switch Specification.” Broadcom. [Online]. Available: https://docs.broadcom.com/docs/12378911 81