-
Notifications
You must be signed in to change notification settings - Fork 1k
[Testplan] RADIUS tests #18153
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
yxieca
merged 3 commits into
sonic-net:master
from
dt-nexthop:dt-nexthop/radius_tests_hld
May 28, 2025
Merged
[Testplan] RADIUS tests #18153
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,225 @@ | ||
| # RADIUS Authentication Test Plan | ||
|
|
||
| ## Table of Contents | ||
| - [RADIUS Authentication Test Plan](#radius-authentication-test-plan) | ||
| - [Table of Contents](#table-of-contents) | ||
| - [1 Overview](#1-overview) | ||
| - [2 Scope](#2-scope) | ||
| - [3 Test Setup](#3-test-setup) | ||
| - [3.1 Test Environment](#31-test-environment) | ||
| - [3.2 RADIUS Server Configuration](#32-radius-server-configuration) | ||
| - [4 Test Cases](#4-test-cases) | ||
| - [4.1 User Authentication Tests](#41-user-authentication-tests) | ||
| - [4.2 Command Authorization](#42-command-authorization) | ||
| - [4.3 Authentication Fallback](#43-authentication-fallback) | ||
| - [4.4 Error Handling](#44-error-handling) | ||
| - [4.5 Source IP Configuration](#45-source-ip-configuration) | ||
| - [4.6 Management VRF](#46-management-vrf) | ||
| - [4.7 IPv6 RADIUS Server Support](#47-ipv6-radius-server-support) | ||
| - [5 Implementation Details](#5-implementation-details) | ||
| - [5.1 Test Framework](#51-test-framework) | ||
| - [5.2 Key Utilities](#52-key-utilities) | ||
| - [5.3 Test Configuration](#53-test-configuration) | ||
| - [6 Expected Results](#6-expected-results) | ||
|
|
||
| ## 1 Overview | ||
|
|
||
| This document outlines the test plan for validating RADIUS (Remote Authentication Dial-In User Service) authentication functionality in SONiC. The tests verify the proper configuration, operation, and integration of RADIUS authentication services with SONiC devices. | ||
|
|
||
| ## 2 Scope | ||
|
|
||
| The test plan covers the following aspects of RADIUS authentication: | ||
| - RADIUS server configuration and management | ||
| - User authentication and authorization | ||
| - Error handling and fallback mechanisms | ||
| - Integration with SONiC authentication system | ||
|
|
||
| Key components tested: | ||
| - FreeRADIUS server setup and configuration | ||
| - RADIUS client configuration on SONiC | ||
| - User credentials management | ||
| - Network connectivity between RADIUS client and server | ||
|
|
||
| ## 3 Test Setup | ||
|
|
||
| ### 3.1 Test Environment | ||
|
|
||
| The test environment consists of: | ||
| - SONiC Device Under Test (DUT) | ||
| - PTF (Packet Test Framework) host running FreeRADIUS server | ||
| - Test credentials defined in `radius_creds.yaml` | ||
| - Network connectivity between DUT and RADIUS server | ||
|
|
||
| Required packages and services: | ||
| - FreeRADIUS server package | ||
| - Configuration templates: | ||
| * `clients.conf.j2` - RADIUS client configuration | ||
| * `users.j2` - User authentication database | ||
|
|
||
| ### 3.2 RADIUS Server Configuration | ||
|
|
||
| The RADIUS server is configured with: | ||
| - Server IP address and authentication port (default: 1812) | ||
| - Shared secret for client authentication | ||
| - User database with test credentials | ||
| - Client configuration for DUT access | ||
|
|
||
| Configuration files: | ||
| ``` | ||
| /etc/freeradius/3.0/ | ||
| ├── clients.conf # Client configuration | ||
| └── mods-config/ | ||
| └── files/ | ||
| └── authorize # User database | ||
| ``` | ||
|
|
||
| ## 4 Test Cases | ||
|
|
||
| ### 4.1 User Authentication Tests | ||
|
|
||
| **Test Case 1: Read-Write User Authentication (`test_radius_rw_user`)** | ||
| - Verify authentication of read-write user | ||
| - Test user group membership using `cat /etc/group` | ||
| - Verify RADIUS statistics: | ||
| * Access-Accept counter increments | ||
| * Access-Reject counter remains unchanged | ||
|
|
||
| **Test Case 2: Read-Only User Authentication (`test_radius_ro_user`)** | ||
| - Verify authentication of read-only user | ||
| - Test user group membership using `cat /etc/passwd` | ||
| - Verify RADIUS statistics: | ||
| * Access-Accept counter increments | ||
| * Access-Reject counter remains unchanged | ||
|
|
||
| ### 4.2 Command Authorization | ||
|
|
||
| **Test Case 3: Command Authorization (`test_radius_command_auth`)** | ||
| - Test read-only user access to allowed commands: | ||
| * show version | ||
| * show interface status | ||
| * show lldp table | ||
| * show ip bgp summary | ||
| * show ip route | ||
| * sudo cat /var/log/syslog | ||
| - Test read-only user access to restricted commands: | ||
| * sudo config -h | ||
| * sudo cat /var/log/auth.log | ||
| - Verify proper authorization enforcement | ||
|
|
||
| ### 4.3 Authentication Fallback | ||
|
|
||
| **Test Case 4: Local Authentication Fallback (`test_radius_fallback`)** | ||
| - Setup local user with password | ||
| - Test authentication with local credentials | ||
| - Verify RADIUS statistics: | ||
| * Access-Reject counter increments | ||
| - Confirm fallback to local authentication works | ||
|
|
||
| ### 4.4 Error Handling | ||
|
|
||
| **Test Case 5: Failed Authentication (`test_radius_failed_auth`)** | ||
| - Test authentication with invalid credentials | ||
| - Verify authentication failure | ||
| - Verify RADIUS statistics: | ||
| * Access-Reject counter increments | ||
|
|
||
| ### 4.5 Source IP Configuration | ||
|
|
||
| **Test Case 6: Source IP Feature (`test_radius_source_ip`)** | ||
| - Configure RADIUS source interface | ||
| - Capture RADIUS packets using tcpdump | ||
| - Verify RADIUS packets use correct source IP | ||
| - Skip test if no routed interfaces are available | ||
|
|
||
| ### 4.6 Management VRF | ||
|
|
||
| **Test Case 7: RADIUS with Management VRF (`test_radius_mgmt_vrf`)** | ||
| - Enable management VRF on DUT | ||
| - Verify RADIUS server reachability through mgmt VRF | ||
| - Test read-write user authentication: | ||
| * Verify successful authentication | ||
| * Check user group membership | ||
| * Verify RADIUS statistics: | ||
| - Access-Accept counter increments | ||
| - Access-Reject counter remains unchanged | ||
| - Test read-only user authentication: | ||
| * Verify successful authentication | ||
| * Check user group membership | ||
| * Verify RADIUS statistics: | ||
| - Access-Accept counter increments | ||
| - Access-Reject counter remains unchanged | ||
| - Clean up: | ||
| * Remove management VRF | ||
| * Verify SSH accessibility after VRF removal | ||
|
|
||
| ### 4.7 IPv6 RADIUS Server Support | ||
|
|
||
| **Test Case 8: IPv6-only RADIUS Authentication (`test_radius_ipv6_only`)** | ||
| - Configure RADIUS server with IPv6 address only | ||
| - Verify RADIUS server configuration: | ||
| * Check IPv6 address is properly configured | ||
| * Verify connectivity to RADIUS server over IPv6 | ||
| - Test read-write user authentication: | ||
| * Verify successful authentication | ||
| * Check user group membership | ||
| * Verify RADIUS statistics: | ||
| - Access-Accept counter increments | ||
| - Access-Reject counter remains unchanged | ||
| - Test read-only user authentication: | ||
| * Verify successful authentication | ||
| * Check user group membership | ||
| * Verify RADIUS statistics: | ||
| - Access-Accept counter increments | ||
| - Access-Reject counter remains unchanged | ||
| - Test command authorization for both user types | ||
| - Test authentication failure with invalid credentials | ||
| - Verify RADIUS packets use correct IPv6 source and destination addresses | ||
| - Clean up: | ||
| * Remove IPv6 RADIUS server configuration | ||
| * Restore IPv4 RADIUS server configuration | ||
|
|
||
| **Test Case 9: Dual-Stack RADIUS Server Failover (`test_radius_ipv6_failover`)** | ||
| - Configure RADIUS server with both IPv4 and IPv6 addresses | ||
| - Set priority to prefer IPv6 server | ||
| - Verify primary (IPv6) server authentication works | ||
| - Disable IPv6 connectivity to RADIUS server | ||
| - Verify failover to IPv4 RADIUS server: | ||
| * Confirm authentication still succeeds | ||
| * Verify RADIUS statistics show IPv4 server is being used | ||
| - Re-enable IPv6 connectivity | ||
| - Verify system fails back to IPv6 RADIUS server | ||
| - Clean up: | ||
| * Restore original RADIUS server configuration | ||
|
|
||
| ## 5 Implementation Details | ||
|
|
||
| ### 5.1 Test Framework | ||
| - Python pytest framework | ||
| - Test fixtures for setup and teardown: | ||
| * `radius_creds`: Loads test credentials | ||
| * `setup_radius_server`: Configures FreeRADIUS | ||
| * `setup_radius_client`: Configures DUT | ||
|
|
||
| ### 5.2 Key Utilities | ||
| - `ssh_remote_run`: Execute commands via SSH | ||
| - `check_radius_stats`: Monitor RADIUS counters | ||
| - `verify_radius_capture`: Analyze packet captures | ||
| - `check_group_output`: Verify user group membership | ||
|
|
||
| ### 5.3 Test Configuration | ||
| - Credentials stored in `radius_creds.yaml` | ||
| - Server configuration via Jinja2 templates | ||
| - DUT configuration using SONiC CLI | ||
|
|
||
| ## 6 Expected Results | ||
|
|
||
| All test cases should: | ||
| - Complete successfully without errors | ||
| - Verify proper authentication behavior | ||
| - Handle error conditions gracefully | ||
| - Clean up configurations after completion | ||
|
|
||
| Test failures should provide: | ||
| - Clear error messages | ||
| - Relevant log information | ||
| - RADIUS statistics for debugging | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.