From 838b5912c388b40a4fc5cac3e8c2b8b3a7fcf8fc Mon Sep 17 00:00:00 2001 From: hsaly Date: Tue, 30 Jun 2020 22:08:47 -0700 Subject: [PATCH 01/27] IPSLA Testplan --- TestPlans/routing/IPSLA/IP_SLA_Testplan.md | 414 +++++++++++++++++++++ TestPlans/routing/IPSLA/Topology1.png | Bin 0 -> 19539 bytes TestPlans/routing/IPSLA/Topology2.png | Bin 0 -> 16051 bytes 3 files changed, 414 insertions(+) create mode 100644 TestPlans/routing/IPSLA/IP_SLA_Testplan.md create mode 100644 TestPlans/routing/IPSLA/Topology1.png create mode 100644 TestPlans/routing/IPSLA/Topology2.png diff --git a/TestPlans/routing/IPSLA/IP_SLA_Testplan.md b/TestPlans/routing/IPSLA/IP_SLA_Testplan.md new file mode 100644 index 000000000000..6e31f65adf66 --- /dev/null +++ b/TestPlans/routing/IPSLA/IP_SLA_Testplan.md @@ -0,0 +1,414 @@ +# SQA Test Plan +# IP SLA +# SONiC 3.0.1 Project and Buzznik Plus Release +[TOC] +# Test Plan Revision History +| Rev | Date | Author | Change Description | +|:---:|:-----------:|:------------------:|-----------------------------| +| 0.1 | 06/22/2019 | Nagappa Chincholi | Initial version | + +# List of Reviewers +| Function | Name | +|:---:|:-----------:| +| | | + +# List of Approvers +| Function | Name | Date Approved| +|:---:|:-----------:|:------------------:| +| | | | + +# Definition/Abbreviation +| **Term** | **Meaning** | +| -------- | ------------------------------- | +| ICMP | Internet Control Message Protocol | +| SLA | Service Level Agreement | +| TCP | Transmission Control Protocol | +| PBR | Policy Based Routing | + + +# Feature Overview +Services (e.g. TCP optimizer, Firewall, etc.) in the network are provisioned with some level of redundancy. And routers are required to conditionally forward traffic towards those services based on availability of the services. ICMP and TCP SLA track features provide periodic reachability check for the tracked services and conditionally install or uninstall static route(s) toward the service based on the health and liveliness of the service being tracked. + +# 1 Test Focus Areas +## 1.1 Functional Testing + - All CLI and debug commands + - Scaling with max supported IP SLA of 50 ICMP-Echo target or 50 TCP-Connect target + - Test on default and user VRFs +## 1.2 Negative Testing + - Link flaps + - Reload/kill daemon + - Withdraw/advertise routes + - Clear bgp neighbors/clear ipv4/v6 route table/clear arp/clear mac + - Warm reboot + - Fast reboot + - Config save and reload + - Stress test + +## 1.3 Scale and Performance Testing + +# 2 Topologies +## 2.1 Topology 1 +#### +![IP SLA](Topology1.PNG "Figure 1: IP SLA") +## 2.2 Topology 2 + +![IP SLA](Topology2.PNG "Figure 2: IP SLA with MLAG") + +# 3 Test Case and Objectives +## 3.1 CLI +### 3.1.1 Verify cli command to configure ip sla for icmp-echo and sub options + +| **Test ID** | **FtOpSoRoIpSlaCli001** | +|--------|:----------------| +| **Test Name** | **Verify cli command to configure ip sla for icmp-echo and sub options.** | +| **Test Setup** | **Topology1** | +| **Type** | **CLI** | +| **Steps** | **1) Verify help strings are displayed while enabling ip sla mode in cli mode
2) Verify sub options source-address, source-interface, request-data-size are availble and verify running-config** | + +### 3.1.2 Verify cli command to configure ip sla for tcp-connect and sub options + +| **Test ID** | **FtOpSoRoIpSlaCli002** | +|--------|:----------------| +| **Test Name** | **Verify cli command to configure ip sla for tcp-connect and sub options.** | +| **Test Setup** | **Topology1** | +| **Type** | **CLI** | +| **Steps** | **1) Verify help strings are displayed for ip sla sub options
2) Verify sub options source-address, source-port are availble and verify running-config** | + +### 3.1.3 Verify cli command to configure ip sla options - frequency, threshold and timeout + +| **Test ID** | **FtOpSoRoIpSlaCli003** | +|--------|:----------------| +| **Test Name** | **Verify cli command to configure ip sla for tcp-connect and sub options.** | +| **Test Setup** | **Topology1** | +| **Type** | **CLI** | +| **Steps** | **1) Verify help strings are displayed.
2) Verify options frequency, threshold ad timeout are availble and verify running-config.
3) Verify boundary values.** | + +## 3.2 Functional +### 3.2.1 Track ICMP-Echo target + +| **Test ID** | **FtOpSoRoIpSlaFt001** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | **Verify ip sla to track icmp-echo target.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure ip sla to track icmp-echo target
2) Map ip sla to a static route
3) Verify ip sla state
4) Verify configured/default ip sla parameters using 'show ip sla #' command.
5) Verify static route is installed if the target is reachable
6) Send L3 data traffic and verify
7) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts. | + +### 3.2.2 Track TCP-Connect target + +| **Test ID** | **FtOpSoRoIpSlaFt002** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | **Verify ip sla to track tcp-connect target.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure ip sla to track tcp-connect target
2) Map ip sla to a static route
3) Verify ip sla state
4) Verify configured/default ip sla parameters using 'show ip sla #' command.
5) Verify static route is installed if the target is reachable
6) Send L3 data traffic and verify
7) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
8) Bring back the target and verify after configured/default threshold route is reinstalled.| + +### 3.2.3 Track TCP-Connect target + +| **Test ID** | **FtOpSoRoIpSlaFt003** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | **Verify ip sla to track tcp-connect target.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure ip sla to track tcp-connect target. Test for both ssh tcp port 22 and bgp port 179
2) Map ip sla to a static route
3) Verify ip sla state
4) Verify configured/default ip sla parameters using 'show ip sla #' command.
5) Verify static route is installed if the target is reachable
6) Send L3 data traffic and verify
7) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
8) Bring back the target and verify after configured/default threshold route is reinstalled. | + +### 3.2.4 Switch between SLAs + +| **Test ID** | **FtOpSoRoIpSlaFt004** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | **Switch between SLAs** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure icmp-echo and tcp-connect IP SLAs
2) Map ip sla icmp-echo to a static route
3) Verify ip sla state
4) Verify static route is installed if the target is reachable.
5) Unconfigure and reconfigure tcp-connect ip sla.
6) Verify static route is installed if the target is reachable
7) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
8) Bring back the target and verify after configured/default threshold route is reinstalled.| + +### 3.2.5 ICMP-Echo target in user vrf + +| **Test ID** | **FtOpSoRoIpSlaFt005** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | **Verify icmp-echo target in user vrf.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure ip sla to track icmp-echo target in user defined vrf
2) Map ip sla to a static route under a vrf
3) Verify ip sla state
4) Verify configured/default ip sla parameters using 'show ip sla #' command.
5) Verify static route is installed if the target is reachable
6) Send L3 data traffic and verify
7) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
8) Bring back the target and verify after configured/default threshold route is reinstalled. | + +### 3.2.6 TCP-Connect target in user vrf + +| **Test ID** | **FtOpSoRoIpSlaFt006** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | **Verify icmp-echo target in user vrf.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure ip sla to track tcp-connect target in user defined vrf
2) Map ip sla to a static route under a vrf
3) Verify ip sla state
4) Verify configured/default ip sla parameters using 'show ip sla #' command.
5) Verify static route is installed if the target is able to bring up tcp connection.
6) Send L3 data traffic and verify
7) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
8) Bring back the target and verify after configured/default threshold route is reinstalled. | + + +### 3.2.7 ICMP-Echo and tcp-connect target with different frequency and threshold values + +| **Test ID** | **FtOpSoRoIpSlaFt007** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | ** ICMP-Echo and tcp-connect target with different frequency and threshold values.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure ip slas to track icmp-echo and tcp-connect targets in default and user defined vrf
2) Map ip sla to a static route under a vrf
3) Verify ip sla state
4) configure max frequency and minimum threshold value.
5) Verify icmp and tcp connect are sent at configured frequency
6) When the target is not reachable.
7) Bring down the target and verify static route is uninstalled after configured threshold number of unsuccessful attempts.
8) Bring back the target and verify after configured threshold route is reinstalled. | + +### 3.2.8 ICMP-Echo target with source interface + +| **Test ID** | **FtOpSoRoIpSlaFt008** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | **Verify icmp-echo target with source interface configured.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure ip slas to track icmp-echo target in default and user defined vrf
2) Map ip sla to a static route under a vrf
3) Verify ip sla state
4) Verify with different source interfaces - Vlan, Portchannel, physical port.
5) Verify static route is installed if the target is reachable
6) Send L3 data traffic and verify
7) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
8) Bring back the target and verify after configured/default threshold route is reinstalled. | + +### 3.2.9 ICMP-Echo and TCP-Connect target with source address + +| **Test ID** | **FtOpSoRoIpSlaFt009** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | **Verify icmp-echo target with source interface configured.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure ip slas to track icmp-echo and tcp-connect target in default and user defined vrf
2) Map ip sla to a static route under a vrf
3) Verify ip sla state
4) Configure a source address from which target is not reachable .
5) Verify static route is not installed
6) Reconfigured valid source address and verify static route is installed.
7) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
8) Bring back the target and verify after configured/default threshold route is reinstalled. | + +### 3.2.10 ICMP-Echo target with different request-data-size + +| **Test ID** | **FtOpSoRoIpSlaFt010** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | **Verify icmp-echo target with source interface configured.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure ip slas to track icmp-echo target in default and user defined vrf
2) Map ip sla to a static route under a vrf
3) Verify ip sla state
4) Configure a request-data-size as 28.
5) Verify static route is installed
6) Reconfigure max request-data-size and verify static route is installed.
7) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
8) Bring back the target and verify after configured/default threshold route is reinstalled. | + +### 3.2.11 ICMP-Echo and tcp-connect target with different ttl and tos values + +| **Test ID** | **FtOpSoRoIpSlaFt011** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | ** ICMP-Echo and tcp-connect target with different ttl and tos values.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure ip slas to track icmp-echo and tcp-connect targets in default and user defined vrf
2) Map ip sla to a static route under a vrf
3) Verify ip sla state
4) configure ttl and tos values.
5) Verify static route is installed
6) Reconfigure ttl and tos and verify configured values.
7) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
8) Bring back the target and verify after configured/default threshold route is reinstalled. | + +### 3.2.12 Verify IP SLA with target reachability via default IPv6 route + +| **Test ID** | **FtOpSoRoIpSlaFt012** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | ** ICMP-Echo and tcp-connect target with different ttl and tos values.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure ip slas to track icmp-echo and tcp-connect targets in default and user defined vrf
2) Map ip sla to a static route under a vrf
3) Enable target reachability via default ipv6 route
4) verify ip sla state.
5) Verify static route is installed
6) Reconfigure reachability via IPv6 link-local and verify static route is installed.
7) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
8) Bring back the target and verify after configured/default threshold route is reinstalled. | + +### 3.2.13 Verify IP SLA with target reachability via connected and static routes + +| **Test ID** | **FtOpSoRoIpSlaFt013** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | ** ICMP-Echo and tcp-connect target with different ttl and tos values.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure ip slas to track icmp-echo and tcp-connect targets in default and user defined vrf
2) Map ip sla to a static route under a vrf
3) Enable target reachability via connected route
4) verify ip sla state.
5) Verify static route is installed
6) Reconfigure reachability via static route and verify static route is installed.
7) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
8) Bring back the target and verify after configured/default threshold route is reinstalled. | + +### 3.2.14 Verify IP SLA with target reachability via bgp and ospf routes + +| **Test ID** | **FtOpSoRoIpSlaFt014** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | ** ICMP-Echo and tcp-connect target with different ttl and tos values.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure ip slas to track icmp-echo and tcp-connect targets in default and user defined vrf
2) Map ip sla to a static route under a vrf
3) Enable target reachability via bgp route
4) verify ip sla state.
5) Verify static route is installed
6) Reconfigure reachability via ospf route and verify static route is installed.
7) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
8) Bring back the target and verify after configured/default threshold route is reinstalled. | + +### 3.2.15 Verify IP SLA with target reachability via leaked routes + +| **Test ID** | **FtOpSoRoIpSlaFt015** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | ** ICMP-Echo and tcp-connect target with different ttl and tos values.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure ip slas to track icmp-echo and tcp-connect targets in default and user defined vrf
2) Map ip sla to a static route under a vrf
3) Enable target reachability via vrf leaked routes
4) verify ip sla state.
5) Verify static route is installed
/>6) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
7) Bring back the target and verify after configured/default threshold route is reinstalled. | + +### 3.2.16 Verify ip sla history + +| **Test ID** | **FtOpSoRoIpSlaFt016** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | **Verify ip sla history** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure icmp-echo and tcp-connect IP SLAs
2) Map ip slas to static routes
3) Verify ip sla states
4) Verify static routes installed if the targets are reachable.
5) Configure user vrf routes and map to slas .
6) Flap the routes.
7) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
8) Verify ip sla history is updated.| + +### 3.2.17 Verify IP SLA with MLAG + +| **Test ID** | **FtOpSoRoIpSlaFt017** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | ** ICMP-Echo and tcp-connect target with different ttl and tos values.** | +| **Test Setup** | **Topology2** | +| **Type** | **Functional** | +| **Steps** | 1) Configure MLAG as per topology.
2)Configure ip slas to track icmp-echo and tcp-connect targets in default and user defined vrf via mlag nodes.
2) Map ip sla to a static route under a vrf
3) Enable target reachability via default ipv6 route
4) verify ip sla state.
5) Verify static route is installed
6) Reconfigure reachability via IPv6 link-local and verify static route is installed.
7) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
8) Bring back the target and verify after configured/default threshold route is reinstalled. | + +### 3.2.18 Verify IP SLA with ACL Config for assigning CIR/PIR + +| **Test ID** | **FtOpSoRoIpSlaFt018** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | ** Verify IP SLA with ACL Config for assigning CIR/PIR.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure ip slas to track icmp-echo and tcp-connect targets in default and user defined vrf
2) Map ip sla to a static route under a vrf
3) Configure acls, classifier and policy with CIR 1000.
4) verify ip sla state.
5) Verify static route is installed
6) Send line rate data traffic.
7) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
8) Bring back the target and verify after configured/default threshold route is reinstalled.
| + +### 3.2.19 Verify IP SLA with PBR + +| **Test ID** | **FtOpSoRoIpSlaFt019** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | ** Verify IP SLA with PBR.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure ip slas to track icmp-echo and tcp-connect targets in default and user defined vrf
2) Map ip sla to a static route under a vrf
3) Configure PBR.
4) verify ip sla state.
5) Verify static route is installed
6) Send line rate data traffic.
7) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
8) Bring back the target and verify after configured/default threshold route is reinstalled.
| + +### 3.2.20 IP SLA to configure default routes + +| **Test ID** | **FtOpSoRoIpSlaFt020** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | ** Verify IP SLA to install default ipv4 and ipv6 routes** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure ip slas to track icmp-echo and tcp-connect targets in default and user defined vrf
2) Map ip slas to default static routes under a vrf
3) verify ip sla states.
4) verify ipv4 and ipv6 static routes are installed
5) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
6) Bring back the target and verify after configured/default threshold route is reinstalled. | + +### 3.2.21 Clear IP SLA statistics + +| **Test ID** | **FtOpSoRoIpSlaFt021** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | ** Clear IP SLA statistcs.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure ip slas to track icmp-echo and tcp-connect targets in default and user defined vrf
2) Map ip sla to a static route under a vrf
3) Verify ip sla counters and history.
4) verify ip sla state.
5) Verify static route is installed
6) Use clear ip sla commands to clear statistics and history.
7) Verify counters are reset to zero and history is erased. | + +### 3.2.22 Verify debug commands for IP SLA + +| **Test ID** | **FtOpSoRoIpSlaFt022** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | ** Verify debug commands for IP SLA.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure ip slas to track icmp-echo and tcp-connect targets in default and user defined vrf
2) Map ip sla to a static route under a vrf
3) Enable IP SLA debug commands "debug iptrack" and "debug iptrack sla #"
4) verify debug logs. | + +## 3.3 Scale + +### 3.3.1 Verify max ICMP-Echo IP SLA in same vrf + +| **Test ID** | **FtOpSoRoIpSlaScale001** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | **Verify max ICMP-Echo IP SLA in same vrf ** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure max 50 icmp-echo IP SLAs
2) Map ip slas to static routes
3) Verify ip sla states
4) Verify static routes installed if the targets are reachable.
5) Flap the routes.
6) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
7) Verify ip sla history is updated. | + +### 3.3.2 Verify max ICMP-Echo IP SLA in different vrfs + +| **Test ID** | **FtOpSoRoIpSlaScale002** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | **Verify max ICMP-Echo IP SLA in different vrfs** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure max 50 icmp-echo IP SLAs
2) Map ip slas to static routes
3) Verify ip sla states
4) Verify static routes installed if the targets are reachable.
5) Flap the routes.
6) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
7) Verify ip sla history is updated. | + +### 3.3.3 Verify max TCP-Connect IP SLA in same vrf + +| **Test ID** | **FtOpSoRoIpSlaScale003** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | **Verify max TCP-Connect IP SLA in same vrf ** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure max 50 tcp-connect with ssh,bgp IP SLAs
2) Map ip slas to static routes
3) Verify ip sla states
4) Verify static routes installed if the targets are reachable.
5) Flap the routes.
6) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
7) Verify ip sla history is updated.| + +### 3.3.4 Verify max TCP-Connect IP SLA in different vrfs + +| **Test ID** | **FtOpSoRoIpSlaScale004** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | **Verify max TCP-Connect IP SLA in different vrfs** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure max 50 tcp-connect IP SLAs
2) Map ip slas to static routes
3) Verify ip sla states
4) Verify static routes installed if the targets are reachable.
5) Flap the routes.
6) Bring down the target and verify static route is uninstalled after configured/default threshold number of unsuccessful attempts.
7) Verify ip sla history is updated.| + +## 3.4 Reboot/Reload/Upgrade Test Cases +#### 3.4.1 Warm reboot + +| **Test ID** | **FtOpSoRoIpSlaTrig001** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | ** Warm reboot with IP sla configs.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure max ip slas to track icmp-echo and tcp-connect targets in default and user defined vrf
2) Map ip sla to a static route under a vrf
3) Enable target reachability via default ipv6 route
4) verify ip sla state.
5) Verify static route is installed
6) Send traffic over the static route .
7) Initiate warm reboot.
8) Verify there is no traffic drop | + +#### 3.4.2 Cold reboot +| **Test ID** | **FtOpSoRoIpSlaTrig002** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | ** Fast reboot with ip sla configs.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure max ip slas to track icmp-echo and tcp-connect targets in default and user defined vrf
2) Map ip sla to a static route under a vrf
3) Enable target reachability via default ipv6 route
4) verify ip sla state.
5) Verify static route is installed
6) Send traffic over the static route .
7) Initiate warm reboot.
8) Verify there is no traffic drop | + +#### 3.4.3 Config reload + +| **Test ID** | **FtOpSoRoIpSlaTrig003** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | ** Config reload with ip sla configs.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure max ip slas to track icmp-echo and tcp-connect targets in default and user defined vrf
2) Map ip sla to a default vrf and user vrf static route.
3)verify ip sla state
4) Save config and initiate config reload.
5) Verify ip sla state and static route is installed after bgp daemon is up.
6) Send traffic over the static route . | + +#### 3.4.4 Docker restart + +| **Test ID** | **FtOpSoRoIpSlaTrig004** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | ** BGP docker restart with IP SLA configs.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure max ip slas to track icmp-echo and tcp-connect targets in default and user defined vrf
2) Map ip sla to a default vrf and user vrf static route.
3)verify ip sla state
4) Initiate bgp docker restart.
5) Verify ip sla state and static route is installed after bgp daemon is up.
6) Send traffic over the static route . | + +## 3.5 Management + +#### 3.5.1 SNMP + +#### 3.5.2 gNMI + +#### 3.5.3 REST API +##### 3.5.3.1 POST operation + +| **Test ID** | **FtOpSoRoIpSlaRest001** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | ** REST API POST to configure IP SLA.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Use REST POST method to configure IP SLA for ICMP-Echo and TCP-Connect. | + +##### 3.5.3.2 PATCH operation + +| **Test ID** | **FtOpSoRoIpSlaRest002** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | ** REST API PATCH to configure IP SLA.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Use REST PATCH method to configure IP SLA paramters like frequency, threshold, source-address etc.. | + +##### 3.5.3.3 GET operation + +| **Test ID** | **FtOpSoRoIpSlaRest003** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | ** REST API GET to verify all configured IP SLA paramters.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Use REST GET method to verify all configured IP SLA paramters. | + +##### 3.5.3.4 DELETE operation + +| **Test ID** | **FtOpSoRoIpSlaRest004** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | ** REST API DELETE to unconfigure IP SLA.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Use REST DELETE method to unconfigure IP SLA for ICMP-Echo and TCP-Connect. | +## 3.6 Stress,Scale and Performance +#### 3.6.1 Stress test IP SLA with link flap +| **Test ID** | **FtOpSoRoIpSlaStress001** | +| -------------- | :----------------------------------------------------------- | +| **Test Name** | ** Stress test IP SLA with link flap.** | +| **Test Setup** | **Topology1** | +| **Type** | **Functional** | +| **Steps** | 1) Configure IP SLA ICMP-Echo and TCP-Connect.
2) Flap route reachability tiggering static route install and unstall. Run the test for 24 hrs.
3) Verify memory and cpu utilizations before and after the test run. | + +# 4 Reference Links + + + diff --git a/TestPlans/routing/IPSLA/Topology1.png b/TestPlans/routing/IPSLA/Topology1.png new file mode 100644 index 0000000000000000000000000000000000000000..c24598acca1bfe66499ad9852463524397ff1d06 GIT binary patch literal 19539 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

@0qYW-C$BlLUl7bZYlu3aORh;wiUhxr zF#cr!BCEJ5p|EE%?>_?JoS!A@C9eKbnUS*n6C(UP0+P`AaHsa}&pLpg85A6 zvnOf)fsqFxp6`bd^;dd*sgz{64rdco=E!I5_QQ~-6!Xsxp>wxFYi+>vQ!cRVWYQlc zaavx!f5cxJys*?wN(ey$LcJZAOCC9SKBB!J^<_G`ylv<*g4@{lO569dRL*VcSBBq6 zp?bbs0L;ft3b%TTv-5KPNRrq5X6L}u)sl9rIq}yZgbyQt==)qgBEvTppm7Ex%vsyJ z-wy*oashxgxTkT>mWr0}0mc<=yCIgiWyb**cT?VzSR)d%?KZp_1jrQH@0Ezuua=F^ zD}dIjR1(K$m|gkTqafWd#|Y+nPq9Yf!MwDkxBnbO%XKZIYU*ON=R@ua{#6e_8-Y6d z!^7WKPD7S;P(~&yD+Dc4XCBjvVDNOlN*=^n&f3d9=r~hK764y#8x1 z{1mHSQjOwjYQriye5MDQR1k#zuX!3wbX4KWN6<)LgS)ky`L3@l9Ndzf(*}6F8VZeS z2%>!jBQf6?ezclzDBx2#9pfnf;sIY4P{OP)5O>`?3;CBDn6!Ww-~Ygu;jiX7z`NFc zL_+?R3nqOYq*rJ-_JQoH;ql)hfpdKK=KUM~oQDmb+#P^F=cysM7(V}Z{f^2%@czTE m|EAyl`QIq7UEJAXuB7uf+5VATdWxutG1!0jhqS%NuKXXf#Cp&G literal 0 HcmV?d00001 diff --git a/TestPlans/routing/IPSLA/Topology2.png b/TestPlans/routing/IPSLA/Topology2.png new file mode 100644 index 0000000000000000000000000000000000000000..c0e159909d52c7f98c4efa760cb899876dc62e11 GIT binary patch literal 16051 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 Date: Thu, 2 Jul 2020 00:00:53 +0530 Subject: [PATCH 02/27] Create and add TAM HLD --- devops/tam/tam-hld.md | 575 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 575 insertions(+) create mode 100644 devops/tam/tam-hld.md diff --git a/devops/tam/tam-hld.md b/devops/tam/tam-hld.md new file mode 100644 index 000000000000..bb5756dce4c3 --- /dev/null +++ b/devops/tam/tam-hld.md @@ -0,0 +1,575 @@ +# Telemetry and Monitoring + +## Highlevel Design Document + +### Rev 0.1 + +# Table of Contents + +- [Telemetry and Monitoring](#telemetry-and-monitoring) + - [Highlevel Design Document](#highlevel-design-document) + - [Rev 0.1](#rev-01) +- [Table of Contents](#table-of-contents) + - [List of Tables](#list-of-tables) + - [Revision](#revision) + - [About This Manual](#about-this-manual) + - [Scope](#scope) + - [Definition/Abbreviation](#definitionabbreviation) + - [Table 1: Abbreviations](#table-1-abbreviations) +- [1 Feature Overview](#1-feature-overview) + - [1.1 Requirements](#11-requirements) + - [1.1.1 Functional Requirements](#111-functional-requirements) + - [1.1.2 Configuration and Management Requirements](#112-configuration-and-management-requirements) + - [1.1.3 Scalability Requirements](#113-scalability-requirements) + - [1.2 Design Overview](#12-design-overview) + - [1.2.1 Basic Approach](#121-basic-approach) + - [1.2.2 Container](#122-container) + - [1.2.3 SAI Overview](#123-sai-overview) +- [2 Functionality](#2-functionality) + - [2.1 Target Deployment Use Cases](#21-target-deployment-use-cases) + - [2.2 Functional Description](#22-functional-description) +- [3 Design](#3-design) + - [3.1 Overview](#31-overview) + - [3.2 DB Changes](#32-db-changes) + - [3.2.1 CONFIG DB](#321-config-db) + - [3.2.2 APP DB](#322-app-db) + - [3.2.3 STATE DB](#323-state-db) + - [3.2.4 ASIC DB](#324-asic-db) + - [3.2.5 COUNTER DB](#325-counter-db) + - [3.3 Daemons](#33-daemons) + - [3.4 Switch State Service Design](#34-switch-state-service-design) + - [3.4.1 Orchestration Agent](#341-orchestration-agent) + - [3.4.2 Other Process](#342-other-process) + - [3.5 SyncD](#35-syncd) + - [3.6 SAI](#36-sai) + - [3.7 CLI](#37-cli) + - [3.7.1 Data Models](#371-data-models) + - [3.7.2 Configuration Commands](#372-configuration-commands) + - [3.7.2.1 Setting up switch-wide TAM attributes](#3721-setting-up-switch-wide-tam-attributes) + - [3.7.2.2 Setting up Collectors](#3722-setting-up-collectors) + - [3.7.2.2 Setting up Flow Groups](#3722-setting-up-flow-groups) + - [3.7.2.2 Setting up Samplers](#3722-setting-up-samplers) + - [3.7.3 Show Commands](#373-show-commands) + - [3.7.3.1 Listing the Switch-wide TAM attributes](#3731-listing-the-switch-wide-tam-attributes) + - [3.7.3.2 Listing the Collectors](#3732-listing-the-collectors) + - [3.7.3.3 Listing the Samplers](#3733-listing-the-samplers) + - [3.7.3.4 Listing the Flow groups](#3734-listing-the-flow-groups) + - [3.7.3.3 Listing the TAM features](#3733-listing-the-tam-features) + - [3.7.5 Debug Commands](#375-debug-commands) + - [3.7.6 REST API Support](#376-rest-api-support) +- [4 Flow Diagrams](#4-flow-diagrams) + - [4.1 Config call flow](#41-config-call-flow) +- [5 Error Handling](#5-error-handling) + - [CLI](#cli) +- [6 Serviceability and Debug](#6-serviceability-and-debug) +- [7 Warm Boot Support](#7-warm-boot-support) +- [8 Scalability](#8-scalability) +- [9 Unit Test](#9-unit-test) + - [CLI](#cli) + +## List of Tables + +[Table 1: Abbreviations](#table-1-abbreviations) + +## Revision + +| Rev | Date | Author | Change Description | +|---|-----------|------------------|-----------------------------------| +| 0.1 | 07/01/2020 | Bandaru Viswanath | New draft for SONiC TAM Infrastructure | + +## About This Manual + +This document provides general information about the TAM infrastructure implementation in SONiC. + +## Scope + + SAI community defined a Telemetry and Monitoring specification that defines a unified interface - [TAM] (https://github.com/opencomputeproject/SAI/tree/master/doc/TAM) - for provisioning and monitoring various telemetry and monitoring technologies / application. + +This document describes the high level design of TAM infrastructure in SONiC. The design is intended to help implement TAM applications that use and share the common TAM infrastructure. + +## Definition/Abbreviation + +### Table 1: Abbreviations + +| **Term** | **Meaning** | +|--------------------------|-------------------------------------| +| SAI | Switch Abstraction Interface | +| TAM | Telemetry and Monitoring | + +# 1 Feature Overview + +For an introduction to TAM, reader is encouraged to consult the SAI specification referred earlier. In general, TAM deals with dataplane telemetry applications that are supported by the silicon. The SONiC NOS is responsible for provisioning the dataplane application behavior, using the appropriate SAI API. + +There are many common aspects among the TAM features, as defined in the . For example, almost all of them will require a controller to be setup, which is the intended receiver for the telemetry information. Likewise, when the applications may allow a per-flow (or a group of flows) configuration. The TAM infrastructure implements these common aspects so that applications can share the design and implementation without having to re-implement from scratch. More details on provisioning are avaiable in subsequent sections. + +## 1.1 Requirements + +### 1.1.1 Functional Requirements + +1.0 TAM infrastructure must allow configuration of common dataplane specific switch-wide attributes such as switch-identifier to be used in data-export, enterprise-id to be used in IPFIX export records etc. + +2.0 TAM infrastructure must allow configuring different types of collectors. It must support - IPv4 or IPv6, TCP or UDP, or a PSAMP encapsulation for the collectors. The collectors shall be named to be referenced by individual features. + +3.0 TAM infrastucture must allow a common specification of a flow (or flow-group) definition that can be named and refererenced by individual features. + +4.0 TAM infrastucture must allow a common specification of a sampling rate definition on a given interface that can be named and refererenced by individual features. + +5.0 TAM infrastucture must support activating and deactivating individual features. + +### 1.1.2 Configuration and Management Requirements + +The TAM infrastructure supports the new management framework and KLISH CLI for configuration. + +### 1.1.3 Scalability Requirements + +In general, TAM applications are scaled based on availability of resources in hardware such as ACLs. Application specific scalability constraints may be imposed by corresponding applications. + +## 1.2 Design Overview + +### 1.2.1 Basic Approach + +The TAM infrastructure is newly developed. + +### 1.2.2 Container + +A container called 'tam' is introducted as a holder for all TAM applications, including the infrastructure. + +### 1.2.3 SAI Overview + +The SAI TAM spec specifies the TAM APIs to be used to configure the TAM functionality. Please refer to SAI-Proposal-TAM2.0-v2.0.docx in [https://github.com/opencomputeproject/SAI/tree/master/doc/TAM](https://github.com/opencomputeproject/SAI/tree/master/doc/TAM) for more details. + +# 2 Functionality + +## 2.1 Target Deployment Use Cases + +TAM infrastructure is not an independent feature. + +## 2.2 Functional Description + +TAM infrastructure is not an independent feature. + +# 3 Design + +## 3.1 Overview + +## 3.2 DB Changes + +### 3.2.1 CONFIG DB + +TAM\_SWITCH\_TABLE + + ;Defines TAM Global configuration in CONFIG_DB + + key = global ; Only one instance and + ; has a fixed key ”global". + switch-id = 1 * 5DIGIT ; Switch Id to be used in reports + enterprise-id = 1 * 5DIGIT ; IPFIX + + Example: + 127.0.0.1:6379[4]> keys *TAM_DEVICE* + 1) "TAM_SWITCH_TABLE|global" + + 127.0.0.1:6379[4]> HGETALL "TAM_SWITCH_TABLE|global" + 1)"switch-id” + 2)54325 + 3)"enterprise-id" + 4)22334 + + +TAM\_COLLECTOR\_TABLE + + ;Defines TAM Collector configuration in CONFIG_DB + + key = name ; name is collector name and should be unique. + ipaddress = ipv4_prefix ; Collector IP address + port = port_num ; Port Number + ipaddress-type = “ipv4”/”ipv6” ; IP type + protocol = ”TCP"/”UDP” ; Transport protocol to be used to reach collector + ; UDP is default + encapsulation = "NONE"/"PSAMP” ; Encapsulation needed to reach collector + ; NONE is default + + Example: + > keys *TAM_COLLECTOR* + 1) "TAM_COLLECTOR_TABLE|collector1" + + > HGETALL "TAM_COLLECTOR_TABLE|collector1" + 1) "ipaddress" + 2) "10.20.2.1" + 3) "port" + 4) "6050" + 5) "ipaddress-type" + 6) "ipv4" + 7) "protocol" + 8) "UDP" + 9) "encapsulation" + 10) "NONE" + +TAM\_FEATURES\_TABLE + + ;Defines TAM Features configuration in CONFIG_DB + + key = name ; Feature name and should be among + ; ifa, drop-monitor, tail-stamping, thresholds + status = ”active" / ”inactive" ; Activate or Turnoff the feature + + Example: + > keys *TAM_FEATURES* + 1)"TAM_FEATURES_TABLE|ifa" + 2)"TAM_FEATURES_TABLE|drop-monitor" + 3)"TAM_FEATURES_TABLE|tail-stamping" + 4)"TAM_FEATURES_TABLE|thresholds” + + > hgetall "tam_features_table|ifa” + 1) "status" + 2) "active" + +TAM\_SAMPLINGRATE\_TABLE + + ;Defines TAM Sample-Rate configuration in CONFIG_DB + + key = name ; Sampler name and should be unique + + sampling-rate = 1 * 5DIGIT ; Sampling rate. One packet in every ‘rate’ packets + ; will be sampled + + Example: + > keys *TAM_SAMPLINGRATE_TABLE* + 1)"TAM_FEATURES_TABLE|aggressive" + 2)"TAM_FEATURES_TABLE|lazy" + + > hgetall "tam_features_table|aggressive” + 1) "sampling-rate" + 2) 1000 + +### 3.2.2 APP DB + +N/A + +### 3.2.3 STATE DB + +TAM\_SWITCH\_TABLE + + ;Operational TAM Global Status in STATE_DB + + key = global ; Only one instance and + ; has a fixed key ”global". + op-switch-id = 1 * 5DIGIT ; Currently used switch-id + op-enterprise-id = 1 * 5DIGIT ; Currently used enterprise-id + + Example: + 127.0.0.1:6379[4]> keys *TAM_DEVICE* + 1) "TAM_SWITCH_TABLE|global" + + 127.0.0.1:6379[4]> HGETALL "TAM_SWITCH_TABLE|global" + 1)”op-switch-id” + 2)54325 + 3)”op-enterprise-id" + 4)22334 + +TAM\_FEATURES\_TABLE + + ;Reflects TAM Features status in STATE_DB + + key = name ; Feature name and should be among + ; ifa, drop-monitor, tail-stamping, thresholds + status = ”active" / ”inactive" / "unsupported" / "insufficient_resources" + ; current status of the feature + + Example: + > keys *TAM_FEATURES* + 1)"TAM_FEATURES_TABLE|ifa" + 2)"TAM_FEATURES_TABLE|drop-monitor" + 3)"TAM_FEATURES_TABLE|tail-stamping" + 4)"TAM_FEATURES_TABLE|thresholds” + + > hgetall "tam_features_table|ifa” + 1) "status" + 2) "unsupported" + +TAM\_SAMPLINGRATE\_TABLE + + ;Defines TAM Sample-Rate configuration in CONFIG_DB + + key = name ; Sampler name and should be unique + + sampling-rate = 1 * 5DIGIT ; Sampling rate. One packet in every ‘rate’ packets + ; will be sampled + + Example: + > keys *TAM_SAMPLINGRATE_TABLE* + 1)"TAM_FEATURES_TABLE|aggressive" + 2)"TAM_FEATURES_TABLE|lazy" + + > hgetall "tam_features_table|aggressive” + 1) "sampling-rate" + 2) 1000 + +### 3.2.4 ASIC DB + +N/A + +### 3.2.5 COUNTER DB + +N/A + +## 3.3 Daemons + +N/A + +## 3.4 Switch State Service Design + +### 3.4.1 Orchestration Agent + +N/A + +### 3.4.2 Other Process + +N/A + +## 3.5 SyncD + +N/A + +## 3.6 SAI + +The SAI TAM API spec defines all TAM APIs supported in SAI. Please refer to SAI-Proposal-TAM2.0-v2.0.docx in [https://github.com/opencomputeproject/SAI/tree/master/doc/TAM](https://github.com/opencomputeproject/SAI/tree/master/doc/TAM) for more details. + +## 3.7 CLI + +### 3.7.1 Data Models + +The user facing data model is based on OpenConfig TAM yang model (TBD). The backend data model (SONiC YANG) will use the formats in CONFIG_DB & STATE_DB. See above sections. + +### 3.7.2 Configuration Commands + +#### 3.7.2.1 Setting up switch-wide TAM attributes + +Two switch-wide attributes are supported by the TAM infrastructure. + +| **Attribute** | **Description** | +|--------------------------|-------------------------------------| +| `switch-id` | A 32-bit idenitifier that uniquely identifies the switch, and is used in the telemetry reports. When not configured, the last 32-bits from the system mac address are used. | +| `enterprise-id` | A 32-bit identifier that is used in the IPFIX telemetry reports. When not configured, the last 32-bits from the system mac address are used. | + +The command syntax for setting up the switch-wide TAM attributes are as follows: + +``` +sonic (config-tam)# [no] switch-id +sonic (config-tam)# [no] enterprise-id +``` + +#### 3.7.2.2 Setting up Collectors + +A collector is typically a machine reachable from the switch, where the telemetry reports are sent. The collectors are application specific, in the sense that the collectors must understand the data format of the telemetry reports they receive. A collector may be capable of processing reports from one or more applications. + +TAM infrastructure allows us to create a collector by specifying the reachability information and associating a reference to this collector. This reference, a name, can be specified as a collector by individual feature configurations. + +The following collector attribtes are supported. + +| **Attribute** | **Description** | +|--------------------------|-------------------------------------| +| `name` | A string that uniquely identifies the collector, and will be referrenced from other configurations | +| `ip-address-type` | Specifies the version of IP protocol to be used for reaching the collector. Valid values are `"IPv4"` and `"IPv6"` | +| `ip-address` | The IP address of the collector | +| `protocol` | Specifies the transport protocol to be used for reaching the collector. Valid values are `"UDP"` and `"TCP"`. When not specified, `"UDP"` is used as default. | +| `port` | Port number on which the Collector is listening for the reports. | +| `encapsulation` | Specifies the encapsulation be used for reaching the collector. Valid values are `"NONE"` and `"PSAMP"`. When not specified, `"NONE"` is used as default. | + +The command syntax for setting up the collectors are as follows: + +``` +sonic (config-tam)# collector type {ipv4 | ipv6} ip port [protocol { UDP | TCP }] [encapsulation { none | psamp }] + +sonic (config-tam)# no collector +``` + +#### 3.7.2.2 Setting up Flow Groups +TBD + +#### 3.7.2.2 Setting up Samplers + +TAM infrastructure supports setting up a sampling configuration on a per-interface basis and refer to this sampler configuration from the application which support sampling for the traffic. + +The following sampling attribtes are supported. + +| **Attribute** | **Description** | +|--------------------------|-------------------------------------| +| `name` | A string that uniquely identifies the sampler, and will be referrenced from other configurations | +| `interface` | Refers to one of the interfaces on the switch on which traffic | +| `sample-rate` | Sampling rate, one in every `sample-rate` packets will be sampled | + +The command syntax for setting up the samplers are as follows: + +``` +sonic (config-tam)# sampler interface rate + +sonic (config-tam)# no sampler + +``` + +### 3.7.3 Show Commands + +#### 3.7.3.1 Listing the Switch-wide TAM attributes + +The following command lists all the switch-wide TAM attributes currently in use. + +``` +sonic # show tam switch +``` +An example invocation is as below + +``` +sonic # show tam switch + +TAM Device information +---------------------- +Switch ID : 23456 +Enterprise ID : 1234 +``` + +#### 3.7.3.2 Listing the Collectors + +The following command lists the details for all collectors or for a specific collector. + +``` +sonic # show tam collectors [] +``` +Sample usage shown below. + +``` +sonic # show tam collectors + +Name IP Address Port Protocol Encapsulation +---------------- -------------- ------ -------- ------------- +IFA_Col_i19 192.168.78.121 7071 UDP NONE +MOD_Col_m16 192.168.78.123 7076 UDP PSAMP + +sonic-cli# show tam collectors IFA_Col_i19 + +Name : IFA_Col_i19 +IP Address : 192.168.78.121 +Port : 7071 +Protocol : UDP +Encapsulation : NONE +``` + +#### 3.7.3.3 Listing the Samplers + +The following command lists the details for all samplers or for a specific sampler. + +``` +sonic # show tam samplers [] +``` +Sample usage shown below. + +``` +sonic # show tam samplers + +Name Interface Sample Rate +----------- --------- ----------- +sflow_low Ethernet10 1 +aggresive Ethernet20 2000 + +sonic-cli# show tam samplers aggresive + +Name : aggresive +Interface : Ethernet20 +Sample Rate : 2000 +``` + +#### 3.7.3.4 Listing the Flow groups + +The following command lists the details for all flow-groups or for a specific flow-group. Note that only explicitly configured tuples are displayed. + +``` +sonic # show tam flow-groups [] +``` +Sample usage shown below. + +``` +sonic # show tam flow-groups + +Flow Group Name : udp_port_239 + SRC IP : 10.72.195.23 + DST L4 Port : 239 +Collector : None +Sampler : None +Packet Count : 10584 + +Flow Group Name : udp_port_241 + SRC Port : 1906 + DST L4 Port : 241 +Collector : IFA_Col_i19 +Sampler : None +Packet Count : 8654367 + +sonic # show tam flow-groups udp_port_239 + +Flow Group Name : udp_port_239 + SRC IP : 10.72.195.23 + DST L4 Port : 239 +Collector : None +Sampler : None +Packet Count : 10584 +``` + +#### 3.7.3.3 Listing the TAM features + +The following command lists the current status for all TAM features or for a specific feature. + +``` +sonic # show tam features [ { ifa | drop-monitor | tail-stamping | thresholds}] +``` +Sample usage shown below. + +``` +sonic # show tam features + +Name Status +----------- --------- +ifa Active +drop-monitor Active + +sonic-cli# show tam features ifa + +Name : ifa +Status : Active +``` + +### 3.7.5 Debug Commands +N/A + +### 3.7.6 REST API Support + +TBD + + # 4 Flow Diagrams + +## 4.1 Config call flow + +All the configuration is stored in the CONFIG_DB by the management framework. + +# 5 Error Handling + +## CLI + +* CLI configuration sanity will be enforced by the CLI handler & CVL and any invalid configuration is rejected. An error is displayed to the user notifying the reason for rejection of the configuration. + +# 6 Serviceability and Debug + +N/A + +# 7 Warm Boot Support + +No special handling is done for the warm boot case. The TAM configuration is restored from the Config DB and TAM functionality will continue to work as it is through a warm boot. + +# 8 Scalability + +N/A + +# 9 Unit Test + +## CLI + +TBD From d5488687bd332c4a96ec7dcf6359b08be41e1b0f Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Thu, 2 Jul 2020 00:02:18 +0530 Subject: [PATCH 03/27] Minor formatting updates --- devops/tam/tam-hld.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/devops/tam/tam-hld.md b/devops/tam/tam-hld.md index bb5756dce4c3..d06d2f3dd03e 100644 --- a/devops/tam/tam-hld.md +++ b/devops/tam/tam-hld.md @@ -194,15 +194,15 @@ TAM\_COLLECTOR\_TABLE 1) "TAM_COLLECTOR_TABLE|collector1" > HGETALL "TAM_COLLECTOR_TABLE|collector1" - 1) "ipaddress" - 2) "10.20.2.1" - 3) "port" - 4) "6050" - 5) "ipaddress-type" - 6) "ipv4" - 7) "protocol" - 8) "UDP" - 9) "encapsulation" + 1) "ipaddress" + 2) "10.20.2.1" + 3) "port" + 4) "6050" + 5) "ipaddress-type" + 6) "ipv4" + 7) "protocol" + 8) "UDP" + 9) "encapsulation" 10) "NONE" TAM\_FEATURES\_TABLE @@ -221,7 +221,7 @@ TAM\_FEATURES\_TABLE 4)"TAM_FEATURES_TABLE|thresholds” > hgetall "tam_features_table|ifa” - 1) "status" + 1) "status" 2) "active" TAM\_SAMPLINGRATE\_TABLE @@ -239,7 +239,7 @@ TAM\_SAMPLINGRATE\_TABLE 2)"TAM_FEATURES_TABLE|lazy" > hgetall "tam_features_table|aggressive” - 1) "sampling-rate" + 1) "sampling-rate" 2) 1000 ### 3.2.2 APP DB @@ -302,7 +302,7 @@ TAM\_SAMPLINGRATE\_TABLE 2)"TAM_FEATURES_TABLE|lazy" > hgetall "tam_features_table|aggressive” - 1) "sampling-rate" + 1) "sampling-rate" 2) 1000 ### 3.2.4 ASIC DB From 23ff6ac1e7922794d8617d5332caf6bb35527d9e Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Thu, 2 Jul 2020 20:21:39 +0530 Subject: [PATCH 04/27] Minor format changes --- devops/tam/tam-hld.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/devops/tam/tam-hld.md b/devops/tam/tam-hld.md index d06d2f3dd03e..bb3bbc345826 100644 --- a/devops/tam/tam-hld.md +++ b/devops/tam/tam-hld.md @@ -83,7 +83,7 @@ This document provides general information about the TAM infrastructure implemen ## Scope - SAI community defined a Telemetry and Monitoring specification that defines a unified interface - [TAM] (https://github.com/opencomputeproject/SAI/tree/master/doc/TAM) - for provisioning and monitoring various telemetry and monitoring technologies / application. + SAI community defined a Telemetry and Monitoring specification that defines a unified interface - [TAM](https://github.com/opencomputeproject/SAI/tree/master/doc/TAM) - for provisioning and monitoring various telemetry and monitoring technologies / application. This document describes the high level design of TAM infrastructure in SONiC. The design is intended to help implement TAM applications that use and share the common TAM infrastructure. @@ -136,7 +136,7 @@ A container called 'tam' is introducted as a holder for all TAM applications, in ### 1.2.3 SAI Overview -The SAI TAM spec specifies the TAM APIs to be used to configure the TAM functionality. Please refer to SAI-Proposal-TAM2.0-v2.0.docx in [https://github.com/opencomputeproject/SAI/tree/master/doc/TAM](https://github.com/opencomputeproject/SAI/tree/master/doc/TAM) for more details. +The SAI TAM spec specifies the TAM APIs to be used to configure the TAM functionality. Please refer to SAI-Proposal-TAM2.0-v2.0.docx in https://github.com/opencomputeproject/SAI/tree/master/doc/TAM for more details. # 2 Functionality @@ -284,7 +284,7 @@ TAM\_FEATURES\_TABLE 4)"TAM_FEATURES_TABLE|thresholds” > hgetall "tam_features_table|ifa” - 1) "status" + 1) "status" 2) "unsupported" TAM\_SAMPLINGRATE\_TABLE @@ -333,7 +333,7 @@ N/A ## 3.6 SAI -The SAI TAM API spec defines all TAM APIs supported in SAI. Please refer to SAI-Proposal-TAM2.0-v2.0.docx in [https://github.com/opencomputeproject/SAI/tree/master/doc/TAM](https://github.com/opencomputeproject/SAI/tree/master/doc/TAM) for more details. +The SAI TAM API spec defines all TAM APIs supported in SAI. Please refer to SAI-Proposal-TAM2.0-v2.0.docx in https://github.com/opencomputeproject/SAI/tree/master/doc/TAM for more details. ## 3.7 CLI From afa53c154a718b650879b538b5ffb8aefd3d1e02 Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Fri, 3 Jul 2020 19:08:33 +0530 Subject: [PATCH 05/27] Update tam-hld.md --- devops/tam/tam-hld.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/devops/tam/tam-hld.md b/devops/tam/tam-hld.md index bb3bbc345826..f1aa605c9a80 100644 --- a/devops/tam/tam-hld.md +++ b/devops/tam/tam-hld.md @@ -365,6 +365,8 @@ A collector is typically a machine reachable from the switch, where the telemetr TAM infrastructure allows us to create a collector by specifying the reachability information and associating a reference to this collector. This reference, a name, can be specified as a collector by individual feature configurations. +A collector, if associated with any TAM application, can't be removed. The `no` command fails citing existing association. + The following collector attribtes are supported. | **Attribute** | **Description** | @@ -391,6 +393,8 @@ TBD TAM infrastructure supports setting up a sampling configuration on a per-interface basis and refer to this sampler configuration from the application which support sampling for the traffic. +A sampler, if associated with any TAM application, can't be removed. The `no` command fails citing existing association. + The following sampling attribtes are supported. | **Attribute** | **Description** | From 26dec072acee53d1e96c482464716d51cfeee7b9 Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Fri, 3 Jul 2020 19:12:49 +0530 Subject: [PATCH 06/27] IFA HLD --- devops/tam/tam-inband-flow-analyser.md | 555 +++++++++++++++++++++++++ 1 file changed, 555 insertions(+) create mode 100644 devops/tam/tam-inband-flow-analyser.md diff --git a/devops/tam/tam-inband-flow-analyser.md b/devops/tam/tam-inband-flow-analyser.md new file mode 100644 index 000000000000..35f176ca7d22 --- /dev/null +++ b/devops/tam/tam-inband-flow-analyser.md @@ -0,0 +1,555 @@ +# IFA : Inband Flow Analyzer + +## Highlevel Design Document + +### Rev 0.1 + +# Table of Contents + +- [IFA : Inband Flow Analyzer](#ifa---inband-flow-analyzer) + * [Highlevel Design Document](#highlevel-design-document) + + [Rev 0.1](#rev-01) +- [Table of Contents](#table-of-contents) + * [List of Tables](#list-of-tables) + * [Revision](#revision) + * [About This Manual](#about-this-manual) + * [Scope](#scope) + * [Definition/Abbreviation](#definition-abbreviation) + + [Table 1: Abbreviations](#table-1--abbreviations) +- [1 Feature Overview](#1-feature-overview) + * [1.1 Requirements](#11-requirements) + + [1.1.1 Functional Requirements](#111-functional-requirements) + + [1.1.2 Configuration and Management Requirements](#112-configuration-and-management-requirements) + + [1.1.3 Scalability Requirements](#113-scalability-requirements) + * [1.2 Design Overview](#12-design-overview) + + [1.2.1 Basic Approach](#121-basic-approach) + + [1.2.2 Container](#122-container) + + [1.2.3 SAI Overview](#123-sai-overview) +- [2 Functionality](#2-functionality) + * [2.1 Target Deployment Use Cases](#21-target-deployment-use-cases) + * [2.2 Functional Description](#22-functional-description) +- [3 Design](#3-design) + * [3.1 Overview](#31-overview) + * [3.2 DB Changes](#32-db-changes) + + [3.2.1 CONFIG DB](#321-config-db) + + [3.2.2 APP DB](#322-app-db) + + [3.2.3 STATE DB](#323-state-db) + + [3.2.4 ASIC DB](#324-asic-db) + + [3.2.5 COUNTER DB](#325-counter-db) + * [3.3 Daemons](#33-daemons) + * [3.4 Switch State Service Design](#34-switch-state-service-design) + + [3.4.1 Orchestration Agent](#341-orchestration-agent) + + [3.4.2 Other Process](#342-other-process) + * [3.5 SyncD](#35-syncd) + * [3.6 SAI](#36-sai) + * [3.7 CLI](#37-cli) + + [3.7.1 Data Models](#371-data-models) + + [3.7.2 Configuration Commands](#372-configuration-commands) + - [3.7.2.1 Activating and Deactivating IFA](#3721-activating-and-deactivating-ifa) + - [3.7.2.2 Setting up flows for monitoring with IFA](#3722-setting-up-flows-for-monitoring-with-ifa) + + [3.7.3 Show Commands](#373-show-commands) + - [3.7.3.1 Listing the IFA attributes](#3731-listing-the-ifa-attributes) + - [3.7.3.1 Listing the IFA flows](#3731-listing-the-ifa-flows) + + [3.7.5 Debug Commands](#375-debug-commands) + + [3.7.6 REST API Support](#376-rest-api-support) +- [4 Flow Diagrams](#4-flow-diagrams) + * [4.1 Config call flow](#41-config-call-flow) +- [5 Error Handling](#5-error-handling) + * [CLI](#cli) + * [IFAOrch](#ifaorch) +- [6 Serviceability and Debug](#6-serviceability-and-debug) +- [7 Warm Boot Support](#7-warm-boot-support) +- [8 Scalability](#8-scalability) +- [9 Unit Test](#9-unit-test) + * [CLI](#cli-1) +- [Broadcom Internal Information : To be removed before publishing externally.](#broadcom-internal-information---to-be-removed-before-publishing-externally) + * [Key notes](#key-notes) + * [Specific Limitations](#specific-limitations) + +## List of Tables + +[Table 1: Abbreviations](#table-1-abbreviations) + +## Revision + +| Rev | Date | Author | Change Description | +|---|-----------|------------------|-----------------------------------| +| 0.1 | 07/01/2020 | Bandaru Viswanath | New draft for SONiC IFA feature | + +## About This Manual + +This document provides general information about the Inband Flow Analyzer (IFA) feature implementation in SONiC. + +## Scope + +The term Inband Telemetry refers to the set of technologies of the Switch, that embed useful metadata as part of packets that are transiting the Switch. SAI community defined a Telemetry and Monitoring specification that defines a unified interface - [TAM](https://github.com/opencomputeproject/SAI/tree/master/doc/TAM) - for provisioning and monitoring these technologies. Inband Flow Analyzer feature is one such Inband Telemetry technologies. + +The design as specified in this document uses the common [SONiC TAM](tam.hld) infrastructure. + +This document describes the high level design of Inband Flow Analyzer feature in SONiC. + +## Definition/Abbreviation + +### Table 1: Abbreviations + +| **Term** | **Meaning** | +|--------------------------|-------------------------------------| +| SAI | Switch Abstraction Interface | +| TAM | Telemetry and Monitoring | +| IFA | Inband Flow Analyzer | + +# 1 Feature Overview + +Inband Flow Analyzer (IFA) records flow specific information from switches across a network for specific flows. It is described at the IETF draft [https://datatracker.ietf.org/doc/draft-kumar-ippm-ifa](https://datatracker.ietf.org/doc/draft-kumar-ippm-ifa). The protocol defines an IFA header to mark the flow and direct the collection of analyzed metadata per marked packet per hop across the network. Some of the text in the document is taken from the above IETF draft, for contextual purposes. + +IFA performs flow analysis, and possible actions on the flow data, inband. Once a flow is enabled for analysis, an Ingress node makes a copy of the flow or samples the live traffic flow, or tags a live traffic flow for analysis and data collection. Copying of a flow is done by sampling or cloning the flow. These new packets are representative packets of the original flow and possess the exact same characteristics as the original flow. This means that IFA packets traverse the same path in the network and same queues in the networking element as the original packet would. + +The intermediate nodes keep appending their own metadata to the IFA-tagged packets before forwarding them. The terminating node is responsible for terminating the IFA flow by summarizing/extracting the metadata of the entire path and sending it to a designated Collector. A network monitoring application on a Collector can analyze the telemetry information provided by IFA feature and provide full visibility of a network by providing metrics such as latency, packet loss and full network path that packet travels. A complete description of the functionality can be obtained from the IETF draft mentioned above. + +The IFA feature in SONiC allows the user to setup flow monitoring sessions for specific flows. The switch may be marked as an ingress node, a transit node or a terminating node for a flow. A Collector, identified by an IP address and associated transport parameters, can be configured on the terminating nodes to send the extracted metadata. More details on provisioning are avaiable in subsequent sections. + +## 1.1 Requirements + +### 1.1.1 Functional Requirements + +1.0 IFA feature allows user to configure IFA session on a given switch and send the telemetry metadata to a specified collector. IFA session is defined by flow classifiers that are used to identify a flow that needs to be monitored for inband telemetry. + +1.1 IFA feature is accomplished by configuring IFA session on various nodes that act as ingress, intermediate and egress nodes. The IFA role is per flow on a Swich. For example, any given switch can act as an ingress node for one flow and as an intermediate node for another flow. + +1.2 Ingress nodes sample the flow and tags the sampled packets for analysis and data collection, and insert own metadata. + +1.3 Intermediate node is responsible for identifying IFA tagged flows and insertion of telemetry metadata. + +1.4 Egress node is responsible for terminating the IFA flow by summarizing the telemetry data of the entire path and sending it to collector as well as dropping the sampled packets. + +2.0 IFA provisioning as listed below. + +2.1 TAM switch identifier to uniquely identify a switch in network and IFA header of the reports carry this information. + +2.2 Enterprise Id to be used for the IPFIX export records. + +2.3 ACL configuration to identify a flow-group to insert IFA metadata. + +2.4 TAM sampler configuration to indicate the sampling rate for the flow. + +2.5 TAM collector configuration that can be attached to IFA flow on egress device to forward collected telemetry data. + +3.0 IFA feature is by default de-activated on the switch, and requires an explicit user intervention to activate it in the configuration. + +3.1 If the IFA feature can't be supported/activated on the switch, any attempt to activate the IFA feature returns appropriate failure. + +4.0 The IFA feature is supported on physical and LAG ports. + +4.1 The IFA feature supports dynamic-port-breakout and aliasing features. + +5.0 The IFA feature will be a part of the TAM container along with other TAM features. + +### 1.1.2 Configuration and Management Requirements + +The TAM IFA feature supports the new management framework and KLISH CLI for configuration. The following configuration and status information is available. + +- To activate / de-activate IFA feature +- To create/clear appropriate IFA configuration for ingress, intermediate and egress nodes, on a per-flow group basis. +- To display current status and statistics for the IFA on a per flow-group basis. + +### 1.1.3 Scalability Requirements + +- Number of IFA flow-groups that can be supported is proportional to the availability of resources in hardware such as ACLs. No specific constraints are imposed. +- Only a single collector is supported. + +## 1.2 Design Overview + +### 1.2.1 Basic Approach + +The IFA feature is newly developed. + +### 1.2.2 Container + +A container called 'tam' exists as a container for all TAM applications, including the IFA application. + +### 1.2.3 SAI Overview + +The SAI TAM spec specifies the TAM APIs to be used to configure the TAM functionality. Please refer to SAI-Proposal-TAM2.0-v2.0.docx in [https://github.com/opencomputeproject/SAI/tree/master/doc/TAM](https://github.com/opencomputeproject/SAI/tree/master/doc/TAM) for more details. + +# 2 Functionality + +## 2.1 Target Deployment Use Cases + +IFA is used to proactively monitor the network for faults and performance bottlenecks, it aids in detecting data plane faults and isolating them to a given device or location and assists in planning network capacity and projecting future load. Some of the key usecases are - + +- SLA conformance that require end-to-end path latency for targeted flows +- Idenitfying switches and flows that are undergoing congestion +- Identifying network bandwidth usage patterns +- Packet path and path change analysis + +## 2.2 Functional Description + +The IFA feature in SONiC allows the user to setup flow monitoring sessions for specific flows. The switch may be marked as an ingress node, a transit node or a terminating node for a flow. + +When IFA feature is activated, the switch will behave as intermediate node and perform IFA intermediate node actions. What it means is that the switch will append its own metadata to all IFA-tagged flows transiting the switch. Non IFA-tagged flows are not impacted. There may be multiple IFA intermediate nodes in the path for the IFA-tagged flows. + +When the switch is configured as an ingress node for any flow (or set of flows), the switch - + + - Makes a copy of a sampled packet from the flow based upon the configured sampling rate. + - Adds IFA tag to the sampled packet + - Adds its own metadata to the packet. + +The sampled packet is then forwarded along the same path as the original packet. + +When the switch is configured as an egress node for any flow (or set of flows), the switch - + +- Collectes the IFA sampled packets belonging to the flow +- Adds its own metadata +- Summarizes the telemetry data for the entire path, encapsulates the telemetry data as payload and sends it to collector. + +The sampled packet is then dropped at the egress node. + +At all other non-IFA activated nodes, IFA sampled packet is forwarded as a normal packet in the network. + +***Example IFA topology illustrating the packet paths and metadata*** + +![IFA topology](images/sample-ifa-topology.png) + +# 3 Design + +## 3.1 Overview + +***IFA Architecture*** + +![IFA architecture](images/IFA_Arch.JPG) + +The above diagram illustrates the architecture of the IFA feature within SONiC. + +Below is the call flow sequence specified in above architecture diagram + +1 IFA and ACL configuration from CLI is saved to CONFIG DB. + +2 IFA Manager reads IFA configuration from CONFIG DB, processes and validates the same. + +3 IFA Manager updates valid IFA configuration to APPL DB. + +4 ACL ORCH reads ACL configuration from CONFIG DB. + +5 IFA ORCH reads IFA configuration from APPL DB and creates/deletes TAM INT IFA objects. + +6 IFA ORCH checks for ACL table and ACL rule specified in IFA configuration. + +7 ACL ORCH will make SAI API calls to update ASIC DB. + +8 ACL ORCH notifies IFA ORCH about ACL rule creation/deletion. + +9 IFA ORCH attaches/detaches the TAM INT IFA object to/from ACL ENTRY. + +10, 11, 12 SYNCD reads IFA and ACL information from ASIC DB and configures ASIC accordingly. + +A CLI reads IFA ACL counters from COUNTER DB and displays it as output of show commands. + +## 3.2 DB Changes + +### 3.2.1 CONFIG DB + +TAM\_IFA\_TABLE + + ;Defines TAM IFA configuration in CONFIG_DB + + key = name ; name is ifa flow name and should be unique. + flowgroup = 1*255VCHAR ; Flow group reference + collector = 1*255VCHAR ; Collector Reference + sample-rate = 1*255VCHAR ; Sampler reference + node-type = ”INGRESS"/”EGRESS”/”INTERMEDIATE” + ; IFA Node type, INTERMEDIATE is the default + + Example: + > keys *TAM_IFA* + 1) "TAM_IFA_TABLE|ifa1" + + > hgetall "TAM_IFA_TABLE|ifa1" + 1) "flowgroup" + 2) "websrvrflows" + 3) "collector" + 4) "ifacol1" + 5) "sample-rate" + 6) "aggressive" + 7) "node-type" + 8) "ingress" + +### 3.2.2 APP DB + +TAM\_IFA\_FLOW\_TABLE + + ;Defines a TAM INT IFA flow configuration + + key = name ; name is flow name and should be + unique + acl-table-name = table-name ; Parameter to map to acl table to + the flow. + acl-rule-name = rule-name ; Parameter to map to acl rule to + the flow. + dst-ipaddress-type = "ipv4" / "ipv6" ; Optional parameter that indicates + collector IP address type. + dst-ipaddress = ipv4_prefix / ipv6_prefix ; Optional parameter that indicates + collector IP address. + dst-port = 1 * 4DIGIT ; Optional parameter that indicates + collector UDP port number + src-ipaddress = ipv4_prefix / ipv6_prefix ; Optional parameter that indicates + source IP address. + src-port = 1 * 4DIGIT ; Optional parameter that indicates + source port number + sampling-rate = 1 * 5DIGIT ; Optional parameter that indicates + the sampling rate for the packets + belonging to the flow that need + to be tagged with IFA meta-data. + One packet in every + ‘sampling-rate’ packets will be + tagged with IFA Metadata. + Note: This parameter is + applicable for switches + configured as the type + ingress-node, and will be ignored + for the other types. If this + field is not specified, it + indicates a 1:1 sampling. + Range is 1 to 10000. A value of 1 + indicates that all packets + belonging to this flow will be + sampled. + + Example: + 127.0.0.1:6379> KEYS *TAM_INT_IFA_FLOW* + 1) "TAM_INT_IFA_FLOW_TABLE:F1" + 2) "TAM_INT_IFA_FLOW_TABLE:F2" + + 127.0.0.1:6379> HGETALL TAM_INT_IFA_FLOW_TABLE:F1 + 1) "acl-table-name" + 2) "T1" + 3) "acl-rule-name" + 4) "R1" + 5) "dst-ipaddress-type" + 6) "ipv4" + 7) "dst-ipaddress" + 8) "10.20.30.40" + 9) "dst-port" + 10) "2233" + 11) "src-port" + 12) "9070" + 13) "src-ipaddress" + 14) "10.52.141.231" + + 127.0.0.1:6379> HGETALL TAM_INT_IFA_FLOW_TABLE:F2 + 1) "acl-table-name" + 2) "T2" + 3) "acl-rule-name" + 4) "R2" + 5) "sampling-rate" + 6) "1000" + +### 3.2.3 STATE DB + +N/A + +### 3.2.4 ASIC DB + +N/A + +### 3.2.5 COUNTER DB + +N/A + +## 3.3 Daemons + +IFA manager daemon runs as part of TAM docker. IFA manager processes IFA configuration from CONFIG DB, validates for consistency and completeness of IFA configuration and updates valid IFA configuration to APPL DB. + +## 3.4 Switch State Service Design + +### 3.4.1 Orchestration Agent + +A new orchestration agent class, IFAOrch is added to convert the incoming IFA config to ASIC configuration. IFAOrch subscribes to the IFA tables of APPL DB and converts the configuration to the SAI TAM API call sequence described in section 3.6. + +IFAOrch maintains data pertaining to all the currently configured IFA entities and the associated TAM object bindings. TAM object bindings are re-used wherever possible. + +### 3.4.2 Other Process + +N/A + +## 3.5 SyncD + +N/A + +## 3.6 SAI + +The SAI TAM API spec defines all TAM APIs supported in SAI. Please refer to SAI-Proposal-TAM2.0-v2.0.docx in [https://github.com/opencomputeproject/SAI/tree/master/doc/TAM](https://github.com/opencomputeproject/SAI/tree/master/doc/TAM) for more details. + +***Below diagram provides details about various TAM objects needed to support IFA and their correlation*** + +![IFA TAM objects correlation](images/IFA_TAM_correlation.JPG) + +## 3.7 CLI + +### 3.7.1 Data Models + +The user facing data model is based on OpenConfig TAM yang model (TBD). The backend data model (SONiC YANG) will use the formats in CONFIG_DB & STATE_DB. See above sections. + +### 3.7.2 Configuration Commands + +#### 3.7.2.1 Activating and Deactivating IFA + +The command syntax for activating/de-activating the IFA feature on the switch is as follows: + +``` +sonic (config-tam-ifa)# [no] enable +``` +As noted earlier, the IFA activated switches act as intermediate nodes for all IFA-tagged flows transiting the switch. + +Deactivating IFA will purge all IFA configuration from the switch. + +#### 3.7.2.2 Setting up flows for monitoring with IFA + +A flow, (or a set of flows called a flow-group) may be associated with IFA as described below. + +- The IFA flow must have a unique name for referencing. +- The flow-group must be previously created with the `flow-group` command (under `config-tam` hierarchy). +- The switch can be setup to act as an ingress node or as an egress node. +- On ingress nodes, the sampling-rate can be set, by referencing a previously created sampler, created with the `sampler` command (under `config-tam` hierarchy). +- On the egress nodes, a collector must be associated with the flow, where the extracted metadata will be sent. The collector must be previously created with the `collector` command (under `config-tam` hierarchy).. + +When a flow that is previously associated with IFA has been de-associated (with the `no` command), the flow is no longer processed for IFA as an ingress node or as an egress-node by the switch. + +The following attribtes are supported for IFA flows. + +| **Attribute** | **Description** | +|--------------------------|-------------------------------------| +| `name` | A string that uniquely identifies the IFA flow | +| `flowgroup` | Specifies the name of *flow-group* | +| `collector` | Specifies the name of the *collector*, valid and mandatory for egress nodes | +| `sample-rate` | Specifies the name of the *sampler*, valid and mandatory for ingress nodes | +| `node-type` | Specifies the IFA role of the switch for the flow. Valid values are `"ingress"` and `"egresss"`| + +The command syntax for associating/de-associating the flows are as follows: + +``` +sonic(config-tam-ifa)# flow flowgroup [collector ] [sample-rate ] node-type {ingress | egress } + +sonic (config-tam-ifa)# no flow +``` + +### 3.7.3 Show Commands + +#### 3.7.3.1 Listing the IFA attributes + +The following command lists the switch-wide attributes that are in use. + +``` +sonic # show tam ifa +``` +Sample usage shown below. + +``` +sonic # show tam ifa + +Status : Active +Version : 2.0 +Switch ID : 2020 +Enterprise ID : 2345 + +``` + +#### 3.7.3.1 Listing the IFA flows + +The following command lists the details for all ifa flows or for a specific flow. Note that only explicitly configured tuples in the flow-group are displayed. + +``` +sonic # show tam ifa flows [] +``` + +Sample usage shown below. + +``` +sonic # show tam ifa flows + +Name Flow Group Collector Sampler Node Type +----------- ---------------- -------------- ------------- ---------- +http_236 udp_port_236 - aggresive Ingress +http_239 udp_port_239 - - Intermediate +http_241 udp_port_241 IFA_Col_i19 - Egress + +sonic # show tam ifa flow http_236 + +Flow : http_236 (Ingress) +Flow Group Name : udp_port_236 + SRC IP : 13.92.96.32 + DST IP : 7.72.235.82 + DST L4 Port : 236 +Collector : None +Sampler : aggresive +Packet Count : 7656 + +``` + +### 3.7.5 Debug Commands +N/A + +### 3.7.6 REST API Support + +The following REST API are supported - + +- BroadView REST API for IFA feature + - TBD : Provide reference and listlimitations +- REST API as obtained from the openconfig-tam module defintions + - TBD List these + + # 4 Flow Diagrams + +## 4.1 Config call flow + +All the configuration is stored in the CONFIG_DB via the management framework. + +# 5 Error Handling + +## CLI + +* CLI configuration sanity will be enforced by the CLI handler & CVL and any invalid configuration is rejected. An error is displayed to the user notifying the reason for rejection of the configuration. + +## IFAOrch + +- Any error occurring in the orchestration agent is logged appropriately via SWSS logging. +- Errors or failures of SAI APIs will be logged by IFAOrch. +- On failure of a SAI TAM API in the config sequence of section 3.6, the previously configured steps will be rolled back i.e previously created intermediate TAM objects for IFA etc will be destroyed. + +# 6 Serviceability and Debug + +N/A + +# 7 Warm Boot Support + +No special handling is done for the warm boot case. The TAM configuration is restored from the Config DB and TAM functionality will continue to work as it is through a warm boot. + +# 8 Scalability + +N/A + +# 9 Unit Test + +## CLI + +TBD + +# Broadcom Internal Information : To be removed before publishing externally. + +## Key notes + +* IFA 2.0 protocol is not documented in this specification. It may be requested via docSafe for the document number 56870-AN500-D1. + +* IFA 2.0 feature is very similar to the IFA 1.1 feature supported in 2.x and 3.0 release of Broadcom SONiC. They are almost identical from a provisioning perspetive. However, the protocol is very different. + +* IFA 2.0 feature is an *advanced* feature that is not available in all the Broadcom SONiC packages. + +## Specific Limitations + +IFA 2.0 feature in SONiC inherits the limitations of the underlying firmware and the hardware. These are listed below. + +1. Only a single collector is supported +2. IFA enabled flows that are tunneled are not supported +3. IFA enabled flows must be L3 & IPv4 flows +4. IFA is supported on TD3-X7 platforms only. +5. The flow path may not exceed 32 nodes +6. The sampled packet has about 128bytes of the original packet, and will be sent to the collector along with the aggregated metadata from individual nodes in the flow path. \ No newline at end of file From c2da9d03c2c37a61a01c760289978b0c301ed20a Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Fri, 3 Jul 2020 19:17:20 +0530 Subject: [PATCH 07/27] Update tam-inband-flow-analyser.md --- devops/tam/tam-inband-flow-analyser.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/devops/tam/tam-inband-flow-analyser.md b/devops/tam/tam-inband-flow-analyser.md index 35f176ca7d22..4454bf7667b5 100644 --- a/devops/tam/tam-inband-flow-analyser.md +++ b/devops/tam/tam-inband-flow-analyser.md @@ -264,13 +264,13 @@ TAM\_IFA\_TABLE 1) "TAM_IFA_TABLE|ifa1" > hgetall "TAM_IFA_TABLE|ifa1" - 1) "flowgroup" - 2) "websrvrflows" - 3) "collector" - 4) "ifacol1" - 5) "sample-rate" - 6) "aggressive" - 7) "node-type" + 1) "flowgroup" + 2) "websrvrflows" + 3) "collector" + 4) "ifacol1" + 5) "sample-rate" + 6) "aggressive" + 7) "node-type" 8) "ingress" ### 3.2.2 APP DB @@ -552,4 +552,4 @@ IFA 2.0 feature in SONiC inherits the limitations of the underlying firmware and 3. IFA enabled flows must be L3 & IPv4 flows 4. IFA is supported on TD3-X7 platforms only. 5. The flow path may not exceed 32 nodes -6. The sampled packet has about 128bytes of the original packet, and will be sent to the collector along with the aggregated metadata from individual nodes in the flow path. \ No newline at end of file +6. The sampled packet has about 128bytes of the original packet, and will be sent to the collector along with the aggregated metadata from individual nodes in the flow path. From 806321165412ab76aded57036044bd6991280159 Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Fri, 3 Jul 2020 19:23:41 +0530 Subject: [PATCH 08/27] Update tam-inband-flow-analyser.md --- devops/tam/tam-inband-flow-analyser.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/devops/tam/tam-inband-flow-analyser.md b/devops/tam/tam-inband-flow-analyser.md index 4454bf7667b5..1a27ac7e985e 100644 --- a/devops/tam/tam-inband-flow-analyser.md +++ b/devops/tam/tam-inband-flow-analyser.md @@ -208,7 +208,7 @@ At all other non-IFA activated nodes, IFA sampled packet is forwarded as a norma ***Example IFA topology illustrating the packet paths and metadata*** -![IFA topology](images/sample-ifa-topology.png) +![IFA topology](sample-ifa-topology.png) # 3 Design @@ -216,7 +216,7 @@ At all other non-IFA activated nodes, IFA sampled packet is forwarded as a norma ***IFA Architecture*** -![IFA architecture](images/IFA_Arch.JPG) +![IFA architecture](ifa-arch.JPG) The above diagram illustrates the architecture of the IFA feature within SONiC. @@ -381,7 +381,7 @@ The SAI TAM API spec defines all TAM APIs supported in SAI. Please refer to SAI- ***Below diagram provides details about various TAM objects needed to support IFA and their correlation*** -![IFA TAM objects correlation](images/IFA_TAM_correlation.JPG) +![IFA TAM objects correlation](ifa-tam-correlation.JPG) ## 3.7 CLI From ab90b58bb8af0834f2a7c4c23b90d1e7378bf30f Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Fri, 3 Jul 2020 19:25:05 +0530 Subject: [PATCH 09/27] add images --- devops/tam/ifa-arch.JPG | Bin 0 -> 47996 bytes devops/tam/ifa-tam-correlation.JPG | Bin 0 -> 26250 bytes devops/tam/sample-ifa-topology.png | Bin 0 -> 367524 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 devops/tam/ifa-arch.JPG create mode 100644 devops/tam/ifa-tam-correlation.JPG create mode 100644 devops/tam/sample-ifa-topology.png diff --git a/devops/tam/ifa-arch.JPG b/devops/tam/ifa-arch.JPG new file mode 100644 index 0000000000000000000000000000000000000000..925f5a290bb7a865b0da523532bc101a37bac537 GIT binary patch literal 47996 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�JpfizHTqNfY?R|JM)^U-hxKvOi<4i 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 literal 0 HcmV?d00001 diff --git a/devops/tam/ifa-tam-correlation.JPG b/devops/tam/ifa-tam-correlation.JPG new file mode 100644 index 0000000000000000000000000000000000000000..ea290616bad389b25b238d3c5f65c68e7d34e69e GIT binary patch literal 26250 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 z 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

rMl|fr3?c(vi?urT{Kp0Dgw)>LCXG43jSYA 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

KSzl{#UnpP`7d(oj|PIFE0+ns^I=` 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 literal 0 HcmV?d00001 From 9b1d418ba261b0df545b42abd39c34fb71f315da Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Sun, 5 Jul 2020 23:58:59 +0530 Subject: [PATCH 10/27] Typos and formatting updates --- devops/tam/tam-hld.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/devops/tam/tam-hld.md b/devops/tam/tam-hld.md index f1aa605c9a80..839f5c19bc10 100644 --- a/devops/tam/tam-hld.md +++ b/devops/tam/tam-hld.md @@ -100,7 +100,7 @@ This document describes the high level design of TAM infrastructure in SONiC. Th For an introduction to TAM, reader is encouraged to consult the SAI specification referred earlier. In general, TAM deals with dataplane telemetry applications that are supported by the silicon. The SONiC NOS is responsible for provisioning the dataplane application behavior, using the appropriate SAI API. -There are many common aspects among the TAM features, as defined in the . For example, almost all of them will require a controller to be setup, which is the intended receiver for the telemetry information. Likewise, when the applications may allow a per-flow (or a group of flows) configuration. The TAM infrastructure implements these common aspects so that applications can share the design and implementation without having to re-implement from scratch. More details on provisioning are avaiable in subsequent sections. +There are many common aspects among the TAM features, as defined in the TAM specification. For example, almost all of them will require a controller to be setup, which is the intended receiver for the telemetry information. Likewise, when the applications may allow a per-flow (or a group of flows) configuration. The TAM infrastructure implements these common aspects so that applications can share the design and implementation without having to re-implement from scratch. More details on provisioning are avaiable in subsequent sections. ## 1.1 Requirements @@ -166,10 +166,10 @@ TAM\_SWITCH\_TABLE enterprise-id = 1 * 5DIGIT ; IPFIX Example: - 127.0.0.1:6379[4]> keys *TAM_DEVICE* + > keys *TAM_SWITCH* 1) "TAM_SWITCH_TABLE|global" - 127.0.0.1:6379[4]> HGETALL "TAM_SWITCH_TABLE|global" + > HGETALL "TAM_SWITCH_TABLE|global" 1)"switch-id” 2)54325 3)"enterprise-id" @@ -209,7 +209,7 @@ TAM\_FEATURES\_TABLE ;Defines TAM Features configuration in CONFIG_DB - key = name ; Feature name and should be among + key = name ; Feature name and should be among ; ifa, drop-monitor, tail-stamping, thresholds status = ”active" / ”inactive" ; Activate or Turnoff the feature @@ -252,16 +252,16 @@ TAM\_SWITCH\_TABLE ;Operational TAM Global Status in STATE_DB - key = global ; Only one instance and - ; has a fixed key ”global". + key = global ; Only one instance and + ; has a fixed key ”global" op-switch-id = 1 * 5DIGIT ; Currently used switch-id op-enterprise-id = 1 * 5DIGIT ; Currently used enterprise-id Example: - 127.0.0.1:6379[4]> keys *TAM_DEVICE* + > keys *TAM_SWITCH* 1) "TAM_SWITCH_TABLE|global" - 127.0.0.1:6379[4]> HGETALL "TAM_SWITCH_TABLE|global" + > HGETALL "TAM_SWITCH_TABLE|global" 1)”op-switch-id” 2)54325 3)”op-enterprise-id" From d002a50c6d978b512b223f11e88349fb20cc0196 Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Mon, 6 Jul 2020 00:05:22 +0530 Subject: [PATCH 11/27] Clarified IFA flows as IFA monitoring sessions, including CLI --- devops/tam/tam-inband-flow-analyser.md | 40 +++++++++++++------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/devops/tam/tam-inband-flow-analyser.md b/devops/tam/tam-inband-flow-analyser.md index 1a27ac7e985e..3137f5c61d0c 100644 --- a/devops/tam/tam-inband-flow-analyser.md +++ b/devops/tam/tam-inband-flow-analyser.md @@ -154,7 +154,7 @@ The TAM IFA feature supports the new management framework and KLISH CLI for conf ### 1.1.3 Scalability Requirements -- Number of IFA flow-groups that can be supported is proportional to the availability of resources in hardware such as ACLs. No specific constraints are imposed. +- Number of IFA sessions that can be supported is proportional to the availability of resources in hardware such as ACLs. No specific constraints are imposed. - Only a single collector is supported. ## 1.2 Design Overview @@ -252,7 +252,7 @@ TAM\_IFA\_TABLE ;Defines TAM IFA configuration in CONFIG_DB - key = name ; name is ifa flow name and should be unique. + key = name ; name is ifa flow name and should be unique. flowgroup = 1*255VCHAR ; Flow group reference collector = 1*255VCHAR ; Collector Reference sample-rate = 1*255VCHAR ; Sampler reference @@ -315,11 +315,11 @@ TAM\_IFA\_FLOW\_TABLE sampled. Example: - 127.0.0.1:6379> KEYS *TAM_INT_IFA_FLOW* + > KEYS *TAM_INT_IFA_FLOW* 1) "TAM_INT_IFA_FLOW_TABLE:F1" 2) "TAM_INT_IFA_FLOW_TABLE:F2" - 127.0.0.1:6379> HGETALL TAM_INT_IFA_FLOW_TABLE:F1 + > HGETALL TAM_INT_IFA_FLOW_TABLE:F1 1) "acl-table-name" 2) "T1" 3) "acl-rule-name" @@ -335,7 +335,7 @@ TAM\_IFA\_FLOW\_TABLE 13) "src-ipaddress" 14) "10.52.141.231" - 127.0.0.1:6379> HGETALL TAM_INT_IFA_FLOW_TABLE:F2 + > HGETALL TAM_INT_IFA_FLOW_TABLE:F2 1) "acl-table-name" 2) "T2" 3) "acl-rule-name" @@ -404,32 +404,32 @@ Deactivating IFA will purge all IFA configuration from the switch. #### 3.7.2.2 Setting up flows for monitoring with IFA -A flow, (or a set of flows called a flow-group) may be associated with IFA as described below. +A IFA monitoring session associated a previously defined flow-group, with IFA as described below. -- The IFA flow must have a unique name for referencing. +- The IFA session must have a unique name for referencing. - The flow-group must be previously created with the `flow-group` command (under `config-tam` hierarchy). -- The switch can be setup to act as an ingress node or as an egress node. +- The switch can be setup to act as an ingress node or as an egress node for this session. - On ingress nodes, the sampling-rate can be set, by referencing a previously created sampler, created with the `sampler` command (under `config-tam` hierarchy). - On the egress nodes, a collector must be associated with the flow, where the extracted metadata will be sent. The collector must be previously created with the `collector` command (under `config-tam` hierarchy).. -When a flow that is previously associated with IFA has been de-associated (with the `no` command), the flow is no longer processed for IFA as an ingress node or as an egress-node by the switch. +When a sesssion that is previously created is removed (with the `no` command), the associated flows are no longer processed for IFA as an ingress node or as an egress-node by the switch. -The following attribtes are supported for IFA flows. +The following attribtes are supported for IFA sessions. | **Attribute** | **Description** | |--------------------------|-------------------------------------| -| `name` | A string that uniquely identifies the IFA flow | +| `name` | A string that uniquely identifies the IFA session | | `flowgroup` | Specifies the name of *flow-group* | | `collector` | Specifies the name of the *collector*, valid and mandatory for egress nodes | | `sample-rate` | Specifies the name of the *sampler*, valid and mandatory for ingress nodes | | `node-type` | Specifies the IFA role of the switch for the flow. Valid values are `"ingress"` and `"egresss"`| -The command syntax for associating/de-associating the flows are as follows: +The command syntax for creating /removing the sessions are as follows: ``` -sonic(config-tam-ifa)# flow flowgroup [collector ] [sample-rate ] node-type {ingress | egress } +sonic(config-tam-ifa)# session flowgroup [collector ] [sample-rate ] node-type {ingress | egress } -sonic (config-tam-ifa)# no flow +sonic (config-tam-ifa)# no session ``` ### 3.7.3 Show Commands @@ -453,18 +453,18 @@ Enterprise ID : 2345 ``` -#### 3.7.3.1 Listing the IFA flows +#### 3.7.3.1 Listing the IFA sessions -The following command lists the details for all ifa flows or for a specific flow. Note that only explicitly configured tuples in the flow-group are displayed. +The following command lists the details for all ifa sessions or for a specific session. Note that only explicitly configured tuples in the associated flow-group are displayed. ``` -sonic # show tam ifa flows [] +sonic # show tam ifa sessions [] ``` Sample usage shown below. ``` -sonic # show tam ifa flows +sonic # show tam ifa sessions Name Flow Group Collector Sampler Node Type ----------- ---------------- -------------- ------------- ---------- @@ -472,9 +472,9 @@ http_236 udp_port_236 - aggresive Ingress http_239 udp_port_239 - - Intermediate http_241 udp_port_241 IFA_Col_i19 - Egress -sonic # show tam ifa flow http_236 +sonic # show tam ifa sessions http_236 -Flow : http_236 (Ingress) +Session : http_236 (Ingress) Flow Group Name : udp_port_236 SRC IP : 13.92.96.32 DST IP : 7.72.235.82 From d2f3e9777fcf9e8ba8efbba318a859f03674a08c Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Mon, 6 Jul 2020 00:05:37 +0530 Subject: [PATCH 12/27] Clarified IFA flows as IFA monitoring sessions, including CLI From 0d4de2d4354b68946d8be8547181018a370770a2 Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Mon, 6 Jul 2020 12:19:45 +0530 Subject: [PATCH 13/27] SAI Object Hierarchy is updated --- devops/tam/ifa-tam-correlation.JPG | Bin 26250 -> 60146 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/devops/tam/ifa-tam-correlation.JPG b/devops/tam/ifa-tam-correlation.JPG index ea290616bad389b25b238d3c5f65c68e7d34e69e..c82ef81052eaa5a4774f526bbc3bc264e136ee05 100644 GIT binary patch literal 60146 zcmc$`byQUCzc);Wl%j%)gi<2iT^7mobI$E=J!?JxzO&Yzea&8b?<>CX`PMa&I$A0;Hy+#|ARwSoef>h0fPjpQfPk=) z0{>0G5cyCNeCc#sDn}UFZ@BsnoKeyly1wy9(ZNDOX zLO}dq*NF%SBAf_F{`(#+{P~|xJpTCSng4Sp&L{luyYbiZiT>wqGO~Q)|7jCe{`1(Y za<|*~6Q##%V{iQMIR7~aRdqT35D+L4sJ>9ve@}SWL7vXs@0)Kb`so)nnKUtp5`K^$ z*(mHkPEvoTPqC9O;YJ04nzkE&P5$#P*QiAo)1_UGVdK>8pG_b66Yg;8-gzm^tyB2= z@lB3|ui4X9WSu=#dLi2WzEH5JWIyCX?$BOMwRc5DTSc_8G6B)e4+JD^1cVey|GzXR zC`gtNJlk=VxSTlH?O36kAC%51vkw(*S(YySElYu8qY3PYD(R&J6ESYWZBr-s6%!8A zd=HWm9=~w2^j;V{IbEh;@CNHWh(WXv<@0~%5Upa>B}KSYZR$IZNKigSHLANaaX(qZ zzrT@^nmR}Hq66IzSPaGuTKveUSn740LB|7Pmb{WdoD^(OHD_28=%~#lz;yZdE&z;5 zO{9M;Lc*p4B-$Oz5zV{mRDC75rnDHO9fR!<^F6#oEfIlR1U>m1&!I1Vl)X*5)!Pzk972i2AUK9$f6{KgeD#( z#np5)&8~!8ta5U`wxv+Y4<@;~z8*~jUjj1oqoKBkTsBgD05wwPe~Fj>l*Egldf>So z$n1GHvB1cpcL*$qDNjQ2Y9p^w?biSa(aizP{0og5REZ$2iYy+x^H29p8E{&n< z-VKxl*~4}=9hZMbVZxRS@U!lWf#Uld5gnIv1MZiEwiSMkq$Z?D*2-_bXh1DPuuPh- z`vJ}l=wgnENB?q9`7^7^FNF6i{itc_7ARF@wcMD*9mcXHaKQ1j5!toAEC&N8W|1(Z z8-y9#C|EPZKIHJh2Y6aj=>Df7Ih`R+zcrcqn_f>gJ_QdGk~>h$BoZL1Y_AG}>#2zA ztPW=~)+|nY1%U~ICtZE&=LY zzK!GipVOKJkx|TGWFB0UP7#scdbGsUOG-*ep`Xy%>g_Np%EUrf+_>YZtDkjHaJ$NB zz~V}}?K0o%wi0;9{u3RE^D_d}TM<8ufd|6PVC>)@T+xcRmDMK7gA_zn zT2@vbovr~}vtra!hDCXP3&Y2dVDWg(;a&W4z&=s^pCPJjoSVFU-GS=t29>_%B6n4bZAyVM&>af*RD)i zRu$EUtg@dZRj)&P;1$7;x|O5j#Nir;V7=duJsX6pxEx*O1=;&5a<9Ow+W zE6?)yTO{Sb97{lC#~trt-8nu0e;&*#??9ZXMn%Wx>zf&e)-eXD}nuG+BD+lAoJRj!lP% z@Vd8guQ3An<8NK6GfvWHeoyEZHqB=4mqKtR7%W;`CGR_5AiT9nNl3BH#YUIvC;N4U z@G&a`*<%J&Ry+Vz|CobhNCQ7j`}~(2+z>$#pbKD&yO1LIMVOKnQ8y}P)vK?c`0sU` zWfQ`7DG?Ukv%6_V!2j`?RWK1U26;k!>-$suA{qSB;NpLQf1hHE{5#7(N`JA$f2n*W zms?M)td%5tH1-jx_vwYZINdWBFXsF$MP5)n)rG)=u zmj5mOrFX*63}oBywK7=MJGM8><#h1N*h~32MCZEjOtDqx2DEz zp{KZJMO5kde2(~6Wd9qB?x=luPI!a!)%*V!Dk%})wzAF-V~YF!m)ifoQS1h1XO~hz z4+Y&{g#W*qj#fl`)M6f6Z+!lrJrNiu?qZmWH%ngvxYSQ8C#t4 zMg*Ck#k^$85ka`|*`w;EPYnvqiil#>kg`Az1T*P*~9xWX{(dx=)BM7Ub_Xrs) zPG7yy2TvXk-N^3wi*vp`j)!(B{Ye&JU%X7IZIY%le*6#N?6}vt{9Maxu@3ysfrS86zY|y7;rZ2LdLJwCyL-=U_=>>87wYg7yh?dN|w+?)v$iE?r zAnb%Y?vT)Zs%x$l(O7GWJ!^a|2>-oy1l=3x5KB}mM1fTgr&5B1%gzj&fQc1`d zR5Rfb$yw}Wcpde6?6g__iOu~n#vS?F0J~6x zn)z({GrR8BiAl{}e9jJkUQq(mRICGY#aExFYhdloBc=9P8f(#zCWTBfC@BAVu+Ga@4 zSp^EOYcbxuZ?yNZ!SO07C~(Bwf7M!AcFNw?r$_D#t}=o;4a;_U!)H9}{z_|UH{1O> z{fRI+l7J8+u-<9;FO!EY-5PMQW)sa$=~p$?g)+FZ-;p~a33V~N>lLnadW#~^tPVR{8*Ds_QT?aO<_iY0cQ2xy-fFqu>YSS$tRLC@puZ}w z9e^aEt^C^_#Upq-1DQ`9-&2D>11v2E)3$%CSik(j(=l1A^VrZCd7ZbNe^j(Pm&wC{ zLIo!P%#*m%o$7-|)>|KW?;Am`oh#)oR1-nP47N^Ap4yyveRGFyOEzkQ2_iwi?z|=%Y9Y$4l}){xwYvU?>*@W**Ihq|=KMRh1Vkr+1@Zd-n7}1kIT9sW zc@pHbEIu&Xbmt|P(K21%7zXl9>6WWv0~r=-roV;bsTNz!7edMBTWjxYcLv*0^m3X* zrEl}NnEXG>?tUzTZTeE(2*>Q}fksnzFBl%iQQREJ`v5nbYU~2;W-&F7?^xoVex^oo zEq+tk8g70@xrSadfU!em~<70a6-bq2zRRwW0Yiw+-cYkhl4e8gL0e)ag*KCwVw&No`&a$>~koa~M-wpKd&{n6Fpzkp>gZ*|d zJ_J)1o;SaqLV;1muUk06zJAww8~$j8q^L1vp~SGNePQJ%woPc!j4Y!tRxOEF|ForK z)?j67#l^tIc%T)wUonD4osM9j=(n2R68e6uN!`8Cm!ep|o^a^zbj~jp()Bl{=Ho|e za*txo#q+pnAtK`v;&tcyoD+#SZ~Gm!?|;&JJ}3c6&REo^?VOdd1#0X!H55oVlCss+ zTWjA58p(8{*SV|5D<+0`YC5HfidI3uwk_1|YldC2$NBJ_Vs_}zbiBwT9`B^E+yuWd z{wuhL3sFMjdNjAjZ=r)4kOc01#^4m1UCd*kp^c12*FVLi-7&$q{Wnp)KY*rbz?Dra zKr*{3={l_}3;D|`q0?9Gl}A7~2iw04s8mFO7s;D;xrps2T1R$E6E{f#H>c+qFS0_f zlS*ugLayU1++hNl3~e-Yap{6MRDFRtbq%CJ(Y{|-mM9JCQ()ZU`pW2oTMdhttOPSH zoW|v=Z)5|RC6H-1 zX9gKK%axL~HyMR3HXw@TXzm_(39DDB&)K3>T)jsjsR-KZ@)X|DWS*q@bT?@2v}>)y zjjwGUgY@-&@CU{P9#MCU!?I=`<@m$zJ(LBmxGpvH@|m~w@R_!WMP2#MTeu+)7qfOO zoFYuTO`2TGGQ_>@jYcu#wCSJ7>AoP}QP(}m7sdU0rS!TF5bju8S*Y8)<=WvA+S9Fn56<`C&?GfPkqLsn01$nflytO zas^wUKFVomc{6n*^4dalSuz!=!^rja`6sX&!TcYI6b$cTdo_J$aqn-lB9>?NNnQ@R;D? zh_|<_yPlJMhti@tCZKeh!V514sy>wKDPL6@Pkt_cwbBp}6|gz@`%9EOlK;$5(oJG@ z)%*cT2N}tB=fFf+>7UV81U7QlPe^edL$t)+)1J1?*4*C z)f_c^Xa1L@q@L_7Sm0Sx%Fgm^Gk-m~ejgn*vy`H(!Zj#v;bqwAUFZCUYiY+ww(b)& zuYP5Fk|wX^S_0*7ic9Jc(f30ym9{gJ+%h69CO-~8I3)QQRMcG{n2S5xo3`m?e)v#i zT<$t}ZX2;TT@r(Vnmo1pD8FsVPA{`37(r9h;TmIJxks!1IEpBV`yzd9O|-z&fVvTu z+=3aNd^Kd8h^$~Nu=v#C>U|Ec5GhP*BilXQ$Ojl>tBY^G}fpi8nz8zRT+-T*jS? z^$vN)tzIuHDfEgp8mXja&F@W!ph(MjxJ~05L{K|S;}4S+393T`jraz{KKdxM;=PN1 z{f5#q$Fi2@L(8gehS=J2Fa+<< z@D#5CKP3CakviX3&(_p&^Hle)A-m(W`{WpmJtX}wD32gjzEk|5NNv0ZD0O$7?KfcQ zVr8HU33uN>Pl==D`T!9P=O6SS&Ol4qr{paU* zRg{hynM_}1aB$eq&UP4e)Ibzp^PM)=*G~^voc9(=T0bknyX ztb9_S*HuZ;9!RqhFyGwRxEssLe%lCr>13}8*q?Ed_<4BF+Gr{avqc{H{h4~mGPXit z(YdjaFcUmHDWSZ&O_lUwwH-Zcq!EIVBK4fnFu1sfa$>Ma<-okRV9$)Ih-gn9j5b90VbQGMZZC@0(b3VF5HtWP z(j4Lu)4C&HG3q0Gg6o8|+aBT2QPw@P$oLh1+>C*J?-FUT%`=enpE*kZpC@bZ{t*=* zHeAT;xXc?S2!w}C zeTJ!mM(44}0B^JoGRqoRq5;ln31}o-?ueEGeC#cl?j3UCMm~km z+LH0@kbhdSizjvjRks4lQa(1}Di;K~Hn=A-KYIdXW1K0*Xz_P_4BcadX>*#om9?O5x@A zK{)E&UL`2FYB97^Kmb;j%4gwP-GOwj_XuNV^z}*K>epT%_G(W5(I1;(>JH}7*g0JE zhJkCKtV<;t8Ln$V7pob9hHh}zqND38$q~+qw;AdJ#!j%&oP#bFsrM7EYv|0ytE&U| zY>tSd>XzS+Mg5N+?kY-2IW_^H*13T&V{bgD3r~msF@;LZn}wtpgIzP0<3g>hI@=qA z;sTcXQrwa^)zZ0BnqID8zWE-wW~64JPIogXZ*wic)5%7#81j+SDpT{t%>wn>mv)J# zB#BQ;L+=zXG@VR$Ainv+zVAe~EneGf^=aDAn}XaXoh^pvdvKO(Rf;C`^6N-btfEfvVd#qW+hxg< z>6wp3q9dVLOmmidz;neP3<5b$3WyV?5z`vhNKKDCS*E;n_2Gkl?C>aTe_3FvFk8W4 zL+lhBXYR6exQvFPOVXYx27qul)YtCJh{^X_{e_R5wtVU)q3HI2rWMAY~kz za6Ho7a&d@TA*%@CI?)-HYE+be#XgS>An}-cEceDZGLb*Kk`jZ;fkoYl*S_ zXtvW4@In@zg_&$|oU6=$&6&DOM9?xzU<<3V&DYafD=K8OSLPc4W{|Z?bI_|QEr`{| zv*zC(h;5$c60nB;wHnyVsN;%W)CI|Rx>FN8%P;gb)a2?o=y>(jP^H>X2V(QC{Z)e# z42s)wv0qp=85FDtPeZxwXzE^Ldo#t4X=N9| zzdusdCGH(4GNsleH%)#9w4z>lpBosK&+b*btEWAX-nH7TUbP0+DzTKP3!1y7@+IUU zU&9w_rw8U~z)zEZte9dkMNWg8$t|qX!D1b*4?L*NrFdP$Bm9`g1OFq6spCx);Ld3~ z%)@TPyhxVXDLguQ0Wk75S(c)>(LKFoJsR2WSvYGuAIs#D?ee3=E=Na?1yt{T#@#?ya@3~M zsV*j#t|lggC!Uvd5xM(ur~dn8D^cK4mq8O%z}61t74pT!>>`+O7knMF?k32u-M!bO zTPrac^lU}c9v`MWj-8H^mIoHTs^4#-bhT(r z$Y#$aIgD}P&C55`)a_=wz4gd`7u}|icDQW2<3{}X=w+rI)yqW-6)u+$&f81J!Pn-< zstY^m({$JI+wqj=&-ClsojhNXQF9I@QFAYo7nLp6+xHJ;F>s}2xoV49pc1hz^L_pH zy462a;ud`h{YliCrV=~`TecR(!TaiXZSTJtP=XrFyR4n*{c0`?y>a?PW!cQn7(GnG zA5r7N94skZ0dl3`FnxvEx4Y*2#`ntU-elB9%eeb&gFh5p3I95_?3Uew`IEq2D~CoS z#IJo5q{iHFQZ_R^VdSCzVKLhgEs8!fCLL&ha}fSh1oiZX5e~sFHccUE%vjsco%boT zr1ie6wC{)qlN0D2kUWA5#S2PK~V5Jwc+E7XI zM@Uy$XY3{8v8c!+>OgxeZwG`6Dp)ZrR7L0y_Fx-~&0%LJR-qQE-m@uG zv&(p=yAFz;1ptTPI9ya-n{1P#2WHtYJqUZ`$QA6jwwbUkBX(2c1$rnCJYESlfrSz` zZfr=7GUCvxjS?-@7|rxj=`zXpcPsRQ&DrAl!?6n%meh3ysZPO|kE$&&z1tv}x~Jlf z%?Dq%l~VnG>tGcG-10*#&xJtImg@q`x%_R8smD$Vr%X_>WeFCsiI_z=U2(R{WodYeOs5x@t5_jnmz&@LPvaODiwjFN!8pW%7 z8*{$`S7v$Jpn1r^6H2nMIAE11-K}TOy}bRw81-FfLAP|~9kYVhg51fr-YcZ*MT&;w zu!Qo(%C#@Z5(|V5X9%`?sHSEe9$^2lL&Xg%L2`azrJEk;pv|7hBv{48ip$m2)rdI& zBj!t=${y8;xDy0V(SF>irU96oMhhC3}aSbYT zZd(0TTH=tnr~PoC5*x-ctK77oAsXa2a%~Y5{xO^1qx=Bf>jnJ#|fTIG*6^;}wi<&l(%oc__ zh}6|I1x)hlaNvNzLZ(~%89PW?gvRdAW_kf~?c-`M9jc~`F zWz=9t>-}^sn{EzP3Hv-|zj1EP+vfG>c5l$~p=P=_#-=?*Kn48lohX$N;M{cVCT5+D zAD&Motc9?$+>eCp$h_^bKU2ScXZ7TSRI55L4HUOK#65~}4r+?5u}#otAblYZgcgsy zaJ=~)R5G0-eRCmNwePOKabd^!P=h%#`tBqIkzv*KdMmmpEsMBL;QJ~80?u!`wD%_R zU}W3k4K0w&_SuxVjC2MnfMRtP@*0z3D4FSy7o#-ZX z<>_nn(Bahim0v?5%9xS*ajqmu-ICf((B3BXrzrR$30TH!yVUe&{AHJ(k3pLtq&O$8 z+VgaB=Z~%Qq46|-qnm)mt+Ywq@Ogf~;BLNr=w^mPo@ku>iLH)GO|Hq?4GxFfKK}j9 zprE-v*-&h-krof2?4h{!Y?0JZ!JSpEcS$2>vM#9&+2&Wd3*yiJBb_<(Rmp;iSj1=a z!M&)gU3aLwOL?dhJfR|d@MqjAXpowQ#^EGg!bO+w_l7*T<}nY*E&?O@j`d~}fR?Kf ztu!bXq9{DfboK!D2Ye_Gt+&59)kicDqI9MNsLF8i?U!NF=1 zV%zz4mNeO{B0){dRUslcKi9~4f8@uq;*e*izmNOxdJ9x1=E^ztrog7w17XTj=aBg5 zs-&QN>V1Y9$tEJo2I+4K4slgO9rj58V9ifZh;5nH_1!R5uC&&b5HoHKF-YadfTGN1 zDFsH5+g8}bMY8$2#!&Z5-a{l?M(Al;k6qICX%EKqStw1()q6zI%EP`yUz6hE2@G&| z`r^t8DX-%%z_>(j2SHkJ_xkYm{CZe8@|-Nq_fCC?M@r$%pTgNV+y@g6FDu% zWK~vb6}}Paw}s8+j{KlUCcAom{5L}OLCJt}yEY}BKaQ#Ppw#?q`@5y z6x-vfdpVu`*j{_^`;G+YcNsR<(EW!Y*vtEg(cF%JUCwps!&BR=t@0yZL8ydDr^~^E zx_lqCjPmNEo%y`?`#eE?lP|mj-W{XM^hz?9-8&Y8uVv#tXZS69fMo(lVueK@ZkxcK zqZ4-lb2xb<>e^a-V$mD%_=S!>1c9&cG2ziBxGX;M-9NLj*TC7 zZ)fJ==_Kc9aCPw1W9q+A=IL`b$QQz_X4(wjue`l)n%^2TO zT1^4vQ1`N}{^Q2wQ;wA5<1F#)!wfhmZix3oE`1j0Ft3Dl!FkPo{FaV*EoeG;Gs!;- zg2RE`EP!4mG7)V(>g8aIYgE(j0sxLJOy>iZ;$|{V$k(u!VBN) zo@*S8Rp63AaU~}g!?0`ZTo#EuDg=@h+{I@qFGvmC6OVdcf3J9fRKsn0yQ@jbMR(-$IlhcYOZ&Bu9k|Yu$=QYFX3W0)X?i5yaHKu zLQGC4y<1&rb_Ic6~trQ1f;|l`^^?V-5E1**(u3_!LG?+ z10ULo&-|I=LouU`FU$kDn#9HW&-=j-nmO(&pR7@jF=Zp_RnP^aL>$|{X zbJ%cRz?9sTcmT@NHHELf-RYo06&Y{C@9lL^$mXiw)gYNtG8V7;@kw-^pFlM*ec<7& zte4A+q&fD9=_Wd-9utGskv6tJ##uE!B8$(e^oH3q42nrFEO-Ybt2#*E(Ftgm4^F>$ zOPN+{(0bj17|*FdMjQ%~6_4%<&#$mRYnHXSji@R1lg;k^_BO4Gv4lS9D1Es37Ejc{ zwo?5V2i@4P*x-s6RDJjRuhQQeIIeRoU&vinMT}?!2>}outKvwi4|tlk4P5~cQJ=E; z*N1b%er>nBex~}%0A=rcTRsgGeu4?{o>E)}Or-F5u|E7ZJW(AvDfPr(`s1a1q#zlW z_K|P}eH4$$<4NvT4Dv^N2n0Qf>J@BsOH4Z7g?}7+FV|PzJzN9M6a}KBZ~Q<@?Fe|s zzxtVyQk*v9-QP$4cN}e&Eq?w!aW&guZRNttqE^W$Q=RVLfa<`PkBIbQJ#ub$@B>|6 zUyz0|`uzzWdQ_Slx-Y6mh(-9}@-X}JqrXVMVJWY?({_vM9rpLWBDK z4!KWXK0Jw+J(SwYLqF?c?mFz%M8xZdlf$z@9&o8i2$cm1bWHqdohoziFSDr&K1q9& zbjM^-fQks>D44;IRSz1he9@*Rau-x8cERPH)I6Q!e04Y&Fx#;iB4;cV7b0?OJ5d-? zhq>`=x!%DU&2QK2xK~uQ@h(tASunVc?{1o}#agY1L>ov*YmN|=+J1VYeptKQ&LqkO zZ)l%QG((aM)}jRJcA4yk#H^p8F?T|iEij*6*1f0SF9}?c1XXWc4a@KH_)`Ur$O$_5 zIJ^$Pnj=?8EC(O`GLe`}8oEfjV))($N6G=wCnJLmNxn?Hz%sX_$}GP8=oHJkO4aM4 z3d7xKyj0znbkg?n@#?42rzol2=Ky|BwB}IUWq5ze_%|iQ*>8qE9yX3{xVWq|weK`7 zlN|G6D7nF6BCg0=5MNcdn*3Jeuoe4jfdz+1Ezh%$kbf^(794tgFX7DZWXpO}nIrr- z^l-xIv`jmAHW*EJB*8mxev=9vme;X%xD+_xy7p6cD>o;Pg|_n6wN{>}H-na5#kGdn zsrp>=4^b%!W8ysR#pQMvFNfmx#Q^oT%%JbJH*X??3wK9H0KDQ1mR%EhQQR; z_PY5Gd=vwWM6Ha(T^dO*MEyF->Ogk)>hDuWAp00^6lw9!^NTU(xFJUpYaQ%(m-`zD z9}g|*Zaz*zxjz!w3K?L5f#r9Ud}8>q^p?rly_*%)N0bG5$JMaI#GV~>J84IrOzn9j zwePm+mj}j2R=7kUb35bX>XbX4~vgnDL*CY^3=qzk^B4v&DmaD5t#fcA|#_r%QJ#@cPvMIxcv6mW)Ee(;*OHd=wZ)blEu=#NhwQ8NM(9a)94=$voSxdc)D}1ogBEpiLA_bM(1ty zBpShXt60`?>}WZ4|Di}sFYmJUrs*DxC6%bYDddl-zVp?h^d`~YWg5>Yw_Ans2lqSQ z9==QMR}Hl?9qd;htgoFl2K8g3rIDH|(TVcdkXdma_X`X{oScr$CPKkxT;wvz56av~j&vKkrD_^_q z+Leo+#R$tvfq+Oc`<7!D3O&r|FWwEvgEwj|1wrH zYw^cRVLI$V6!Kxp{IhGL@WbcRR6#D18GiiI9K%!Zk+zUic#L6I8*eRNQ;&eGbN$y< zvm#~)XOS7_5Cm`xUN9yWnTvO`$Ggt(M=iS}$vl%SrPDy=^*EbEK$SWw7?;m-qU#d! z+_1HXen^{r!>&puqau6rkxXH3dsDn(IGuX8K3`wVKVs$3oA*BNPn`mgPN1`-JM^<44(8K>h6rI z4#&?FX&qVkTu&J={$4|g*b65uwQOZJ>yS`r<=$7*Owg5jRv{{GL9$i>H>eVw-Rgf3 z^u0ICz|i7mxOSAJ@Ee$bY}jvJ>1?B|9GNvh>ib+Tq1vlRZ;|Sj9J$HeuFH)c^W>JI zR&wwymD(tN{{^;JHfWl_lo{@Qe`U-^$mrU^Q>Yr@yx7Y3dQkT(MKe z@vpzYo2fgn*Wz1{o@MvAaEqB!(2NL>|0i9gtFgKO@W`A{NZ7V z_E{EH>gWwj@iOUhQ*2WOsdxFbwFWm+ zrZ;*6be>rL2{{4#6!Gy>)@+q-V42%A6wq9jB`?dD%SX`I+?=%@^=(4B#QNX>a1W(s zh4+N5(^HV>FZdwu1L+rwhUbHCt}+d@hSP}|cki_HtctEV{zt0*ziRrrZn^%sielbg z3ac~|ahl_Tm8Ud+yI-U~G%Nk)v%Vw~S8oTD+2ek%<@`p8$J4)Fj8M6^jsuV?UwJT>iEtlzT9A`I&MlOc+1 zUV9n4NUO6gb_zv&1uox+_ZDv3*9CT_1X zH}57zfgfLHKa!q~f6t>(wfZ#Giind`KYE&-<3IcfWj43dxreA1pJ1Ka;cZ9K3MwSow@J3EbS(!t zu1SuSHg_s^uh)7re%KH3f@OU~Z;8NltZ3@cQ>D@Bf*B6ncQ8Q zrkp6iUUiGB^@t_c0U7yb&{Q8$Lw>LPi={yI`nEx;nh;U>pQL5_--m83bk3L{;5#M$ z_R1;PEA_lUOIO*Sw)rN=6TP~xzsn2`7y=}07|ibBh`JPgFg@0|5GdP{uYYxPuV9a^ zI_;O_`n9gd(DLcW2|m;4ncg93@p8k2EBqqZ!p7tJ$TLSad!t6Cs08&ZrnMi^SqR)z zx3p|$9qws?)S#cqCYS-7H@Zlz6Brg`xcilVNmE+K3)8eIeGmJbR%0Ik7>>HGO~#yK z{_KdQElG4Z1lE7^9xOL7cDIpsT|;C_2RsF@uD%>j%Xk^J>0mp{t1{p5T`{BFB*M$L zy>@+r{BQV@`={=WZCR9LJXYpz8Pcjw#KWx`;&kXWD|BDNu%!wLWulTPsPA6EB+bjT z9k`p=+kTfXOLV%sFSsEd^K^GZYBVn^z7OD2l}i5UpiDB!(muW^UfreC0Hr8+%J!qjIoNg(DfAJ=(L&)Ks9J8hHMF5 zY(7Zmt-pkvZ8sU2)vlm6ct>WNtA0iZG-tU~x|)EnT|&Vk9uo)Or}Q(QC+m4yck-we!I*O18X?8=+lu!8q)k@?h(rQ_ zqqBw?alx0*jbAF*Hiu0j@NO43OfZV*pawFAvb1fUP&IX(XesZf|HoCcQ%K^Mk@{(iNP{{ zXO4VsidACutcD}iDm#m7cw2`FU_ZQAQPVb6*?#%1xoF~_8bW+Fwfo98Wj0l>i8=77 zl}1(2y8`3fS%VK1GN-=~0ABTGx;?Vlp`IFScy3Z0DPr~I??6!z<#uz5jx*0$m^`-c zy|d0k=CFB-XhnjkEpmmnwH2?6BERe0%aY$IN==>a=02w&0r3N9)6ik)K}&{wXnBTQ zqipId;emokHa4G+kX!ReB=iiRXtS+Oj9b?}NeTh^FNU-mz?TC?+Ryu}>wOFw)@zT# z?O*^_?B~7o_zte~vrjcn`e*t?gMO+@dh8oUcf#h90G7CZ8rT-Z-=Bd$LDL`Tm;;*e z2ALDApu61lh7|-5`nIux5!f1BU|K8IEiIjs7uI9DoS$O2EXh2xnI&nl2#96f7q73R z)}LKlvsXA#g#LJY+VumF8MBpLn;+&fs60Gz8K|4f36HVt&YbCd=Yy}`e;@fHdiAi- z4)!p`D|&l-6g50o>1kNqMmvlY8kf)GNfrjchZNS$XtO(l;daKRXP=$gZhUF-={B-X z{?w-tu6gCs5-kw%8w*vuej_R+WsCO(BT++PL*#TXw(`?U0E62+=V=|6b_L3_pfwb2 zec-vXDBvi2;Xc*#=g<9^SU{`Bb?py?E#=2A@x)$}zaH6}?yz5Kcs({GkN8E`F37ic zfP5I1BkT7C$@hu>pjb0&R8z9Lc~66?BaP44HI?7o*$*B#+?tZ}Lue>TKUS6}l1 zk+Mv#Kos#;wzf%G?>oPy6n%@9IX}Hl zgW|Ts#GllO=c}>DI|b#{)SaVLF6=2RnF@H$ju!=kr>3(C>so~n-BXxUGV8p-}LNs?HI_}x*HIo;oJs_u$*U>UM`q>tVDH)agS(oVORdUG=F>%ZWcow}3*XgZ8x-vZMebzHEzIL~v{}W+fk6i?muM-x zzm8+w|&n26v^Wj+1_)`KzO5YHBD#A1RJFS1csy%YFX^!s;nKfiOQ9CO3e zyk5g*`H-(GRbw81363&K?!D9RlB7>wVS0a;!A_)lQ*R_iTiOnCS&|zd!HXdWpT{RO zZ%pfF2Gs=*zTZNrzgN@{K1uTI0m4S^pI#IWoKQEro9oha&#}t}t z1Rznn^;25KDGmMfgGPzgeRX&+)>gn&26&qWg9>dk#BgRuo4BDq&Ek2)`D_;{)k>4W z1BiYsa4FNCr>&4NdXV$3_F&87hZWrDcB^~;k(H+Tr`Gn8*ie{TkjHtdsusRGPTO}$ zjy#mX=Sl{s(Vy1YyV?CVEjR5W?l$9V;KVF1XZ%MZ*(Zr(`R=q^LFX`CxGOEWaqkl! z#4vB_XX)djlcgw7j4NTHKBi-L1cKi4AGO5HNmd%xt(;7Rp5lPh4_CY&!=5bDg)6RG6jJ!&(p@x_k9l+SrwIz%y1tPYN)Zlw=8Ry0|%6Q->jhbAAC^^^<#Tm zYzE)ioiws9v(SfjR=U@g+wi1+@GwZRtpqw9jqXa=Huqg#LxU#J@M8rle43|e?TyU$ zVWj*u9EibUj3O0sq(4L?O*imV|lzsAe&y^KW#v`ASz9uy|N2Gs|NIw# zm#R^ot`se8Uw^#ug%aUNa@ks%`^IRW;VOevyx(KQe^x*Xhc&p_^=dLu%fQ9=K4vhQ zHw9vuwUItrlB+p-BcEdht^@od_I?@$ncAEGDoRY%k8v^FT^#mP&~rehyJaD>wx7M= zj1stZ7BrIUhMz)0=RLhgjv8}{3xgpSafp`DA{a`U%njyS+!*dJJjX4GS${~tpNZJg}eO-#nQ^{ zSks8VGFnIt=diLx(9kWz!x08if|+jig6Xg^RcT){26{EU#%&#w!HRpJlbz*P>Mm6s z0?mdW8S(1SE z$vJJZ&1mR1C&$gd_9Z00V8eAs*nOKcN5+ArZ;#0i5f{Dxe&f;4>(TBnB!Z?3TjbhI zt$l`0ZVwu8Z?2ILvoGaID&zNBbpq()!CY!$aDT1wmPi$@uO!d!s&<|H9DE~G_5Rd;U8f~wCNbN9tr?BezTGIlFi3N(D0>8=p(+B8r1B7&P zGekJ9kRtKZheYbLuXUO60O`&R>M(lzW>__nbQPce1%b{>mt1Gs?-hl^?6nNkj{zav zDZpQ8KK-r@V^ zUy?-EQ@q8pGUlQbyUt_FKfJ2xWZ5?h=S|V})~TVBCmQTisl37&aUi7@Q%H10o(AK9 zC;&|Hw+kMK`mBtFBJ#G)G6oeBy~6>V>_dV)Ih}Lf}SUm%@TP z&@^U<`V;yN_>hgK_I<&uHRC*Pa@UI{H1ejoQFM~vlB`zA*WmegzeArRup+pngYFo& z?e&%`{a1dC`89r4V)%3Ee|21rq14_ZzOznIF77HwkncaUF?ydF>}LWkV#EF}PhN!` zeb}c!>#R;Hw*z&yIG}3iNJ?a}5AEQ-iLlOAq(MUci6hjKEtDS<9X_k{9q{qyWq)dB z*F{^=<3%hPiJK=%4f%xJKUe*y-zoYRwQYFIWOl3Rc(13zg^u$S8*eqS3vBZ>w)?HP;8)IsLIE^YVZEjHFccm*k*d@8 z^A>Miq&n2@I}E5$S+RQAkS2~n^*4`&7#}Gu7qS{j3sO(^=3|G&kFBUFe9Qn+jbW0l z@s=&pXG3A?wJ`eHvAC!p9@v-G&^f9p$FPihbnWq{*^40peM$J?gL`R0WuEKHtZw4h zR*pKD=zrjXjC6udH3`eC#nn(xxnZ`8(_S|U$BMclq2ZxPc(jBl+3oGDViZ>eA7Dw% z*6p6ggMkUuufR;*PoDfi4$H@W@C>TYqa9Kh_dnH)F6y|T6w~N9gw;>rlhc-!ePTYc zStFDj&5pE18|FNyiBDsTPQ$t8O0>T6iO9B@lEMH`66p4EUem)r*XgaT_##7tuZu-P zC4x(UT*1Tyr(cH?WE_FEc<|22jfoIwoQI#D-oL}U9sezwL(Y47JNEJ)B0=}@@zR;Q zC|1~#qv?6{-POW<$g}UUxKE^UUZcPt*teAMvyKczN)_hf_Ocol0sX(lo;q?5l6WHm zTYGa406;_rIVqd2?cAvPDSBmD7PkNqs;REGkQ%Cl7hdeX^Dq8!a(!8OVVnDZ)QBcM zax8*UR0_`QDZe^Kg!oOb%8+CP0VpZi`=Tx*&PN88oL8rV;|uY_3w&Gf@m%7^%Vl(9 zNet9=5g~U?9ImpL%cn2nWeK@yO%Zc`$@rsn&Qmya1275CWGJ@nRpMq3v*R&l#l+bz zekjsV{!M?Nm`j{u*bg3T@{HfrRL=lirX!!27r>o)0e_$f$otO{J;{N5M}2z8D}6@- zw%*#QX2Cqy4OA0ysSAEVam=+wyJ!MBnzaUR>vB~-~s#+imyWc zK)#6ppeGXJqTU&_y5;emLDyB~dh0lR>mJb+JRypeKk1DAAv0!D00n(?k9V>4x=2WV z5%Ea}6Fq{w_zF2KqdTokL1KF=W5+PAU@={x9_HEZ-VIaX-pgmc3V8;2=@!d#u~oSC zSS?s(B#gaR)CPB5a1z{KZWK0Q)EPQX-LO=~!#sWip<5g)=)6-50Cn$ zkDAjh9d_6$_Z30H{K9%7+}es>rZ;dfqFpu1+-Q5iXsqb14~rw_B7|G2-@jAraeD={ zpNJK1TYq5jj~-RGIq4GO+>S;8{Se3nW7GWiuRosjdE^ML3>X-*V{>g5`?2w%i~PE< z*hpdKN2(LUUy|(H8(a!cGgH&Tv`m{Afk@UAH3-w^3jk&moT>7egm!8FsdQclPu=ae z1>(ULL?fV=(EuTfO5SVS(^%_=z-u-ffJ*=4Quw@h+N-ZeL6_?8U#l_+PLGWI-5U&m zx4b6y;Tk8)$sUfFLzyH)Zk6MJPd7~|ke6Py@;5C$QD=o>=(2I+$H@*RQ zBWHzRX*qgTykHtl_77PXe&p18jG6&?WI(_CbphNXpZr?`P0gP;HGPlU_#yB)kxzqB zIo;SmtfhJmECeo;1#nD0ZvNKjPb>vRU1YxOwvJtwodb|_W~ypy19VVltOye~27FX{ zMDG5GxXeC1u5@nK53de@BkiQs0qSn}N_V-?^60g`+bd20(`DY}+i`$UJwUF0QMSZz zjZKH>$P?0W{{Zp9R=Bm=SImG>P7<;J^H_U(|UpUbpTzkL6sB842sBc_Ie zqE#iH=|M+MmKJjTYk;|CAOm^t>y-Xgu@>bx=KTLwThYdW_qk0;Buua8kv8?z448OD zDFJFA;T^*=EaVB##gl`JumRkVzhyyA1i_UNW9FsB=3<=u_!O%djf1_M7Uq0tkw%J; zyKy7YZsl-vM;oy*6`xw1gE-)IwTl~|#>4{1O+|02Ng59CNm##7U_&`S2-f7FV-eBEEc-r?pH0rxSdib%k4E18DMv zGL!%jQ$TY&DRzmjjoyH}(d8FfCk50X4+-AYcXxN6V{1Lc{Ms%9-;YA}&xKt6D*dOL zuDOtBAMqT+nBk6n+|&VDm5c?uCE}@#+D!$A16qVN=Ay^579PNV?4K^FV6oXnWI zkOcnqBWS%2Uaja6eB^&r^IvR_FzxwW^U~hTq?FazOiS|=u)H3C)E`_FeaEu>;@XN5 zolA5bNBi1WI0G55XxSq1BL3JUGdgbXe*&bAiS=f{aBwIqR#nT4BK(`XLT!&CRaROR z>g42b57dzj|ICccJRBYUjdro7dUMzMI&0R~77rdF8?S5`Ewrw%SU)cd++Lp;O<+-( zU%?`Wp}wxcIuVHI6O1d=5{q4&>Ozt_GJ8G02$Y1iwPhYgMn)mu-(ypkV-WjA`K2NEf z_HO1#;rzjeKvx@KP4+AlCl3#Jd?DImS+y`Vw`b>WS%BzIxoj{78P{g>jAos8aPK1w zKS}l*S=mjKz80KVftpON(rzS&&bl2q_G`1ny)y@3%}n2#fA|NFDnQ+^FG9#UR2NYw z4gdhwtDpO7lvY3XK*^jx0E`?u+!2&+z2tNTI0;D1{hK=_Sk6^eH?6k^aXRix3OP$a z;KqXJMXvcHLQXVxr1u#8?%n8dHu^%mFJy=yeKRuMHg-X&z_z^qD7efM@Tmfz(CYes zLblmHPjX+bGjafbC7XQNRCIU(kL2?L=a|-G{RzBlYm6t|oieQW^&}#(7oazP9ee_h z@ryM9a7j;qn7FYz5Z4%fP%fiMbqrSiV_)vVJn@{ z!vH+lYet-BATtRe*iY$u3CKi}fuY4X2_7G~PX0EI82w$X1v=#&(93Q7t!`R*$N%bK9SwlN@Dz`AIt@mgu^ zsT>cD+o{=ty1d;VUGS%*_B!N=&<$|1{D;y9bGuhUotZHT%{n%FH01xw`nyji~ zVc?@;`L)x@G2kP5@@Y4Tk2Pt+oC5HW?_8didGLQ&4w0vX)_Sd_&k#SSBR`(?iNFby zl+T$Dc>5~=oX|DLi)99lk$)KaM?)knbde(Zr|SG+>Hh0+gc9_b&?M47C+QEq{O9A# z)^@ndKX&wYbo<}j%pSt#^gG5o`w17fN+&|CcsU4sw* z?G-%IQK$T#FQbBbCU{8Q@IH|`rSGojm882`S8Jm~66 z#%qfYe|YDQYlL1-w&q&?@?ex>1-|sR$M;WS2~i}&>0lVJw`Dhh)C*^i z(7F_SeP`&OBmuS|$L51Zoh$U0L3@$x{ji~=p|9#UCX!)_+FSFcKy1QWn*~V!we{|@ zwVP@bKzd`O2T2{(B++A;fsb2$77+Z3kBy>VYuhcSrA1w*Tp5r=>u_Nq$e(MZ5;0#! zj)6n?h~PRPhmRb!{aDXi{66Dg>j<{DaR&y^8=o_n#PTZ2qH;X*DMm^6*vlO9@`_}v z!mx|RWE|p+MH2_F8@TTb}dENRidl?+A z8`g&5;adZaFER**9G>juavINEqjppg&w#~3R)w?sfrkhdqyx*IS1oB;f5*?y@2J2K z3}6Fafes-@Ej>pMux9H@t9-T?KlpU~M+aINwU;7iZI)DLx6a@qHK)-%O07ayv~VKT z?R~~eREydAw*7b4IWfxJbZmh{H3ZmS@!Q`5u-aG@O)vj~)mE?d9$4;^G&d7;bCaD< z$qyMScv4yv;wz7eDnvnHQ*oI$d%KJGWv43MgOTOFN3{Ny(wFrLdrSI?kNR^!izF`W%Pn_lgT*AcL|ua4qKKuorPhLdLx zgu4wU6tS^vWcwtXSqA~%k2ouhe{oOiINAdMSMP-~CecU)+**o(`ygPy-iu4mDZc2^ZC|nrJuMrH7kqiN3vGq zGRGnwZ6b7f=^1tyCXg$l^AQopN)S(X8`&hnx^5^I?fJ?}gTY^@{+107ft85&Ez1aX zcyn{JQHTH5P_f`KqS5{B_3F3B!0f|H8wwfA&E=7Ey@uXS_q!>|Q+6qU1#($plp27f zE>1?0M3D?-w5EpZ8>7pXgV8lH0BZa+F2RG9 zB0YRS2$_=$NJP$f9Qz5$0O6XMFF&JV;>gntgX~G#Ih_}KM&!u{%c<6u+#(`hH!GxE z5vB+>{*{oM z?m4IFx)EzMRiw5XiuD)v`M4~j`vyHdBba!027>0Tj@BM&OuZbrDZv<|$zKg+I z8pPqWJ?@)}qw)|$M5EunPm!;zsz@e--zwebMygqfV?Roi)$ZT|9~~wnF#z znQ)8YSsM}pCl!$3CW4i-Iq3@%>-t(yucIt@>85Lu5V8$0HT61o1A?KH(7LlUZgjTC zoV!7Zr`~s>tNwPOK%62b(@9Tgj#kNdIE}NkbcOpOY9Wp@XQxKQsoIyA# zf6|~tHxG}YiG>0K5#Bq%GWyWGqWDT!KX;J3R*oW^zvp_>)f$-4CRz8dwfn-;hG0;Yxr^eKhU2)3`HJ@??juSh{umw^r>s_0XQ zSSjRG0L`sfE&A}~^k&S;%R8m%+{>$z!I~Kx3p@uqH@BA|aBxT-EjC=!OkqcO? zo2M4FnC$WLK5Zg256d5(1c0-DV+zLtbiV}v_QXD6S_lSJMaO~<6;Df;c#hD4tbRh zRAzBTsbm*qP$Jp=I{P&~vSg;XCLozRXfv`@LuIK=F;D(lPAD0i+2)>_r`Z?vNfEiMC(^ipa#AHh5M?{g{4vIwVaEKvOS(_Jx$br{FE}U*;!= zbzM<&^LkLop~Hh4Urs%&x3SpgyT5U*^3aSmBqF_@I&}uY6+A-9Q;%%)8@*y*Iy1<= z#jjs}nT(>}X6Hjgiuww5#xrM4U^I1q!ZQyn*Z!|WQ-%U)-QY133Fk9Koq_FMaPw+x z!NY41@c2$ZKfSV{<(h|GTN4eev8B5LK^)x6?p*fAyaZ8J&c; zpAULFwdvnky8r8MtsMV$Gso>m1gu!9x7W|fJpL=m{f6wKnYs5GlObaMI3{)ob2m!Z z;Th(qlB(5ixN3TU6GP|0W^ViVxp>Ru878iTxM|@^usWlSsr?}@Z_!qg92Y7F7Ca>V zIvWd?)v%79eZLKTPhpndyB=>jLCSQ{_&DZ5k{ahoRmBZXt0a=+2>BJT0EYSIn&ry^KY>)?tbn))jvii@if zfUENn*hINMNGT18_q5nwCQ@~Zib|M;o=o%u@>&annyL6V%6E_VCD*7Dg5v`he4LFK zDegIfam?Zh1t1^2m51PmYZV!CRB;GCHAD3&z#H+*Yk1bmt=cRk6Qu`KTr#P@9xFn+o_cj4 z!?_D&XhkNoV_ND3q!#V6E22LOH-27BWLGgT99TqGsuKfwl;?qQ)YP)NU-M~jUlZ2o znbj`}x1UXp@aBZ|W?WPKf#?ucg)$%{)cj0t;R zV>+P5dXY|c_~fnP|Em~XG94F z05mZW3^E;l;%0blN12U|S0+PLm3l{SbR%BEHOj7b)+OXO@4c=O!D@ zFjP9v+p_b$y%3RJTt=#grE`_i|IilzkZ@on{i}JtjR4uOtXsIxD9i zA{DIbPB|cEdB;u8I?qkUHtcaGGwuxYxO-ONOP$zk6I>6wFf^J}eljF#zLf|-^=(!{ z&hloj2Gh_t)n|W>!!+0ZJqj7_+7-XgiOD3^YVlaq*(7v&3&De`dcukcA}EB-Kj^+a za}+whiSw|p7xSZ>=cQq(&+S=ooF=`X-&}ETiX6o~8>uB{-5Rd#o~ccdp<;eceUma* z9B`?ua;T~HU%dT0GoTdH`n*q z3pYIq6{3GtWwBtv-&q)^=(ods3oOZsBPJU1>u~SAUi84(oo&iRKScQ_z z_SNuIZpsE-r}0i%UmWq`+M9EPG(iOo#cCrPLNWG^EZi7tTB-yG)+(SOq5S1?+74!N z&!If5)Hf8T#Y;)b)>SSV`9(2fW`S<>JR3ej`go`?%~yC-vu~37@^3Bnd21wg7H1J^ zhAg6Y=lcr+K%LAk!h85g8e)_yrWG*CJ!T z^g7I*aKLJI>?e8W(%l_|FOl;r#UQRY&D_a~CyKtY!O3}u;Nl&373!SQ;%>uvv1;8z z$CA7EtnGS0DkuC`c$VI;DZ+5C;AkQm2M5XqWMWj3r=xzU&%%Bg?@XERoPCTFy#6#7 z&8T*2tfp>ST>WDsTGVn(%o1yGoh=#;HR8jIb(TPOLJXSahvmD1M&2flv!&!q?FaPj z{1neg<^|S}y69v}509gL2+Q=5mEF_jpk(T|_PMjt8QYB5EZ^-mQ><+DxtT!eT2`FO`SX@X*A%THkG&=H0gfUB3UXcqcx|Fc?E z6*US&l7b@A=Zc^6O&e3BIqoN40KlgG46CnSzizH%l2zVRH*dE4h4{F45T7ohTrUu} zv`-cZJxijcc+K8;ER#1F2zs0~GeQDd@KG8%G&JA-l%-a?zpJs_&|fudB88OUSs-xC z95BRv52HTooYt1b44?x201q8FPhn)`AT<`CZ*@BE1yTL$MtA?{~I=A*Ko4x z=ybQb+05Ll3X>H(8(|4vt#Q`UchI0JZ0_^2S_HP!#{m~9L3NzrT^E%eZfg^-G^l0FnWZvLx+OJE z-A3qnay~hwsMl7%V=HlXs0q>4b*3XDMYL{l)>^;RyM~eBVx&l8eqS>Hh6?cP8I6Bn z)BQM6%`~*>S-zh{wSh%mPx(u&X1{Jn>}(2XMwwIBz#}voN;0gmo~PSlc1$3@-yZ$u zMNK+4H#Zo(F)%oDRmbC6(ePf*i&L)Zd^c{B4AYPCQ!7CMIuGmiMt;idn(5*yF6ld8 zcobwY!0@|+9LfeSncX?)RQ0vwkITKl0TxuO5toG%{TpJEVG4z}wb6seG@}}02N27(_ z`uAu8CQTL{*y(gZZLIv9L3KlRy=;M)TJXR)aw zkoCa68?!w16M^me78psdKHlGa0a?|1i3}RL6%*HpVrz|$oi}+-VQ7=3)%aS@)VzwU zMMp-@cV8m78-vKr)Lcw;3U|D?4~v(jq1jT=stjEI{+{LJtB@F)v{8zJlGfQfs!j(! z^-5RU&LQ=&1;-F}z}=7d)SB!OBe-_2`I8&6H+0gyzuUdRKEix%4JodZYo*dQw0h^X z@C+4+1LF6DAc--VTeZ4))%odV*91)L6Bf>wNp~?z6>RWR8WoIJ5i3BV%OKqQjDDRF zqR>dCp{%hk6)*@-r};arxp~ta8v?-i)y#F$20EngG?L9(klpkzwFhxz9$`8cbHZXP zly98VxKNzaYg8O=&R5R`Z_X2^u;IBrB490Zl*q8RxUMXwdqJCz|_Ul zI&ZDW?!VGf=`CN6b0<+3ZX#JVc-;eyR6DID{@mIzjBb*zL;Piu7f!napRN%MY+d=B zZ5DdnHyOps^<1P&F&Zb~2+?lO&#gCkkFGmm9h_DlXplG2M71m#r$3yt8%-+)3>_RT zS$OVxc}aD8^)&AdJy^I7hVJbPe+ttiGXsAj-TFtyxf`!(9ndZ~oiVW(-rQkF|QiwjbZEgd~tmmDs>NQ>2tSeP|4Xc&5aX zafwpk3mWU`>z&zYidJUPk1F7R-yv>O?N9r76I>VQUZy%oN4lv7Rb)w!R9oWwuHQm2%@H%={^2FDt{jb=KO{f(szM!zeX?aty<+I?P zKiShdhr?i3Xg<|aHi|^cgU$z9AC-QE1BTPa2a)-~>e?aHZ# zukz!y=4Z5RnAbO0K%s-xsw{g+G|G~saRXdD^agurcy>Z=FSAXx_}shrphMewUGqnu z@o+KD)5)d3y@|0}umKi?Ai4vuu}91sBg%^^(L*V%Tz8pID6Z zxQlgOZ}hki;^|xt$6p_Iyc=??En(AeDnf0q>i_oOn{D5O7=S3wO5&NtO-U#RfmZlt z;`Yc`CVRwB6@H#KB~&^guakEneBkzV+4R@oa z5;K{O@G}QJXHnQ!Z2|cC<=~x-T~yfCPv*7y z#+*|;oQ%8l&~3=U>DPHZvOp{+$u5rtmsTZf)OMyw0F~>K%bioDTeVkO2J%Ej8XwQc zHgD&S4;4?2QuEkrC_%mgw7;7Kj62MAl(@~AGpGn(!=W$(2KotT-zG7~IP*R>FU!z) zP+w92^h5}^v7Ny+v1R*U;!MG5B)eWr9Fm6AEi3-)Q;+o4(|n9>_Q>!I|8536$#jYmcPv4wFi0lRd~_xHM0ey*pUDchXP zaP!`+dHSW)#@Xc-^l08C*)T|if1=vPD}C^7cJ)|gsl#&x&FlC6CTVW3PsTXU)`T}g z;ni4ILM?;f-b(ulH9@jxX(Jir%|5kyW)>9|^HmPY6_BOo7rB=2@^)OGWvvYYBf4B+ ziN;{7PklEqSmYy*u6Y0xU(TX4T3wd%vs!T4HpDDJ!++Y95={mEH-*!o1 z7C3wfZI&cN6TW1d`V(}cZX!NPH`j~dQ?K`{l*zDtvQyj$ggYh=x7;- zhS`{?t+@vkhzPXc3t-Sb^lxXz$P2ozL)kHvF)UWd=B0aF#gt_dioC8D+p19lTBk^s znyK%=Jne?ZlBa{;>fh)r<)D#GS?z@Xd_G*LeGms0Xx1J`-LM-~fsVrFu>2+ry5Go@ z(i;-Lbev{nZd{l9eg8yta`(-m0HY;?Qkziu=`6>H6jem&vfAaC!b_z)92<>aNy@ba zYH56y;GCS{lV_2kf#)Crm-T8(&+3L&5DtIofSHfo7(KPc8$CPfSsSf; z5&!8z9Z7Y2#hOjRee&RMG8)P@*~~A*LTq5YqV~$)P*W@4A#gp3cj^PBk{G>>Ll#6; z2|(_y<+X@G5S6TnzvR^K=hvaYZR)3vm?{ood6d$wU~;~Fe8;b-0?z$$2`a_2F`g9V zR)t(rHJ^w{64HX+X|!yPMT3VQiftE@3%g}Bh->?PlAEhuG*mM6qHAY$;XcP1VLsF1 zbhe65=^0rCmmf7uk1fn6FK~@*rkn7WhT)ZPxd<;NdjK5%Y1 zJnx`1eKkG)Jjk2-F-^Bgsp~bU^ga1Wy&8mJ*VI|4_a&chKlYXkoU26#i@@H<($vzI z2G#x!z*l?L(9`j}a?e1+Jb6>pc^) ziZsdk2j_sXJKW2Rpr~|{t*##!%JmGzv%4h_$3o}DLZyA#ra@Ng9=E+a;!dNEcVs@J zubY1t&jLJbv-H3kd;m*UZQtMc&m^Mcem8UVsCIyQu)CLh znhE$lxv&)J5u1<@Xf?1(He)f~XtQZY$p|jz0iQ=)Sbi#fIDK-p`_@oC$FeO5zJflEjZR(P-8bHl0oh!;s6W`(k@f<}4^776>Z->01J zS9u~OFSQ5A^3U}d`beBYJpsk?Mn$(=}isBXN;oOA&0%XU}yx`qgv{~CzHzn);cv}AE^au1nx zxnpBDK9s(ubX*{bZ|=d~=e2CPP#sP#M5Kz$Gj;XaTn6_nT>4mUrlr??+U1`IoFyGL zdxAkW;&p0!$NiAXcgya@vvuG^*TaCDp-aJ9_9!QOMo+JSOUZ*}`9pB5sMs6F`zN;J zijey(&Gbn620n2TO~W_-Maj+{^jq5X8$MxUJvuh>qJtYhl|Oyv##?NmEOC=P-yo%5 z)0@O_t$-1f$sSKDX`iib_e)?Ac zm6Jc~sV3Hc`Ef?J4=O}ti^?mCu(Sm?X7f9KV9YL!pHa_JFXrh;CE{%lETRXKThkh7 ziX`IwnXvSrC}?UljMYYr$b0Q(Kzbu;7W@u}H4vHPqT;T(h3dWXbaZY&3hCZS>LE!D6A|fVa}4i|wqN z_-0Uw8S?a_ea{egQW!B;f+6L$iM2KNBZ@wNqGq)9YcXf*I5LATQete)dBG!kw!$zv zJ{}#92`!7?U7LFta{Ptkb&a?8f%(V9qku^AItrBuZ(WLhL}1`wgc<@Y;wgmfiT=~) zm*l4ob{^0i(a5Xc@tL^BXKh}tjjq$O%g<~l7+;k@^owVm=3ks~LvADt+CL)xO5`3d zntcX-ecgG~+{2(l{7HK#XR0C z|7F>p(a;HE&}6d)7F`;HakABc<3`%i*jUUIQ#G^m_zi(ao;QrQ3rI*R7=a^-s-C+)C2vBxD!+)pUhXIT;ycoey)~R*$+H9cK6$2P z#_57C!B3AB?G~8{%+yh5oPtYUFqGfrWOt6I?mSL_xvYAx=jplLPjd6ue-jYW; zIu5ah5cnO~{rJ}j3T zJ2?dEt_0UHf9f1{Ik2=$b3aPdE}y-Kzua#;VyoS+Q~L@k5E)a4Sf!?9ve5bZbgYv3 z*ZLeboMBbEj&n}!?f@6C?9NNJ$MA?QGs?V=D*CH*s-W@zE~<^2NV=#|1$@}YJ*4tm|mM3JrFiThDlcNof3cg@!; zi{fv7Q+`^Il`r8TtHD-Z-1~}a^Z5&?$a^KG?jcE&7Z+cdwZ=)a(k(08dQ>u)FDtzDv#yA+7mt>#CWbfHuP?p@ z5-XMv5+};6YMS72a#p{5TZ3u!H0>IgOtmQ^u8Pq)xw>KJ4JKm>TRmK6P+&jGIXOyp z;eX~fQwIkp1o!cSuu{3IpZ721LhluCO)pAShwI?CF8!AA3(ffF1 zaNiYzk8*!fdJj0jG7lT@!^@0clfH6=xp(dhzhzx;>A*zG6k>3Zi>rGiGHlsx0BfAi z9jg)ANpfIc@%B|4txKG(UQU7l&{6b$G2T z)$|nI_-mUTW3Ll+>gR991Y7vKdq?st&>ZBRhIm##)Le=}!bdFWfjkX6?7h(?g@w5_ z=Vgmm;VfhTd=-?VSQNuOz$L2lP`E|eMs{_4LGe9MeDKHoebHQ9D~X^9_8Z2uTBgPY z$k|V#7T#Sn&MGXG9X&^J!|K*ZFictWq{^acbE;Zr2SA58aJ)!A`UIiRyesw=QpLFq z*YrB<=^MM+To&>BObV`?wt#>waXzTh?9A9GcatqjGAQ|t1uuX1YxjSXlgPUPC#AZh zVzf29{lS9|n>)swDeV%|xr7yRKYQ62$#=%8_U6Rd>)54JOBJzhw=>h8lCW-@7pPg; zX{pWru2pQwxLI;(74$PRZaVE<6nAPRZC2qkj@$kE{(^H4&QIXimQ;|`{W>GZ?%Jf< zi03#n&p{2ll3tkm<6t|LFAJhTt9+AbkWyL0l-=NB!VzOOEj_cz zImVE|zBGHbU!sr%Qc|Kb72Fw{dm_Z^0h5l*c(K+aLnj02U8L@Qcj|!Un7#WkJ4z)e z+Ep=8O=7jV*U55Dp^krdzwk0KGqyX zp2NEz)KZN@03f%BxHJy}PY&IiKK_nZ(DpJMjAxr)ng6Pzd-ifNH%w5&Q@GH*OkUpzt`f{P=*tayzZ5==Dp9GM$N_S4ew$fU;_4wjK6z=hQVIx z*EfQ0lw_ptYj{`F3Vyo2`Tdh<)`tdSFwotNUB34U1S1TCKM^BJD;`W)W{-quZlJ+T zO6-s4>odo)yB#XvTWF(n=~MjE%-lNq>{A?d)Wn(Qs@YnNNgbZulB5THX32HMpvNSi z?e~&bfw_hU@0MyE98e-hu{l|;}E2p7V;aT zNu;eL9aav@SYainONlkQpBFgGgds*IC*&2QKJAlk6QwIe#qj^MGBU68%M12gH zj9yZ77%q7&VaM@7X2g?>^6eRSZL__4J@&ksP10_smOePu_TE2~@HRXY0r+%3x6Zex zoe~2CJf&E8N_8f!;+fs=lu_pJFWT6oeOP_Y5{fQo8wv+ZKLDH`+Cz@;-#VG zuz7(j5j(NSDc*Lw<=3}a&Hq_K|XH&fordd(;HK1JnJJe*lK z;++JJI^nnBrVT& zXd1^+Roc=pFu1!P(|m6I-KBN_h3v?ES!DA}=PHWF>;C)hGC)!1$~m@1x=>YTZ*4S_fFbJI^M zCMxlY?AFw3QyZP!1D+M$J?GJH(|Vq1#lD{6TjjDFZ@5t#UFAoc@#H3L8pZJy6cY)z z8vnct52)4^s>B;vW_$Np%wf3WWZXuR?CaCRpojC22i=y3dR4{5*&v?eLC@#t>oXUr z#OE|eMd`bR-2L$=OzzW)gD~nc=(IA5ZM8}MVD#qdo*9xV=75U$68ujdFR;8rtX0_h z0jK$yGk@3ZwyIMyEC0d_tkI33$k_3&(n`gI3{h3Jaw|a$yLJps)51FS5MK;C#siw47PtqkEr!4h9)oB%dVrA)1}1@?cd)uyC7jSJ9m4j+tbyXKxqB$O_8O*d4HLN z`2(LtF7KzIuvFHJLQ$>k!rm${v1jVy|+ex@2 zxb(%g_P*CjIfs*XS+`o5ZcDB5XuIE&P^&)u$;m?1p?dqRV#j`1`wYHV(h5`JKC^Nv zfDVOfhAo9f(z#+)yWXI$f?!2nX*4ON_*+X}-R1pbd!7j!!YI5V#8jfdVcOuWCWBA1 zf%U@?`0%-T*!D?j&9C$ph6$0wtzk{BfvImgLMASI){fk5St!4d@4*Bm37)gT?OJRC zg;Fg{z1c?%<}Y&BLmo~}j?Ev|DoUL+P48jVp2;`z}@Ry3hFPMlT@jX^b$fCU8jy6>XmV# zNY6`NMA?7r|5zAfx0^_l{xBGA#g(Rp{l)2Qj$$jnZufjt%E)1Gx#eIz@`=&c%ApZA z)<)Y!my&BOL2#uxbg-1qu~(B%$7MRM@D2T2r9cJAv>=S!NuLu-^%LSV_Na#rq<)rH zo?eXcwXq{b;U&y|dRdmn5c^b3Yiz|Xr58RPU~s`&OylWCDZ2}$bmto7OLQ;tJvA-% zp@zM<55H1I8R?i)Ay41bSqaCNhDLgS?ti6AzGv}Z@5r35b$WSbx1&&{6TPQhkN)Nx zs^7NsknHR(N_WF>`r#-iQ1Wi=aeU~$bP=D1A$||iVR0WS@UpOX!TKVejXT2V$7|%2 zKwR?OY7{^d)U-dEKjd1zxySx$(i2X~J#CGBd8Sh(fi0IVVe$MYZc{8mMb`)dE(YK= zeq0pmwT`Z`m1!=5kTXwtvU+JjR|;@>;)Re1M>#Ac%d0xCcPBF`iqcG3Xoi2_>Ioe# z*`2lS*G4X@*xHxe*;#4^KKJ!`?{NGTsF6zZzJIlYoq3o0+-XR_`?z|f_H3HE%YbpI;-Q?B;Kh_iNAr_OYJo)Sv$6&&jdi-}Mq8s0-PVHo zC(vt7r3PjH!V=B!w15mx7+b!t4~OH9=D8m$BZk!uXrU$dr3J(udY+KzBqJbt^Hz!C z_)Y!&dnU}a#cd}2je`DDD8o{^MX0qKPF=~TF@bkpbK}Hj0}u` zxR zq`B9g&o7}P&dS!AcDs2OYiqVyL}b)GxLp-MCQziIrrzc~b-6iHm))+crM63Vc|GRX z!^eYgn6RB(Jxt9^>$tdoi(hY7T2N2U;uQ?r z^D1yZTX5WBsp*XZ(Q}0D=}TJsfFrVK#6YcVU-;*6k3--cu?82V@RRGcDuS2f-CBgG zCxM~pmlpgOvv+W%pS82}M^Ct9GUOP-EMW63aXIl~uV7Eq)JgtjOTHjnw27Xhx!Rnh zX%%VUsk);p@5PtOIzL>MHOcwipqFSuBxr8p6Vj%KUn!&!&u=MX+ciS(ZFC-7Ko9h# zx0WpXV7(Wx9ssX!NWRVcs8q+Tz8`z9Q|4NIlG&QDJ4}%G2R6%&r`6l#qTiC3$)Sr5 zOiQ_#H7cx3_^~a<8R)oW2tI<*LUfZAIyM_Y`aB^^4r|H98g7$NdN8=n<)r*>^MJg8 z6?Od+I#Rgnjj1}Bsg<6jY0hXQE4u)fmHK>Dy+<~l>c)5M>~$@^!S0!0AF3ONmWl7V zc*Z4Tu~-coVskTA9nCk!PQ7i;qXZ9&!(?%9b1fs98V;$*RH-^PLMu;Z#tn=;l4*`z zE2|NFmZNd#80lG5cAKql!glSLx2i_8Qskdg=<+mv%&sS5kF}+{U&ycDnN<)sEE*RX zE1o;4!JOLO3Ajv+JlJ%|{F3K@k-}cufpIP>$bcrIOPB6Fzxm~&TXrv}fm2+;Q`!Q% z*D+l)y?^INW=@DVS29=ZvIpg6Um{qXNPGiQ%0WR#4i8qjo2rGF-*fZ#*1mI#IGQS+ zPQ;_Vv$SW{+GPjd-5I47(a2>7z)IAs#~gYEZdEWbF_AQIb}~Cs%b8)yb-J|6#a3%> z4KdWKWahlG3Avc5ij_v9su&nN^l%o0h2mpFJg`gY1Z|U3M3a;%7p|eAT>1$ zW_+J$4;a%^c%X#_4q-@?;u10XCbL{nB9lq*W15af#83%;@m>0T%|0=yqI0uz;SVXz zO2c|59Qy?dr-=IQF{>gww1 zs(&Te>LMdHv5wuVxz;EW=DzsZJApc$R^U*~KS=75s)%hTwCyR87>CoX=Ml zEp;0LhIHc$JEG6}RNhKOYYedqb1V^0y-wq8IUHOjdrxiZ;a?CgLTwT9vyXRk!<0#9 zRhi>Q9G3fM*4kNEmNE#{DLf7fY7!lHI;W7!YKWL!?Z-vU+hqnaaW7?V2vx(SgW$_b z4_b@?wGaya;pmH7pldrCqIVDd%JI5x_Qv-UUGaGJgRe?}Ei|$sH~-f4;?iMhZJ=2j zn?i4mT&+O+I9ari%BI>D57bAZBgUJZ%PD(F9uV=8py185l#_6S`wyUc#G>IBBC~}@ zGK=eVB}UX@WPtMxih;XFC0_A$Cp>t<^bylpzALa3rYM{~JUMCFrbse{Y%+w%H`Ylr ze0MIL$s3a7NJJ{7cqy8B?OSJoY8#pZoGWqP_WPvoTA6&Zmespc*wi>z<5A_IpZ&&R zQU8sle2UXnT)p9Am(v&^VnzF=T2KCm`;=LkHsQ-Rqh>xyg`>&^efW4c*vl8(H3z6j zkpd>h-YnkjXZouO9j;FqOsv0jn>}&+$QE!fn}AM7{s-quzkxIB0oD&TYu15s>CU=W z@tBiKob&OX?UMF9RZUJZJ-p?f=2+ey=4*5D&eqju=V)H3Vv&!Vhu-0F^(M!7^OC$T zychf|M>}}AsFoL=l_N8)mOg;)s>+;>h@krbCqz&iWF+zQvZW_$8hq2 ztb5*~ig&A@*tpnBXM&*!e$!U44a)A<3&_0&A?D%zLk6&?iOfeJhvByDq&7;Q_W^t=F+OLDDump1>{r`-m~rdCjw2oxw@Wdmr~YMkMov>+=M}{w@X}37W`IP zNJpy-E4496Y@R&D)y{}Gs%Rp>O>wzQ%>A42S;Ss*=eU!(r%ZVod_E~6ngcl0t*{-P zo~eb~UrnR0pcdJ#_)nvT7$)7{dyYw*G{k3C`wlgj+G^^ ztoVzLz{Z%1Z^{f0YT(y~3B!~#>U^%1F5SJ3Xxoj!+kxX*(K%P``0U8!tjd^1u-K}m zEU&NH07Gm`|e2&!oCJNb?$P zL_L~@KaTV7TPsFYUc6uWr2dY1T#aHkThh5xOSP<=QldBvPPsl(B znj$iyFZ#snV=<)3u#k)>1YaFBP_;Sc8VO>VxmzL>;U=UGaAO4a&VOC))8}064K$Zn zM`$Y&WPghYw_UDngH_5c?u=3%pMprrzPWirkf9BCZIYjQ@-FI)!>c15O{lCLh- z60JleBQTLu>i?t3`Sm2I1V^||@6fiPo#RR@Go+Uvd2UR4(E@Q5A1Bd7$nY_a^vP9< z!LUT`pxg-iI4G+N{%PF&1JEDv2A-fAhg|9ur4s0yTT!6;Xd~31`wh^7)-QrTss#B zSD$n4t^1B7{NNsnv{X0DytHbg-{2_SNyNYnxa(Y5sCmWeboegmuK*D~J8epZ+8m$p z4P*)ACZrPoS*pu5SOkG)Vt=;+CC^>G!_#kUiC;jkkgNFWi-_ZaD;Eiv3wqjq;mR6A z%tyCWxg&P;b~y)i4iCbRH}NX+&zPT5hwiJi=N2Ik6b2m487B38Y{*tdM)DkekC{Og zUrklM7Hc_L{K93AU4r_N#64Byq`D&+b!+xmjO!s8a1%auqD+!pk;C~=9tvE3n;^n% z!%-`*_{Nc@x?Qv6{b1(}6pFxYE`K(Vv}@dxFjJOwYU3#MVzc-uaGvqkvhF=pu9zFHgWs3 zbq^vKaANxT69E@*xQH`3OfJWgeN!Bf*IJ$5f*Gh3xtTc-T4}eO^{qs59AQ~I)N7Sh z1zhOM=vU|s^Zqc?^QYaa`FvfeMO~uVGZ)Qfhb0PA#)T{EyIZ`FW1$)!!jxBhew5DM zrS1BI(@gqF>^gWpk82$@UGI0aZpKOZsuyb1aqcOf#%#7yD*Fh&%-&Z%V88gjloi8) z$uAq*L)oWOr_HB!nu<{d%6RW`94~zlTevY3I{9odNj-C_A^L8neEp(G9K+7JL)x?M5l76 z-@T`ui8y}79J0TUcDO9&B{*mIjc{;rmBK($}s?g zFiRZY(6y=XA(*b~k`BS=yVggG1oN)Zs%=+KY^`HUhOK8WilrK&ztjnN?sV>T1Tmn# z>dwB4s$WMZ@FqpTX+o#oeW3a-&ZN8GJMYWyXeASsFR8}J143$6(HGxR)#LfJk0C{< z7igGWj-c_$<*&-Hz@|f$J7(W>C)y?C*ulD*6AM$*fPlG6n>{Fy!UqP2#lSEV8tvXH zL(a*kWCr0M&1u zv_y!Iq;N7YLyn&Nu$ZFrc7@DxcYuYL?hd*-#!>2)Q-!02FKTd)|JIUXPX;u z=BG%|EIsnI6TKcrBxfdnvD{A@fSE^bd5tzW*TP~o~ad3ZIB?@5mRu_FzHuk zGx6&rHf^c_*Y`6d^9nkt+uI+HGJ?`&s&P6Y+&GcK2fB2>3N`hB3OG~ zE0!2&W}TOfXI{m6J|Rtn7qAKX)JHg;sXCo#tzDgmw-`-HxW(+&+WZ6;<8$t}-uKY6 zjhyq~6`rN|Xtlm|H>dU&V+C|&Cuh1`SD9HLDMYBZWMVhJ3_Q05-X;I7ZpGxXpmxgX zRM+h08cE{x(rqMhB)_M&!djO>^T8|82T{U~M;dtsbHnT0dKx2Rg)U>=WKJhr0#3(P zM>&s*b7^YEU7g95Yd?_{EA;XPu@GpH3uQeG$^ra+R4z`_x@B($wifO9>|$Ngl1}(1 z&3tDMH9W#v*E?2~{{~suLvt77H!81PHriejCF^b-@!{+9-gV*T+bHbB7T)y@r+k0E z)N47{ADTvb8wz0uc~wSaHuFhyWfac;{8Hg)?K;TtGALVPCr+gBnEEm1;kACX$PU}2 z##&38@8v4wzQ`^ZX>$W4((Ilg>)db*wV2@$uH^{Y%>KxwvmDD}=lV_4Nf^U5O_ua- zH%7xF&_al9p2Mlcm&wvP&-$sNG%j1)6B%Bysl)Jx?XNi{gxRdI#RKR!)l+>>o~gXZ zU3V$&ztTU<#9tv!Trd<*>%WhUKf!OOU`Km2fiBroGvpJo*}Q{46Ki9bDA6Vpx|uz~ zRR*iyG?seMecE(Xn!s&uwvb35&@aLoo>lemIp-@NgpRMcZ74>oJgiZ7`sJ}Cbz$MK zoT{kU6hmJd1KAbXvgSJn<{Bd~!}m*XtR|0%knrbe+7-f{dtWe}GWFF`1+8YD-XsiN zWJpdH2vgo0ZF7Tdm~9KtYF**&o!~_-j7z;3snGV2V}a#9wZMS%!`iuX&6H%uu{`N;puCgE`2VP-equ#Wrk)y8{N4Yu8Prhw1 zBbgJ9^LvF7$S}>QaqU{b<>P(em)OTs2Eg6W<8yY42>cVV*%R4@)BW_aSa4|_U9fK)WmwE3BwecYaqEtIlt zrhex;F)e$xg?#1ZH`y5S>%WlNi@$K7Kbwu_6sSsGhZZJQcDqE@n9MPLXkm0e*}Je=v)j(n*4xHh@~w2*Z@)uD;aQl*w&k_oi7v)}78)ua zzq$loxGRR|YbaRe^k&>afl+o3u`5lov35vDkczTx-Ne}6y>`c*Ld;o1#PzD0L5a`B z>yoSv)_0|EuWp<^7=YN0l?p55+w;#{wndhH@-*y$NB1)UfhT2_A$N|)tA%N2#vk$= zYnhvQv&>XEYje9LD^+s{m-f|frcL23CW{rCq{XJak($Xd4`V<^+N@+{qHVZb#$Zu- zEPDx7*!=<%K7I+!VHU1W68?OmdCc$%YpZWX#clGQWm90L`aVmns74^$42>Wtf6 zVxH7fEVw2qi@F`FH|5+|d+FWAxx5WcmQ-jvL|SpG>b!qgHD8(yFT`10tb1c~==9E4 zG)9bE^fm({G1`v;Jn)U`)QEM^E|9aAMS+5IAL-5P#R*$hMwuMV#eC!0I73e=QTS)N z`_(A|z5|zwv!X=bOC0>~JjWpF)8o6@TUDT2xLIQn@PMCO_cn0aRRte!r!vcg-~TXonQ#q_&7X#?e@crMo#Q4ddE{Ms9ZJ|%$h5M~&~I_7 zP!`QUb70uO%qvgVM~qs9H|Vf5H?#IV!H#1ojAOqrK&8KbfsF~Pd*e;J4jQ|szJ*|p z#Dnyvk(pf=`BM{n==f=wVZS(KX8EqQ*GVEnn&-q~QrnJ&jnJ(%_v$u9M*Z#ALl98c zvL{o<2ik<0?Wt4an<_BM(2z=Ly~vR2J+U>JHl@TUD+HNdJa28k!)7FmapK;Dem=p6 zABO{>1a8iS|H_LkebNkn5|yVV@&jwYq0DzpH2Y&qLqAB>+!GR&l1@95#*;8{C6%c|Y4H}u^ky6!#d9DT-q`r?y7w>e}pX=Qi- z9k&?&ZC{eu#c^@cVM81(a7BTA(`mfY4LL7g52d){dEE77oGBl}_w?rS^;QX+ey()h z2`Oo$ry#amEk)bjp2eK~H%*aVsqIm0k)=FrmO%Gsq=Yh>pamTuLOl4i@QnELaoF4S z-QX}fQnRLHu}@c1s+N|TVdDN7c8VO>o9abH#&a(5WAWOu zrs?pt_odD#H3MN z_L+z}cJ9`^Pl#akwAmKFXJ^;R1=iX&EFG#$TYAu;s?Lrr*+xKNu9L~~c?v$~2zi{F zH7~I=UR=?@hS!D}UXu*Z+9S?oeHr?sxo&qkT+Ac?A|N8|qQ9sKUPMvWz6cSy6ezoC zh7L>Y>^9jno)_-M7ef}4%uJrm2pn<>IX+Xr6R`0)nPu*cOCQNzC9brTWIOMvh&pUv zSW@DX(;d%PXi|7$`_k1}xBhvphs!EE5OPjTC@p&nHS!jl>UiP%AsH1_++`ch`g59K zQ;mc0)wk2T#u1J5iVHdmtcxdW<^m4-TYs(IV81XAW}K7sv-?P5UDX>b@-+165xM{V`2*i*?kYr{_hu1h~zfx%Q-TfBB{ z^ld=CU5>C~Si<}O%Su-Vozv0+3&Tl@=d~SE$WGlSg}94nR;yL5L5`@LjRKscEob}s zK5sqXckSQbKb}_*vuZpI{K}F@gPYiK&^haqR&(44iy*xUpS@}H*xIb4u?saUF;3bD zv3D6Yizrd*;@j<&qq-P;osd5}D3H{}fwR`PpS!%4Hll)8Th?uFz7yBFY>wXDtp+fMw>A>3 zYipNMY8$4@D>{WL)(Tt3S=q>kl+vfoI!O?M3E3VU67}$lJDN4;4w?5fgR4{QpgAtv z6(&+u31arCFAbk_4`)*vZk`Dg?GDrEyew;!2@kv29Y#WmTb_C=didQqyz$jq|Htqb z=gRGhy~H`~v6;6?7`A9R!@{u{6Ah|guhZf=My2r|`y725ux8%a>J-gTui01_M{wHT z`skQ}>-!$GR6}=Kks{n-p>@H)xrBGRCBQwggo^s@u|x%Tqa2nwoiW7+0(6HKu(#N@ z^oshfrR`KD&CBmsHR7B2lrB5XXKJgMDnR`d@PtfOQ#sp}tuYSP{jYDRK=hJeA#Hg} zbM$Cq*AOWGn_Akrs~sur=Po{NRmRzTpLxf0_p=+o>L|sDEbR*M#*VyEf=(+11L&$E zh`wn<*e`+GM_8minla;R=tc!L6Mz_k35bdMQCe91PSY#U$lZ86i6N96Ywr64_WAB| zm$AWhM#XLbkp7_z$*#{)jdXcxX4jb-T4IcX@r`w7T+^nV=HeBhs%X`P{7dx^Hl0BN zrlq;&4+1kzl}{j0l3AKi%~irW3|Lq~(T*7M0jtKU+>3qEc<_(esceG651T{H1U<3? z+q@v3k+g+ovH-5f_1x^vy zd>`|=Ggt4GPn0MlX*k(-J!8k|K!m0jdt7mh-fdNen{Wjhq!T~51W;14=;uW0*NB*0 z`+L^eHnRHIuc;`FH`?Nuo_(vXTJO2+*uU!^$gFg5vjiFntV_>{&LvsYH*^ZQl}v<<)9T6 zbj4o#&i{sHzRHRfWwa9q^)Y-g@g|ZDU+4Yf(|I+mrbJn_?@VdU!Qs0Ks3>;#TbjqN zR}v2Jt^0|&1t(w?LZc6*Z@wL{bWyoqH#~JI(WBB53N>VmPw~FxkDqx6Cv@IlrHa`=W5L zMT7wsIMWT&vE4xV8@vSwn*hqH9aoP}Bo%b2+(mQ|r!JheoPU4Xu%_%jtrGP5_T4!I z(6dv+{f}j5V6FVf$nZ+JQjuXc7=_-kLUU!ZPsqMY6K|pR)!3(08Di4}lRWmE^@p6! zE&BMm!UW9VxIS*$)(He*H4Pq6sBkLVv2r#(Q8!qzXG4&T}3ZMx~!??N<$*fjc}PlxJ$C5!j|RHPW*Nwul}uD&$!4Mp2R2+8cmMwt6$QeDqlNBlT^5ce<< z6)lWPP+fgF-__9fC`P?UdDa7F)99O7m8n>TdM_0|Pd1P?Z$$*)nN04p%$yR>GRxIE zu6x+hcD7E+I`x}l?e;KL0I)yMF5C{0-RBo+pY7VEVJ~1gwG4CoALXyCqn_W4f34~; zkap4{UBk)2fSRNo!VMm~6Yjd8qA(8;e!c~9Vuh|LT2YzSe|ziX@|0CkEL7;hYrp9} zio7($myuHVL5+{juKG`!_MVsxcH$4vHlK~6@_#)HuLlD0OG!z|`RdYk_lwNtfOd<* zwW|1=Nql}8T@%I%s)syUFh&m0Mgq98WDr7mbYn%VLW}dk^*y>;p@_P-t<+3D*+(`e zV{zOsSFFYC6-50Zuc)3ZuFw|?j`%m1;{~1aj};-8 zomjG&_?z32WUXWB@xI4~*3y3%T`fo=oZ=mGdHzV{@g%*2h&XBvGYBYvF*B=E=euCF z&C5Yd5-SIul#a3GRzLMQ`+GQ(V+RT7tHB28oK)U`qN8Up$josN$*Bx0JaH;%#zg|4 zmQ)e-(xRR%`1DoDw3qeqD#I9oNV9Q4F!3xoG4TUM0mKmd7-P-g=q(eV zD5IYUI%xAjUqu;`P?j&!Po9s93|E;G$YzX8S{Hx8wAIeDi?Kt`T*dfXPypTaomJD~ z)T!2BMiv)i>AC-1z_(3-=-LsoIsO1F_dwALasPT{qJqat5(w$*9^nPB>y&^K)B!H= z*Qo-BVN6wh(89LK_OYt8G}3MM8a#mlU$>5zUp+LbiLY{6XL?jC5OL!cV4YdAdE5HD zClH$i;Bw6z@L(E$0W8LoRs5&*a1{tn5gKu@Eb0=T3#TEqBCb ziy&9|uFIBf$;7jXC91i~v^WOd)&Xkwx-BNVuW2-Or^Q>#3_1|;LCnvaeNf8H6d_$JMm<= zu)g*quw38c?$v4*6}Q6E$2fQyE~b|}0Fx$_g6je2b6|#*K^lu|GYX-X?`{ZlMHGt! zUVR7hHDqJJ{kso8Hrv3Bdu{VPaGLT!m&Tu-$J1`dxgsZ6mmSzp%{AYFO5?uRblZ8Q z#YzS2PN?%hEh3ZGevLch>Z18@f;7&>#lTaOZV)vy8k8C56*hI*Rqx4j>*A-C2{MC^ zM&3)-JZd!EF-!l-3oLUr?qP!Nj_yD>Cb*$&czwL4lR-cqQDn)LmHg9{=_KYX)U zr;1h*%X)H2HhP6zxXWo=EF=(7QEs_-iQ|}~FIV16OVPO2r`-wCCJ7>h#DCb2NtU3CNw=84EiMQY? zJYZd8*><`v3!Yuva*`!DpzC~(_u|G#Q%ku`zCl9LBfE(46`nsh1Z-_>-9HN~d|mR4 z!BGw23L4@U(ANM-cMz@~**JR>;{Y>Lf#%K;U^~(qctip8iiH7G#-K-Ns{)FJN=*R$ z8q?om7*awV+PXGc3ZHj9dbTl@k?mM(wZX^7XD1=yp4~g}#2-9@8qWLs$4NDjWx zd-n*TSQr&0Zt_J*E%*QEgj5cI^n&hX_eqq1mVm8 zV{St&@AxJ=8E|7>FkGPVS($c@pr_4R$W}z3Gkq29RTdceJn}wB`eFK2ukThmq9D9j(HVpk zxHbnAN#_wkfTRyw$;XdYq78{gF$`qcJ2PukfwU&IVQU2Ip~lz2fx@H1wwh!g4MOZg z`=z6~SU|+H8x5J;K>~&oOPY$JI=7a}5IDU;7mIeZUCe`U7;+s~Jfw(I%9`fK6F25s zilq^Av+Q`@iGzfAYkP`(vv=31e9Fp20z#sDO#@VV=`R3X-tDa3HQg9_ z3|c97iysK~FZE0xmP}~N)!vo?OmeT4B~<7oK*2#-f*uv5U>L0<;ea&4|T!Ga_#aJ#C>_|KFWuM$R)Vt6PoDaS~1e~%+s=Wmm3Rsdc zf8sAB#{1Qucu;*>Q#brp7}v80##fKcdy*c3>fE6&A+Co#qI4+n_+6#3cM^!_6F8j^ zpu*}&&86^BT$XXi5jG|%w~DW`5nwwJ(D#pi9W5e|(Ar*du4vAbiOWmDTnA1ernrpP z%%KM9tmz;?6D5W=Yjg+I@OTc#Uz_EV97DnW_#ZeZChEUMk=9cVX?V9)Sq3PK;xIk~ zY-gMlEx3n$k9v=$lZT(bofT%HqYhc6nFz>4TY)kFq_q}{VgksyH5A%!d z;i@dyg8;-Ey%bn|e@UXR{`NQ|^_7kk;P)PgURI|2Y%4(*A}Al~3F0XFZiH<`#cl~9*4Hs1+n|kN7 z?dGkX3@7Pddidcrm&4?%LUAjqRb((%g`%z*+R^I&%xXCTcXenMzz+ zYw0}8rM$4v_N-E9N7(&nEu!8yN8T4uK7bAl^h?=`3%oST($RH<#aO56lr1Y&@zp%G z0aK?_b7F#2P&w)2?3Sq8ags!9oJIOfYldw#*nM(3;Rdw6nyMl8u<3)@4%J;Bm@X`< zh+(HxCV}NHe2gD=QRUWoninB7UHX4=)3eOPRydCP@0i*z&_;(43QcG5*ijt>#<6^K|oy9tvK z0W^pjE%F9XnBRhcbkqJG0LMv*inF*Y^YtB{{$Z|{>gYKXx0)jrsORD{(BGKL0xE}0 z5Ivc6YekEB>u36Tkz`Su@&)FOcS%ck+VTQ-+hMpcPB>~(KPfUD#}JV0TUrGP*ubW zoD6((!TlWnEZ#{XaS#$BGBVVX+CZPDTwx;ai4U$y-HEn}1E9`ZNq8MmK}eyKp1{}# zTqm$DlFi$tuR>pDHgPlGpVL&d1m>*)Bu&D>i;;H%jNQ5~nf!qwJG8V-5rnk7Kqm~0 zeGN4AL}~MrD+}=)dWnR+Zr3aZs9a$qAXLw_!tdlIFyf#t@#aTLdU?dN-dM0B^}cB^ zFFUY@Tv*hV-;Q`oK-rsGiE8^9Q>k2YSlor|qF&{VSyJ!O=u9OPUf)S9*kJo~2PX)h z(F0@oBSRP#0ImB08By?Ly!#$fL2BTIvLvvHAi${?H%{n2&vc7UFP8ysA|P4v!Z|MV zl0gBCy{N`JId(SL44QI~Lr!+X!q_Z4pI-{7Xdduv2U z8RxkERm~4tfcFKPM+-8RtV%gdhIst6Sw7m*L&vEhx)`@>KFqSH2DeL|Bnsqg&8AvA zf|gf;R&AVUZMUVxYqsuUqp}Q~B;k8RfX#6TW3~KO-~69f%l}WjiJ<6se&-I;?kyGo;Pw0OF7X>x_g@qE|BN@#6O56V zJfJx0FJmBm2F?5Fy~kn-4*F$I3-}+a^i?pV zvmiQ~g1txlYIFZx8|Obp0ys?QX#u9BRU3e(|6Snbm#OskUw9rs&+-t|(0L4Ll>z_U zA5-zKM?aZnUEXFZgg6YKR?EM>`=fU-KHisn6b-iifKZv3Kl|d;1x;kL7$5v+6{Pog z)zl9}Q_wU2GD`ns4HLdag5$l1f6Sqx8_0K&U+kEvN)aC)U-+~JOxoc+|20saZ3jsA zEap=zVX_JV%g6*%KHSa?UIlLZuX?B;%;wL5JiA|%fMIA~jM7&+I&pppok|S2+aFuB z+R(=2tZK(&@=6sJ^c`@~9-!$o2wI3;% zZQvB#epLip0O`lp-(MXz(@+N!7u%0=QG50t3A%+>?P%J3c{M9ygRoZjqguz<5jh{N zfB~pJ{(F#lQg>Rwyz7yCzZ!EW5D4y-Z_vF)*d?(yFlZJ&UW!^-q`Gn6mVP1+_;i?| z*Vn#><9)tdtE;x#yyC31j=73pWDx3I5aQnz5B_?6Iv+sn@Eh)$Un788;VZWI>2jsx zho#oCMnzzYU7oIdd^=;E(hm%t6kqYdw0hHpD!=-6{)B=mb$Z+cE(R(H@ZkNV7HkVx zz&BMh96gl$~6Ct^A*jJ|FH^iD20!a4F$@XBBPvB+~!pxby+7hQI@C&|9vP_0;R+vD)=Uv9vGftN!=Ls1M!yCJ}ISm;;y z5PbwwYCQ%VFF)l$B^9{7=;Ee({%d(~PJ^^)>S8vXjdy_HDqhKOa^7Gfj?|q;kz%04 zSigb^F7w`Gw2PE&NQ5s*(R~XoES2B&&cW%vXaIX>D?gh2>;Y_`1fr*}FOE2D8%oFjHDs|Ijw-0wcZl*SPAcU?X6I8aFgAwf9@A~ zw~ydT)U&%orun_Yg#Y=)FB$pk=KzisD$1kDBNg)h;a8<0oxkDy%@9rpW-f(2*CgFdl>Z3{RohvzDhj&^)JO)&{T0$hCVB|q2?@` zE@)H(<=Oft1H`p`gfhN zghMo8sRF!@!f^bWP0-G+x^}%P!*eOCWxfWj(#yoT|1rNYG|g&HV`!uVf3>9-p$0sK zzEXOm-aPe?E-K1p#Nd9`J5-Gaerlck@R-BOqfd*xFJ+Voe)Zp94btH1ueO!!{KaUn z9^&;>hA!RQU36qnsZq23qvp7753~gYXeaKM*M47`&c7ne>Rvo-uyZtc_s1@*_!6;z zIEPUl@3)3`c?zaOYKiM?^rL3gR58G*HNL%wdeVIFE)Uxn`AMhr(o@o3!~-0O7e-LS zkiETq`N?mvE*^1=()lc%HUil03jC$7CV~KICK4f`yr7$TSni`)j|G33c^_X!Mg~xJ zN_sjv`1LRc0t>3*blvBikD7wXL)e>DgwcPl(Z?-mt2RofsAtM%^=z(caTtyo0e7#ru7TExH%Lpfd`i5PQjp>dQ-S08bjb z(OFL#VzAbESo)h=fW!p=ssR=2?^+1AEJ&9^T~qJWB3Rutfsd4`i)(WAe|k_4mQz~Q z;Vqi3XL_XBWHXMJ(6P&r8#!62XT8(7DL*ti8jCtRGh+w9;0`1MFrz?9{mJE6fgS;x z5RdbSacYoGmbmcr(*bPCWb-fzA-!9o9^#-Pt5AQ~gjDW&G?b#jbujlM34V(`0DS{! z9Gn-Czjv48XU%C|!$_lp7wa?% zjX$ReoUR3`7e_I<7=RmTifQ%AQRH(rbHhpC?HD|9CI;h?nP_>b+Oq6;*q;#t0T?3M zo#fe64iPGsYxj}8gfQX!m*MnM%JBG81$g3h-?31>S1F?HEnN3cSp)iv0Q&sP75`Jm zq;G&6U;8D~kFSS(=D^qkvMb&=j+cHmNU!rMar<#_cIK`(WnW|ZcA)U}f;2X{sP|IP z`nHHQfQVu;TBK=Qq(c&dsxkFgdWfL0+E-)vy!g@!-T*BH z?Bv_S@S%#-$ztkFD~jE5Y@ON>rZOWOS0PYU7WIb<6e6BH_Gi!Lg8UC;`xx*FY-B11 z*)pkz65N=U^V>Pqh>1?bCb4a23)+>G>3?bMJJ2m0Fz1Jq%B-xPqc#chlVA2Mg(mML zsxlgE!vahIB+G~mooe?1R-G@+PTJI-lI=a;N5Q(fx(hS7@A&!n%m5TlE+&cF&|Kwm z73S&QUioRME(|O^m^KZJ<`wV^&lJT#~;IrAKl2V9Ftm;**ZJ(44cFvRW86=qTBT81anHXsLO^5 zHL>EUY3ZlA4qRO{oIH=i+NUzTpUrV)ZI!eW)Wr!Ds`9PF&O6^y-Xm3?ys_55kt_pr ziCOoGoFl4JRn_!hW}|4C+wSJdIguX5y^H3nQ?!gsvv&awBbBye3CjRNJOAvIxt`}a zK~!w}Sku0o(<0_r()MI!qJU%kAv#B+$!LL|t=8n%GO}CjE1;$WF27};_a>WAj~P>v z>S|vK|17)(yRhPkOPvw*7G&bCf4;jipG5=H@AH5kI0Kl7enz(E0>1Gi9 zkvwO;oIE}$@#3mms<`)CZ<5ehPpXIzqp7}rQ;mBG$CrG=@j=s-z4;sigPkdl2u`bk z;%TgktdXki;HHdOI+4!=5tvmRF``Z&32ecpKa_K zxI)34zjrqa^3T5>p>Nbn&OINb) zjm$O{!rmyZjtzQ#>5{z=X}$rzUVUqmIt$V(&?(wMaQ z*mQEVg#y=|oqK?tg~y<8{#yj6-B}waeD&Varg7zomim9H@ZdWvC|SY6zlQ>~!h2;# z3}|#7etb$e zPu7>AxTkbATBvOgyp9V^)lXmL>51q1R(Cq}4kGf+V0W|l?!J1V z7D@a_`u6DTER}<`u*{Fs%gTWhG>+rvf1XqfYJrU;eut16@=L)1$>K9hz?sw$KT-`m zC-6?Ec~Uq_YK38P$!~IJhYt6>pp*y?j|s}%yQXPyO=z0DtbRT5Jq+iY%W6_GG8mfj zf@teDr31F({uctY2P7A-({!wuJa(rlCNa9zZ}Rj!T+E+xavDoW@`UOrsSQ00UUt~I z^f=sG6}3OILC9BWcHB6!EHgTH+%!4zv*0hRHfYvo>;J)@r7l)X;r%grVw(=d(6IOp zI#8MO4^5a1m=B4x4C22Uf%{;=1eWo$sM?neC^cg|!8@%oCNjydUPEkbdXk%74dmCQ z^3L5uaqj*IVDxb_>IXB>pcSNkEG(Q(YYG*NvpHPxmBA9J@T&~9Ww!K46WOF9Eih#N zUa78BrG^_;z0U)yet(t?a=#7f=Oes_Y;!687E2O@H0{`2VyFDs(B*lH(s)~kD(MWY z``G$^S!~mf)=y9gOS!J!WdjrA0J2wXwXOb%8ubIeK|7m_aUW`X+A`v#2I2phMO|+6 z+?nhndMS;8w|7teNq;v9a{?xcNH zJ;3gPe`V-1*j32FP*7L&MzKZ8IrCY4kDVtU{}_xHe!Xhi>IeJQrr3~uTWM@{8ydAz z_bdRZHqv0ZYk8my<8yMm0(sn*&Le*i>DTmS4p-i1&lw;7G&lg086O`|z~4h=is zXI3buMwJJ|IR6wM9GtzZ2d!oKAb6 z4pN+jhkPy|UMpuokv3e+vV&!QXCZ9MTHa_~(17rV@oI}f*xtDuANTjI5*}BuW_a?1 z6g>^Pcx!n=E=rD8?|rVsVWY!&n-oxQxg=AUI_-lX+tEV1D{Voe^5rKrw>DmSC2%xU z)Sg-TDHcF2;HS+=VbNli`W$1Q@9=g#>%)#0gZMtI8Z!6vFCOa)5-5u8HmtsAt<8f% zq19F1)1nMPX?v^-1~o)zYL#xe>sc_NNiS;sEHntL=jDEVH*E2?j+M{kD0S;{cWk$s z#CEA8;4W(%lsfX4d)4SS+O}*7qvS?d{}{RtdjS5Avy$Ac`N?GW=yxM8%^d8RmEKIb zo$RS@(tJGh>>N>RQQLLOq*BkVkW@LwtG5{_xPxb?R;a~`!_`?OEZ0#E zs2K#jutDwYl=!o)vov&(P2`T>e!qw)Tay(Hw0IR=lWzY@i7dei)R*DlIx-_^`tMr=%& zx4tJZjZe{9uj~CY39&y`Yv%) zgb|kQ!9l0j1Oy9IU?1iU@e!qpW^}wg#b;6;>4Q5H1Zs&Dy5swO6>g`AhbiMuyFF8N zV|u#{Zo56cZK)~T=4QP;=RK62qO$_rKr$)`%VI;H95#Ch1+{S=*!glSJI#K&%6(c9 zlI2O3KlrkWoP13|WF+7Y0wM?%hZ>yTjfjY(+vru4@=wdFXz)gOkHY)#*o=BqoREXM zBwu);j3k;Y46-?xX?VpDigC7lB!8JEN5$kDJMcq_zLskC^m(@&k+7@9(#Yn(%*RHy z!Tq|IX*BtbeTT^zjgZe(RmG#hHlL|Py`v@Wdk;RAgrCV5#o5}J5XG=>4jkATXgmP> z{nP&!YJ_4uEu8WpfVjWf2$}k~CSc}aQyX+o71FXykNNGlrVe2IGmHxrV#n)VH%EQO zDg9){cK7wK55@9#)xN**&mZ&ES+TXX&)&uJE-AUXyzt!5*1u5NKh=k8Io$Z_&-m!8 zIvnguWL$9T*LZBIIqc3{EsQvGObk^Jd73KMMK5b{gi4Ba1qY{tV_t|UEYho(pGN)U znID*mnsbf_`p@TnN$3XG?x^yQ5&Uk|XVgCC)GqR_HIRets`e(1S8OgP5Z6qm2U>;VIEci~ zcEf|M#fo0vJHDcANEFqoudE#HWgj~|J!M!CQ&>5S725JHB1lZDq%y0p^DN*Cv$hRi z+?d>4*ID@?aPVfr5x(KN9~ds0x2)1x$dhQGlwd66`Y@wF#tO2Wra{^3aBf;#(4J0P z;gIl`INWmFhX99oZ8Jrc<8KL>>p}l~-I2Ensg`|5%%u1RNev6)8kc*OdeI)v0O6pv za$jtNEu^@yW3y#EnSQQQ0S+fBkN6}Eh}F)h28o+c_|GA!=Y3K1&) zZF0-B?ZSLxD0Gc6yjeDzR;A|JBZ0iDlE~*~oP9NBbN}13pF#wlb4CWC$dApAqx~aB zPPjqYF&XNPgK6Gh$!R(^b+s$SgvnEGR2$l@OPv-aXgP6!+-mPDBZpP_lyGTLA5=!UG@fYee&fNo^YFlP zl4Vm(Lh(XT#^oRVfr_(M3qFJ>>lTM@GW^5wWI5;=zixe+sR)dyNT=pte)n=`_iEFc zh=Z`WzVv0XSW~KCabFC@kK?iG@{5tatf^?Nrjv>M)=eUP4!%LjAZ#qG_jT*EZ9+o) z@7HYjDfH*CZ{|*e!+p2a-`<^Rf;63N%wA8wYT$Thb@ZM3Dplo4&Dr$3IayFDrHHr6 zRD)a9*?ha$*^*e(&DE^D%QY)(pFJ~ZXQ>$P^XGTJ^h~oiatLvJaq-|!Db8lZQFyn? z(CQ>u>?OLS$-lBQ?Zrg=YFD#v{F)q*>-BuYsp!}bCu_Ksaf293P3Xv^j!>~!g)08v zOWE%Z)b1WChVx-#jnzLb%_`6h0{VUCs7t}9m$i&Ej30!Uvk8r9p$VuujhE=H-Ru5+ z$Cggk`Q9V)BE{J2`+RX$F_VT5GuADAeX2(`e(LSDaxjJfKkiSSAE{BFf=9h*H`iy> zbXsFy%pFpB_g5#nH}sC=kCA#@XoGv~~E-}kxC^V~c4%*<89vYP-8WZ-LM+diO>*lj>IN0tyU1tbR z{I)r|_5(}7HHZm@7QAI`HD6&DtH$WIwZ4~U{{m|oLOmle30J>KCBRCDeBt2k#Kuw))N$y$umEs^fjXk%GBOF-_0d6= z3yNelpn03uwUylBwvoaTgOFASXr|L@o9~bDKNouVpm13OHU1!lTe}z=YmOx;f!gC5 zDo7Qt6gIree~2hj*{`Tw$lV;wCd!V~%V%7iP-@{pZW?051cJXMjV$1thilaBz*{NF zgDD2%yxTSMAqG1a*rH81c4{v_W#Hux6?+*Lcf^PSkj7cmw*)ioTfj@dfc-~%5^08> zN7itZ42zfCP|bLCewAA`d?=)6`2wnt@|&uO%&X6osI)PLb@=v@sV!<`N2PI-c(<19 zcyBl%YAOn#&a(@N)_b7v19pd8xYk>W!9Kk+ia^yINM8*4FJV~$y?yeFx zZHnTxj&$=MlNyytNdf0jU(t3WLdZKFMqg!4<_b%z@Xg8k8}wmeZ=Lov_C!MEi25}@ zBS7~LOM3jZh%`%%-mFC{Xn^=BrkRiRiL~*yIC8q|V=MRvhkL`U^maEIWtiaq3EEtd zii&VWWdG+==5B*LFxRVcD8#vI{u2=UB_<(Z<-?Q~+4EuxI&KIbRyqZsRSK{;`JVN3 zrw}@>t7&OzNe~|&h$UC4I>PTri)}h{CG;uxrU!@HI8Q9%P?vLgT+I$9UYZ-YsR)1d~)Y8B`_E_AT-Drm) zmR2}Cm_GyjUzgku={#WV#xE%S>N{9Q*|}I_^tksu!z$ zsDB09qx}lvwBRF6M5ZUi4hJ*~ZoJ2&-<`;|Z<;`?kp^&wNp! zluu|j!i{t7@R_+0Yow!5kPbWJiHTRj#zIjPH@HL%tb0(^t3ML6PtK9HwQ$b1o%iID zVdAa30zv!Jk&)ej)FHzir{)dsqkQg&#XT&Khta5dypSo$&mCXLVO^|49v5)`JTU5B z6pl*fzb9I=_`DYRw&2CjgxK+aAg5JB|hcX0#6iQ)w2Fi1C zG-zk{oS`chIrU&2-ptHgpDvz7Ue3qEu)DjE<~Hh%cadaym!WmB)xcGvY=h!CY88$y z!op!a2o+>jtAJz0`<*xM0EYfgGA!j0-X5kB7(uj!S%Lp;u%)Uetl2PK-fE;fOR#$0dk4gar9L>-|*8lSpn1o&2 YK08@deT!lE+6p-s5wSb#cd(291r9yw5dZ)H literal 26250 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 Date: Mon, 6 Jul 2020 14:56:10 +0530 Subject: [PATCH 14/27] Added the flow-group CLI description and command. --- devops/tam/tam-hld.md | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/devops/tam/tam-hld.md b/devops/tam/tam-hld.md index 839f5c19bc10..9beab6e0cf3e 100644 --- a/devops/tam/tam-hld.md +++ b/devops/tam/tam-hld.md @@ -387,7 +387,34 @@ sonic (config-tam)# no collector ``` #### 3.7.2.2 Setting up Flow Groups -TBD +A flow-group is a packet match criterion that defines a set of flows that are of interest. For example, "all packets destined for a the webserver at 10.10.1.1" is an example flow group. Multiple flows can match a given flow-group criterion. Typically, a flow-group is defined with a combination of L2 and L3 header fields, with some fields specified as wild-cards. + +TAM infrastructure allows us to create a flow-group by specifying the tuple information and associating a reference to this flow-group from TAM applications. A flow-group can be removed with the `no` form of the command. Flow Groups that are actively referenced in other applications can't be removed. + +The following flow-group attribtes are supported. Except the `name` attribute, all the other attributes are optional. When not specified, they default to the equivalent of a wildcard in the packet matching. + + + +| **Attribute** | **Description** | +|--------------------------|-------------------------------------| +| `name` | A string that uniquely identifies the flow-group, and will be referrenced from other configurations | +| `src-mac` | Source MAC address of the packets belonging to the flow-group | +| `dst-mac` | Destination MAC address of the packets belonging to the flow-group | +| `ethertype` | Ethertype of the packets belonging to the flow-group | +| `src-ip` | Source IP address of the packets belonging to the flow-group | +| `dst-ip` | Destination IP address of the packets belonging to the flow-group | +| `l4-src-port` | Source Port (L4) of the packets belonging to the flow-group | +| `l4-dst-port` | Destination Port (L4) of the packets belonging to the flow-group | +| `protocol` | Protocol field of the ip-header of the packets belonging to the flow-group | +| `ifa` | When specified, all IFA-tagged flows are included in the flow-group | + +The command syntax for setting up the flow-groups is as follows: + +``` +sonic (config-tam)# flow-group [src-mac ] [dst-mac ] [ethertype ] [src-ip ] [dst-ip ] [src-l4-port ] [dst-l4-port ] [protocol ] [ifa] + +sonic (config-tam)# no flow-group +``` #### 3.7.2.2 Setting up Samplers From 64e1bd1591b5eae9894b6b4149ae85e26a30be4d Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Tue, 7 Jul 2020 08:47:56 +0530 Subject: [PATCH 15/27] First draft of the Tailstamping HLD --- devops/tam/sample-ts-topology.png | Bin 0 -> 248257 bytes devops/tam/tam-tail-stamping-hld.md | 483 ++++++++++++++++++++++++++++ devops/tam/ts-tam-correlation.png | Bin 0 -> 35613 bytes devops/tam/ts_arch.JPG | Bin 0 -> 49369 bytes 4 files changed, 483 insertions(+) create mode 100644 devops/tam/sample-ts-topology.png create mode 100644 devops/tam/tam-tail-stamping-hld.md create mode 100644 devops/tam/ts-tam-correlation.png create mode 100644 devops/tam/ts_arch.JPG diff --git a/devops/tam/sample-ts-topology.png b/devops/tam/sample-ts-topology.png new file mode 100644 index 0000000000000000000000000000000000000000..57d3a7ac4d39ccbd594c441dea2adfd1ab3bdc04 GIT binary patch literal 248257 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%0D8>i2&AwlLw$}&Kz0N}r^pyWam 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 woXEb~AQ*)lmx3=|96snis^jQl_vo7Q_c@J! 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

$lxCi#|%J>9~ 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�!8*}m52FKFbCry7_0m@{!w7K8EY-Kr?6A@=DSBf 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 keys *TAM_TAILSTAMPING* + + 1) "TAM_TAILSTAMPING_TABLE|sla1" + + > hgetall "TAM_TAILSTAMPING_TABLE|sla1" + + 1) "flowgroup" + 2) "slaflows" + +### 3.2.2 APP DB + +TAM\_TAILSTAMPING\_TABLE + + ;Defines TS flow configuration + + key = name ; name is flow name and should be unique. + acl-table-name = table-name ; Parameter to map to acl table to the flow. + acl-rule-name = rule-name ; Parameter to map to acl rule to the flow. + + Example: + > KEYS *TAM__TAILSTAMPING_TABLE* + 1) "TAM__TAILSTAMPING_TABLE:F1" + + > HGETALL TAM__TAILSTAMPING_TABLE:F1 + 1) "acl-table-name" + 2) "T1" + 3) "acl-rule-name" + 4) "R1" + +### 3.2.3 STATE DB + +N/A + +### 3.2.4 ASIC DB + +The ASIC DB is updated by SAI REDIS upon invocation of SAI REDIS APIs by TSOrch. + +### 3.2.5 COUNTER DB + +N/A + +## 3.3 Daemons + +TS manager daemon runs as part of TAM docker. TS manager processes TS configuration from CONFIG DB, validates for consistency and completeness of TS configuration and updates valid S configuration to APPL DB. + +## 3.4 Switch State Service Design + +### 3.4.1 Orchestration Agent + +A new orchestration agent class, TSOrch is added to convert the incoming config to ASIC configuration. TSOrch subscribes to the TS tables of APPL DB and converts the configuration to the SAI TAM API call sequence described in section 3.6. + +TSOrch maintains data pertaining to all the currently configured TS entities and the associated TAM object bindings. TAM object bindings are re-used wherever possible. + +### 3.4.2 Other Process + +N/A + +## 3.5 SyncD + +N/A + +## 3.6 SAI + +The SAI TAM API spec defines all TAM APIs supported in SAI. Please refer to SAI-Proposal-TAM2.0-v2.0.docx in [https://github.com/opencomputeproject/SAI/tree/master/doc/TAM](https://github.com/opencomputeproject/SAI/tree/master/doc/TAM) for more details. + +Tailstamping feature is accomplished by attaching a SAI TAM INT object to SAI ACL entry. Below diagram provides details about how the SAI ACL object and SAI TAM objects are stitched. + + +***Below diagram provides details about various TAM objects needed to support TS and their correlation*** + +![TS TAM objects correlation](ts-tam-correlation.JPG) + +## 3.7 CLI + +### 3.7.1 Data Models + +The user facing data model is based on OpenConfig TAM yang model (TBD). The backend data model (SONiC YANG) will use the formats in CONFIG_DB & STATE_DB. See above sections. + +### 3.7.2 Configuration Commands + +#### 3.7.2.1 Activating and Deactivating Tailstamping + +The command syntax for activating/de-activating the Tailstamping feature on the switch is as follows: + +``` +sonic (config-tam-ts)# [no] enable +``` + + +Deactivating TS will purge all associated configuration from the switch. + +#### 3.7.2.2 Setting up flows for monitoring with Tailstamping + +A Tailstamping monitoring session associated a previously defined flow-group, with TS as described below. + +- The monitoring session must have a unique name for referencing. +- The flow-group must be previously created with the `flow-group` command (under `config-tam` hierarchy). + +When a sesssion that is previously created is removed (with the `no` command), the associated flows are no longer processed for TS by the switch. + +The following attribtes are supported for Tailstamping sessions. + +| **Attribute** | **Description** | +|--------------------------|-------------------------------------| +| `name` | A string that uniquely identifies the TS session | +| `flowgroup` | Specifies the name of *flow-group* | + +The command syntax for creating /removing the sessions are as follows: + +``` +sonic(config-tam-ts)# session flowgroup + +sonic (config-tam-ts)# no session +``` + +### 3.7.3 Show Commands + +#### 3.7.3.1 Listing the TS attributes + +The following command lists the switch-wide attributes that are in use. + +``` +sonic # show tam tail-stamping +``` +Sample usage shown below. + +``` +sonic # show tam tail-stamping + +Status : Active +Switch ID : 2020 + +``` + +#### 3.7.3.1 Listing the Tailstamping sessions + +The following command lists the details for all tail-stamping sessions or for a specific session. Note that only explicitly configured tuples in the associated flow-group are displayed. + +``` +sonic # show tam tail-stamping sessions [] +``` + +Sample usage shown below. + +``` +sonic # show tam tail-stamping sessions + +Name Flow Group +----------- ---------------- +http_236 tcp_port_236 +http_239 tcp_port_239 +http_241 tcp_port_241 + +sonic # show tam tail-stamping sessions http_236 + +Session : http_236 +Flow Group Name : tcp_port_236 + SRC IP : 13.92.96.32 + DST IP : 7.72.235.82 + DST L4 Port : 236 +Packet Count : 7656 + +``` + +### 3.7.5 Debug Commands +N/A + +### 3.7.6 REST API Support + +The following REST API are supported - + +- BroadView REST API for TS feature + - TBD : Provide reference and listlimitations +- REST API as obtained from the openconfig-tam module defintions + - TBD List these + + # 4 Flow Diagrams + +## 4.1 Config call flow + +All the configuration is stored in the CONFIG_DB via the management framework. + +# 5 Error Handling + +## CLI + +* CLI configuration sanity will be enforced by the CLI handler & CVL and any invalid configuration is rejected. An error is displayed to the user notifying the reason for rejection of the configuration. + +## TSOrch + +- Any error occurring in the orchestration agent is logged appropriately via SWSS logging. +- Errors or failures of SAI APIs will be logged by TSOrch. +- On failure of a SAI TAM API in the config sequence of section 3.6, the previously configured steps will be rolled back i.e previously created intermediate TAM objects for TS etc will be destroyed. + +# 6 Serviceability and Debug + +N/A + +# 7 Warm Boot Support + +No special handling is done for the warm boot case. The TAM configuration is restored from the Config DB and TAM functionality will continue to work as it is through a warm boot. + +# 8 Scalability + +N/A + +# 9 Unit Test + +## CLI + +TBD + +# Broadcom Internal Information : To be removed before publishing externally. + +## Key notes + +1. Tailstamping feature in the dataplane is completely supported in the silicon. + +2. Switches which have Tailstamping feature can be used as intermediate nodes in an IFA deployments, where the ingress and egress nodes run IFA. The IFA firmware on the egress nodes is capable of extracting the TS metadata from the end of the packet and present a unified metadata stack to the collector. + +3. Tailstamping feature is an *advanced* feature that is not available in all the Broadcom SONiC packages. + +4. Tailstamping metadata format varies slightly based on silicon, while being compatible with each other. The specific formats are documented in appropriate silicon documentation. + +## Specific Limitations + +Tailstamping feature inherits the usage constraints from the underlying hardware. These are listed below. + +1. Only TCP and UDP traffic can be timestamped. +2. Timestamp is not part of the L3 packet. Any checks that assume the L3+ packet length field represents the total frame length will not be accurate. +3. Systems that need to subject packets to such checks must disable timestamping for the corresponding system, port or flow. +4. Header length fields or checksum fields(e.g UDP checksum) will not be updated upon insertion of the timestamp. +5. IEEE 802.3 frames(e.g SNAP LLC) are not supported. +6. No switches across the timestamping path should do pad stripping or otherwise adjust frame content based on the IP header payload/total length fields for Ethernet II frames. +7. Platforms using the HiGig2 extension header cannot coexist with packet timestamping. diff --git a/devops/tam/ts-tam-correlation.png b/devops/tam/ts-tam-correlation.png new file mode 100644 index 0000000000000000000000000000000000000000..ef064d4005bc6a010d9fcd74f1844c9590afb8f1 GIT binary patch literal 35613 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 Dd9dKv literal 0 HcmV?d00001 diff --git a/devops/tam/ts_arch.JPG b/devops/tam/ts_arch.JPG new file mode 100644 index 0000000000000000000000000000000000000000..690d91000c997c321113a6ed65a6afdbe540ff71 GIT binary patch literal 49369 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 Date: Tue, 7 Jul 2020 08:49:54 +0530 Subject: [PATCH 16/27] minor corrections --- devops/tam/tam-tail-stamping-hld.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/devops/tam/tam-tail-stamping-hld.md b/devops/tam/tam-tail-stamping-hld.md index e835774c8ed0..46f1afc5f5aa 100644 --- a/devops/tam/tam-tail-stamping-hld.md +++ b/devops/tam/tam-tail-stamping-hld.md @@ -252,7 +252,7 @@ TAM\_TAILSTAMPING\_TABLE > hgetall "TAM_TAILSTAMPING_TABLE|sla1" - 1) "flowgroup" + 1) "flowgroup" 2) "slaflows" ### 3.2.2 APP DB @@ -316,7 +316,7 @@ Tailstamping feature is accomplished by attaching a SAI TAM INT object to SAI AC ***Below diagram provides details about various TAM objects needed to support TS and their correlation*** -![TS TAM objects correlation](ts-tam-correlation.JPG) +![TS TAM objects correlation](ts-tam-correlation.png) ## 3.7 CLI From 82778134563507bc3cebc433b5db0cc787e7ba6b Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Wed, 8 Jul 2020 00:43:25 +0530 Subject: [PATCH 17/27] First draft for Drop Monitor HLD --- devops/tam/dm-tam-correlation.png | Bin 0 -> 62437 bytes devops/tam/drop-monitor-arch.png | Bin 0 -> 43380 bytes devops/tam/tam-drop-monitor-hld.md | 702 +++++++++++++++++++++++++++++ 3 files changed, 702 insertions(+) create mode 100644 devops/tam/dm-tam-correlation.png create mode 100644 devops/tam/drop-monitor-arch.png create mode 100644 devops/tam/tam-drop-monitor-hld.md diff --git a/devops/tam/dm-tam-correlation.png b/devops/tam/dm-tam-correlation.png new file mode 100644 index 0000000000000000000000000000000000000000..03d11ef3667c1a889e64c3c88e248b2e7555d66a GIT binary patch literal 62437 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 literal 0 HcmV?d00001 diff --git a/devops/tam/tam-drop-monitor-hld.md b/devops/tam/tam-drop-monitor-hld.md new file mode 100644 index 000000000000..7c993bf2be5c --- /dev/null +++ b/devops/tam/tam-drop-monitor-hld.md @@ -0,0 +1,702 @@ +# Drop Monitor + +## Highlevel Design Document + +### Rev 0.1 + +# Table of Contents + + + +## List of Tables + +[Table 1: Abbreviations](#table-1-abbreviations) + +## Revision + +| Rev | Date | Author | Change Description | +|---|-----------|------------------|-----------------------------------| +| 0.1 | 07/01/2020 | Bandaru Viswanath | New draft for SONiC Drop Monitor feature | + +## About This Manual + +This document provides general information about the Drop Monitor feature implementation in SONiC. + +## Scope + +The term Inband Telemetry refers to the set of technologies of the Switch, that embed useful metadata as part of packets that are transiting the Switch. SAI community defined a Telemetry and Monitoring specification that defines a unified interface - [TAM](https://github.com/opencomputeproject/SAI/tree/master/doc/TAM) - for provisioning and monitoring these technologies. Inband Flow Analyzer feature is one such Inband Telemetry technologies. + +The design as specified in this document uses the common [SONiC TAM](tam.hld) infrastructure. + +This document describes the high level design of Drop Monitor feature in SONiC. + +## Definition/Abbreviation + +### Table 1: Abbreviations + +| **Term** | **Meaning** | +|--------------------------|-------------------------------------| +| SAI | Switch Abstraction Interface | +| TAM | Telemetry and Monitoring | + +# 1 Feature Overview + +The Drop Monitor feature in SONiC allows the user to setup packet-drop monitoring sessions for specific flows. A Collector, identified by an IP address and associated transport parameters, can be configured on the switch to send packet drop-reports. + +## 1.1 Requirements + +### 1.1.1 Functional Requirements + +1.0 Drop Monitor feature allows user to configure a Drop Monitor session on a given switch and send the drop-reports to a specified collector. Drop Monitor session is defined by flow classifiers that are used to identify a flow that needs to be monitored for packet drops. + +2.0 Drop Monitor provisioning as listed below. + +2.1 TAM switch identifier to uniquely identify a switch in network and drop-reports carry this information. + +2.2 ACL configuration to identify a flow-group to look for packet drops. + +2.3 TAM sampler configuration to indicate the sampling rate for the flow. + +2.4 TAM collector configuration that can be attached to Drop Monitor session to send drop reports. + +2.5 An aging-interval configuration. If the Drop Monitor feature doesn't notice packet drops for this duration, it considers packet drops to have stopped. + +3.0 When the first packet of the flow is dropped by the switch, a "Drop-start" report is sent to the collector. This report contains the event type (Drop-start), first 128 bytes of the packet dropped, flow details and the drop reasons for the packet drop. + +3.1 "Drop-active" report is sent to the collector when the drop reason for a flow changes, while the aging-interval has not expired. This report contains the event type (Drop-active), flow details and drop reasons for the packet drop. Note that this report is sent only when the reason for the packet drop for this flow changes. + +3.2 "Drop-stop" report is sent to the collector when the drops are not seen on the flow for a duration of aging interval. This report contains the event type (Drop-stop), flow details and the last noted drop reason for packet drops for this flow. + +4.0 Drop Monitor feature is by default de-activated on the switch, and requires an explicit user intervention to activate it in the configuration. + +4.1 If the Drop Monitor feature can't be supported/activated on the switch, any attempt to activate the feature returns appropriate failure. + +5.0 The Drop Monitor feature is supported on physical and LAG ports. + +5.1 The Drop Monitor feature supports dynamic-port-breakout and aliasing features. + +6.0 The Drop Monitor feature will be a part of the TAM container along with other TAM features. + +### 1.1.2 Configuration and Management Requirements + +The TAM Drop Monitor feature supports the new management framework and KLISH CLI for configuration. The following configuration and status information is available. + +- To activate / de-activate the feature +- To create/clear appropriate Drop Monitor configuration on a per-flow-group basis and switch-wide. +- To display current status and statistics for the Drop Monitor on a per flow-group basis. + +### 1.1.3 Scalability Requirements + +- Number of Drop Monitor sessions that can be supported is proportional to the availability of resources in hardware such as ACLs. No specific constraints are imposed. +- Only a single collector is supported. + +## 1.2 Design Overview + +### 1.2.1 Basic Approach + +The Drop Monitor feature is newly developed. + +### 1.2.2 Container + +A container called 'tam' exists as a container for all TAM applications, including the this application. + +### 1.2.3 SAI Overview + +The SAI TAM spec specifies the TAM APIs to be used to configure the TAM functionality. Please refer to SAI-Proposal-TAM2.0-v2.0.docx in [https://github.com/opencomputeproject/SAI/tree/master/doc/TAM](https://github.com/opencomputeproject/SAI/tree/master/doc/TAM) for more details. + +# 2 Functionality + +## 2.1 Target Deployment Use Cases + +Drop Monitor is used to monitor the network for faults and bottlenecks, it aids in detecting data plane faults and isolating them to a given device or location and assists in network planning. Some of the key usecases are - + +- Idenitfying switches and flows that are undergoing packet-drops +- Identifying packet-drop patterns + +## 2.2 Functional Description + +The drop monitor feature detects and reports drops on a per-flow basis to a configured external collector. Dropped packets of the flow are sampled (based upon the sampling rate configuration) to the drop-monitor application. + +Once a flowgroup (matching criteria) is configured for monitoring drops, the drop monitor application reports the following drop events on the flow to the collector in the protobuf format: + + - Drop start: Sent when drops are observed on the flow for the first time. The report contains the event, flow keys, first 128 bytes of the packet and the last observed drop reasons. + + - Drop active: Sent whenever the drop reason on the flow changes. The report contains the event, flow keys, and the drop reasons. + + - Drop stop: Sent when no sampled dropped packets are observed for the aging interval. The report contains event, flow keys and the last observed drop reasons. + + +# 3 Design + +## 3.1 Overview + +***Drop Monitor Architecture*** + +![architecture](drop-monitor-arch.png) + +The architecture of the drop monitor feature in SONiC is illustrated in the diagram above. + +1. CLI/gNMI/REST interface is used to configure the drop monitor feature functionality. Configuration is saved to CONFIG_DB. + +2. DropMonitorMgr picks the configuration from CONFIG_DB. + +3. DropMonitorMgr populates the APPL_DB drop monitor tables appropriately. + +4. DropMonitorOrch picks the configuration from APPL_DB, interacts with aclOrch for ACL related information. + +5. DropMonitorOrch programs the ASIC_DB via SAIREDIS calls. + +6. Syncd picks the configuration from ASIC_DB and configures SAI. + +7. When a drop is detected on the flow configured in step 1, a "drop-start" event is sent to the configured collector. + +8. When the drop reason on the flow changes, a "drop-active" event is sent to the configured collector. + +9. Once drops on the flow have not been seen for configured "aging-interval", a "drop-stop" event is sent to the collector. + +## 3.1.1 DropMonitorMgr + +The DropMonitorMgr runs in the TAM docker and is used to pass drop monitor configuration arriving from UI to dropMonitorOrch. DropMonitorMgr validates and collates information from CONFIG_DB tables TAM_COLLECTOR_TABLE, TAM_DROP_MONITOR_SESSIONS_TABLE, and TAM_SAMPLERATE_TABLE. APPL_DB TAM_DROP_MONITOR_FOW_TABLE is populated with a valid flow configuration once all the required data is available. + +The DropMonitorMgr configures the source IP address to be used in drop reports to the system IP address. 9073 is configured as the source port number to be used in drop reports. + +## 3.2 DB Changes + +### 3.2.1 CONFIG DB + +TAM\_DROP\_MONITOR\_TABLE + + ;Defines TAM Drop Monitor switch-wide configuration in CONFIG_DB + + key = global ; Only one instance and + ; has a fixed key ”global". + aging-interval = 1 * 5DIGIT ; Aging interval in seconds + + Example: + > keys *TAM_DROP_MONITOR_TABLE* + 1) "TAM_DROP_MONITOR_TABLE|global" + + > hgetall "TAM_DROP_MONITOR_TABLE|global" + + 1) "aging-interval" + 2) 3600 + +TAM\_DROP\_MONITOR\_SESSIONS\_TABLE + + ;Defines TAM Drop Monitor session configuration in CONFIG_DB + + key = name ; name is collector name and should be unique. + flowgroup = 1*255VCHAR ; Flow group reference + collector = 1*255VCHAR ; Collector Reference + sample-rate = 1*255VCHAR ; Sampler reference + + Example: + > keys *TAM_DROP_MONITOR_SESSIONS* + + 1) "TAM_DROP_MONITOR_SESSIONS_TABLE|dm1" + + > hgetall "TAM_DROP_MONITOR_SESSIONS_TABLE|dm1" + + 1) "flowgroup" + 2) "websrvrflows" + 3) "collector" + 4) "dmcol1" + 5) "sample-rate" + 6) "aggressive" + + +### 3.2.2 APP DB + +TAM\_DROP\_MONITOR\_FEATURE\_TABLE + + ;Defines TAM DROP MONITOR feature configuration + + key = feature ; Only one instance and has a fixed key "feature". + deviceid = 1 * 5DIGIT ; Uniquely identifies a device on the network. + + Example: + > keys *TAM_DROP_MONITOR_FEATURE* + 1) "TAM_DROP_MONITOR_FEATURE_TABLE:feature" + + > HGETALL "TAM_DROP_MONITOR_FEATURE_TABLE:feature" + 1) "deviceid" + 2) 54325 + +TAM\_DROP\_MONITOR\_FLOW\_TABLE + + ;Defines a TAM drop monitor flow configuration. + + key = name ; Flow name. Should be + unique + acl-table-name = table-name ; Parameter to map acl table to + the flow. + acl-rule-name = rule-name ; Parameter to map acl rule to + the flow. + dst-ipaddress-type = "ipv4" / "ipv6" ; Collector IP address type. + dst-ipaddress = ipv4_address / ipv6_address ; Collector IP address. + dst-port = 1 * 4DIGIT ; Collector UDP port number + src-ipaddress = ipv4_address / ipv6_address ; Source IP address to be used in the drop + event reports sent to collector. + src-port = 1 * 4DIGIT ; Source port number to be used in the + drop event reports sent to the + collector. + sampling-rate = 1 * 5DIGIT ; Sampling rate. 1 out of “rate” + dropped packets of flow are + sampled for processing. + aging-interval = 1 * 5DIGIT ; Optional. Aging interval for + drop- + monitoring in milliseconds. Determines + the interval for which the system + waits to declare that a flow is + no longer being dropped. + flowgroup-id = flowgroup-id ; Flow group ID. Must be unique per flow. + + Example: + > keys *TAM_DROP_MONITOR* + 1) "TAM_DROP_MONITOR_FLOW_TABLE:flow1" + + > HGETALL "TAM_DROP_MONITOR_FLOW_TABLE:flow1" + 1) "acl-table-name" + 2) "table1" + 3) "acl-rule-name" + 4) "rule1" + 5) "ipaddress-type" + 6) "ipv4" + 7) "dst-ipaddress" + 8) "10.10.10.40" + 9) "dst-port" + 10) "9070" + 11) "src-ipaddress" + 12) "10.10.10.20" + 13) "src-port" + 14) "9070" + 15) "sampling-rate" + 16) "1000" + 17) "aging-interval" + 18) "10" + 17) "flowgroup-id" + 18) "1" + + +### 3.2.3 STATE DB + +N/A + +### 3.2.4 ASIC DB + +N/A + +### 3.2.5 COUNTER DB + +N/A + + +## 3.3 Switch State Service Design + +### 3.3.1 Orchestration Agent + +A new orchestration agent class, DropMonitorOrch is added to convert the incoming drop monitor configuration from APPL_DB to ASIC_DB configuration. DropMonitorOrch subscribes to the TAM_DROP_MONITOR_FLOW_TABLE and TAM_DROP_MONITOR_TABLE and converts the incoming flow configuration into drop-monitor SAI configuration. + +DropMonitorOrch maintains data pertaining to all the currently configured flows and the associated TAM object bindings. TAM object bindings are re-used wherever possible. + +Interaction with aclOrch is required to retrieve the SAI object ID associated with the drop-monitor flow ACL rule. + +Drop monitor uses sampling rate configuration for sampling the dropped packets of the flow. The sampling configuration in terms of rate is converted into a SAI sample packet object and provided to the TAM drop-monitor object for configuration + +### 3.3.2 Other Process + +N/A + +## 3.4 SyncD + +N/A + +## 3.5 SAI + +The SAI TAM API spec defines all TAM APIs supported in SAI. Please refer to SAI-Proposal-TAM2.0-v2.0.docx in [https://github.com/opencomputeproject/SAI/tree/master/doc/TAM](https://github.com/opencomputeproject/SAI/tree/master/doc/TAM) for more details. + +***Below diagram provides details about various TAM objects needed to support Drop Monitor, and their correlation*** + +![TAM objects correlation](dm-tam-correlation.png) + +## 3.6 CLI + +### 3.6.1 Data Models + +The user facing data model is based on OpenConfig TAM yang model (TBD). The backend data model (SONiC YANG) will use the formats in CONFIG_DB & STATE_DB. See above sections. + +### 3.6.2 Configuration Commands + +#### 3.6.2.1 Activating and Deactivating Drop Monitor + +The command syntax for activating/de-activating the feature on the switch is as follows: + +``` +sonic (config-tam-dm)# [no] enable +``` + +Deactivating Drop Monitor will purge all Drop Monitor configuration from the switch. + +#### 3.6.2.2 Setting up Aging interval + +The command syntax for setting up the aging interval for Drop Monitoring is as follows: + +``` +sonic (config-tam-dm)# [no] aging-interval +``` +| **Attribute** | **Description** | +|--------------------------|-------------------------------------| +| `aging-interval` | An integer, representing duration in seconds. Range is 1-3600, Default value is 5seconds | + +The default value for the aging interval is 5 seconds. + +#### 3.6.2.3 Setting up flows for drop-monitoring + +A Drop Monitoring session associated a previously defined flow-group as described below. + +- The Drop Monitor session must have a unique name for referencing. +- The flow-group must be previously created with the `flow-group` command (under `config-tam` hierarchy). +- The sampling-rate can be set, by referencing a previously created sampler, created with the `sampler` command (under `config-tam` hierarchy). +- A collector must be associated with the session, where the drop-reports will be sent. The collector must be previously created with the `collector` command (under `config-tam` hierarchy).. + +When a sesssion that is previously created is removed (with the `no` command), the associated flows are no longer monitored for drops by the switch. + +The following attribtes are supported for drop-monitor sessions. + +| **Attribute** | **Description** | +|--------------------------|-------------------------------------| +| `name` | A string that uniquely identifies the Drop Monitor session | +| `flowgroup` | Specifies the name of *flow-group* | +| `collector` | Specifies the name of the *collector* | +| `sample-rate` | Specifies the name of the *sampler* | + + +The command syntax for creating /removing the sessions are as follows: + +``` +sonic(config-tam-dm)# session flowgroup [collector ] [sample-rate ] + +sonic (config-tam-dm)# no session +``` + +### 3.6.3 Show Commands + +#### 3.6.3.1 Listing the Drop Monitor attributes + +The following command lists the switch-wide attributes that are in use. + +``` +sonic # show tam drop-monitor +``` +Sample usage shown below. + +``` +sonic # show tam drop-monitor + +Status : Active +Switch ID : 2020 +Aging Interval : 60 + +``` + +#### 3.6.3.1 Listing the Drop Monitor sessions + +The following command lists the details for all drop-monitor sessions or for a specific session. Note that only explicitly configured tuples in the associated flow-group are displayed. + +``` +sonic # show tam drop-monitor sessions [] +``` + +Sample usage shown below. + +``` +sonic # show tam drop-monitor sessions + +Name Flow Group Collector Sampler +----------- ---------------- -------------- ------------- +http_236 tcp_port_236 Col_i19 aggresive +http_239 tcp_port_239 Col_i19 aggresive +http_241 tcp_port_241 Col_i19 aggresive + +sonic # show tam drop-monitor sessions http_236 + +Session : http_236 +Flow Group Name : tcp_port_236 + Id : 6687 + SRC IP : 13.92.96.32 + DST IP : 7.72.235.82 + DST L4 Port : 236 +Collector : Col_i19 +Sampler : aggresive +Packet Count : 7656 + +``` + +### 3.6.5 Debug Commands +N/A + +### 3.6.6 REST API Support + +The following REST API are supported - + +- BroadView REST API for Drop Monitor feature + - TBD : Provide reference and listlimitations +- REST API as obtained from the openconfig-tam module defintions + - TBD List these + + # 4 Flow Diagrams + +## 4.1 Config call flow + +All the configuration is stored in the CONFIG_DB via the management framework. + +# 5 Error Handling + +## DropMgr + +Any mismatch in the CONFIG_DB and APPL_DB schema for drop-monitor flows will be flagged/logged appropriately. + +## DropMonitorOrch + +SAI errors will be captured via the error handling framework and handled appropriately. All errors arising out of processing of incoming drop-monitor flow configuration will be captured via syslogs. + +# 6 Serviceability and Debug + +Logging of errors and invalid parameters will be done at each level allowing a hierarchical view of failures arising out of mis-configuration or system errors. + +# 7 Warm Boot Support + +No special handling is done for the warm boot case. The TAM configuration is restored from the Config DB and TAM functionality will continue to work as it is through a warm boot. + +# 8 Scalability + +N/A + +# 9 Unit Test + +## CLI + +TBD + +# Broadcom Internal Information : To be removed before publishing externally. + +## Key notes + +* Drop Monitor feature is supported via the MOD firmware running on embedded R5 cores on TD3-X7, TH2 and TH3 Broadcom silicon. Additional details on the MOD firmware, including specific list of drop-reasons, can be had by requesting (via docSafe) for the document number StrataXGS-MOD-AN100. + +* Drop Monitor feature is an *advanced* feature that is not available in all the Broadcom SONiC packages. + +## Specific Limitations + +Drop Monitor feature in SONiC inherits the limitations of the underlying firmware and the hardware. These are listed below. + +1. Only a single collector is supported +2. Drop Monitor flows must be IPv4 flows +3. Drop Monitor is supported on TD3-X7, TH2 and TH3 platforms only. + +## Supported Drop Reasons + +The drop reasons supported are as below:- + + +| Drop reasons | Drop reasons | Drop reasons | Drop reasons | Drop reasons | Drop reasons | +|-------------------------------|-----------------------------|----------------------------|------------------|---------------------|-------------------------| +| L3_SOURCE_MISS | L3_DEST_MISS | MCAST_MISS | IP_MCAST_MISS | UNKNOWN_VLAN | L3_HEADER_MISMATCH | +| DOS_ATTACK | MARTIAN_ADDR | TUNNEL_ERROR | PARITY_ERROR | L3_MTU_FAIL | HIGIG_HDR_ERROR | +| MCAST_IDX_ERROR | CLASS_BASED_MOVE | L3_ADDR_BIND_FAIL | MPLS_LABEL_MISS | MPLS_INVALID_ACTION | MPLS_INVALID_PAYLOAD | +| TUNNEL_OBJECT_VALIDATION_FAIL | MPLS_SEQUENCE_NUMBER | L2_NON_UNICAST_MISS | NIV_PRIO_DROP | NIV_RPF_FAIL | UNKNOWN_SUBTENDING_PORT | +| TUNNEL_ADAPT_LOOKUP_MISS | PACKET_FLOW_SELECT_MISS | TUNNEL_DECAP_ECN_ERROR | FAILOVER_DROP | OTHER_LOOKUP_MISS | INVALID_TPID | +| TUNNEL_TTL_ERROR | MPLS_ILLEGAL_RESERVED_LABEL | L3_HEADER_ERROR | L2_HEADER_ERROR | TTL1 | TTL | +| FCOE_ZONE_CHECK_FAIL | IPMC_INTERFACE_MISMATCH | MPLS_TTL | MPLS_UNKNOWN_ACH | OAM_ERROR | L2_GRE_SIP_MISS | +| L2_GRE_VPNID_MISS | BFD_ERROR | CONGESTION_CNM_PROXY_ERROR | VXLAN_SIP_MISS | VXLAN_VPNID_MISS | NIV_INTERFACE_MISS | +| NIV_TAG_INVALID | NIV_TAG_DROP | NIV_UNTAG_DROP | TRILL_INVALID | TRILL_MISS | TRILL_RPF_FAIL | +| TRILL_TTL | NAT_ERROR | TCP_UDP_NAT_MISS | ICMP_NAT_MISS | NAT_FRAGMENT | | + +## Qualified Drop Reasons + +The following drop-reaons are explicitly qualified on SONiC. + +| **Drop Reasons** | **Description** | +|------------------|----------------------------------| +| L3_DEST_MISS | Missing L3 route/host entry | +| UNKNOWN_VLAN | Vlan of packet unknown | +| MARTIAN_ADDR | Packet with source IP=0.0.0.0 | +| DOS_ATTACK | Packet with SIP=DIP | +| L3_MTU_FAIL | MTU > configured MTU | +| L3_ADDR_BIND_FAIL| L3 Packet with incorrect SMAC | +| INVALID_TPID | Packet with an invalid TPID | +| L3_HEADER_ERROR | Error in L3 header | +| TTL1 | Packet with TTL=0 | +| TTL | Packet with TTL=1 | +| PARITY_ERROR | Parity error | + +## Drop Report format + +The drop-report format is silicon specific. When used with the MOF firmware, the drop reports are encoded in protobuf format provided below. + +```protobuf + +/* + * Copyright (c) 2017 Broadcom. The term "Broadcom" refers + * to Broadcom Limited and/or its subsidiaries. + + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + syntax = "proto2"; + + message Event { + required uint64 timestamp = 1; + + oneof EventType { + MirrorOnDrop mod_event = 2; + FlowLearning flow_event = 3; + RouteChangeDetection rcd_event = 4; + NetworkLatencyMonitoring nlm_event = 5; + } + } + + message MirrorOnDrop { + enum MOD_STATE { + DROP_INVALID = 0; + DROP_START = 1; + DROP_ACTIVE = 2; + DROP_STOP = 3; + } + + optional MOD_STATE mod_state = 1; + } + + message FlowLearning { + enum FL_STATE { + FL_INVALID = 0; + FL_LEARN = 1; + FL_AGING = 2; + FL_EXPORT = 3; + FL_TABLE_FULL = 4; /* Atomic event, no other information need to be send */ + } + + optional FL_STATE fl_state = 1; + } + + message RouteChangeDetection { + optional uint32 dummy = 1; + } + + message NetworkLatencyMonitoring { + optional uint32 dummy = 1; + } + + message Flow { + enum DROP_REASON { + DROP_INVALID = 0; + L3_SOURCE_MISS = 1; + L3_DEST_MISS = 2; + MCAST_MISS = 3; + IP_MCAST_MISS = 4; + UNKNOWN_VLAN = 5; + L3_HEADER_MISMATCH = 6; + DOS_ATTACK = 7; + MARTIAN_ADDR = 8; + TUNNEL_ERROR = 9; + PARITY_ERROR = 10; + L3_MTU_FAIL = 11; + HIGIG_HDR_ERROR = 12; + MCAST_IDX_ERROR = 13; + CLASS_BASED_MOVE = 14; + L3_ADDR_BIND_FAIL = 15; + MPLS_LABEL_MISS = 16; + MPLS_INVALID_ACTION = 17; + MPLS_INVALID_PAYLOAD = 18; + TUNNEL_OBJECT_VALIDATION_FAIL = 19; + MPLS_SEQUENCE_NUMBER = 20; + L2_NON_UNICAST_MISS = 21; + NIV_PRIO_DROP = 22; + NIV_RPF_FAIL = 23; + UNKNOWN_SUBTENDING_PORT = 24; + TUNNEL_ADAPT_LOOKUP_MISS = 25; + PACKET_FLOW_SELECT_MISS = 26; + TUNNEL_DECAP_ECN_ERROR = 27; + FAILOVER_DROP = 28; + OTHER_LOOKUP_MISS = 29; + INVALID_TPID = 30; + TUNNEL_TTL_ERROR = 31; + MPLS_ILLEGAL_RESERVED_LABEL = 32; + L3_HEADER_ERROR = 33; + L2_HEADER_ERROR = 34; + TTL1 = 35; + TTL = 36; + FCOE_ZONE_CHECK_FAIL = 37; + IPMC_INTERFACE_MISMATCH = 38; + MPLS_TTL = 39; + MPLS_UNKNOWN_ACH = 40; + OAM_ERROR = 41; + L2_GRE_SIP_MISS = 42; + L2_GRE_VPNID_MISS = 43; + BFD_ERROR = 44; + CONGESTION_CNM_PROXY_ERROR = 45; + VXLAN_SIP_MISS = 46; + VXLAN_VPNID_MISS = 47; + NIV_INTERFACE_MISS = 48; + NIV_TAG_INVALID = 49; + NIV_TAG_DROP = 50; + NIV_UNTAG_DROP = 51; + TRILL_INVALID = 52; + TRILL_MISS = 53; + TRILL_RPF_FAIL = 54; + TRILL_TTL = 55; + NAT_ERROR = 56; + TCP_UDP_NAT_MISS = 57; + ICMP_NAT_MISS = 58; + NAT_FRAGMENT = 59; + NAT_MISS = 60; + } + + optional uint32 proto = 1; + optional uint32 sip = 2; + optional uint32 dip = 3; + + optional uint32 l4_sport = 4; + optional uint32 l4_dport = 5; + optional uint32 vnid = 6; + optional uint32 inner_proto = 7; + optional uint32 inner_sip = 8; + optional uint32 inner_dip = 9; + + optional uint32 inner_l4_sport = 10; + optional uint32 inner_l4_dport = 11; + optional bytes custom_key = 12; + optional uint32 group_id = 13; /* Packet type is derived directly from group ID */ + optional bytes packet = 14; + + optional uint64 packet_count = 15; + optional uint64 byte_count = 16; + + optional DROP_REASON drop_reason_1 = 17; + optional DROP_REASON drop_reason_2 = 18; + + } + + message EventPair { + repeated Event event = 1; + repeated Flow flow = 2; + } + + message GenEvent { + required string system_id = 1; + optional uint32 component_id = 2; + optional uint32 sub_component_id = 3; + repeated EventPair eventpair = 4; + optional string hostname = 5; + } +``` From cdd5ba8760de88e70cfaf32887f734544fb42b46 Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Wed, 8 Jul 2020 09:37:10 +0530 Subject: [PATCH 18/27] Typos corrected. --- devops/tam/tam-hld.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/devops/tam/tam-hld.md b/devops/tam/tam-hld.md index 9beab6e0cf3e..0922c2b81da7 100644 --- a/devops/tam/tam-hld.md +++ b/devops/tam/tam-hld.md @@ -220,7 +220,7 @@ TAM\_FEATURES\_TABLE 3)"TAM_FEATURES_TABLE|tail-stamping" 4)"TAM_FEATURES_TABLE|thresholds” - > hgetall "tam_features_table|ifa” + > hgetall "TAM_FEATURES_TABLE|ifa” 1) "status" 2) "active" @@ -238,7 +238,7 @@ TAM\_SAMPLINGRATE\_TABLE 1)"TAM_FEATURES_TABLE|aggressive" 2)"TAM_FEATURES_TABLE|lazy" - > hgetall "tam_features_table|aggressive” + > hgetall "TAM_SAMPLINGRATE_TABLE|aggressive” 1) "sampling-rate" 2) 1000 @@ -283,7 +283,7 @@ TAM\_FEATURES\_TABLE 3)"TAM_FEATURES_TABLE|tail-stamping" 4)"TAM_FEATURES_TABLE|thresholds” - > hgetall "tam_features_table|ifa” + > hgetall "TAM_FEATURES_TABLE|ifa” 1) "status" 2) "unsupported" @@ -298,10 +298,10 @@ TAM\_SAMPLINGRATE\_TABLE Example: > keys *TAM_SAMPLINGRATE_TABLE* - 1)"TAM_FEATURES_TABLE|aggressive" - 2)"TAM_FEATURES_TABLE|lazy" + 1)"TAM_SAMPLINGRATE_TABLE|aggressive" + 2)"TAM_SAMPLINGRATE_TABLE|lazy" - > hgetall "tam_features_table|aggressive” + > hgetall "TAM_SAMPLINGRATE_TABLE|aggressive” 1) "sampling-rate" 2) 1000 From f60f229cabad49707a21beb8bfb62b0c2716cb50 Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Thu, 9 Jul 2020 00:05:26 +0530 Subject: [PATCH 19/27] Updates - Flowgroups have Id which canbe used in inband telemetry - Flowgroups have priority - IFA is no longer a match criterion for flowgroup definition. - Sampler schema now 'correctly' incorporates interfaces - Feature named schemans have global properties and SESSIONS schemans have flowgroup properties - Typos fixed --- devops/tam/tam-drop-monitor-hld.md | 67 +++++++++++++++++++++++++- devops/tam/tam-hld.md | 55 +++++++++++++++------ devops/tam/tam-inband-flow-analyser.md | 26 +++++----- devops/tam/tam-tail-stamping-hld.md | 10 ++-- 4 files changed, 125 insertions(+), 33 deletions(-) diff --git a/devops/tam/tam-drop-monitor-hld.md b/devops/tam/tam-drop-monitor-hld.md index 7c993bf2be5c..e3d4966bb5af 100644 --- a/devops/tam/tam-drop-monitor-hld.md +++ b/devops/tam/tam-drop-monitor-hld.md @@ -6,7 +6,69 @@ # Table of Contents - +- [Drop Monitor](#drop-monitor) + * [Highlevel Design Document](#highlevel-design-document) + + [Rev 0.1](#rev-01) +- [Table of Contents](#table-of-contents) + * [List of Tables](#list-of-tables) + * [Revision](#revision) + * [About This Manual](#about-this-manual) + * [Scope](#scope) + * [Definition/Abbreviation](#definition-abbreviation) + + [Table 1: Abbreviations](#table-1--abbreviations) +- [1 Feature Overview](#1-feature-overview) + * [1.1 Requirements](#11-requirements) + + [1.1.1 Functional Requirements](#111-functional-requirements) + + [1.1.2 Configuration and Management Requirements](#112-configuration-and-management-requirements) + + [1.1.3 Scalability Requirements](#113-scalability-requirements) + * [1.2 Design Overview](#12-design-overview) + + [1.2.1 Basic Approach](#121-basic-approach) + + [1.2.2 Container](#122-container) + + [1.2.3 SAI Overview](#123-sai-overview) +- [2 Functionality](#2-functionality) + * [2.1 Target Deployment Use Cases](#21-target-deployment-use-cases) + * [2.2 Functional Description](#22-functional-description) +- [3 Design](#3-design) + * [3.1 Overview](#31-overview) + * [3.1.1 DropMonitorMgr](#311-dropmonitormgr) + * [3.2 DB Changes](#32-db-changes) + + [3.2.1 CONFIG DB](#321-config-db) + + [3.2.2 APP DB](#322-app-db) + + [3.2.3 STATE DB](#323-state-db) + + [3.2.4 ASIC DB](#324-asic-db) + + [3.2.5 COUNTER DB](#325-counter-db) + * [3.3 Switch State Service Design](#33-switch-state-service-design) + + [3.3.1 Orchestration Agent](#331-orchestration-agent) + + [3.3.2 Other Process](#332-other-process) + * [3.4 SyncD](#34-syncd) + * [3.5 SAI](#35-sai) + * [3.6 CLI](#36-cli) + + [3.6.1 Data Models](#361-data-models) + + [3.6.2 Configuration Commands](#362-configuration-commands) + - [3.6.2.1 Activating and Deactivating Drop Monitor](#3621-activating-and-deactivating-drop-monitor) + - [3.6.2.2 Setting up Aging interval](#3622-setting-up-aging-interval) + - [3.6.2.3 Setting up flows for drop-monitoring](#3623-setting-up-flows-for-drop-monitoring) + + [3.6.3 Show Commands](#363-show-commands) + - [3.6.3.1 Listing the Drop Monitor attributes](#3631-listing-the-drop-monitor-attributes) + - [3.6.3.1 Listing the Drop Monitor sessions](#3631-listing-the-drop-monitor-sessions) + + [3.6.5 Debug Commands](#365-debug-commands) + + [3.6.6 REST API Support](#366-rest-api-support) +- [4 Flow Diagrams](#4-flow-diagrams) + * [4.1 Config call flow](#41-config-call-flow) +- [5 Error Handling](#5-error-handling) + * [DropMgr](#dropmgr) + * [DropMonitorOrch](#dropmonitororch) +- [6 Serviceability and Debug](#6-serviceability-and-debug) +- [7 Warm Boot Support](#7-warm-boot-support) +- [8 Scalability](#8-scalability) +- [9 Unit Test](#9-unit-test) + * [CLI](#cli) +- [Broadcom Internal Information : To be removed before publishing externally.](#broadcom-internal-information---to-be-removed-before-publishing-externally) + * [Key notes](#key-notes) + * [Specific Limitations](#specific-limitations) + * [Supported Drop Reasons](#supported-drop-reasons) + * [Qualified Drop Reasons](#qualified-drop-reasons) + * [Drop Report format](#drop-report-format) ## List of Tables @@ -422,7 +484,8 @@ sonic # show tam drop-monitor sessions http_236 Session : http_236 Flow Group Name : tcp_port_236 - Id : 6687 + Id : 4025 + Priority : 100 SRC IP : 13.92.96.32 DST IP : 7.72.235.82 DST L4 Port : 236 diff --git a/devops/tam/tam-hld.md b/devops/tam/tam-hld.md index 0922c2b81da7..e434daf217a4 100644 --- a/devops/tam/tam-hld.md +++ b/devops/tam/tam-hld.md @@ -209,9 +209,9 @@ TAM\_FEATURES\_TABLE ;Defines TAM Features configuration in CONFIG_DB - key = name ; Feature name and should be among + key = name ; Feature name and should be among ; ifa, drop-monitor, tail-stamping, thresholds - status = ”active" / ”inactive" ; Activate or Turnoff the feature + status = ”active" / ”inactive" ; Activate or Turnoff the feature Example: > keys *TAM_FEATURES* @@ -230,17 +230,39 @@ TAM\_SAMPLINGRATE\_TABLE key = name ; Sampler name and should be unique - sampling-rate = 1 * 5DIGIT ; Sampling rate. One packet in every ‘rate’ packets + interface = PORT_TABLE:ifname ; Port on which the packets are ingressing + sampling-rate = 1 * 5DIGIT ; Sampling rate. One packet in every ‘rate’ packets ; will be sampled Example: > keys *TAM_SAMPLINGRATE_TABLE* - 1)"TAM_FEATURES_TABLE|aggressive" - 2)"TAM_FEATURES_TABLE|lazy" + 1)"TAM_SAMPLINGRATE_TABLE|aggressive" + 2)"TAM_SAMPLINGRATE_TABLE|lazy" > hgetall "TAM_SAMPLINGRATE_TABLE|aggressive” 1) "sampling-rate" 2) 1000 + 3) "interface" + 4) "Ethernet10" + +TAM\_FLOWGROUP\_TABLE + + ;Defines TAM Flow Group configuration in CONFIG_DB + + key = name ; Flowgroup name and should be unique + id = 1 * 5DIGIT ; Unique identification for a flow-group + table-name = 1*255VCHAR ; ACL Table reference + + Example: + > keys *TAM_FLOWGROUP_TABLE* + 1)"TAM_FLOWGROUP_TABLE|websrv1" + 2)"TAM_FLOWGROUP_TABLE|storagecluster2" + + > hgetall "TAM_FLOWGROUP_TABLE|storagecluster2" + 1) "id" + 2) 1000 + 3) "table-name" + 4) "TAM21" ### 3.2.2 APP DB @@ -293,7 +315,8 @@ TAM\_SAMPLINGRATE\_TABLE key = name ; Sampler name and should be unique - sampling-rate = 1 * 5DIGIT ; Sampling rate. One packet in every ‘rate’ packets + interface = PORT_TABLE:ifname ; Port on which the packets are ingressing + sampling-rate = 1 * 5DIGIT ; Sampling rate. One packet in every ‘rate’ packets ; will be sampled Example: @@ -304,6 +327,8 @@ TAM\_SAMPLINGRATE\_TABLE > hgetall "TAM_SAMPLINGRATE_TABLE|aggressive” 1) "sampling-rate" 2) 1000 + 3) "interface" + 4) "Ethernet10" ### 3.2.4 ASIC DB @@ -394,7 +419,6 @@ TAM infrastructure allows us to create a flow-group by specifying the tuple info The following flow-group attribtes are supported. Except the `name` attribute, all the other attributes are optional. When not specified, they default to the equivalent of a wildcard in the packet matching. - | **Attribute** | **Description** | |--------------------------|-------------------------------------| | `name` | A string that uniquely identifies the flow-group, and will be referrenced from other configurations | @@ -406,12 +430,13 @@ The following flow-group attribtes are supported. Except the `name` attribute, a | `l4-src-port` | Source Port (L4) of the packets belonging to the flow-group | | `l4-dst-port` | Destination Port (L4) of the packets belonging to the flow-group | | `protocol` | Protocol field of the ip-header of the packets belonging to the flow-group | -| `ifa` | When specified, all IFA-tagged flows are included in the flow-group | +| `priority` | Priority of the flow-group, among the other flow-groups that are created. Range is 1 - 1024, Default value is 100 | + The command syntax for setting up the flow-groups is as follows: ``` -sonic (config-tam)# flow-group [src-mac ] [dst-mac ] [ethertype ] [src-ip ] [dst-ip ] [src-l4-port ] [dst-l4-port ] [protocol ] [ifa] +sonic (config-tam)# flow-group [src-mac ] [dst-mac ] [ethertype ] [src-ip ] [dst-ip ] [src-l4-port ] [dst-l4-port ] [protocol ] [priority ] sonic (config-tam)# no flow-group ``` @@ -522,26 +547,26 @@ Sample usage shown below. sonic # show tam flow-groups Flow Group Name : udp_port_239 + Id : 4025 + Priority : 100 SRC IP : 10.72.195.23 DST L4 Port : 239 -Collector : None -Sampler : None Packet Count : 10584 Flow Group Name : udp_port_241 + Id : 4022 + Priority : 99 SRC Port : 1906 DST L4 Port : 241 -Collector : IFA_Col_i19 -Sampler : None Packet Count : 8654367 sonic # show tam flow-groups udp_port_239 Flow Group Name : udp_port_239 + Id : 4025 + Priority : 100 SRC IP : 10.72.195.23 DST L4 Port : 239 -Collector : None -Sampler : None Packet Count : 10584 ``` diff --git a/devops/tam/tam-inband-flow-analyser.md b/devops/tam/tam-inband-flow-analyser.md index 3137f5c61d0c..317809ec22ac 100644 --- a/devops/tam/tam-inband-flow-analyser.md +++ b/devops/tam/tam-inband-flow-analyser.md @@ -248,22 +248,22 @@ A CLI reads IFA ACL counters from COUNTER DB and displays it as output of show c ### 3.2.1 CONFIG DB -TAM\_IFA\_TABLE +TAM\_IFA\_SESSIONS\_TABLE ;Defines TAM IFA configuration in CONFIG_DB - key = name ; name is ifa flow name and should be unique. - flowgroup = 1*255VCHAR ; Flow group reference - collector = 1*255VCHAR ; Collector Reference - sample-rate = 1*255VCHAR ; Sampler reference + key = name ; name is ifa flow name and should be unique. + flowgroup = 1*255VCHAR ; Flow group reference + collector = 1*255VCHAR ; Collector Reference + sample-rate = 1*255VCHAR ; Sampler reference node-type = ”INGRESS"/”EGRESS”/”INTERMEDIATE” ; IFA Node type, INTERMEDIATE is the default Example: - > keys *TAM_IFA* - 1) "TAM_IFA_TABLE|ifa1" + > keys *TAM_IFA_SESSIONS* + 1) "TAM_IFA_SESSIONS_TABLE|ifa1" - > hgetall "TAM_IFA_TABLE|ifa1" + > hgetall "TAM_IFA_SESSIONS_TABLE|ifa1" 1) "flowgroup" 2) "websrvrflows" 3) "collector" @@ -468,14 +468,16 @@ sonic # show tam ifa sessions Name Flow Group Collector Sampler Node Type ----------- ---------------- -------------- ------------- ---------- -http_236 udp_port_236 - aggresive Ingress -http_239 udp_port_239 - - Intermediate -http_241 udp_port_241 IFA_Col_i19 - Egress +http_236 tcp_port_236 - aggresive Ingress +http_239 tcp_port_239 - - Intermediate +http_241 tcp_port_241 IFA_Col_i19 - Egress sonic # show tam ifa sessions http_236 Session : http_236 (Ingress) -Flow Group Name : udp_port_236 +Flow Group Name : tcp_port_236 + Id : 4025 + Priority : 100 SRC IP : 13.92.96.32 DST IP : 7.72.235.82 DST L4 Port : 236 diff --git a/devops/tam/tam-tail-stamping-hld.md b/devops/tam/tam-tail-stamping-hld.md index 46f1afc5f5aa..5e5f2da1f6ef 100644 --- a/devops/tam/tam-tail-stamping-hld.md +++ b/devops/tam/tam-tail-stamping-hld.md @@ -238,7 +238,7 @@ A CLI reads TS ACL counters from COUNTER DB and displays it as output of show co ### 3.2.1 CONFIG DB -TAM\_TAILSTAMPING\_TABLE +TAM\_TAILSTAMPING\_SESSIONS\_TABLE ;Defines TAM TS configuration in CONFIG_DB @@ -246,11 +246,11 @@ TAM\_TAILSTAMPING\_TABLE flowgroup = 1*255VCHAR ; Flow group reference Example: - > keys *TAM_TAILSTAMPING* + > keys *TAM_TAILSTAMPING_SESSIONS* - 1) "TAM_TAILSTAMPING_TABLE|sla1" + 1) "TAM_TAILSTAMPING_SESSIONS_TABLE|sla1" - > hgetall "TAM_TAILSTAMPING_TABLE|sla1" + > hgetall "TAM_TAILSTAMPING_SESSIONS_TABLE|sla1" 1) "flowgroup" 2) "slaflows" @@ -403,6 +403,8 @@ sonic # show tam tail-stamping sessions http_236 Session : http_236 Flow Group Name : tcp_port_236 + Id : 4025 + Priority : 100 SRC IP : 13.92.96.32 DST IP : 7.72.235.82 DST L4 Port : 236 From 0bc07c176099b652167d3c59031e15ff342fc893 Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Thu, 9 Jul 2020 01:22:19 +0530 Subject: [PATCH 20/27] Sample workflows added --- devops/tam/tam-drop-monitor-hld.md | 39 +++++++++++++ devops/tam/tam-inband-flow-analyser.md | 77 +++++++++++++++++++++++++- devops/tam/tam-tail-stamping-hld.md | 27 +++++++++ 3 files changed, 142 insertions(+), 1 deletion(-) diff --git a/devops/tam/tam-drop-monitor-hld.md b/devops/tam/tam-drop-monitor-hld.md index e3d4966bb5af..6b9a8e5a3ed0 100644 --- a/devops/tam/tam-drop-monitor-hld.md +++ b/devops/tam/tam-drop-monitor-hld.md @@ -51,6 +51,7 @@ + [3.6.3 Show Commands](#363-show-commands) - [3.6.3.1 Listing the Drop Monitor attributes](#3631-listing-the-drop-monitor-attributes) - [3.6.3.1 Listing the Drop Monitor sessions](#3631-listing-the-drop-monitor-sessions) + + [3.6.4 Sample Workflow](#364-sample-workflow) + [3.6.5 Debug Commands](#365-debug-commands) + [3.6.6 REST API Support](#366-rest-api-support) - [4 Flow Diagrams](#4-flow-diagrams) @@ -70,6 +71,7 @@ * [Qualified Drop Reasons](#qualified-drop-reasons) * [Drop Report format](#drop-report-format) + ## List of Tables [Table 1: Abbreviations](#table-1-abbreviations) @@ -495,6 +497,43 @@ Packet Count : 7656 ``` +### 3.6.4 Sample Workflow + +This section provides a sample Drop Monitor workflow using CLI, for monitoring the packet drops as described below. + +> Need to monitor all packet drops on this switch, for all the flows destined for the webserver running at 20.20.1.1. A Drop Monitor collector for analysing the metadata is running at 20.20.20.4:9091 (UDP). Not every packet drop needs monitored, but one in 100 is acceptable. If a flow didn't see any drop for 5sec, it can be assumed that the active drop window may have ended. The flows are ingressing onto switch1 on port 'Ethernet44' + +``` +; setup switch-wide configuration + +sonic (config-tam)# switch-id 1234 + +; setup the sample-rate + +sonic (config-tam)# sampler websamp interface Ethernet44 rate 100 + +; create the flowgroup + +sonic (config-tam)# flow-group websrvflows dst-ip 20.20.1.1 dst-l4-port 80 protocol 6 + +; setup the collector + +collector dmcol1 type ipv4 ip 20.20.20.4 port 9091 protocol UDP + +; Enable Drop Monitor on the switch + +sonic (config-tam-dm)# enable + +; Setup aging interval + +sonic (config-tam-dm)# aging-interval 5 + +; Create the drop-monitoring session + +sonic(config-tam-dm)# session webflowmonitor flowgroup websrvflows sample-rate websamp collector dmcol1 + +``` + ### 3.6.5 Debug Commands N/A diff --git a/devops/tam/tam-inband-flow-analyser.md b/devops/tam/tam-inband-flow-analyser.md index 317809ec22ac..5cbfe833b5cd 100644 --- a/devops/tam/tam-inband-flow-analyser.md +++ b/devops/tam/tam-inband-flow-analyser.md @@ -49,7 +49,11 @@ - [3.7.2.2 Setting up flows for monitoring with IFA](#3722-setting-up-flows-for-monitoring-with-ifa) + [3.7.3 Show Commands](#373-show-commands) - [3.7.3.1 Listing the IFA attributes](#3731-listing-the-ifa-attributes) - - [3.7.3.1 Listing the IFA flows](#3731-listing-the-ifa-flows) + - [3.7.3.1 Listing the IFA sessions](#3731-listing-the-ifa-sessions) + + [3.7.4 Sample Workflow](#374-sample-workflow) + - [Ingress Node configuration](#ingress-node-configuration) + - [Intermediate/Transit Node configuration](#intermediate-transit-node-configuration) + - [Egress Node configuration](#egress-node-configuration) + [3.7.5 Debug Commands](#375-debug-commands) + [3.7.6 REST API Support](#376-rest-api-support) - [4 Flow Diagrams](#4-flow-diagrams) @@ -485,6 +489,77 @@ Collector : None Sampler : aggresive Packet Count : 7656 +``` +### 3.7.4 Sample Workflow + +This section provides a sample IFA workflow using CLI, for monitoring the traffic as described below. + +> Need to monitor all flows to the webserver running at 20.20.1.1. A IFA collector for analysing the metadata is running at 20.20.20.4:9090 (UDP). Not every packet needs monitored, but one in 1000 is acceptable. The flows are ingressing onto switch1 on port 'Ethernet44' + +#### Ingress Node configuration + +``` +; setup switch-wide configuration + +sonic (config-tam)# switch-id 1234 +sonic (config-tam)# enterprise-id 4434 + +; setup the sample-rate + +sonic (config-tam)# sampler websamp interface Ethernet44 rate 1000 + +; create the flowgroup + +sonic (config-tam)# flow-group websrvflows dst-ip 20.20.1.1 dst-l4-port 80 protocol 6 + +; Enable IFA on the switch + +sonic (config-tam-ifa)# enable + +; Create the IFA monitoring session + +sonic(config-tam-ifa)# session webflowmonitor flowgroup websrvflows sample-rate websamp node-type ingress + +``` + +#### Intermediate/Transit Node configuration + +``` +; setup switch-wide configuration + +sonic (config-tam)# switch-id 1235 +sonic (config-tam)# enterprise-id 4434 + +; Enable IFA on the switch + +sonic (config-tam-ifa)# enable + +``` + +#### Egress Node configuration + +``` +; setup switch-wide configuration + +sonic (config-tam)# switch-id 1236 +sonic (config-tam)# enterprise-id 4434 + +; setup the collector + +collector ifacol1 type ipv4 ip 20.20.20.4 port 9090 protocol UDP + +; create the flowgroup + +sonic (config-tam)# flow-group websrvflows dst-ip 20.20.1.1 dst-l4-port 80 protocol 6 + +; Enable IFA on the switch + +sonic (config-tam-ifa)# enable + +; Create the IFA monitoring session + +sonic(config-tam-ifa)# session webflowmonitor flowgroup websrvflows collector ifacol1 node-type egress + ``` ### 3.7.5 Debug Commands diff --git a/devops/tam/tam-tail-stamping-hld.md b/devops/tam/tam-tail-stamping-hld.md index 5e5f2da1f6ef..fc9a4636601c 100644 --- a/devops/tam/tam-tail-stamping-hld.md +++ b/devops/tam/tam-tail-stamping-hld.md @@ -50,6 +50,7 @@ + [3.7.3 Show Commands](#373-show-commands) - [3.7.3.1 Listing the TS attributes](#3731-listing-the-ts-attributes) - [3.7.3.1 Listing the Tailstamping sessions](#3731-listing-the-tailstamping-sessions) + + [3.7.4 Sample Workflow](#374-sample-workflow) + [3.7.5 Debug Commands](#375-debug-commands) + [3.7.6 REST API Support](#376-rest-api-support) - [4 Flow Diagrams](#4-flow-diagrams) @@ -412,6 +413,32 @@ Packet Count : 7656 ``` +### 3.7.4 Sample Workflow + +This section provides a sample Tailstamping workflow using CLI, for monitoring the traffic as described below. + +> Gather flow metadata for network probe packets sent from 10.10.1.1:8080 to 20.4.5.2:7070 (tcp) + +``` +; setup switch-wide configuration + +sonic (config-tam)# switch-id 1234 + +; create the flowgroup + +sonic (config-tam)# flow-group probeflow src-ip 10.10.1.1 src-l4-port 8080 dst-ip 20.4.5.2 dst-l4-port 7070 protocol 6 + +; Enable Tailstamping on the switch + +sonic (config-tam-ts)# enable + +; Create the Tailstamping monitoring session + +sonic(config-tam-ts)# session probemonitor flowgroup probeflow + +``` + + ### 3.7.5 Debug Commands N/A From 91586308b910b60a03442d5b196d8ebdfcf9fde1 Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Thu, 9 Jul 2020 01:26:27 +0530 Subject: [PATCH 21/27] Fixed an error where by collector can be considered optional for a session --- devops/tam/tam-drop-monitor-hld.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devops/tam/tam-drop-monitor-hld.md b/devops/tam/tam-drop-monitor-hld.md index 6b9a8e5a3ed0..bb0412b17f53 100644 --- a/devops/tam/tam-drop-monitor-hld.md +++ b/devops/tam/tam-drop-monitor-hld.md @@ -438,7 +438,7 @@ The following attribtes are supported for drop-monitor sessions. The command syntax for creating /removing the sessions are as follows: ``` -sonic(config-tam-dm)# session flowgroup [collector ] [sample-rate ] +sonic(config-tam-dm)# session flowgroup collector [sample-rate ] sonic (config-tam-dm)# no session ``` From cee385ef2f4d51a13e636d8b3ccf38e323437d9c Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Fri, 10 Jul 2020 10:31:23 +0530 Subject: [PATCH 22/27] Moved interface attribute from samplers to flowgroup definition and adjsusted CLI, DB schema --- devops/tam/tam-drop-monitor-hld.md | 7 ++++--- devops/tam/tam-hld.md | 27 ++++++++++++++------------ devops/tam/tam-inband-flow-analyser.md | 7 ++++--- 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/devops/tam/tam-drop-monitor-hld.md b/devops/tam/tam-drop-monitor-hld.md index bb0412b17f53..a8e00b055420 100644 --- a/devops/tam/tam-drop-monitor-hld.md +++ b/devops/tam/tam-drop-monitor-hld.md @@ -419,7 +419,7 @@ The default value for the aging interval is 5 seconds. A Drop Monitoring session associated a previously defined flow-group as described below. - The Drop Monitor session must have a unique name for referencing. -- The flow-group must be previously created with the `flow-group` command (under `config-tam` hierarchy). +- The flow-group must be previously created with the `flow-group` command (under `config-tam` hierarchy). For drop-monitoring, the flow-group definition must contain the `ingress-interface` attribute. - The sampling-rate can be set, by referencing a previously created sampler, created with the `sampler` command (under `config-tam` hierarchy). - A collector must be associated with the session, where the drop-reports will be sent. The collector must be previously created with the `collector` command (under `config-tam` hierarchy).. @@ -491,6 +491,7 @@ Flow Group Name : tcp_port_236 SRC IP : 13.92.96.32 DST IP : 7.72.235.82 DST L4 Port : 236 + Ingress Intf : Ethernet20 Collector : Col_i19 Sampler : aggresive Packet Count : 7656 @@ -510,11 +511,11 @@ sonic (config-tam)# switch-id 1234 ; setup the sample-rate -sonic (config-tam)# sampler websamp interface Ethernet44 rate 100 +sonic (config-tam)# sampler websamp rate 100 ; create the flowgroup -sonic (config-tam)# flow-group websrvflows dst-ip 20.20.1.1 dst-l4-port 80 protocol 6 +sonic (config-tam)# flow-group websrvflows dst-ip 20.20.1.1 dst-l4-port 80 protocol 6 ingress-interface Ethernet44 ; setup the collector diff --git a/devops/tam/tam-hld.md b/devops/tam/tam-hld.md index e434daf217a4..ad5a280b2cb3 100644 --- a/devops/tam/tam-hld.md +++ b/devops/tam/tam-hld.md @@ -230,7 +230,6 @@ TAM\_SAMPLINGRATE\_TABLE key = name ; Sampler name and should be unique - interface = PORT_TABLE:ifname ; Port on which the packets are ingressing sampling-rate = 1 * 5DIGIT ; Sampling rate. One packet in every ‘rate’ packets ; will be sampled @@ -251,18 +250,22 @@ TAM\_FLOWGROUP\_TABLE key = name ; Flowgroup name and should be unique id = 1 * 5DIGIT ; Unique identification for a flow-group - table-name = 1*255VCHAR ; ACL Table reference - + table-name = 1*255VCHAR ; ACL Table reference + ingress-interface = PORT_TABLE:ifname ; Port on which the packets are ingressing + Example: > keys *TAM_FLOWGROUP_TABLE* 1)"TAM_FLOWGROUP_TABLE|websrv1" 2)"TAM_FLOWGROUP_TABLE|storagecluster2" + > hgetall "TAM_FLOWGROUP_TABLE|storagecluster2" 1) "id" 2) 1000 3) "table-name" 4) "TAM21" + 5) "ingress-interface" + 6) "Ethernet20" ### 3.2.2 APP DB @@ -431,19 +434,20 @@ The following flow-group attribtes are supported. Except the `name` attribute, a | `l4-dst-port` | Destination Port (L4) of the packets belonging to the flow-group | | `protocol` | Protocol field of the ip-header of the packets belonging to the flow-group | | `priority` | Priority of the flow-group, among the other flow-groups that are created. Range is 1 - 1024, Default value is 100 | +| `ingress-interface` | Refers to one of the interfaces on the switch on which traffic is entering the switch. | The command syntax for setting up the flow-groups is as follows: ``` -sonic (config-tam)# flow-group [src-mac ] [dst-mac ] [ethertype ] [src-ip ] [dst-ip ] [src-l4-port ] [dst-l4-port ] [protocol ] [priority ] +sonic (config-tam)# flow-group [src-mac ] [dst-mac ] [ethertype ] [src-ip ] [dst-ip ] [src-l4-port ] [dst-l4-port ] [protocol ] [priority ] [ingress-interface ] sonic (config-tam)# no flow-group ``` #### 3.7.2.2 Setting up Samplers -TAM infrastructure supports setting up a sampling configuration on a per-interface basis and refer to this sampler configuration from the application which support sampling for the traffic. +TAM infrastructure supports setting up a sampling configuration and refer to this sampler configuration from the application which support sampling for the traffic. A sampler, if associated with any TAM application, can't be removed. The `no` command fails citing existing association. @@ -452,13 +456,12 @@ The following sampling attribtes are supported. | **Attribute** | **Description** | |--------------------------|-------------------------------------| | `name` | A string that uniquely identifies the sampler, and will be referrenced from other configurations | -| `interface` | Refers to one of the interfaces on the switch on which traffic | | `sample-rate` | Sampling rate, one in every `sample-rate` packets will be sampled | The command syntax for setting up the samplers are as follows: ``` -sonic (config-tam)# sampler interface rate +sonic (config-tam)# sampler rate sonic (config-tam)# no sampler @@ -522,15 +525,14 @@ Sample usage shown below. ``` sonic # show tam samplers -Name Interface Sample Rate ------------ --------- ----------- -sflow_low Ethernet10 1 -aggresive Ethernet20 2000 +Name Sample Rate +----------- ----------- +sflow_low 1 +aggresive 2000 sonic-cli# show tam samplers aggresive Name : aggresive -Interface : Ethernet20 Sample Rate : 2000 ``` @@ -551,6 +553,7 @@ Flow Group Name : udp_port_239 Priority : 100 SRC IP : 10.72.195.23 DST L4 Port : 239 + Ingress Intf : Ethernet20 Packet Count : 10584 Flow Group Name : udp_port_241 diff --git a/devops/tam/tam-inband-flow-analyser.md b/devops/tam/tam-inband-flow-analyser.md index 5cbfe833b5cd..d1421d906de2 100644 --- a/devops/tam/tam-inband-flow-analyser.md +++ b/devops/tam/tam-inband-flow-analyser.md @@ -413,7 +413,7 @@ A IFA monitoring session associated a previously defined flow-group, with IFA as - The IFA session must have a unique name for referencing. - The flow-group must be previously created with the `flow-group` command (under `config-tam` hierarchy). - The switch can be setup to act as an ingress node or as an egress node for this session. -- On ingress nodes, the sampling-rate can be set, by referencing a previously created sampler, created with the `sampler` command (under `config-tam` hierarchy). +- On ingress nodes, the sampling-rate can be set, by referencing a previously created sampler, created with the `sampler` command (under `config-tam` hierarchy). On ingress nodes, the flow-group definition must contain the `ingress-interface` attribute. - On the egress nodes, a collector must be associated with the flow, where the extracted metadata will be sent. The collector must be previously created with the `collector` command (under `config-tam` hierarchy).. When a sesssion that is previously created is removed (with the `no` command), the associated flows are no longer processed for IFA as an ingress node or as an egress-node by the switch. @@ -485,6 +485,7 @@ Flow Group Name : tcp_port_236 SRC IP : 13.92.96.32 DST IP : 7.72.235.82 DST L4 Port : 236 + Ingress Intf : Ethernet20 Collector : None Sampler : aggresive Packet Count : 7656 @@ -506,11 +507,11 @@ sonic (config-tam)# enterprise-id 4434 ; setup the sample-rate -sonic (config-tam)# sampler websamp interface Ethernet44 rate 1000 +sonic (config-tam)# sampler websamp rate 1000 ; create the flowgroup -sonic (config-tam)# flow-group websrvflows dst-ip 20.20.1.1 dst-l4-port 80 protocol 6 +sonic (config-tam)# flow-group websrvflows dst-ip 20.20.1.1 dst-l4-port 80 protocol 6 ingress-interface Ethernet44 ; Enable IFA on the switch From 46bfb009b057f626a162cc812eb7290f3b285943 Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Mon, 20 Jul 2020 19:36:30 +0530 Subject: [PATCH 23/27] Multiple Updates - REST API (oc-yang) for IFA, MOD, TS - Updated the interface mode --- devops/tam/tam-drop-monitor-hld.md | 109 +++++++++++++++++++++++-- devops/tam/tam-hld.md | 14 +++- devops/tam/tam-inband-flow-analyser.md | 86 +++++++++++++++++-- devops/tam/tam-tail-stamping-hld.md | 65 ++++++++++++++- 4 files changed, 258 insertions(+), 16 deletions(-) diff --git a/devops/tam/tam-drop-monitor-hld.md b/devops/tam/tam-drop-monitor-hld.md index a8e00b055420..9b75fb19882d 100644 --- a/devops/tam/tam-drop-monitor-hld.md +++ b/devops/tam/tam-drop-monitor-hld.md @@ -419,7 +419,7 @@ The default value for the aging interval is 5 seconds. A Drop Monitoring session associated a previously defined flow-group as described below. - The Drop Monitor session must have a unique name for referencing. -- The flow-group must be previously created with the `flow-group` command (under `config-tam` hierarchy). For drop-monitoring, the flow-group definition must contain the `ingress-interface` attribute. +- The flow-group must be previously created with the `flow-group` command (under `config-tam` hierarchy). For drop-monitoring, the flow-group must be associated with an interface. - The sampling-rate can be set, by referencing a previously created sampler, created with the `sampler` command (under `config-tam` hierarchy). - A collector must be associated with the session, where the drop-reports will be sent. The collector must be previously created with the `collector` command (under `config-tam` hierarchy).. @@ -515,7 +515,12 @@ sonic (config-tam)# sampler websamp rate 100 ; create the flowgroup -sonic (config-tam)# flow-group websrvflows dst-ip 20.20.1.1 dst-l4-port 80 protocol 6 ingress-interface Ethernet44 +sonic (config-tam)# flow-group websrvflows dst-ip 20.20.1.1 dst-l4-port 80 protocol 6 + +# associate the ingress interface to the flowgroup + +sonic (config) # interface Ethernet 44 +sonic (config-if-Ethernet44)# flow-group websrvflows ; setup the collector @@ -540,12 +545,104 @@ N/A ### 3.6.6 REST API Support -The following REST API are supported - +#### Yang-based REST API based on the openconfig-tam module defintions + +##### Setting up the aging-interval + +* Method : PUT +* URI : /restconf/data/openconfig-tam:tam/dropmonitor/config/config/aging-interval +* Data format +```json +{ + "openconfig-tam:aging-interval": 0 +} +``` + +##### Obtaining the current aging-interval + +* Method : GET +* URI : /restconf/data/openconfig-tam:tam/dropmonitor/state/state/aging-interval +* Response format +```json +{ + "openconfig-tam:aging-interval": 0 +} +``` + +##### Resetting the aging-interval to defaults + +* Method : DELETE +* URI : /restconf/data/openconfig-tam:tam/dropmonitor/config/config/aging-interval + +##### Obtaining the all of the sessions + +* Method : GET +* URI : /restconf/data/openconfig-tam:tam/dropmonitor/state/state/dropmonitor-sessions +* Response format +```json +{ + "openconfig-tam:dropmonitor-sessions": { + "dropmonitor-session": [ + { + "name": "string", + "config": { + "name": "string", + "flowgroup": "string", + "collector": "string", + "samplerate": "string" + }, + "state": { + "name": "string", + "flowgroup": "string", + "collector": "string", + "samplerate": "string" + } + } + ] + } +} + +``` + +##### Obtaining a specific session + +* Method : GET +* URI : /restconf/data/openconfig-tam:tam/dropmonitor/state/state/dropmonitor-sessions/dropmonitor-session={name}/state +* Response format +```json +{ + "openconfig-tam:state": { + "name": "string", + "flowgroup": "string", + "collector": "string", + "samplerate": "string" + } +} +``` + +##### Creating a session + +* Method : PUT +* URI : /restconf/data/openconfig-tam:tam/dropmonitor/config/config/dropmonitor-sessions/dropmonitor-session={name}/config +* Data format +```json +{ + "openconfig-tam:config": { + "name": "string", + "flowgroup": "string", + "collector": "string", + "samplerate": "string" + } +} +``` + +##### Deleting a session + +* Method : DELETE +* URI : /restconf/data/openconfig-tam:tam/dropmonitor/config/config/dropmonitor-sessions/dropmonitor-session={name} -- BroadView REST API for Drop Monitor feature +#### BroadView REST API for IFA feature - TBD : Provide reference and listlimitations -- REST API as obtained from the openconfig-tam module defintions - - TBD List these # 4 Flow Diagrams diff --git a/devops/tam/tam-hld.md b/devops/tam/tam-hld.md index ad5a280b2cb3..db38544613f3 100644 --- a/devops/tam/tam-hld.md +++ b/devops/tam/tam-hld.md @@ -415,6 +415,8 @@ sonic (config-tam)# no collector ``` #### 3.7.2.2 Setting up Flow Groups + +##### Creating a Flow Group A flow-group is a packet match criterion that defines a set of flows that are of interest. For example, "all packets destined for a the webserver at 10.10.1.1" is an example flow group. Multiple flows can match a given flow-group criterion. Typically, a flow-group is defined with a combination of L2 and L3 header fields, with some fields specified as wild-cards. TAM infrastructure allows us to create a flow-group by specifying the tuple information and associating a reference to this flow-group from TAM applications. A flow-group can be removed with the `no` form of the command. Flow Groups that are actively referenced in other applications can't be removed. @@ -434,17 +436,25 @@ The following flow-group attribtes are supported. Except the `name` attribute, a | `l4-dst-port` | Destination Port (L4) of the packets belonging to the flow-group | | `protocol` | Protocol field of the ip-header of the packets belonging to the flow-group | | `priority` | Priority of the flow-group, among the other flow-groups that are created. Range is 1 - 1024, Default value is 100 | -| `ingress-interface` | Refers to one of the interfaces on the switch on which traffic is entering the switch. | The command syntax for setting up the flow-groups is as follows: ``` -sonic (config-tam)# flow-group [src-mac ] [dst-mac ] [ethertype ] [src-ip ] [dst-ip ] [src-l4-port ] [dst-l4-port ] [protocol ] [priority ] [ingress-interface ] +sonic (config-tam)# flow-group [src-mac ] [dst-mac ] [ethertype ] [src-ip ] [dst-ip ] [src-l4-port ] [dst-l4-port ] [protocol ] [priority ] sonic (config-tam)# no flow-group ``` +##### Attaching a Flow Group to an interface + +Created flow-groups can be attached to an interface. This is accomplished via the interface mode as shown below. The flow-group can be attached to more than one interface. + +``` +sonic (config) # interface +sonic (config-if-EthernetXY)# [no] flow-group +``` + #### 3.7.2.2 Setting up Samplers TAM infrastructure supports setting up a sampling configuration and refer to this sampler configuration from the application which support sampling for the traffic. diff --git a/devops/tam/tam-inband-flow-analyser.md b/devops/tam/tam-inband-flow-analyser.md index d1421d906de2..6c8e5ce7ff01 100644 --- a/devops/tam/tam-inband-flow-analyser.md +++ b/devops/tam/tam-inband-flow-analyser.md @@ -413,7 +413,7 @@ A IFA monitoring session associated a previously defined flow-group, with IFA as - The IFA session must have a unique name for referencing. - The flow-group must be previously created with the `flow-group` command (under `config-tam` hierarchy). - The switch can be setup to act as an ingress node or as an egress node for this session. -- On ingress nodes, the sampling-rate can be set, by referencing a previously created sampler, created with the `sampler` command (under `config-tam` hierarchy). On ingress nodes, the flow-group definition must contain the `ingress-interface` attribute. +- On ingress nodes, the sampling-rate can be set, by referencing a previously created sampler, created with the `sampler` command (under `config-tam` hierarchy). On ingress nodes, the flow-group must be associated with an interface. - On the egress nodes, a collector must be associated with the flow, where the extracted metadata will be sent. The collector must be previously created with the `collector` command (under `config-tam` hierarchy).. When a sesssion that is previously created is removed (with the `no` command), the associated flows are no longer processed for IFA as an ingress node or as an egress-node by the switch. @@ -511,7 +511,12 @@ sonic (config-tam)# sampler websamp rate 1000 ; create the flowgroup -sonic (config-tam)# flow-group websrvflows dst-ip 20.20.1.1 dst-l4-port 80 protocol 6 ingress-interface Ethernet44 +sonic (config-tam)# flow-group websrvflows dst-ip 20.20.1.1 dst-l4-port 80 protocol 6 + +# associate the ingress interface to the flowgroup + +sonic (config) # interface Ethernet 44 +sonic (config-if-Ethernet44)# flow-group websrvflows ; Enable IFA on the switch @@ -570,10 +575,81 @@ N/A The following REST API are supported - -- BroadView REST API for IFA feature +#### Yang-based REST API based on the openconfig-tam module defintions + +##### Obtaining the all of the sessions + +* Method : GET +* URI : /restconf/data/openconfig-tam:tam/ifa/state/ifa-sessions +* Response format +```json +{ + "openconfig-tam:ifa-sessions": { + "ifa-session": [ + { + "name": "string", + "config": { + "name": "string", + "flowgroup": "string", + "collector": "string", + "samplerate": "string", + "node-type": "INGRESS_NODE" + }, + "state": { + "name": "string", + "flowgroup": "string", + "collector": "string", + "samplerate": "string", + "node-type": "INGRESS_NODE" + } + } + ] + } +} +``` + +##### Obtaining a specific session + +* Method : GET +* URI : /restconf/data/openconfig-tam:tam/ifa/state/ifa-sessions/ifa-session={name}/state +* Response format +```json +{ + "openconfig-tam:state": { + "name": "string", + "flowgroup": "string", + "collector": "string", + "samplerate": "string", + "node-type": "INGRESS_NODE" + } +} +``` + +##### Creating a session + +* Method : PUT +* URI : /restconf/data/openconfig-tam:tam/ifa/config/ifa-sessions/ifa-session={name}/config +* Data format +```json +{ + "openconfig-tam:config": { + "name": "string", + "flowgroup": "string", + "collector": "string", + "samplerate": "string", + "node-type": "INGRESS_NODE" + } +} +``` + +##### Deleting a session + +* Method : DELETE +* URI : /restconf/data/openconfig-tam:tam/ifa/config/ifa-sessions/ifa-session={name} + +#### BroadView REST API for IFA feature - TBD : Provide reference and listlimitations -- REST API as obtained from the openconfig-tam module defintions - - TBD List these + # 4 Flow Diagrams diff --git a/devops/tam/tam-tail-stamping-hld.md b/devops/tam/tam-tail-stamping-hld.md index fc9a4636601c..d2388e87dbcc 100644 --- a/devops/tam/tam-tail-stamping-hld.md +++ b/devops/tam/tam-tail-stamping-hld.md @@ -446,10 +446,69 @@ N/A The following REST API are supported - -- BroadView REST API for TS feature +#### Yang-based REST API based on the openconfig-tam module defintions + +##### Obtaining the all of the sessions + +* Method : GET +* URI : /restconf/data/openconfig-tam:tam/tailstamping/state/tailstamping-sessions +* Response format +```json +{ + "openconfig-tam:tailstamping-sessions": { + "tailstamping-session": [ + { + "name": "string", + "config": { + "name": "string", + "flowgroup": "string" + }, + "state": { + "name": "string", + "flowgroup": "string" + } + } + ] + } +} +``` + +##### Obtaining a specific session + +* Method : GET +* URI : /restconf/data/openconfig-tam:tam/tailstamping/state/tailstamping-sessions/tailstamping-session={name}/state +* Response format +```json +{ + "openconfig-tam:state": { + "name": "string", + "flowgroup": "string" + } +} +``` + +##### Creating a session + +* Method : PUT +* URI : /restconf/data/openconfig-tam:tam/tailstamping/config/tailstamping-sessions/tailstamping-session={name}/config +* Data format +```json +{ + "openconfig-tam:config": { + "name": "string", + "flowgroup": "string" + } +} + +``` + +##### Deleting a session + +* Method : DELETE +* URI : /restconf/data/openconfig-tam:tam/tailstamping/config/tailstamping-sessions/tailstamping-session={name} + +#### BroadView REST API for Tailstamping feature - TBD : Provide reference and listlimitations -- REST API as obtained from the openconfig-tam module defintions - - TBD List these # 4 Flow Diagrams From 817e363ae39f1844154bbd9277da3b17da58ab2b Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Mon, 20 Jul 2020 20:56:39 +0530 Subject: [PATCH 24/27] Added the REST API formats for all common TAM functionality --- devops/tam/tam-hld.md | 517 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 515 insertions(+), 2 deletions(-) diff --git a/devops/tam/tam-hld.md b/devops/tam/tam-hld.md index db38544613f3..eaaea7e29b87 100644 --- a/devops/tam/tam-hld.md +++ b/devops/tam/tam-hld.md @@ -611,8 +611,521 @@ N/A ### 3.7.6 REST API Support -TBD - +#### Yang-based REST API based on the openconfig-tam module defintions + +##### Obtaining the status of all TAM feautures on the switch + +* Method : GET +* URI : /restconf/data/openconfig-tam:tam/features/state/features-state +* Response format +```json +{ + "openconfig-tam:features-state": { + "feature-list": [ + { + "feature-ref": "string", + "state": { + "op-feature-ref": "string", + "op-feature-status": "ACTIVE" + } + } + ] + } +} +``` + +##### Obtaining a status of a specific TAM feature + +* Method : GET +* URI : /restconf/data/openconfig-tam:tam/features/state/features-state/feature-list={feature-ref}/state/op-feature-status +* Response format +```json +{ + "openconfig-tam:op-feature-status": "ACTIVE" +} +``` + +##### Activating/De-activating a specific TAM feature + +* Method : PUT +* URI : /restconf/data/openconfig-tam:tam/features/config/features/feature-list={feature-ref}/config/feature-status +* Data format +```json +{ + "openconfig-tam:feature-status": "ACTIVE" +} +``` + +##### Obtaining TAM switch-wide attributes + +* Method : GET +* URI : /restconf/data/openconfig-tam:tam/switch/state +* Response format +```json +{ + "openconfig-tam:state": { + "switch-id": 0, + "enterprise-id": 0, + "op-switch-id": 0, + "op-enterprise-id": 0 + } +} +``` + +##### Setting-up TAM switch-wide attribute : switch-id + +* Method : PUT +* URI : /restconf/data/openconfig-tam:tam/switch/config/switch-id +* Data format +```json +{ + "openconfig-tam:switch-id": 0 +} +``` +##### Setting-up TAM switch-wide attribute : enterprise-id + +* Method : PUT +* URI : /restconf/data/openconfig-tam:tam/switch/config/enterprise-id +* Data format +```json +{ + "openconfig-tam:enterprise-id": 0 +} +``` + +##### Resetting the TAM switch-wide attributes to defaults + +* Method : DELETE +* URI : /restconf/data/openconfig-tam:tam/switch/config/switch-id +* URI : /restconf/data/openconfig-tam:tam/switch/config/enterprise-id + +##### Obtaining all of the collectors + +* Method : GET +* URI : /restconf/data/openconfig-tam:tam/collectors/state/collectors/collector +* Response format +```json +{ + "openconfig-tam:collector": [ + { + "name": "string", + "config": { + "name": "string", + "ip": "string", + "port": 0, + "protocol": "UDP", + "encapsulation": "NONE" + }, + "state": { + "name": "string", + "ip": "string", + "port": 0, + "protocol": "UDP", + "encapsulation": "NONE" + } + } + ] +} +``` + +##### Obtaining a specific collector + +* Method : GET +* URI : /restconf/data/openconfig-tam:tam/collectors/state/collectors/collector={name}/state +* Response format +```json +{ + "openconfig-tam:state": { + "name": "string", + "ip": "string", + "port": 0, + "protocol": "UDP", + "encapsulation": "NONE" + } +} +``` +##### Creating a collector + +* Method : PUT +* URI : /restconf/data/openconfig-tam:tam/collectors/config/collectors/collector={name}/config +* Data format +```json +{ + "openconfig-tam:config": { + "name": "string", + "ip": "string", + "port": 0, + "protocol": "UDP", + "encapsulation": "NONE" + } +} +``` +##### Deleting a collector + +* Method : DELETE +* URI : /restconf/data/openconfig-tam:tam/collectors/config/collectors/collector={name} + +##### Obtaining all of the Samplers + +* Method : GET +* URI : /restconf/data/openconfig-tam:tam/samplers/state/samplerates/samplerate +* Response format +```json +{ + "openconfig-tam:samplerate": [ + { + "name": "string", + "config": { + "name": "string", + "sample-rate": 0 + }, + "state": { + "name": "string", + "sample-rate": 0 + } + } + ] +} +``` + +##### Obtaining a specific sampler + +* Method : GET +* URI : /restconf/data/openconfig-tam:tam/samplers/state/samplerates/samplerate={name}/state +* Response format +```json +{ + "openconfig-tam:state": { + "name": "string", + "sample-rate": 0 + } +} +``` +##### Creating a Sampler + +* Method : PUT +* URI : /restconf/data/openconfig-tam:tam/samplers/config/samplerates/samplerate={name}/config +* Data format +```json +{ + "openconfig-tam:config": { + "name": "string", + "sample-rate": 0 + } +} +``` +##### Deleting a Sampler + +* Method : DELETE +* URI : /restconf/data/openconfig-tam:tam/samplers/config/samplerates/samplerate={name} + + +##### Obtaining all of the flow-groups + +* Method : GET +* URI : /restconf/data/openconfig-tam:tam/flowgroups/state/flowgroups +* Response format +```json +{ + "openconfig-tam:flowgroups": { + "flowgroup": [ + { + "name": "string", + "config": { + "name": "string", + "id": 0, + "priority": 0, + "interface": "string", + "l2": { + "config": { + "source-mac": "string", + "source-mac-mask": "string", + "destination-mac": "string", + "destination-mac-mask": "string", + "ethertype": "string" + }, + "state": { + "source-mac": "string", + "source-mac-mask": "string", + "destination-mac": "string", + "destination-mac-mask": "string", + "ethertype": "string" + } + }, + "ipv4": { + "config": { + "source-address": "string", + "destination-address": "string", + "dscp": 0, + "protocol": "string", + "hop-limit": 0 + }, + "state": { + "source-address": "string", + "destination-address": "string", + "dscp": 0, + "protocol": "string", + "hop-limit": 0 + } + }, + "ipv6": { + "config": { + "source-address": "string", + "source-flow-label": 0, + "destination-address": "string", + "destination-flow-label": 0, + "dscp": 0, + "protocol": "string", + "hop-limit": 0 + }, + "state": { + "source-address": "string", + "source-flow-label": 0, + "destination-address": "string", + "destination-flow-label": 0, + "dscp": 0, + "protocol": "string", + "hop-limit": 0 + } + }, + "transport": { + "config": { + "source-port": "string", + "destination-port": "string", + "tcp-flags": [ + "string" + ] + }, + "state": { + "source-port": "string", + "destination-port": "string", + "tcp-flags": [ + "string" + ] + } + } + }, + "state": { + "name": "string", + "id": 0, + "priority": 0, + "interface": "string", + "l2": { + "config": { + "source-mac": "string", + "source-mac-mask": "string", + "destination-mac": "string", + "destination-mac-mask": "string", + "ethertype": "string" + }, + "state": { + "source-mac": "string", + "source-mac-mask": "string", + "destination-mac": "string", + "destination-mac-mask": "string", + "ethertype": "string" + } + }, + "ipv4": { + "config": { + "source-address": "string", + "destination-address": "string", + "dscp": 0, + "protocol": "string", + "hop-limit": 0 + }, + "state": { + "source-address": "string", + "destination-address": "string", + "dscp": 0, + "protocol": "string", + "hop-limit": 0 + } + }, + "ipv6": { + "config": { + "source-address": "string", + "source-flow-label": 0, + "destination-address": "string", + "destination-flow-label": 0, + "dscp": 0, + "protocol": "string", + "hop-limit": 0 + }, + "state": { + "source-address": "string", + "source-flow-label": 0, + "destination-address": "string", + "destination-flow-label": 0, + "dscp": 0, + "protocol": "string", + "hop-limit": 0 + } + }, + "transport": { + "config": { + "source-port": "string", + "destination-port": "string", + "tcp-flags": [ + "string" + ] + }, + "state": { + "source-port": "string", + "destination-port": "string", + "tcp-flags": [ + "string" + ] + } + } + } + } + ] + } +} +``` + +##### Obtaining a specific flow-group + +* Method : GET +* URI : /restconf/data/openconfig-tam:tam/flowgroups/state/flowgroups/flowgroup={name}/state +* Response format +```json +{ + "openconfig-tam:state": { + "name": "string", + "id": 0, + "priority": 0, + "interface": "string", + "l2": { + "config": { + "source-mac": "string", + "source-mac-mask": "string", + "destination-mac": "string", + "destination-mac-mask": "string", + "ethertype": "string" + }, + "state": { + "source-mac": "string", + "source-mac-mask": "string", + "destination-mac": "string", + "destination-mac-mask": "string", + "ethertype": "string" + } + }, + "ipv4": { + "config": { + "source-address": "string", + "destination-address": "string", + "dscp": 0, + "protocol": "string", + "hop-limit": 0 + }, + "state": { + "source-address": "string", + "destination-address": "string", + "dscp": 0, + "protocol": "string", + "hop-limit": 0 + } + }, + "ipv6": { + "config": { + "source-address": "string", + "source-flow-label": 0, + "destination-address": "string", + "destination-flow-label": 0, + "dscp": 0, + "protocol": "string", + "hop-limit": 0 + }, + "state": { + "source-address": "string", + "source-flow-label": 0, + "destination-address": "string", + "destination-flow-label": 0, + "dscp": 0, + "protocol": "string", + "hop-limit": 0 + } + }, + "transport": { + "config": { + "source-port": "string", + "destination-port": "string", + "tcp-flags": [ + "string" + ] + }, + "state": { + "source-port": "string", + "destination-port": "string", + "tcp-flags": [ + "string" + ] + } + } + } +} +``` +##### Creating a flow-group + +* Method : PUT +* URI : /restconf/data/openconfig-tam:tam/flowgroups/config/flowgroups/flowgroup={name}/config +* Data format +```json +{ + "openconfig-tam:config": { + "name": "string", + "id": 0, + "priority": 0, + "interface": "string", + "l2": { + "config": { + "source-mac": "string", + "source-mac-mask": "string", + "destination-mac": "string", + "destination-mac-mask": "string", + "ethertype": "string" + } + }, + "ipv4": { + "config": { + "source-address": "string", + "destination-address": "string", + "dscp": 0, + "protocol": "string", + "hop-limit": 0 + } + }, + "ipv6": { + "config": { + "source-address": "string", + "source-flow-label": 0, + "destination-address": "string", + "destination-flow-label": 0, + "dscp": 0, + "protocol": "string", + "hop-limit": 0 + } + }, + "transport": { + "config": { + "source-port": "string", + "destination-port": "string", + "tcp-flags": [ + "string" + ] + } + } + } +} +``` +##### Deleting a flow-group + +* Method : DELETE +* URI : /restconf/data/openconfig-tam:tam/flowgroups/config/flowgroups/flowgroup={name} + # 4 Flow Diagrams ## 4.1 Config call flow From d1a9482e7c8700843e970e9b66a3188a4b34299f Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Tue, 18 Aug 2020 19:07:13 +0530 Subject: [PATCH 25/27] Updates Updates to reflect the DB table updates, and URI/JSON changes for the YANG. --- devops/tam/tam-drop-monitor-hld.md | 135 +++-- devops/tam/tam-hld.md | 747 +++++++++++-------------- devops/tam/tam-inband-flow-analyser.md | 131 +++-- devops/tam/tam-tail-stamping-hld.md | 144 ++++- 4 files changed, 625 insertions(+), 532 deletions(-) diff --git a/devops/tam/tam-drop-monitor-hld.md b/devops/tam/tam-drop-monitor-hld.md index 9b75fb19882d..1e34e651c185 100644 --- a/devops/tam/tam-drop-monitor-hld.md +++ b/devops/tam/tam-drop-monitor-hld.md @@ -2,7 +2,7 @@ ## Highlevel Design Document -### Rev 0.1 +### Rev 0.2 # Table of Contents @@ -80,7 +80,8 @@ | Rev | Date | Author | Change Description | |---|-----------|------------------|-----------------------------------| -| 0.1 | 07/01/2020 | Bandaru Viswanath | New draft for SONiC Drop Monitor feature | +| 0.1 | 10/15/2019 | Shirisha Dasari | Initial Version | +| 0.2 | 07/01/2020 | Bandaru Viswanath | Major update to accomodate enhancements to use new TAM infrastructure, DB schmas and UI | ## About This Manual @@ -228,7 +229,7 @@ The DropMonitorMgr configures the source IP address to be used in drop reports t ### 3.2.1 CONFIG DB -TAM\_DROP\_MONITOR\_TABLE +TAM\_DROPMONITOR\_TABLE ;Defines TAM Drop Monitor switch-wide configuration in CONFIG_DB @@ -237,15 +238,15 @@ TAM\_DROP\_MONITOR\_TABLE aging-interval = 1 * 5DIGIT ; Aging interval in seconds Example: - > keys *TAM_DROP_MONITOR_TABLE* - 1) "TAM_DROP_MONITOR_TABLE|global" + > keys *TAM_DROPMONITOR_TABLE* + 1) "TAM_DROPMONITOR_TABLE|global" - > hgetall "TAM_DROP_MONITOR_TABLE|global" + > hgetall "TAM_DROPMONITOR_TABLE|global" 1) "aging-interval" 2) 3600 -TAM\_DROP\_MONITOR\_SESSIONS\_TABLE +TAM\_DROPMONITOR\_SESSIONS\_TABLE ;Defines TAM Drop Monitor session configuration in CONFIG_DB @@ -255,11 +256,11 @@ TAM\_DROP\_MONITOR\_SESSIONS\_TABLE sample-rate = 1*255VCHAR ; Sampler reference Example: - > keys *TAM_DROP_MONITOR_SESSIONS* + > keys *TAM_DROPMONITOR_SESSIONS* - 1) "TAM_DROP_MONITOR_SESSIONS_TABLE|dm1" + 1) "TAM_DROPMONITOR_SESSIONS_TABLE|dm1" - > hgetall "TAM_DROP_MONITOR_SESSIONS_TABLE|dm1" + > hgetall "TAM_DROPMONITOR_SESSIONS_TABLE|dm1" 1) "flowgroup" 2) "websrvrflows" @@ -269,21 +270,22 @@ TAM\_DROP\_MONITOR\_SESSIONS\_TABLE 6) "aggressive" -### 3.2.2 APP DB +### 3.2.2 APPL DB -TAM\_DROP\_MONITOR\_FEATURE\_TABLE +TAM\_DROPMONITOR\_TABLE - ;Defines TAM DROP MONITOR feature configuration + ;Contains DROPMONITOR feature status - key = feature ; Only one instance and has a fixed key "feature". - deviceid = 1 * 5DIGIT ; Uniquely identifies a device on the network. + key = global ; Only one instance and + ; has a fixed key ”global" + op-switch-id = 1 * 5DIGIT ; Currently used switch-id Example: - > keys *TAM_DROP_MONITOR_FEATURE* - 1) "TAM_DROP_MONITOR_FEATURE_TABLE:feature" + > keys *TAM_DROPMONITOR* + 1) "TAM_DROPMONITOR_TABLE:global" - > HGETALL "TAM_DROP_MONITOR_FEATURE_TABLE:feature" - 1) "deviceid" + > HGETALL "TAM_DROPMONITOR_TABLE:global" + 1) "op-switch-id" 2) 54325 TAM\_DROP\_MONITOR\_FLOW\_TABLE @@ -309,7 +311,7 @@ TAM\_DROP\_MONITOR\_FLOW\_TABLE sampled for processing. aging-interval = 1 * 5DIGIT ; Optional. Aging interval for drop- - monitoring in milliseconds. Determines + monitoring in seconds. Determines the interval for which the system waits to declare that a flow is no longer being dropped. @@ -359,13 +361,15 @@ N/A ### 3.3.1 Orchestration Agent -A new orchestration agent class, DropMonitorOrch is added to convert the incoming drop monitor configuration from APPL_DB to ASIC_DB configuration. DropMonitorOrch subscribes to the TAM_DROP_MONITOR_FLOW_TABLE and TAM_DROP_MONITOR_TABLE and converts the incoming flow configuration into drop-monitor SAI configuration. +A new orchestration agent class, DropMonitorOrch is added to convert the incoming drop monitor configuration from APPL_DB to ASIC_DB configuration. DropMonitorOrch subscribes to the TAM_DROPMONITOR_FLOW_TABLE and TAM_DROPMONITOR_TABLE and converts the incoming flow configuration into drop-monitor SAI configuration. DropMonitorOrch maintains data pertaining to all the currently configured flows and the associated TAM object bindings. TAM object bindings are re-used wherever possible. Interaction with aclOrch is required to retrieve the SAI object ID associated with the drop-monitor flow ACL rule. -Drop monitor uses sampling rate configuration for sampling the dropped packets of the flow. The sampling configuration in terms of rate is converted into a SAI sample packet object and provided to the TAM drop-monitor object for configuration +Drop monitor uses sampling rate configuration for sampling the dropped packets of the flow. The sampling configuration in terms of rate is converted into a SAI sample packet object and provided to the TAM drop-monitor object for configuration. + +DropMonitorOrch checks for support for the Drop Monitor feature in the silicon using SAI capability API and sets the field `drop_monitor_supported` to `True` in the `SWITCH_TABLE` of APPL_DB under the key `switch`. ### 3.3.2 Other Process @@ -377,7 +381,7 @@ N/A ## 3.5 SAI -The SAI TAM API spec defines all TAM APIs supported in SAI. Please refer to SAI-Proposal-TAM2.0-v2.0.docx in [https://github.com/opencomputeproject/SAI/tree/master/doc/TAM](https://github.com/opencomputeproject/SAI/tree/master/doc/TAM) for more details. +The SAI TAM API spec defines all TAM APIs supported in SAI. Please refer to [SAI-Proposal-TAM2.0-v2.0.doc](https://github.com/opencomputeproject/SAI/tree/master/doc/TAM) for more details. ***Below diagram provides details about various TAM objects needed to support Drop Monitor, and their correlation*** @@ -387,7 +391,7 @@ The SAI TAM API spec defines all TAM APIs supported in SAI. Please refer to SAI- ### 3.6.1 Data Models -The user facing data model is based on OpenConfig TAM yang model (TBD). The backend data model (SONiC YANG) will use the formats in CONFIG_DB & STATE_DB. See above sections. +The user facing data model is based on OpenConfig compatible TAM yang model. The backend data model (SONiC YANG) will use the formats in CONFIG_DB & APPL_DB. See above sections. ### 3.6.2 Configuration Commands @@ -504,7 +508,10 @@ This section provides a sample Drop Monitor workflow using CLI, for monitoring t > Need to monitor all packet drops on this switch, for all the flows destined for the webserver running at 20.20.1.1. A Drop Monitor collector for analysing the metadata is running at 20.20.20.4:9091 (UDP). Not every packet drop needs monitored, but one in 100 is acceptable. If a flow didn't see any drop for 5sec, it can be assumed that the active drop window may have ended. The flows are ingressing onto switch1 on port 'Ethernet44' +Note that there would be other system wide configuration that is not covered in the sample workflow below, but would be required for the packet forwarding/routing. + ``` + ; setup switch-wide configuration sonic (config-tam)# switch-id 1234 @@ -549,35 +556,47 @@ N/A ##### Setting up the aging-interval -* Method : PUT -* URI : /restconf/data/openconfig-tam:tam/dropmonitor/config/config/aging-interval +* Method : PATCH +* URI : /restconf/data/openconfig-tam:tam/dropmonitor/global * Data format ```json { - "openconfig-tam:aging-interval": 0 + "openconfig-tam:global": { + "config": { + "aging-interval": 0 + } + } } + ``` ##### Obtaining the current aging-interval * Method : GET -* URI : /restconf/data/openconfig-tam:tam/dropmonitor/state/state/aging-interval +* URI : /restconf/data/openconfig-tam:tam/dropmonitor/global * Response format ```json { - "openconfig-tam:aging-interval": 0 + "openconfig-tam:global": { + "config": { + "aging-interval": 0 + }, + "state": { + "aging-interval": 0 + } + } } ``` ##### Resetting the aging-interval to defaults * Method : DELETE -* URI : /restconf/data/openconfig-tam:tam/dropmonitor/config/config/aging-interval +* URI : /restconf/data/openconfig-tam:tam/dropmonitor/global/config/aging-interval ##### Obtaining the all of the sessions * Method : GET -* URI : /restconf/data/openconfig-tam:tam/dropmonitor/state/state/dropmonitor-sessions +* URI : /restconf/data/openconfig-tam:tam/dropmonitor/dropmonitor-sessions * Response format ```json { @@ -589,13 +608,13 @@ N/A "name": "string", "flowgroup": "string", "collector": "string", - "samplerate": "string" + "sample-rate": "string" }, "state": { "name": "string", "flowgroup": "string", "collector": "string", - "samplerate": "string" + "sample-rate": "string" } } ] @@ -607,31 +626,49 @@ N/A ##### Obtaining a specific session * Method : GET -* URI : /restconf/data/openconfig-tam:tam/dropmonitor/state/state/dropmonitor-sessions/dropmonitor-session={name}/state +* URI : /restconf/data/openconfig-tam:tam/dropmonitor/dropmonitor-sessions/dropmonitor-session={name} * Response format ```json { - "openconfig-tam:state": { - "name": "string", - "flowgroup": "string", - "collector": "string", - "samplerate": "string" - } + "openconfig-tam:dropmonitor-session": [ + { + "name": "string", + "config": { + "name": "string", + "flowgroup": "string", + "collector": "string", + "sample-rate": "string" + }, + "state": { + "name": "string", + "flowgroup": "string", + "collector": "string", + "sample-rate": "string" + } + } + ] } ``` ##### Creating a session -* Method : PUT -* URI : /restconf/data/openconfig-tam:tam/dropmonitor/config/config/dropmonitor-sessions/dropmonitor-session={name}/config +* Method : PATCH +* URI : /restconf/data/openconfig-tam:tam/dropmonitor/dropmonitor-sessions * Data format ```json { - "openconfig-tam:config": { - "name": "string", - "flowgroup": "string", - "collector": "string", - "samplerate": "string" + "openconfig-tam:dropmonitor-sessions": { + "dropmonitor-session": [ + { + "name": "string", + "config": { + "name": "string", + "flowgroup": "string", + "collector": "string", + "sample-rate": "string" + } + } + ] } } ``` @@ -639,10 +676,8 @@ N/A ##### Deleting a session * Method : DELETE -* URI : /restconf/data/openconfig-tam:tam/dropmonitor/config/config/dropmonitor-sessions/dropmonitor-session={name} +* URI : /restconf/data/openconfig-tam:tam/dropmonitor/dropmonitor-sessions/dropmonitor-session={name} -#### BroadView REST API for IFA feature - - TBD : Provide reference and listlimitations # 4 Flow Diagrams diff --git a/devops/tam/tam-hld.md b/devops/tam/tam-hld.md index eaaea7e29b87..f0b9e383970b 100644 --- a/devops/tam/tam-hld.md +++ b/devops/tam/tam-hld.md @@ -75,7 +75,7 @@ | Rev | Date | Author | Change Description | |---|-----------|------------------|-----------------------------------| -| 0.1 | 07/01/2020 | Bandaru Viswanath | New draft for SONiC TAM Infrastructure | +| 0.1 | 08/18/2020 | Bandaru Viswanath | New draft for SONiC TAM Infrastructure | ## About This Manual @@ -108,7 +108,7 @@ There are many common aspects among the TAM features, as defined in the TAM spec 1.0 TAM infrastructure must allow configuration of common dataplane specific switch-wide attributes such as switch-identifier to be used in data-export, enterprise-id to be used in IPFIX export records etc. -2.0 TAM infrastructure must allow configuring different types of collectors. It must support - IPv4 or IPv6, TCP or UDP, or a PSAMP encapsulation for the collectors. The collectors shall be named to be referenced by individual features. +2.0 TAM infrastructure must allow configuring different types of collectors. It must support - IPv4 or IPv6, TCP or UDP for the collectors. The collectors shall be named to be referenced by individual features. 3.0 TAM infrastucture must allow a common specification of a flow (or flow-group) definition that can be named and refererenced by individual features. @@ -158,6 +158,9 @@ TAM infrastructure is not an independent feature. TAM\_SWITCH\_TABLE +This table holds the current user configuration for the switch-wide attributes. + + ;Defines TAM Global configuration in CONFIG_DB key = global ; Only one instance and @@ -176,7 +179,10 @@ TAM\_SWITCH\_TABLE 4)22334 -TAM\_COLLECTOR\_TABLE +TAM\_COLLECTORS\_TABLE + +This table holds the current user configuration for the Collectors. + ;Defines TAM Collector configuration in CONFIG_DB @@ -186,14 +192,12 @@ TAM\_COLLECTOR\_TABLE ipaddress-type = “ipv4”/”ipv6” ; IP type protocol = ”TCP"/”UDP” ; Transport protocol to be used to reach collector ; UDP is default - encapsulation = "NONE"/"PSAMP” ; Encapsulation needed to reach collector - ; NONE is default Example: - > keys *TAM_COLLECTOR* + > keys *TAM_COLLECTORS* 1) "TAM_COLLECTOR_TABLE|collector1" - > HGETALL "TAM_COLLECTOR_TABLE|collector1" + > HGETALL "TAM_COLLECTORS_TABLE|collector1" 1) "ipaddress" 2) "10.20.2.1" 3) "port" @@ -202,30 +206,33 @@ TAM\_COLLECTOR\_TABLE 6) "ipv4" 7) "protocol" 8) "UDP" - 9) "encapsulation" - 10) "NONE" TAM\_FEATURES\_TABLE +This table holds the current user configuration for each of the TAM features. + + ;Defines TAM Features configuration in CONFIG_DB key = name ; Feature name and should be among - ; ifa, drop-monitor, tail-stamping, thresholds - status = ”active" / ”inactive" ; Activate or Turnoff the feature + ; IFA, DROPMONITOR, TAILSTAMPING + status = ACTIVE" / INACTIVE" ; Activate or Turnoff the feature Example: > keys *TAM_FEATURES* - 1)"TAM_FEATURES_TABLE|ifa" - 2)"TAM_FEATURES_TABLE|drop-monitor" - 3)"TAM_FEATURES_TABLE|tail-stamping" - 4)"TAM_FEATURES_TABLE|thresholds” + 1)"TAM_FEATURES_TABLE|IFA" + 2)"TAM_FEATURES_TABLE|DROPMONITOR" + 3)"TAM_FEATURES_TABLE|TAILSTAMPING" > hgetall "TAM_FEATURES_TABLE|ifa” 1) "status" - 2) "active" + 2) "ACTIVE" TAM\_SAMPLINGRATE\_TABLE +This table holds sampling rates used across the TAM features. + + ;Defines TAM Sample-Rate configuration in CONFIG_DB key = name ; Sampler name and should be unique @@ -241,39 +248,34 @@ TAM\_SAMPLINGRATE\_TABLE > hgetall "TAM_SAMPLINGRATE_TABLE|aggressive” 1) "sampling-rate" 2) 1000 - 3) "interface" - 4) "Ethernet10" + TAM\_FLOWGROUP\_TABLE +This table holds various flow-group references that are setup to be used with the TAM features. ;Defines TAM Flow Group configuration in CONFIG_DB key = name ; Flowgroup name and should be unique id = 1 * 5DIGIT ; Unique identification for a flow-group table-name = 1*255VCHAR ; ACL Table reference - ingress-interface = PORT_TABLE:ifname ; Port on which the packets are ingressing Example: > keys *TAM_FLOWGROUP_TABLE* 1)"TAM_FLOWGROUP_TABLE|websrv1" 2)"TAM_FLOWGROUP_TABLE|storagecluster2" - > hgetall "TAM_FLOWGROUP_TABLE|storagecluster2" 1) "id" 2) 1000 3) "table-name" - 4) "TAM21" - 5) "ingress-interface" - 6) "Ethernet20" + 4) "TAM" -### 3.2.2 APP DB -N/A +### 3.2.2 APPL DB -### 3.2.3 STATE DB +TAM\_APPL\_SWITCH\_TABLE -TAM\_SWITCH\_TABLE +This table holds the current operational switch-wide attributes for the TAM features. ;Operational TAM Global Status in STATE_DB @@ -283,55 +285,38 @@ TAM\_SWITCH\_TABLE op-enterprise-id = 1 * 5DIGIT ; Currently used enterprise-id Example: - > keys *TAM_SWITCH* - 1) "TAM_SWITCH_TABLE|global" + > keys *TAM_APPL_SWITCH* + 1) "TAM_APPL_SWITCH_TABLE|global" - > HGETALL "TAM_SWITCH_TABLE|global" + > HGETALL "TAM_APPL_SWITCH_TABLE|global" 1)”op-switch-id” 2)54325 3)”op-enterprise-id" 4)22334 -TAM\_FEATURES\_TABLE +### 3.2.3 STATE DB - ;Reflects TAM Features status in STATE_DB +TAM\_STATE\_FEATURES\_TABLE + +This table holds the current operational status for the TAM features. + + ;Reflects TAM Features status in STATE_DB key = name ; Feature name and should be among - ; ifa, drop-monitor, tail-stamping, thresholds - status = ”active" / ”inactive" / "unsupported" / "insufficient_resources" + ; IFA, DROPMONITOR, TAILSTAMPING + op-status = ACTIVE" / INACTIVE" / "UNSUPPORTED" / "INSUFFICIENT_RESOURCES" ; current status of the feature Example: - > keys *TAM_FEATURES* - 1)"TAM_FEATURES_TABLE|ifa" - 2)"TAM_FEATURES_TABLE|drop-monitor" - 3)"TAM_FEATURES_TABLE|tail-stamping" - 4)"TAM_FEATURES_TABLE|thresholds” - - > hgetall "TAM_FEATURES_TABLE|ifa” - 1) "status" - 2) "unsupported" + > keys *TAM_STATE_FEATURES* + 1)"TAM_STATE_FEATURES_TABLE|IFA" + 2)"TAM_STATE_FEATURES_TABLE|DROPMONITOR" + 3)"TAM_STATE_FEATURES_TABLE|TAILSTAMPING" -TAM\_SAMPLINGRATE\_TABLE - - ;Defines TAM Sample-Rate configuration in CONFIG_DB - - key = name ; Sampler name and should be unique - - interface = PORT_TABLE:ifname ; Port on which the packets are ingressing - sampling-rate = 1 * 5DIGIT ; Sampling rate. One packet in every ‘rate’ packets - ; will be sampled - - Example: - > keys *TAM_SAMPLINGRATE_TABLE* - 1)"TAM_SAMPLINGRATE_TABLE|aggressive" - 2)"TAM_SAMPLINGRATE_TABLE|lazy" + > hgetall "TAM_FEATURES_TABLE|IFA” + 1) "op-status" + 2) "UNSUPPORTED" - > hgetall "TAM_SAMPLINGRATE_TABLE|aggressive” - 1) "sampling-rate" - 2) 1000 - 3) "interface" - 4) "Ethernet10" ### 3.2.4 ASIC DB @@ -343,13 +328,15 @@ N/A ## 3.3 Daemons -N/A +A new daemon called `tammgrd` is introduced, which is responsible for managing the common attributes for all the TAM features. This daemon listens for changes on the `TAM_SWITCH_TABLE` in the CONFIG_DB and `TAM_STATE_FEATURES_TABLE` in the STATE_DB and effects the changes in global attributes only when all features are inactive. The `TAM_APPL_SWITCH_TABLE` in APPL_DB reflects the currently operational attributes. + +This daemon is also responsible for setting the initial/default values for the global attributes in the absense of any user configuration. The default values are derived from the system mac-address. ## 3.4 Switch State Service Design ### 3.4.1 Orchestration Agent -N/A +Orchestration Agent determines the support for the individual TAM features based on the underlysing SAI capabilities. The support status is reflected in the SWITCH_TABLE as part of the APPL_DB. Individual TAM features use this status to determine whether the configuration should be procecced or not. Likewise, the Management infrastructure uses this to determine whether to allow the user configuration or not. ### 3.4.2 Other Process @@ -367,18 +354,18 @@ The SAI TAM API spec defines all TAM APIs supported in SAI. Please refer to SAI- ### 3.7.1 Data Models -The user facing data model is based on OpenConfig TAM yang model (TBD). The backend data model (SONiC YANG) will use the formats in CONFIG_DB & STATE_DB. See above sections. +The user facing data model is based on OpenConfig compatible TAM yang model. The backend data model (SONiC YANG) will use the formats in CONFIG_DB, APPL_DB and STATE_DB. See above sections. ### 3.7.2 Configuration Commands #### 3.7.2.1 Setting up switch-wide TAM attributes -Two switch-wide attributes are supported by the TAM infrastructure. +Two switch-wide attributes are supported by the TAM infrastructure. Any changes to the switch-wide attributes are effected only when none of TAM features are active. | **Attribute** | **Description** | |--------------------------|-------------------------------------| -| `switch-id` | A 32-bit idenitifier that uniquely identifies the switch, and is used in the telemetry reports. When not configured, the last 32-bits from the system mac address are used. | -| `enterprise-id` | A 32-bit identifier that is used in the IPFIX telemetry reports. When not configured, the last 32-bits from the system mac address are used. | +| `switch-id` | A 32-bit idenitifier that uniquely identifies the switch, and is used in the telemetry reports. When not configured, the last 16-bits from the system mac address are used. | +| `enterprise-id` | A 32-bit identifier that is used in the IPFIX telemetry reports. When not configured, the last 16-bits from the system mac address are used. | The command syntax for setting up the switch-wide TAM attributes are as follows: @@ -393,7 +380,7 @@ A collector is typically a machine reachable from the switch, where the telemetr TAM infrastructure allows us to create a collector by specifying the reachability information and associating a reference to this collector. This reference, a name, can be specified as a collector by individual feature configurations. -A collector, if associated with any TAM application, can't be removed. The `no` command fails citing existing association. +A collector, while being associated with any TAM application, can't be removed. The `no` command fails citing existing association. The following collector attribtes are supported. @@ -404,20 +391,18 @@ The following collector attribtes are supported. | `ip-address` | The IP address of the collector | | `protocol` | Specifies the transport protocol to be used for reaching the collector. Valid values are `"UDP"` and `"TCP"`. When not specified, `"UDP"` is used as default. | | `port` | Port number on which the Collector is listening for the reports. | -| `encapsulation` | Specifies the encapsulation be used for reaching the collector. Valid values are `"NONE"` and `"PSAMP"`. When not specified, `"NONE"` is used as default. | The command syntax for setting up the collectors are as follows: ``` -sonic (config-tam)# collector type {ipv4 | ipv6} ip port [protocol { UDP | TCP }] [encapsulation { none | psamp }] +sonic (config-tam)# collector type {ipv4 | ipv6} ip port [protocol { UDP | TCP }] sonic (config-tam)# no collector ``` #### 3.7.2.2 Setting up Flow Groups -##### Creating a Flow Group -A flow-group is a packet match criterion that defines a set of flows that are of interest. For example, "all packets destined for a the webserver at 10.10.1.1" is an example flow group. Multiple flows can match a given flow-group criterion. Typically, a flow-group is defined with a combination of L2 and L3 header fields, with some fields specified as wild-cards. +A flow-group is a packet match criterion that defines a set of flows that are of interest. For example, `all packets destined for a the webserver at 10.10.1.1` is an example flow group. Multiple flows can match a given flow-group criterion. Typically, a flow-group is defined with a combination of L2 and L3 header fields, with some fields specified as wild-cards. TAM infrastructure allows us to create a flow-group by specifying the tuple information and associating a reference to this flow-group from TAM applications. A flow-group can be removed with the `no` form of the command. Flow Groups that are actively referenced in other applications can't be removed. @@ -446,7 +431,7 @@ sonic (config-tam)# flow-group [src-mac ] [dst-mac ] [e sonic (config-tam)# no flow-group ``` -##### Attaching a Flow Group to an interface +#### 3.7.2.3 Attaching a Flow Group to an interface Created flow-groups can be attached to an interface. This is accomplished via the interface mode as shown below. The flow-group can be attached to more than one interface. @@ -455,11 +440,11 @@ sonic (config) # interface sonic (config-if-EthernetXY)# [no] flow-group ``` -#### 3.7.2.2 Setting up Samplers +#### 3.7.2.4 Setting up Samplers TAM infrastructure supports setting up a sampling configuration and refer to this sampler configuration from the application which support sampling for the traffic. -A sampler, if associated with any TAM application, can't be removed. The `no` command fails citing existing association. +A sampler, while being associated with any TAM application, can't be removed. The `no` command fails citing existing association. The following sampling attribtes are supported. @@ -509,10 +494,10 @@ Sample usage shown below. ``` sonic # show tam collectors -Name IP Address Port Protocol Encapsulation ----------------- -------------- ------ -------- ------------- -IFA_Col_i19 192.168.78.121 7071 UDP NONE -MOD_Col_m16 192.168.78.123 7076 UDP PSAMP +Name IP Address Port Protocol +---------------- -------------- ------ -------- +IFA_Col_i19 192.168.78.121 7071 UDP +MOD_Col_m16 192.168.78.123 7076 UDP sonic-cli# show tam collectors IFA_Col_i19 @@ -520,7 +505,6 @@ Name : IFA_Col_i19 IP Address : 192.168.78.121 Port : 7071 Protocol : UDP -Encapsulation : NONE ``` #### 3.7.3.3 Listing the Samplers @@ -588,7 +572,7 @@ Packet Count : 10584 The following command lists the current status for all TAM features or for a specific feature. ``` -sonic # show tam features [ { ifa | drop-monitor | tail-stamping | thresholds}] +sonic # show tam features [ { ifa | drop-monitor | tail-stamping }] ``` Sample usage shown below. @@ -616,17 +600,17 @@ N/A ##### Obtaining the status of all TAM feautures on the switch * Method : GET -* URI : /restconf/data/openconfig-tam:tam/features/state/features-state +* URI : /restconf/data/openconfig-tam:tam/features-state * Response format ```json { "openconfig-tam:features-state": { - "feature-list": [ + "feature": [ { "feature-ref": "string", "state": { - "op-feature-ref": "string", - "op-feature-status": "ACTIVE" + "feature-ref": "string", + "op-status": "ACTIVE" } } ] @@ -637,45 +621,67 @@ N/A ##### Obtaining a status of a specific TAM feature * Method : GET -* URI : /restconf/data/openconfig-tam:tam/features/state/features-state/feature-list={feature-ref}/state/op-feature-status +* URI : /restconf/data/openconfig-tam:tam/features-state/feature={feature-ref} * Response format ```json { - "openconfig-tam:op-feature-status": "ACTIVE" + "openconfig-tam:feature": [ + { + "feature-ref": "string", + "state": { + "feature-ref": "string", + "op-status": "ACTIVE" + } + } + ] } ``` ##### Activating/De-activating a specific TAM feature -* Method : PUT -* URI : /restconf/data/openconfig-tam:tam/features/config/features/feature-list={feature-ref}/config/feature-status +* Method : PATCH +* URI : /restconf/data/openconfig-tam:tam/features/feature={feature-ref} * Data format ```json { - "openconfig-tam:feature-status": "ACTIVE" + "openconfig-tam:feature": [ + { + "feature-ref": "string", + "config": { + "feature-ref": "string", + "status": "ACTIVE" + } + } + ] } ``` ##### Obtaining TAM switch-wide attributes * Method : GET -* URI : /restconf/data/openconfig-tam:tam/switch/state +* URI : /restconf/data/openconfig-tam:tam/switch * Response format ```json { - "openconfig-tam:state": { - "switch-id": 0, - "enterprise-id": 0, - "op-switch-id": 0, - "op-enterprise-id": 0 + "openconfig-tam:switch": { + "config": { + "switch-id": 0, + "enterprise-id": 0 + }, + "state": { + "switch-id": 0, + "enterprise-id": 0, + "op-switch-id": 0, + "op-enterprise-id": 0 + } } } ``` ##### Setting-up TAM switch-wide attribute : switch-id -* Method : PUT -* URI : /restconf/data/openconfig-tam:tam/switch/config/switch-id +* Method : PATCH +* URI : /restconf/data/openconfig-tam:tam/switch/config/switch-id * Data format ```json { @@ -684,7 +690,7 @@ N/A ``` ##### Setting-up TAM switch-wide attribute : enterprise-id -* Method : PUT +* Method : PATCH * URI : /restconf/data/openconfig-tam:tam/switch/config/enterprise-id * Data format ```json @@ -702,7 +708,38 @@ N/A ##### Obtaining all of the collectors * Method : GET -* URI : /restconf/data/openconfig-tam:tam/collectors/state/collectors/collector +* URI : /restconf/data/openconfig-tam:tam/collectors +* Response format +```json +{ + "openconfig-tam:collectors": { + "collector": [ + { + "name": "string", + "config": { + "name": "string", + "ip": "string", + "port": 0, + "protocol": "UDP", + "encapsulation": "NONE" + }, + "state": { + "name": "string", + "ip": "string", + "port": 0, + "protocol": "UDP", + "encapsulation": "NONE" + } + } + ] + } +} +``` + +##### Obtaining a specific collector + +* Method : GET +* URI : /restconf/data/openconfig-tam:tam/collectors/collector={name} * Response format ```json { @@ -727,103 +764,111 @@ N/A ] } ``` - -##### Obtaining a specific collector - -* Method : GET -* URI : /restconf/data/openconfig-tam:tam/collectors/state/collectors/collector={name}/state -* Response format -```json -{ - "openconfig-tam:state": { - "name": "string", - "ip": "string", - "port": 0, - "protocol": "UDP", - "encapsulation": "NONE" - } -} -``` ##### Creating a collector -* Method : PUT -* URI : /restconf/data/openconfig-tam:tam/collectors/config/collectors/collector={name}/config +* Method : PATCH +* URI : /restconf/data/openconfig-tam:tam/collectors * Data format ```json { - "openconfig-tam:config": { - "name": "string", - "ip": "string", - "port": 0, - "protocol": "UDP", - "encapsulation": "NONE" - } + "openconfig-tam:collectors": { + "collector": [ + { + "name": "string", + "config": { + "name": "string", + "ip": "string", + "port": 0, + "protocol": "UDP", + "encapsulation": "NONE" + } + } + ] + } } ``` ##### Deleting a collector * Method : DELETE -* URI : /restconf/data/openconfig-tam:tam/collectors/config/collectors/collector={name} +* URI : /restconf/data/openconfig-tam:tam/collectors/collector={name} ##### Obtaining all of the Samplers * Method : GET -* URI : /restconf/data/openconfig-tam:tam/samplers/state/samplerates/samplerate +* URI : /restconf/data/openconfig-tam:tam/samplers * Response format ```json { - "openconfig-tam:samplerate": [ - { - "name": "string", - "config": { - "name": "string", - "sample-rate": 0 - }, - "state": { + "openconfig-tam:samplers": { + "sampler": [ + { "name": "string", - "sample-rate": 0 + "config": { + "name": "string", + "sampling-rate": 0 + }, + "state": { + "name": "string", + "sampling-rate": 0 + } } - } - ] + ] + } } ``` ##### Obtaining a specific sampler * Method : GET -* URI : /restconf/data/openconfig-tam:tam/samplers/state/samplerates/samplerate={name}/state +* URI : /restconf/data/openconfig-tam:tam/samplers/sampler={name} * Response format ```json { - "openconfig-tam:state": { - "name": "string", - "sample-rate": 0 - } + "openconfig-tam:sampler": [ + { + "name": "string", + "config": { + "name": "string", + "sampling-rate": 0 + }, + "state": { + "name": "string", + "sampling-rate": 0 + } + } + ] } ``` ##### Creating a Sampler -* Method : PUT -* URI : /restconf/data/openconfig-tam:tam/samplers/config/samplerates/samplerate={name}/config +* Method : PATCH +* URI : /restconf/data/openconfig-tam:tam/samplers * Data format ```json { - "openconfig-tam:config": { - "name": "string", - "sample-rate": 0 - } + "openconfig-tam:samplers": { + "sampler": [ + { + "name": "string", + "config": { + "name": "string", + "sampling-rate": 0 + } + } + ] + } } ``` ##### Deleting a Sampler * Method : DELETE -* URI : /restconf/data/openconfig-tam:tam/samplers/config/samplerates/samplerate={name} +* URI : /restconf/data/openconfig-tam:tam/samplers/sampler={name} ##### Obtaining all of the flow-groups * Method : GET -* URI : /restconf/data/openconfig-tam:tam/flowgroups/state/flowgroups +* URI : /restconf/data/openconfig-tam:tam/flowgroups * Response format ```json { @@ -835,148 +880,80 @@ N/A "name": "string", "id": 0, "priority": 0, - "interface": "string", - "l2": { - "config": { - "source-mac": "string", - "source-mac-mask": "string", - "destination-mac": "string", - "destination-mac-mask": "string", - "ethertype": "string" - }, - "state": { - "source-mac": "string", - "source-mac-mask": "string", - "destination-mac": "string", - "destination-mac-mask": "string", - "ethertype": "string" - } - }, - "ipv4": { - "config": { - "source-address": "string", - "destination-address": "string", - "dscp": 0, - "protocol": "string", - "hop-limit": 0 - }, - "state": { - "source-address": "string", - "destination-address": "string", - "dscp": 0, - "protocol": "string", - "hop-limit": 0 - } - }, - "ipv6": { - "config": { - "source-address": "string", - "source-flow-label": 0, - "destination-address": "string", - "destination-flow-label": 0, - "dscp": 0, - "protocol": "string", - "hop-limit": 0 - }, - "state": { - "source-address": "string", - "source-flow-label": 0, - "destination-address": "string", - "destination-flow-label": 0, - "dscp": 0, - "protocol": "string", - "hop-limit": 0 - } - }, - "transport": { - "config": { - "source-port": "string", - "destination-port": "string", - "tcp-flags": [ - "string" - ] - }, - "state": { - "source-port": "string", - "destination-port": "string", - "tcp-flags": [ - "string" - ] - } - } + "ip-version": "UNKNOWN" }, "state": { "name": "string", "id": 0, "priority": 0, - "interface": "string", - "l2": { - "config": { - "source-mac": "string", - "source-mac-mask": "string", - "destination-mac": "string", - "destination-mac-mask": "string", - "ethertype": "string" - }, - "state": { - "source-mac": "string", - "source-mac-mask": "string", - "destination-mac": "string", - "destination-mac-mask": "string", - "ethertype": "string" - } + "ip-version": "UNKNOWN" + }, + "l2": { + "config": { + "source-mac": "string", + "source-mac-mask": "string", + "destination-mac": "string", + "destination-mac-mask": "string", + "ethertype": "string" }, - "ipv4": { - "config": { - "source-address": "string", - "destination-address": "string", - "dscp": 0, - "protocol": "string", - "hop-limit": 0 - }, - "state": { - "source-address": "string", - "destination-address": "string", - "dscp": 0, - "protocol": "string", - "hop-limit": 0 - } + "state": { + "source-mac": "string", + "source-mac-mask": "string", + "destination-mac": "string", + "destination-mac-mask": "string", + "ethertype": "string" + } + }, + "ipv4": { + "config": { + "source-address": "string", + "destination-address": "string", + "dscp": 0, + "protocol": "string", + "hop-limit": 0 + }, + "state": { + "source-address": "string", + "destination-address": "string", + "dscp": 0, + "protocol": "string", + "hop-limit": 0 + } + }, + "ipv6": { + "config": { + "source-address": "string", + "source-flow-label": 0, + "destination-address": "string", + "destination-flow-label": 0, + "dscp": 0, + "protocol": "string", + "hop-limit": 0 }, - "ipv6": { - "config": { - "source-address": "string", - "source-flow-label": 0, - "destination-address": "string", - "destination-flow-label": 0, - "dscp": 0, - "protocol": "string", - "hop-limit": 0 - }, - "state": { - "source-address": "string", - "source-flow-label": 0, - "destination-address": "string", - "destination-flow-label": 0, - "dscp": 0, - "protocol": "string", - "hop-limit": 0 - } + "state": { + "source-address": "string", + "source-flow-label": 0, + "destination-address": "string", + "destination-flow-label": 0, + "dscp": 0, + "protocol": "string", + "hop-limit": 0 + } + }, + "transport": { + "config": { + "source-port": "string", + "destination-port": "string", + "tcp-flags": [ + "string" + ] }, - "transport": { - "config": { - "source-port": "string", - "destination-port": "string", - "tcp-flags": [ - "string" - ] - }, - "state": { - "source-port": "string", - "destination-port": "string", - "tcp-flags": [ - "string" - ] - } + "state": { + "source-port": "string", + "destination-port": "string", + "tcp-flags": [ + "string" + ] } } } @@ -984,147 +961,70 @@ N/A } } ``` - -##### Obtaining a specific flow-group - -* Method : GET -* URI : /restconf/data/openconfig-tam:tam/flowgroups/state/flowgroups/flowgroup={name}/state -* Response format -```json -{ - "openconfig-tam:state": { - "name": "string", - "id": 0, - "priority": 0, - "interface": "string", - "l2": { - "config": { - "source-mac": "string", - "source-mac-mask": "string", - "destination-mac": "string", - "destination-mac-mask": "string", - "ethertype": "string" - }, - "state": { - "source-mac": "string", - "source-mac-mask": "string", - "destination-mac": "string", - "destination-mac-mask": "string", - "ethertype": "string" - } - }, - "ipv4": { - "config": { - "source-address": "string", - "destination-address": "string", - "dscp": 0, - "protocol": "string", - "hop-limit": 0 - }, - "state": { - "source-address": "string", - "destination-address": "string", - "dscp": 0, - "protocol": "string", - "hop-limit": 0 - } - }, - "ipv6": { - "config": { - "source-address": "string", - "source-flow-label": 0, - "destination-address": "string", - "destination-flow-label": 0, - "dscp": 0, - "protocol": "string", - "hop-limit": 0 - }, - "state": { - "source-address": "string", - "source-flow-label": 0, - "destination-address": "string", - "destination-flow-label": 0, - "dscp": 0, - "protocol": "string", - "hop-limit": 0 - } - }, - "transport": { - "config": { - "source-port": "string", - "destination-port": "string", - "tcp-flags": [ - "string" - ] - }, - "state": { - "source-port": "string", - "destination-port": "string", - "tcp-flags": [ - "string" - ] - } - } - } -} -``` ##### Creating a flow-group -* Method : PUT -* URI : /restconf/data/openconfig-tam:tam/flowgroups/config/flowgroups/flowgroup={name}/config +* Method : PATCH +* URI : /restconf/data/openconfig-tam:tam/flowgroups * Data format ```json { - "openconfig-tam:config": { - "name": "string", - "id": 0, - "priority": 0, - "interface": "string", - "l2": { - "config": { - "source-mac": "string", - "source-mac-mask": "string", - "destination-mac": "string", - "destination-mac-mask": "string", - "ethertype": "string" - } - }, - "ipv4": { - "config": { - "source-address": "string", - "destination-address": "string", - "dscp": 0, - "protocol": "string", - "hop-limit": 0 - } - }, - "ipv6": { - "config": { - "source-address": "string", - "source-flow-label": 0, - "destination-address": "string", - "destination-flow-label": 0, - "dscp": 0, - "protocol": "string", - "hop-limit": 0 - } - }, - "transport": { - "config": { - "source-port": "string", - "destination-port": "string", - "tcp-flags": [ - "string" - ] + "openconfig-tam:flowgroups": { + "flowgroup": [ + { + "name": "string", + "config": { + "name": "string", + "id": 0, + "priority": 0, + "ip-version": "UNKNOWN" + }, + "l2": { + "config": { + "source-mac": "string", + "source-mac-mask": "string", + "destination-mac": "string", + "destination-mac-mask": "string", + "ethertype": "string" + } + }, + "ipv4": { + "config": { + "source-address": "string", + "destination-address": "string", + "dscp": 0, + "protocol": "string", + "hop-limit": 0 + } + }, + "ipv6": { + "config": { + "source-address": "string", + "source-flow-label": 0, + "destination-address": "string", + "destination-flow-label": 0, + "dscp": 0, + "protocol": "string", + "hop-limit": 0 + } + }, + "transport": { + "config": { + "source-port": "string", + "destination-port": "string", + "tcp-flags": [ + "string" + ] + } + } } - } + ] } } ``` ##### Deleting a flow-group * Method : DELETE -* URI : /restconf/data/openconfig-tam:tam/flowgroups/config/flowgroups/flowgroup={name} +* URI : /restconf/data/openconfig-tam:tam/flowgroups/flowgroup={name} # 4 Flow Diagrams @@ -1154,4 +1054,17 @@ N/A ## CLI -TBD +The CLI testcases are included as part of individual feature testcases. + +# Broadcom Internal Information : To be removed before publishing externally. + +## Revision History + +* This document has been derived from the earlier (Arlo+/Buzznik) TAM feature HLDs. The common TAM functionality has been brought into a single place in this HLD. + +## Key notes + +* The INSUFFICIENT_RESOURCES status for a TAM feature is introduced primarily to cover the need where firmware based telemetry features can't be activated because there are no free embedded-cores. This status remains unused in Buzznik+ timeframe since the number of cores on any slicion are equal/greater than the applications, but will need to be addressed in subsequent releases. + +## Specific Limitations + diff --git a/devops/tam/tam-inband-flow-analyser.md b/devops/tam/tam-inband-flow-analyser.md index 6c8e5ce7ff01..f290add50645 100644 --- a/devops/tam/tam-inband-flow-analyser.md +++ b/devops/tam/tam-inband-flow-analyser.md @@ -2,7 +2,7 @@ ## Highlevel Design Document -### Rev 0.1 +### Rev 0.3 # Table of Contents @@ -78,7 +78,9 @@ | Rev | Date | Author | Change Description | |---|-----------|------------------|-----------------------------------| -| 0.1 | 07/01/2020 | Bandaru Viswanath | New draft for SONiC IFA feature | +| 0.1 | 06/14/2019 | Naveen Kumar Aketi | Initial version | +| 0.2 | 10/16/2019 | Naveen Kumar Aketi | Version 0.2 as per new design | +| 0.3 | 08/18/2020 | Bandaru Viswanath | Major update to accomodate enhancements to use new TAM infrastructure, DB schmas, UI and IFA 2.0 support | ## About This Manual @@ -104,7 +106,7 @@ This document describes the high level design of Inband Flow Analyzer feature in # 1 Feature Overview -Inband Flow Analyzer (IFA) records flow specific information from switches across a network for specific flows. It is described at the IETF draft [https://datatracker.ietf.org/doc/draft-kumar-ippm-ifa](https://datatracker.ietf.org/doc/draft-kumar-ippm-ifa). The protocol defines an IFA header to mark the flow and direct the collection of analyzed metadata per marked packet per hop across the network. Some of the text in the document is taken from the above IETF draft, for contextual purposes. +Inband Flow Analyzer (IFA) records flow specific information from switches across a network for specific flows. It is described at the [IETF draft](https://datatracker.ietf.org/doc/draft-kumar-ippm-ifa). The protocol defines an IFA header to mark the flow and direct the collection of analyzed metadata per marked packet per hop across the network. Some of the text in the document is taken from the above IETF draft, for contextual purposes. IFA performs flow analysis, and possible actions on the flow data, inband. Once a flow is enabled for analysis, an Ingress node makes a copy of the flow or samples the live traffic flow, or tags a live traffic flow for analysis and data collection. Copying of a flow is done by sampling or cloning the flow. These new packets are representative packets of the original flow and possess the exact same characteristics as the original flow. This means that IFA packets traverse the same path in the network and same queues in the networking element as the original packet would. @@ -173,7 +175,7 @@ A container called 'tam' exists as a container for all TAM applications, includi ### 1.2.3 SAI Overview -The SAI TAM spec specifies the TAM APIs to be used to configure the TAM functionality. Please refer to SAI-Proposal-TAM2.0-v2.0.docx in [https://github.com/opencomputeproject/SAI/tree/master/doc/TAM](https://github.com/opencomputeproject/SAI/tree/master/doc/TAM) for more details. +The SAI TAM spec specifies the TAM APIs to be used to configure the TAM functionality. Please refer to [SAI-Proposal-TAM2.0-v2.0.docx](https://github.com/opencomputeproject/SAI/tree/master/doc/TAM) for more details. # 2 Functionality @@ -226,7 +228,7 @@ The above diagram illustrates the architecture of the IFA feature within SONiC. Below is the call flow sequence specified in above architecture diagram -1 IFA and ACL configuration from CLI is saved to CONFIG DB. +1 IFA and ACL configuration from UI is saved to CONFIG DB. 2 IFA Manager reads IFA configuration from CONFIG DB, processes and validates the same. @@ -260,7 +262,7 @@ TAM\_IFA\_SESSIONS\_TABLE flowgroup = 1*255VCHAR ; Flow group reference collector = 1*255VCHAR ; Collector Reference sample-rate = 1*255VCHAR ; Sampler reference - node-type = ”INGRESS"/”EGRESS”/”INTERMEDIATE” + node-type = "INGRESS"/"EGRESS"/"INTERMEDIATE" ; IFA Node type, INTERMEDIATE is the default Example: @@ -277,7 +279,28 @@ TAM\_IFA\_SESSIONS\_TABLE 7) "node-type" 8) "ingress" -### 3.2.2 APP DB +### 3.2.2 APPL DB + +TAM\_IFA\_TABLE + +This table holds the current operational attributes for the IFA feature. + + ;Operational IFA Global Status in APPL_DB + + key = global ; Only one instance and + ; has a fixed key ”global" + op-switch-id = 1 * 5DIGIT ; Currently used switch-id + op-enterprise-id = 1 * 5DIGIT ; Currently used enterprise-id + + Example: + > keys *TAM_IFA_TABLE* + 1) "TAM_IFA_TABLE|global" + + > HGETALL "TAM_IFA_TABLE|global" + 1)”op-switch-id” + 2)54325 + 3)”op-enterprise-id" + 4)22334 TAM\_IFA\_FLOW\_TABLE @@ -371,6 +394,8 @@ A new orchestration agent class, IFAOrch is added to convert the incoming IFA co IFAOrch maintains data pertaining to all the currently configured IFA entities and the associated TAM object bindings. TAM object bindings are re-used wherever possible. +IFAOrch checks for support for the IFA feature in the silicon using SAI capability API and sets the field `tam_int_ifa_supported` to `True` in the `SWITCH_TABLE` of APPL_DB under the key `switch`. + ### 3.4.2 Other Process N/A @@ -381,7 +406,7 @@ N/A ## 3.6 SAI -The SAI TAM API spec defines all TAM APIs supported in SAI. Please refer to SAI-Proposal-TAM2.0-v2.0.docx in [https://github.com/opencomputeproject/SAI/tree/master/doc/TAM](https://github.com/opencomputeproject/SAI/tree/master/doc/TAM) for more details. +The SAI TAM API spec defines all TAM APIs supported in SAI. Please refer to SAI-Proposal-TAM2.0-v2.0.docx at [TAM](https://github.com/opencomputeproject/SAI/tree/master/doc/TAM) for more details. ***Below diagram provides details about various TAM objects needed to support IFA and their correlation*** @@ -391,7 +416,7 @@ The SAI TAM API spec defines all TAM APIs supported in SAI. Please refer to SAI- ### 3.7.1 Data Models -The user facing data model is based on OpenConfig TAM yang model (TBD). The backend data model (SONiC YANG) will use the formats in CONFIG_DB & STATE_DB. See above sections. +The user facing data model is based on OpenConfig compatible TAM yang model. The backend data model (SONiC YANG) will use the formats in CONFIG_DB & STATE_DB. See above sections. ### 3.7.2 Configuration Commands @@ -497,6 +522,8 @@ This section provides a sample IFA workflow using CLI, for monitoring the traffi > Need to monitor all flows to the webserver running at 20.20.1.1. A IFA collector for analysing the metadata is running at 20.20.20.4:9090 (UDP). Not every packet needs monitored, but one in 1000 is acceptable. The flows are ingressing onto switch1 on port 'Ethernet44' +Note that there would be other system wide configuration that is not covered in the sample workflow below, but would be required for the packet forwarding/routing. + #### Ingress Node configuration ``` @@ -580,7 +607,7 @@ The following REST API are supported - ##### Obtaining the all of the sessions * Method : GET -* URI : /restconf/data/openconfig-tam:tam/ifa/state/ifa-sessions +* URI : /restconf/data/openconfig-tam:tam/ifa-sessions * Response format ```json { @@ -592,15 +619,15 @@ The following REST API are supported - "name": "string", "flowgroup": "string", "collector": "string", - "samplerate": "string", - "node-type": "INGRESS_NODE" + "sample-rate": "string", + "node-type": "INGRESS" }, "state": { "name": "string", "flowgroup": "string", "collector": "string", - "samplerate": "string", - "node-type": "INGRESS_NODE" + "sample-rate": "string", + "node-type": "INGRESS" } } ] @@ -611,33 +638,52 @@ The following REST API are supported - ##### Obtaining a specific session * Method : GET -* URI : /restconf/data/openconfig-tam:tam/ifa/state/ifa-sessions/ifa-session={name}/state +* URI : /restconf/data/openconfig-tam:tam/ifa-sessions/ifa-session={name} * Response format ```json { - "openconfig-tam:state": { - "name": "string", - "flowgroup": "string", - "collector": "string", - "samplerate": "string", - "node-type": "INGRESS_NODE" - } + "openconfig-tam:ifa-session": [ + { + "name": "string", + "config": { + "name": "string", + "flowgroup": "string", + "collector": "string", + "sample-rate": "string", + "node-type": "INGRESS" + }, + "state": { + "name": "string", + "flowgroup": "string", + "collector": "string", + "sample-rate": "string", + "node-type": "INGRESS" + } + } + ] } ``` ##### Creating a session -* Method : PUT -* URI : /restconf/data/openconfig-tam:tam/ifa/config/ifa-sessions/ifa-session={name}/config +* Method : PATCH +* URI : /restconf/data/openconfig-tam:tam/ifa-sessions * Data format ```json { - "openconfig-tam:config": { - "name": "string", - "flowgroup": "string", - "collector": "string", - "samplerate": "string", - "node-type": "INGRESS_NODE" + "openconfig-tam:ifa-sessions": { + "ifa-session": [ + { + "name": "string", + "config": { + "name": "string", + "flowgroup": "string", + "collector": "string", + "sample-rate": "string", + "node-type": "INGRESS" + } + } + ] } } ``` @@ -645,11 +691,7 @@ The following REST API are supported - ##### Deleting a session * Method : DELETE -* URI : /restconf/data/openconfig-tam:tam/ifa/config/ifa-sessions/ifa-session={name} - -#### BroadView REST API for IFA feature - - TBD : Provide reference and listlimitations - +* URI : /restconf/data/openconfig-tam:tam/ifa-sessions/ifa-session={name} # 4 Flow Diagrams @@ -659,9 +701,13 @@ All the configuration is stored in the CONFIG_DB via the management framework. # 5 Error Handling +## IFA/TAM Application + +- Any configuration errors/dependency failures are logged into Syslog and are ignored. + ## CLI -* CLI configuration sanity will be enforced by the CLI handler & CVL and any invalid configuration is rejected. An error is displayed to the user notifying the reason for rejection of the configuration. +- CLI configuration sanity will be enforced by the CLI handler & CVL and any invalid configuration is rejected. An error is displayed to the user notifying the reason for rejection of the configuration. ## IFAOrch @@ -691,13 +737,17 @@ TBD ## Key notes -* IFA 2.0 protocol is not documented in this specification. It may be requested via docSafe for the document number 56870-AN500-D1. +* With the addition of IFA 2.0 support, IFA 1.1 support is removed in Broadcom-SONIC. + +* IFA 2.0 protocol is not documented in this document. It may be requested via docSafe for the document number 56870-AN500-D1. * IFA 2.0 feature is very similar to the IFA 1.1 feature supported in 2.x and 3.0 release of Broadcom SONiC. They are almost identical from a provisioning perspetive. However, the protocol is very different. * IFA 2.0 feature is an *advanced* feature that is not available in all the Broadcom SONiC packages. -## Specific Limitations +* IFA 2.0 feature requires premium Cancun (for TD3-X7) and the firmware, both of which are packaged into the SONIC packages. + +## Specific limitations IFA 2.0 feature in SONiC inherits the limitations of the underlying firmware and the hardware. These are listed below. @@ -706,4 +756,7 @@ IFA 2.0 feature in SONiC inherits the limitations of the underlying firmware and 3. IFA enabled flows must be L3 & IPv4 flows 4. IFA is supported on TD3-X7 platforms only. 5. The flow path may not exceed 32 nodes -6. The sampled packet has about 128bytes of the original packet, and will be sent to the collector along with the aggregated metadata from individual nodes in the flow path. + +## Additional constraints + +1. The sampled packet contains about 128bytes of the original packet, and will be sent to the collector along with the aggregated metadata from individual nodes in the flow path. diff --git a/devops/tam/tam-tail-stamping-hld.md b/devops/tam/tam-tail-stamping-hld.md index d2388e87dbcc..208e81ceae81 100644 --- a/devops/tam/tam-tail-stamping-hld.md +++ b/devops/tam/tam-tail-stamping-hld.md @@ -2,7 +2,7 @@ ## Highlevel Design Document -### Rev 0.1 +### Rev 0.2 # Table of Contents @@ -75,7 +75,8 @@ | Rev | Date | Author | Change Description | |---|-----------|------------------|-----------------------------------| -| 0.1 | 07/01/2020 | Bandaru Viswanath | New draft for SONiC Tailstamping feature | +| 0.1 | 10/29/2019 | Naveen Kumar Aketi | Initial version | +| 0.2 | 08/18/2020 | Bandaru Viswanath | Major update to accomodate enhancements to use new TAM infrastructure, DB schmas and UI | ## About This Manual @@ -256,21 +257,38 @@ TAM\_TAILSTAMPING\_SESSIONS\_TABLE 1) "flowgroup" 2) "slaflows" -### 3.2.2 APP DB +### 3.2.2 APPL DB -TAM\_TAILSTAMPING\_TABLE +TAM\_TS\_TABLE - ;Defines TS flow configuration +;Operational TS Global Status in APPL_DB + + key = global ; Only one instance and + ; has a fixed key ”global" + op-switch-id = 1 * 5DIGIT ; Currently used switch-id + + Example: + > keys *TAM_TS_TABLE* + 1) "TAM_TS_TABLE|global" + + > HGETALL "TAM_TS_TABLE|global" + 1)”op-switch-id” + 2)54325 + + +TAM\_TS\_FLOW\_TABLE + + ;Contains TS flow configuration key = name ; name is flow name and should be unique. acl-table-name = table-name ; Parameter to map to acl table to the flow. acl-rule-name = rule-name ; Parameter to map to acl rule to the flow. Example: - > KEYS *TAM__TAILSTAMPING_TABLE* - 1) "TAM__TAILSTAMPING_TABLE:F1" + > KEYS *TAM\_TS\_FLOW_TABLE* + 1) "TAM_TS_FLOW_TABLE:F1" - > HGETALL TAM__TAILSTAMPING_TABLE:F1 + > HGETALL TAM_TS_FLOW_TABLE:F1 1) "acl-table-name" 2) "T1" 3) "acl-rule-name" @@ -290,7 +308,7 @@ N/A ## 3.3 Daemons -TS manager daemon runs as part of TAM docker. TS manager processes TS configuration from CONFIG DB, validates for consistency and completeness of TS configuration and updates valid S configuration to APPL DB. +TS manager daemon runs as part of TAM docker. TS manager processes TS configuration from CONFIG DB, validates for consistency and completeness of TS configuration and updates valid configuration to APPL DB. ## 3.4 Switch State Service Design @@ -300,6 +318,8 @@ A new orchestration agent class, TSOrch is added to convert the incoming config TSOrch maintains data pertaining to all the currently configured TS entities and the associated TAM object bindings. TAM object bindings are re-used wherever possible. +TSOrch checks for support for the Tailstamping feature in the silicon using SAI capability API and sets the field `tam_int_ifa_ts_supported` to `True` in the `SWITCH_TABLE` of APPL_DB under the key `switch`. + ### 3.4.2 Other Process N/A @@ -323,7 +343,7 @@ Tailstamping feature is accomplished by attaching a SAI TAM INT object to SAI AC ### 3.7.1 Data Models -The user facing data model is based on OpenConfig TAM yang model (TBD). The backend data model (SONiC YANG) will use the formats in CONFIG_DB & STATE_DB. See above sections. +The user facing data model is based on OpenConfig TAM yang model (TBD). The backend data model (SONiC YANG) will use the formats in CONFIG_DB & APPL_DB. See above sections. ### 3.7.2 Configuration Commands @@ -419,6 +439,8 @@ This section provides a sample Tailstamping workflow using CLI, for monitoring t > Gather flow metadata for network probe packets sent from 10.10.1.1:8080 to 20.4.5.2:7070 (tcp) +Note that there would be other system wide configuration that is not covered in the sample workflow below, but would be required for the packet forwarding/routing. + ``` ; setup switch-wide configuration @@ -451,7 +473,7 @@ The following REST API are supported - ##### Obtaining the all of the sessions * Method : GET -* URI : /restconf/data/openconfig-tam:tam/tailstamping/state/tailstamping-sessions +* URI : /restconf/data/openconfig-tam:tam/tailstamping-sessions * Response format ```json { @@ -476,27 +498,43 @@ The following REST API are supported - ##### Obtaining a specific session * Method : GET -* URI : /restconf/data/openconfig-tam:tam/tailstamping/state/tailstamping-sessions/tailstamping-session={name}/state +* URI : /restconf/data/openconfig-tam:tam/tailstamping-sessions/tailstamping-session={name} * Response format ```json { - "openconfig-tam:state": { - "name": "string", - "flowgroup": "string" - } + "openconfig-tam:tailstamping-session": [ + { + "name": "string", + "config": { + "name": "string", + "flowgroup": "string" + }, + "state": { + "name": "string", + "flowgroup": "string" + } + } + ] } ``` ##### Creating a session -* Method : PUT -* URI : /restconf/data/openconfig-tam:tam/tailstamping/config/tailstamping-sessions/tailstamping-session={name}/config +* Method : PATCH +* URI : /restconf/data/openconfig-tam:tam/tailstamping-sessions * Data format ```json { - "openconfig-tam:config": { - "name": "string", - "flowgroup": "string" + "openconfig-tam:tailstamping-sessions": { + "tailstamping-session": [ + { + "name": "string", + "config": { + "name": "string", + "flowgroup": "string" + } + } + ] } } @@ -505,10 +543,7 @@ The following REST API are supported - ##### Deleting a session * Method : DELETE -* URI : /restconf/data/openconfig-tam:tam/tailstamping/config/tailstamping-sessions/tailstamping-session={name} - -#### BroadView REST API for Tailstamping feature - - TBD : Provide reference and listlimitations +* URI : /restconf/data/openconfig-tam:tam/tailstamping-sessions/tailstamping-session={name} # 4 Flow Diagrams @@ -518,6 +553,10 @@ All the configuration is stored in the CONFIG_DB via the management framework. # 5 Error Handling +## Tailstamping/TAM Application + +- Any configuration errors/dependency failures are logged into Syslog and are ignored. + ## CLI * CLI configuration sanity will be enforced by the CLI handler & CVL and any invalid configuration is rejected. An error is displayed to the user notifying the reason for rejection of the configuration. @@ -544,8 +583,61 @@ N/A ## CLI +* Verify CLI command to configure TAM INT IFA IFA-TS feature enable. +* Verify CLI command to configure TAM INT IFA IFA-TS feature disable. +* Verify ACL configuration with packet action type as int_insert for IPv4 type ACL. +* Verify ACL configuration with packet action type as int_insert for IPv6 type ACL. +* Verify CLI command to configure IFA-TS flow with ACL table name and ACL rule name. +* Verify CLI clear command to clear TAM INT IFA IFA-TS flow. +* Verify CLI show command to show TAM INT IFA IFA-TS status. +* Verify CLI show command to show TAM INT IFA IFA-TS statistics for all flows. +* Verify CLI show command to show TAM INT IFA IFA-TS statistics for a specific flows. +* Verify CLI show command to show TAM INT IFA IFA-TS flow. + +## REST + TBD +## Tailstamping Application + +* Verify if IFA-TS configuration from CONFIG DB is received by IFA-TS manager. +* Verify if TSOrch is able to create IFA-TS table entries in APPL DB successfully. +* Verify if TSOrch is able to delete IFA-TS table entries in APPL DB successfully. + +## TSOrch + +* Verify if IFA-TS configuration from APPL DB is received by TSOrch. +* Verify if TSOrch is able to create TAM objects for IFA-TS configuration via SAI TAM APIs successfully. +* Verify if TSOrch is able to delete existing IFA-TS configuration via SAI TAM APIs successfully. +* Verify if TSOrch is able to use existing TAM objects for IFA-TS config. +* Verify if TSOrch rolls back config in a clean way if there is a SAI API failure. +* Verify if TSOrch is able to set TAM INT attribute for IFA-TS ACL. +* Verify if TSOrch is able to reset TAM INT attribute for IFA-TS ACL. + +## Functional Tests + +* Verify if IPv4 traffic matching IFA-TS flow is time stamped. +* Verify if IPv6 traffic matching IFA-TS flow is time stamped. +* Verify if IFA-TS headers are inserted in correct order. +* Verify that there is no crash encountered at any of the layers with an invalid IFA-TS configuration. +* Verify that an invalid configuration is rejected gracefully at appropriate layers. +* Verify that IFA-TS configuration is restored after warmboot. +* Verify that switched traffic matching IFA-TS flow is time stamped. +* Verify that routing traffic matching IFA-TS flow is time stamped. + +## Negative Tests + +* Verify if CLI throws error when a user tries to create a duplicate IFA-TS flow. +* Verify if CLI returns error if CLI is unable to write the IFA-TS config to config DB. +* Verify if CLI returns entry not found when a clear command is issued on non-existent flow. +* Verify if IFA-TS manager logs an error on receipt of an incorrect IFA-TS table entries from CONFIG DB. +* Verify if TSOrch logs an error on receipt of an incorrect IFA-TS table entries from APPL DB. +* Verify if TSOrch logs an error if it is unable to read IFA-TS table data from APPL DB. +* Verify if TSOrch logs all errors encountered during processing of the incoming IFA-TS config request. +* Verify if TSOrch logs any errors arising out of SAI API failure. +* Verify if TSOrch logs an error when no further IFA-TS configuration can be configured to hardware. +* Verify if feature not supported is returned when IFA-TS feature is not supported by underlying silicon. + # Broadcom Internal Information : To be removed before publishing externally. ## Key notes @@ -568,4 +660,4 @@ Tailstamping feature inherits the usage constraints from the underlying hardwar 4. Header length fields or checksum fields(e.g UDP checksum) will not be updated upon insertion of the timestamp. 5. IEEE 802.3 frames(e.g SNAP LLC) are not supported. 6. No switches across the timestamping path should do pad stripping or otherwise adjust frame content based on the IP header payload/total length fields for Ethernet II frames. -7. Platforms using the HiGig2 extension header cannot coexist with packet timestamping. +7. Packets/Features using the HiGig2 extension header cannot coexist with packet timestamping. From abf01803d7302eef142d4532606689c4e191a420 Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Sun, 18 Oct 2020 00:32:48 +0530 Subject: [PATCH 26/27] Update tam-inband-flow-analyser.md --- devops/tam/tam-inband-flow-analyser.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devops/tam/tam-inband-flow-analyser.md b/devops/tam/tam-inband-flow-analyser.md index f290add50645..3f948ce22d76 100644 --- a/devops/tam/tam-inband-flow-analyser.md +++ b/devops/tam/tam-inband-flow-analyser.md @@ -579,7 +579,7 @@ sonic (config-tam)# enterprise-id 4434 ; setup the collector -collector ifacol1 type ipv4 ip 20.20.20.4 port 9090 protocol UDP +sonic (config-tam)# collector ifacol1 type ipv4 ip 20.20.20.4 port 9090 protocol UDP ; create the flowgroup From 5050d2567d1ca26ab00f4a85c5ee74484a8c3e92 Mon Sep 17 00:00:00 2001 From: Bandaru Viswanath Date: Sun, 18 Oct 2020 00:33:29 +0530 Subject: [PATCH 27/27] Update tam-inband-flow-analyser.md --- devops/tam/tam-inband-flow-analyser.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/devops/tam/tam-inband-flow-analyser.md b/devops/tam/tam-inband-flow-analyser.md index 3f948ce22d76..d4e328b96f45 100644 --- a/devops/tam/tam-inband-flow-analyser.md +++ b/devops/tam/tam-inband-flow-analyser.md @@ -540,7 +540,7 @@ sonic (config-tam)# sampler websamp rate 1000 sonic (config-tam)# flow-group websrvflows dst-ip 20.20.1.1 dst-l4-port 80 protocol 6 -# associate the ingress interface to the flowgroup +; associate the ingress interface to the flowgroup sonic (config) # interface Ethernet 44 sonic (config-if-Ethernet44)# flow-group websrvflows