This document captures the new features added and enhancements done on existing features/sub-features for the SONiC 201911 release.
- Branch and Image Location
- Dependency Version
- Security Updates
- Feature List
- Security Updates
- SAI APIs
Branch : https://github.com/Azure/sonic-buildimage/tree/201911 Image : https://sonic-jenkins.westus2.cloudapp.azure.com/ (Example - Image for Broadcom based platforms is at https://sonic-jenkins.westus2.cloudapp.azure.com/job/broadcom/job/buildimage-brcm-201911/lastSuccessfulBuild/artifact/target/)
Feature | Version |
---|---|
Linux kernel version | linux_4.9.168-1+deb9u5 |
SAI version | SAI v1.5.1 |
FRR | 7.2 |
LLDPD | 0.9.6-1 |
TeamD | 1.28-1 |
SNMPD | 5.7.3+dfsg-1.5 |
Python | 3.6.0-1 |
syncd | 1.0.0 |
swss | 1.0.0 |
radvd | 2.17-2~bpo9+1 |
isc-dhcp | 4.3.5-2 (PR2946 ) |
sonic-telemetry | 0.1 |
redis-server/ redis-tools | 5.0.3-3~bpo9+2 |
- Kernal upgraded from 4.9.110-3deb9u6 (SONiC Release 201904) to 4.9.168-1+deb9u5 in this SONiC release. Change log: https://tracker.debian.org/media/packages/l/linux/changelog-4.9.168-1deb9u5
- Docker upgraded from 18.09.2
3-0debian-stretch to 18.09.83-0debian-stretch. Change log: https://docs.docker.com/engine/release-notes/#18098
Feature | Pull Request |
---|---|
Bidirectional Forwarding Detection - In this implementation, the BFD state machines and session termination happens on the Host CPU, specifically in FRR. In cu/rrent FRR BFD implementation, for packet Tx BFD packet is constructed every time a packet has to be sent, this is an overhead considering BFD needs to send packet every few milliseconds. A better approach is to store the BFD packet in memory for each session and keep replaying the packet as per the BFD transmission interval. Please see the HLD document for more details. |
3385 |
Build Improvements - The DPKG caching framework provides the infrastructure to save the module-specific deb file to be cached by tracking the module's dependency files.If the module's dependency files are not changed, it restores the module deb files from the cache storage. Please check the given PR's for more details. |
3292 |
Build system improvements - This document describes few options to improve SONiC build time. To split the work we will consider that SONiC has two stages: 1. debian/python packages compilation <- relatively fast 2. docker images build <- slower espessially when several users are building in parallel. Please see the HLD document for more details. |
911 ,280 , 461 , 3048 , 3049 |
Configurable drop counters - This feature is to provides better packet drop visibility in SONiC by providing a mechanism to count and classify packet drops that occur due to different reasons.This is done by adding support for SAI debug counters to SONiC. Supported counters are PORT_INGRESS_DROPS , PORT_EGRESS_DROPS, SWITCH_INGRESS_DROP & SWITCH_EGRESS_DROPS. A CLI tool will be provided for users to manage and configure their own drop counters. Please see the HLD document for more details. |
308 , 520 , 1075 , 1093 , 688 |
Core File Manager - The tech-support data is a piece of vital information for debugging. In this release we have added a new service called 'export service' which captures the tech-support data and export it to a remote server for better offline debugging. The export service is configured to monitors the coredump path for any new core file creation. Upon detection of a new core file, it triggers the tech-support data collection and export it to a remote server. In addition, export service can be configured to capture and upload the tech-support data periodically. Please check the given PR's for more details. |
3447 , 643 , 3499 , 663 |
Debug Framework In an effort to enhance debug ability, A new debug framework is added with the following functionality:. It provides a framework that allows components to register and dump running snapshots of component internals using dump routines. It handles assert conditions to collect more info. It implements dump routines in OrchAgent using debug framework. Additionally, it has Enhanced existing show tech-support utility and added additional scripts to enforce policies on debug related files. Please see the HLD document for more details. |
300 , 618 |
Dynamic Break Out | |
Egress mirroring support and ACL action capability check - Added support for egress mirror action. To query ACL action list supported by ASIC per stage and put this information in STATE DB SWITCH_CAPABILITY table and to perform secondary query for ACL action attributes which parameters are enum values (e.g. for PACKET_ACTION - DROP,FORWARD). Please see the HLD document for more details. | 963 , 1019 , 575 , 481 |
HW resource monitor - This document describes the high level design of verification the hardware resources consumed by a device. The hardware resources which are currently verified are CPU, RAM and HDD. This implementation will be integrated in test cases written on Pytest framework. Please see the HLD document for more details. | 1121 |
Layer 2 Forwarding Enhancements Some of the changes in the release are : Added support for per port, per vlan and per port-vlan fdb flush. Added new data structure in portsorch for mapping between OID and vlan/port/bridge port. Moved SAI Redis fdb handling to fdborch to have both the fdborch and sai redis reference count in sync.Added support for static fdb config and fdb aging time config. For more details please refer HLD Document and the listed PR's. | 885 , 510 , 303 , 529 |
L3 performance and scaling enhancements - When sending a lot of ARP/ND requests in a burst, ARP entries are getting purged from the kernel while the later set of ARP entries was still getting added. The sequence of add/remove is in such a way that we were never able to cross ~2400 entries. Currently the max rate for ARP/ND is 600 packets, we will be increasing it to higher number(8000) in CoPP file to improve the learning time. For more details please refer HLD Document and the listed PR's. | 1048 |
Log analyzer to pytest - Please find the Loganalyzer API usage example in the listed PR. | 1048 |
Management Framework - Management framework is a SONiC application which is responsible for providing various common North Bound Interfaces (NBIs) for the purposes of managing configuration and status on SONiC switches. The application manages coordination of NBI’s to provide a coherent way to validate, apply and show configuration. Please find more details in HLD Document | 18 , 23 , 3488 , 659 |
Management VRF - Management VRF (mvrf) feature provides a separation between the management network traffic and the data plane network traffic using the linux CGROUPS based on l3mdev. Management interface (eth0) shall be enslaved in l3mdev. Management applications like SSH shall use the enslaved eth0 and corresponding mvrf routing table for management traffic. | 2585 , 2608 , 3204 , 463 , 472 , 627 , 3586 |
McLAG - In MC-LAG scenario, two peer devices form one end point of a LAG, these two devices must have the same MAC address since it’s used for LACP. During warm-reboot, this MAC must not be changed. supported mac update on fdborch and added support to change rif mac address. Please find more details in HLD Document | 2154 , 1003 , 877 , 814 , 811 , 810 , 809 , 275 , 453 |
Multi-DB optimization - Creating multiple database instances help us to separate the databases based on their operation frequency or their role in the whole SONiC system, for example, like state database and loglevel database are not key features, we can avoid them affecting read and write APPL_DB or ASIC_DB via multiple database instances. Please find more details in HLD Document | 52 |
NAT - Network Address Translation (NAT) router enables private IP networks to communicate to the public networks (internet) by translating the private IP address to globally unique IP address. It also provides security by hiding the identity of the host in private network. This feature supports Source NAT, Destination NAT ,Static NAT/NAPT, Dynamic NAT/NAPT, NAT zones, Twice NAT/NAPT nd support of VRF. For more details of NAT please check HLD Document | 3494 , 1059 , 645 , 100 , 304 , 519 |
Platform Development Environment The PDE does not target any type of feature deployment within SONiC. The primary use case is to enable an ODM or customer to quickly add new platform support and run a test suite to ensure that it is compatible with the full SONiC application. Please find design details in HLD Document | 3408 , 27 |
Platform Driver Development Framework | 3387 , 62 , 624 |
Platform test - This test plan is to check the functionalities of platform related software components. These software components are for managing platform hardware, including FANs, thermal sensors, SFP, transceivers, pmon, etc.The software components for managing platform hardware on Mellanox platform is the hw-management package. Platform testplan | 915 , 980 , 1079 |
sFlow - The CLI is enhanced to provide configuring and display of sFlow parameters including sflow collectors, agent IP, sampling rate for interfaces. The CLI configurations currently only interact with the CONFIG_DB. The newly introduced sflow container consists of an instantiation of the InMon's hsflowd daemon. Please find comple details of feature and implementation phase in HLD Document | 94 , 299 , 498 , 1012 , 1011 , 3251 , 592 |
SSD diagnostic tolling - Add to SONiC an ability to check storage health state. Basic functionality will be implemented as a CLI command. Optionally pmon daemon could be added for constant disk state monitoring. Please find more details in HLD Document | 587 , 47 , 3218 |
STP/PVST - PVST+ support allows the device to interoperate with IEEE STP and also tunnel the PVST+ BPDUs transparently across IEEE STP region to potentially connect other PVST+ switches across the IEEE STP region. For interop with IEEE STP, PVST+ will send untagged IEEE BPDUs (MAC - 01:80:C2:00:00:00) with information corresponding to VLAN 1. The STP port must be a member of VLAN 1 for interoperating with IEEE STP. More details can be seen in HLD Document | 19 , 305 , 1058 , 648 , 3463 |
Sub-port support - A sub port interface is a logical interface that can be created on a physical port or a port channel.A sub port interface serves as an interface to either a .1D bridge or a VRF, but not both. This design focuses on the use case of creating a sub port interface on a physical port or a port channel and using it as a router interface to a VRF. Please find more details in HLD Document | 998 , 284 , 969 , 871 , 3412 , 3422 , 3413 , 638 , 642 , 651 |
Threshold(BST) - The threshold feature allows configuration of a threshold on supported buffers in ingress and egress. A threshold breach notification (entry update in COUNTERS_DB) is generated on breach of the configured buffer threshold in ASIC. Please find more detaila in HLD Document | 3501 , 12 , 1067 , 665 , 310 |
VRF - Sonic supports multiple loopback interfaces. Each loopback interfaces can belong to different VRF instances. In this feature we also support BGP and VRF support for FRR config template. Please find more details in HLD Document | 3044 , 3047 , 943 , 1065 |
ZTP - Zero Touch Provisioning (ZTP) service can be used by users to configure a fleet of switches using common configuration templates. Switches booting from factory default state should be able to communicate with remote provisioning server and download relevant configuration files and scripts to kick start more complex configuration steps. ZTP service takes user input in JSON format. Some of the supported features are - Dynamically generate DHCP client configuration based on current ZTP state and Added support to request and process hostname when using DHCPv6. Further details can be seen in HLD Document | 3227 , 3298 , 1000 , 3299 , 12, 599 |
Please find the list of API's classified along the newly added SAI features. For further details on SAI API please refer [SAI_1.5_Release_notes]([https://github.com/kannankvs/md2/blob/master/SAI_1.5%20Release%20notes.md](https://github.com/kannankvs/md2/blob/master/SAI_1.5 Release notes.md))
S.No | Feature | API |
---|---|---|
1 | TAM | 1. sai_create_tam_report_fn 2. sai_remove_tam_int_f 3. sai_set_tam_int_attribute_fn 4. sai_get_tam_int_attribute_fn 5. sai_tam_telemetry_get_data_fn |
2 | NAT | 1. sai_create_nat_range_fn 2. sai_remove_nat_range_fn 3. sai_get_nat_range_attribute_fn 4. sai_get_nat_range_attribute_fn 5. sai_create_nat_fn 6. sai_remove_nat_fn 7. sai_set_nat_attribute_fn 8. sai_get_nat_attribute_fn |
3 | sFLOW | 1. sai_hostif_type_genetlink 2. sai_hostif_attr_genetlink_mcgrp_name 3. sai_hostif_table_entr_channel_type_genetlink |
4 | Generic Resource Monitoring | 1. sai_object_type_get_availability |
5 | SAI counter | 1. sai_create_counter_fn 2. sai_remove_counter_fn 3. sai_set_counter_attribute_fn 4. sai_get_counter_attribute_fn 5. sai_get_counter_stats_fn 6. sai_get_counter_stats_ext_fn 7. sai_clear_counter_stats_fn |
6 | Drop Counters | 1. sai_create_debug_counter_fn 2. sai_remove_debug_counter_fn 3. sai_set_debug_counter_attribute_fn 4. sai_get_debug_counter_attribute_fn |
SONiC community would like to thank all the contributors from various companies and the individuals who has contributed for the release. Special thanks to the major contributors, viz, Microsoft, Broadcom, DellEMC, Mellanox, Alibaba, Linkedin, Nephos & Aviz.