SRV6学习笔记

  1. SRv6产生的背景
    1. SDN深入人心:运营商业务管道化,业务驱动网络,已经成为业界共识。
    2. 云网融合带来新的变化:传统的MPLS网络由于部署复杂,消耗的资源较多,数据中心内部对MPLS不完全接受,但是也希望在数据中心内部进行高效的流量调优。
    3. NFV对网络带来新的变化,由于网络功能虚拟化,虚拟化后的设备可能无法指出MPLS所以就无法部署SR MPLS,但是也希望能否借助SR进行对网络的编程。
    4. IPv6的发展正在加速,5G、IoT业务和云化业务都需要更多的地址,另外,终端/OTT等厂商的IPv6化正在加速,业界运营商希望构建纯IPv6的网络。
  2. 特性价值
    1. 智慧:表现在SRv6的网络路径可以编程、业务可以编程、转发行为可以编程。SRv6是完全基于SDN架构,能够跨越APP和网络之间的鸿沟,将APP的应用程序信息带入到网络中。
    2. 简单:SRv6是基于IGP和BGP扩展来实现的,没有MPLS标签,另外SRv6也不使用LDP/RSVP-TE协议,在数据中心内部引入SRv6之后,只需要TOR交换机支持SRv6即可,其他交换机仅支持IPv6。在NFV场景引入SRv6之后。可以轻松的实现业务链SFC(Service Function Chain)等需求。
    3. 纯IP化:SRv6基于Native IPv6进行转发,完全融入现有的IPv6网络,网络中的中间节点可以不支持SRv6,不需要规模升级就可以部署新业务。
  3. 实现原理
    1. 为了实现IPv6,IPv6的报文进行了一种扩展,新增了一种扩展头,IPv6报文是由IPv6标准头+扩展头(0~n个)+负载Payload组成。

       

       在SRv6里面,IPv6目的IP字段是一个不断变换的字段,他的取值由Segment Left和Segment List字段共同决定,当指针指向一个活跃的段,需要将对应段的IPv6地址复制到IPv6目的地址字段。在转发层面,如果说一个阶段不支持SRv6,那么该节点可以不用处理下层的SR信息,仅依靠IPv6的目的地址字段,查找路由表来完成转发。如果一个节点支持SRv6,那么需要处理SRH,将Sgement Left进行减一操作,然后将指针偏向新的活跃段,之后将Segment List信息复制到IPv6目的地址字段,然后将报文向下一个节点进行转发,当Segment Left字段减为0的时候,节点可以弹出SRH报文头,然后对报文进行下一步处理。

       Segment List:段列表,段列表从路径的最后一段开始编码。Segment List是IPv6地址形式。

       Segments Left:是一个指针,指向当前活跃的Segment List,即到达目的节点前仍然应当访问的中间节点数。

    2.  在SRv6里面存在3重可编程空间:

      1. 由Segment List构成的路径信息可编程。
      2. 报文里面新增的可选的TLV字段可以进行编程。
      3. IPv6地址形式的Segment List(IPv6 SID)可编程。
    3. Segment List详细说明:

      1. Segment List类似于IPv6地址形式,但是又不同于传统的IPv6地址,在SRv6中,IPv6地址赋予了新的含义,他由3个部分组成:
        1. Locator部分:配置之后,会在本机生成一条理由,通过IGP向外扩散,网络中的其他节点通过这条路由可以定位到配置该Locator的节点,所以Locator具有定位功能,所以一般要在SR域内唯一,但是在一些特殊场景,比如Anycast保护场景,多个设备可能配置相同的Locator。
        2. Function部分:表示绑定的本机的一个指令。这些指令都由设备预先设定,Function部分用于指示SRv6 SID的生成节点进行相应的功能操作。
        3. Arguments部分(可选):Arguments占据IPv6地址的低比特位,通过Arguments字段可以定义一些报文的流和服务等信息。当前一个重要应用是EVPN VPLS的CE多归场景,转发BUM流量时,利用Arguments实现水平分割。
      2. IPv6的SID的类型:
        1. End SID:代表网络中的一个节点,他给设备的指令是处理SRH,更新IPv6目的地址字段,然后查找IPv6路由表进行报文转发。
        2. End.x SID:代表网络中的一个邻接,他给设备的一个指令是处理SRH,更新IPv6目的地址字段,然后从该SID指定的一个出接口转发报文。
        3. End.DT4 SID:这是一种PE类型的SID,主要用于IPv4 L3VPN场景,他给设备的一个指令是解封报文,去除外层SRH和IPv6报文头,然后根据剩余报文里面的目的地址查找IPv4 VPN实例路由表进行转发。
        4. End.DT6 SID:主要用于IPv6 L3VPN场景,他给设备的一个指令是解封报文,去除外层SRH和IPv6报文头,然后根据剩余报文里面的目的地址查找IPv6 VPN实例路由表进行转发。
        5. End.DX2 SID:这种SID主要用在L2VPN/EVPN VPWS场景,他给设备的一个指令是解封报文,去除外层SRH和IPv6报文头,然后从该SID绑定的出接口转发出去。 
      3. 不同SID的转发行为是不一样的,这就是我们说的第三重编程空间,也就是转发行为可编程。
  4. 业务应用
    1. L3VPN(拓扑:CE1--PE1--P--PE2--CE2)
      1. 路由发布阶段PE2(SID:Locator + Function,例如Locator为:A2:1::/64)
        1. PE2将会把A2:1::/64这个路由通过IGP宣告出去,这样P和PE1节点将会通过IGP学习到该路由。
        2. PE2为CE2所在的VPN实例分配SID,假设为A2:1::B100,由于是IPv4 VPN,所以这个SID也是一个End.DT4类型。
        3. 然后是私网路由发布,现在CE2向PE2发布一条普通的IPv4路由,PE2从指定的接口收到这条路由以后,会转换为VPNv4路由,然后向PE1发布,发布的过程中,这个VPNv4路由会携带VPN SID,也就是A2:1::B100,PE1收到这个VPNv4路由以后会进行路由交叉,交叉到CE1所属的VPN实例,然后向CE1发布。
      2. 数据转发阶段
        1. 跟BGP VPNv4类似。
    2. EVPN VPWS(跟L3VPN类似)
      1. 发布End.DX2类型的SID
      2. 数据转发的时候封装的是个2层报文。为源MAC和目的MAC信息。
  5. SRv6跨域,组建大规模网络
  6. 可靠性
  7. SRv6现网演进
  8. SRv6适用场景
  9. SRv6 vs SR MPLS
原文地址:https://www.cnblogs.com/tortoise512/p/14932878.html