From 5f9c839ac239a5d3532b18163b348c20f3468a15 Mon Sep 17 00:00:00 2001 From: Longxiang Lyu Date: Sun, 7 Apr 2024 06:33:51 +0000 Subject: [PATCH] [SubnetDecap] Add subnet decap HLD Signed-off-by: Longxiang Lyu --- .../image/subnet_decap_config_update.png | Bin 0 -> 38505 bytes .../image/vlan_decap_rule_gen_workflow.png | Bin 0 -> 99925 bytes doc/decap/image/vlan_subnet_probing.png | Bin 0 -> 33170 bytes doc/decap/subnet_decap_HLD.md | 194 ++++++++++++++++++ 4 files changed, 194 insertions(+) create mode 100644 doc/decap/image/subnet_decap_config_update.png create mode 100644 doc/decap/image/vlan_decap_rule_gen_workflow.png create mode 100644 doc/decap/image/vlan_subnet_probing.png create mode 100644 doc/decap/subnet_decap_HLD.md diff --git a/doc/decap/image/subnet_decap_config_update.png b/doc/decap/image/subnet_decap_config_update.png new file mode 100644 index 0000000000000000000000000000000000000000..d2164cf56ef02b8215ce141fee01dbdc966d5166 GIT binary patch literal 38505 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 literal 0 HcmV?d00001 diff --git a/doc/decap/image/vlan_subnet_probing.png b/doc/decap/image/vlan_subnet_probing.png new file mode 100644 index 0000000000000000000000000000000000000000..e6abbdfcd491f479e0f3d0001ebd0cb5c075c20c GIT binary patch literal 33170 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 literal 0 HcmV?d00001 diff --git a/doc/decap/subnet_decap_HLD.md b/doc/decap/subnet_decap_HLD.md new file mode 100644 index 0000000000..70829ac3de --- /dev/null +++ b/doc/decap/subnet_decap_HLD.md @@ -0,0 +1,194 @@ +# Subnet Decapsulation with SONiC + +## High Level Design Document + +## Table of Content + +- [Subnet Decapsulation with SONiC](#subnet-decapsulation-with-sonic) + - [High Level Design Document](#high-level-design-document) + - [Table of Content](#table-of-content) + - [1 Revision](#1-revision) + - [2 Scope](#2-scope) + - [3 Definitions/Abbreviations](#3-definitionsabbreviations) + - [4 Overview](#4-overview) + - [5 Requirement](#5-requirement) + - [5.1 Functional Requirements](#51-functional-requirements) + - [5.2 Scalability Requirements](#52-scalability-requirements) + - [6 Module Design](#6-module-design) + - [6.1 Tunnel Specification](#61-tunnel-specification) + - [6.2 DB Schema](#62-db-schema) + - [6.2.1 CONFIG\_DB](#621-config_db) + - [6.2.2 APPL\_DB](#622-appl_db) + - [6.2.3 STATE\_DB](#623-state_db) + - [6.3 Orchestration Agent](#63-orchestration-agent) + - [6.4 VLAN Subnet Decap](#64-vlan-subnet-decap) + - [6.4.1 VLAN Subnet Decap Rule Generation](#641-vlan-subnet-decap-rule-generation) + - [6.4.2 Dual-ToR Considerations](#642-dual-tor-considerations) + - [6.4.3 Netscan VLAN Subnet Probing](#643-netscan-vlan-subnet-probing) + - [6.5 Subnet Decap Configuration Workflow](#65-subnet-decap-configuration-workflow) + - [6.6 CLI](#66-cli) + - [7 Warm Reboot Support](#7-warm-reboot-support) + - [8 Test Plan](#8-test-plan) + +## 1 Revision + +| Rev | Date | Author | Change Description | +| :---: | :--------: | :-----------: | ------------------ | +| 0.1 | 03/30/2024 | Longxiang Lyu | Initial version | + +## 2 Scope + +This document describes the subnet decapsulation feature on T0 SONiC that allows Netscan to probe VLAN subnet IP addresses. + +## 3 Definitions/Abbreviations + +| Term | Meaning | +| ------- | --------------------------------------------- | +| VLAN | virtual local area network | +| DIP | destination IP | +| SIP | source IP | +| Netscan | Azure service to detect network path failures | + +## 4 Overview + +In Azure, Netscan probes the network paths/devices by sending IPinIP traffic. The IPinIP packet crafted by the Netscan sender has the outer DIP equals the destination device Loopback address, and the inner DIP equals the IP address of the Netscan sender. When the IPinIP packet is routed to/received by the destination device, they will be decapsulated and the inner packet will be routed back to the Netscan sender. +As of today, Netscan uses this IP-decap based probing to detect route blackholes in the Azure network. The limitation is that Netscan is only able to probe the networking switches without the capability to detect any route blackholes for host nodes, especially VLAN subnet IPs. Due to the fact that the host nodes don’t have native IP-decap functionality, it is more appropriate to implement the IP-decap functionality on T0 SONiC as SONiC supports IPinIP decapsulation, and T0 SONiC will respond to the Netscan probes on behalf of the host nodes to decapsulate the Netscan IPinIP probe packets with DIP as any VLAN subnet IPs. +In this design, subnet decap is introduced to enhance SONiC with the capability to generate the decap rules for the VLAN subnet so IPinIP packets from Netscan with DIP as either VLAN subnet IPs could be decapsulated and forwarded back to the Netscan sender to allow Netscan to have the awareness of any possible route blackholes to those destinations. + +## 5 Requirement + +### 5.1 Functional Requirements + +High level requirements: + +- T0 SONiC shall allow Netscan to probe with IPinIP packets with DIP as any local VLAN subnet IP by adding IP decap rules for the VLAN subnet. + +### 5.2 Scalability Requirements + +| Component | Expected Value | +| ------------------ | -------------- | +| Tunnel | N/A | +| Tunnel Decap Terms | N/A | + +## 6 Module Design + +To support the Netscan probing over VLAN subnet, SONiC needs to generate decapsulation rules to decapsulate IPinIP packets with DIP as any IP address in VLAN subnet. The decapsulation rules will be generated based on the configured VLAN subnet. +In this design, we propose the subnet decap feature that has workflow to enable SONiC to add/remove those decapsulation rules based on the configured VLAN subnets on the T0 SONiC. + +### 6.1 Tunnel Specification + +The tunnels in this design will be generated with the following attributes: +| Attribute | Value | Note | +| --------------- | ----------------------------- | -------------------------------- | +| name | IPINIP_VLAN or IPINIP_V6_VLAN | One IPv4 tunnel, one IPv6 tunnel | +| tunnel type | IPinIP | | +| decap ECN mode | copy_from_outer or standard | | +| decap TTL mode | pipe | | +| decap DSCP mode | uniform | | + +The decapsulation termination entry will be created with the following attributes: +| Attribute | Value | Note | +| --------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | +| term entry type | MP2MP | multi-point to multi-point | +| dest IP | the VLAN subnet | | +| dest IP mask | the vlan subnet mask | | +| source IP | Netscan privately-owned subnet | IPinIP packets that have source IP in the subnet can be safely assumed to be Netscan traffic instead of customer traffic | +| source IP mask | Netscan privately-owned subnet mask | | + +### 6.2 DB Schema + +#### 6.2.1 CONFIG_DB + +``` +### SUBNET_DECAP + ; Stores subnet based decapsulation configurations + key = SUBNET_DECAP|subnet_type ; SUBNET_DECAP|vlan + status = "enable"/"disable" ; status of subnet based decapsulation + src_ip = source IP prefix ; source IP prefix used for decap terms of IPv4 tunnel + src_ip_v6 = source IP prefix ; source IPv6 prefix used for decap terms of IPv6 tunnel +``` + +#### 6.2.2 APPL_DB + +``` +### TUNNEL_DECAP_TABLE + ; Stores a list of decap tunnels + key = TUNNEL_DECAP_TABLE:tunnel_name ; tunnel name as key + tunnel_type = "IPINIP" ; tunnel type + dscp_mode = "uniform"/"pipe" + ecn_mode = "copy_from_outer"/"standard" + ttl_mode = "uniform"/"pipe" + encap_ecn_mode = "standard" + +### TUNNEL_DECAP_TERM_TABLE + ; Stores a list of decap terms. + key = TUNNEL_DECAP_TERM_TABLE:tunnel_name:dst_ip ; tunnel name:dst IP prefix as key + term_type = "P2P"/"P2MP"/"MP2MP" ; tunnel decap term type + src_ip = source IP prefix +``` + +#### 6.2.3 STATE_DB + +``` +### TUNNEL_DECAP_TABLE + ; Stores a list of created decap tunnels + key = TUNNEL_DECAP_TABLE:tunnel_name ; tunnel name as key + tunnel_type = "IPINIP" ; tunnel type + dscp_mode = "uniform"/"pipe" + ecn_mode = "copy_from_outer"/"standard" + ttl_mode = "uniform"/"pipe" + encap_ecn_mode = "standard" + +### TUNNEL_DECAP_TERM_TABLE + ; Stores a list of created decap terms. + key = TUNNEL_DECAP_TERM_TABLE:tunnel_name:dst_ip ; tunnel name:dst IP prefix as key + term_type = "P2P"/"P2MP"/"MP2MP" ; tunnel decap term type + src_ip = source IP prefix +``` + +### 6.3 Orchestration Agent + +The following orchestration agents shall be modified: +TunnelDecapOrch: + +- TunnelDecapOrch shall subscribe to TUNNEL_DECAP_TABLE and create/remove the decap tunnels. + +- TunnelDecapOrch shall subscribe to TUNNEL_DECAP_TERM_TABLE and create/remove the decap term entries. + +- TunnelDecapOrch shall subscribe to SUBNET_DECAP and handle the tunnel decapsulation termination entry source IP changes. + +### 6.4 VLAN Subnet Decap + +#### 6.4.1 VLAN Subnet Decap Rule Generation + +![VLAN decap rule gen](./image/vlan_decap_rule_gen_workflow.png) + +The VLAN subnet decap workflow is presented in the above figure. The extra tunnels and decap rules are templated-out and pushed to APPL_DB by swssconfig service if VLAN subnet decap is enabled. TunnelDecapOrch subscribes to both TUNNEL_DECAP_TABLE and TUNNEL_DECAP_TERM_TABLE and processes the request to program the decap rules to SYNCD accordingly. + +#### 6.4.2 Dual-ToR Considerations + +For Dual-ToR, both ToRs are configured with the same VLAN setup, so they all have the same decap rules. As the downstream traffic from T1s are ECMPed to either ToR, the IPinIP packets to VLAN subnet IPs from Netscan received by either ToR could be decapsulated and forwarded back to the Netscan sender. + +#### 6.4.3 Netscan VLAN Subnet Probing + +![VLAN subnet probing](./image/vlan_subnet_probing.png) + +### 6.5 Subnet Decap Configuration Workflow + +TunnelDecapOrch subscribes to the SUBNET_DECAP table and reacts to subnet decap configuration change. Currently, only source IP and source IPv6 prefix change are supported and TunnelDecapOrch will change the decapsulation termination entry source IP according to the configuration change. + +The following picture describes the workflow: + +![subnet decap config update](./image/subnet_decap_config_update.png) + +### 6.6 CLI + +TBD + +## 7 Warm Reboot Support + +TBD + +## 8 Test Plan + +TBD