microsoft / test-netstack Goto Github PK
View Code? Open in Web Editor NEWThis tool tests the native, synthetic, and hardware network data path
License: MIT License
This tool tests the native, synthetic, and hardware network data path
License: MIT License
Similar to how localication is implemented in separate PSD1 files, separating the recommendations into a separate file makes it easier to read, debug, etc.
Get packets sent per second counter during Stage 2, verify at least 600,000 packets per second sent by CTS Traffic
Needs to rather do something like this:
$ModuleBase = (Get-Module Test-NetStack -listAvailable | Select -First 1).ModuleBase
Join-Path $ModuleBase -ChildPath tools\cts...
In the recent example where a node didn't have an IP address in a specific network, we had to try multiple times to test the connectivitymap. to do this, we had to run a full stage and get the output. It would be better to offer a switch like -ConnectivityMapOnly.
Practical example
https://learn-powershell.net/2016/04/22/speedy-ping-using-powershell/
No need to do this, prerequisites will ensure that all files exist (and same version) on all machines being tested.
StageStatus should have it's own property. Subproperties should define each stage status and be a rollup of all the paths tested in the stage;
Use the "PathStatus" property for individual paths inside the stage
“verify that RDMA is enabled with Get-NetAdapterRDMA, that "NetworkDirect Functionality" is enabled from Get-NetAdapterAdvancedProperty -Name <> And that "NetworkDirect Technology" is the same value on each node and adapter combination being tested. If this system uses Data Center Bridging, consider running Validate-DCB prior to running this tool (Test-NetStack)”
PA Host vNICs don't have VMMQ enabled so will never fill up/saturate a TCP Pipe or use RDMA.
Net-Net, they should be excluded from at least Stage 2 - 6
RDMA is disabled on all adapters. This section doesn't run at all but reports pass. The result is that it continues going onto Stage 4 despite it not having any enabled adapters.
Suggestion: If no adapters report RDMA Enabled, create an object with the interface and path status of fail for consistency with other stages.
Currently the test file is in the main folder, however there is a folder with an empty file under Tests > global...ps1
We should just pick one final location and eliminate the other. IMHO, we should keep the Tests > testfile.ps1 structure and move the tests out of the root of the module to remove additional perceived customer complexity.
If a module cannot be downloaded via the PowerShell Gallery (powershellgallery.com) than it should be listed in the ExternalModules portion of the manifest
Is this file needed? Otherwise we should remove it.
Using 'Exit' command will close a PowerShell Window if a customer uses the Shell (instead of vscode or ISE). This would be the most common case. Instead we should use 'throw' to send terminating errors or Write-Error and Write-Warning to identify non-terminating scenarios.
This was observed in the validation of $MachineList
Once it's moved to a separate function, converge the IPTarget and Nodes code paths so the results look the same.
In this section, we retrieve all adapters reported by Get-NetIPAddress which includes tunnel adapters that don't appear in Get-NetAdapter (causing an error).
Test-NetStack/helpers/internal.psm1
Line 142 in a5d7939
Simple fix (Any reason not to do this - APIPA is not production supported):
$AdapterIP = Get-NetIPAddress -IPAddress $IP -AddressFamily IPv4 -SuffixOrigin Dhcp, Manual -AddressState Preferred, Invalid, Duplicate | Select InterfaceAlias, InterfaceIndex, IPAddress, PrefixLength, AddressState
**# Remove APIPA
$AdapterIP = $AdapterIP | Where IPAddress -NotLike '169.254.*'**
$NetAdapter = Get-NetAdapter -InterfaceIndex $AdapterIP.InterfaceIndex
If Stage 6 (N:N RDMA Stress) passes, add UDP N:N at the same time in a new stage. This adds unbounded non-flow controlled UDP traffic to the fabric, which could cause PFC on the RDMA traffic class.
Do we use this code at all? It doesn't appear we do. It appears to only appear (sort of) in 2 places that appear to be dead code paths ($thisInterfaceDetails.VLAN isn't used anywhere right?).
https://github.com/microsoft/Test-NetStack/blob/main/helpers/internal.psm1
To include latency, connection errors, etc. Everything we discussed :-)
Parameter Sets currently only specify two options but much more exist.
There are open compliance tasks that need to be reviewed for your Test-NetStack repo.
To bring this repository to the standard required for 2021, we require administrators of this and all Microsoft GitHub repositories to complete a small set of tasks within the next 60 days. This is critical work to ensure the compliance and security of your microsoft GitHub organization.
Please take a few minutes to complete the tasks at: https://repos.opensource.microsoft.com/orgs/microsoft/repos/Test-NetStack/compliance
You can close this work item once you have completed the compliance tasks, or it will automatically close within a day of taking action.
If you no longer need this repository, it might be quickest to delete the repo, too.
More information about GitHub inside Microsoft and the new GitHub AE product can be found at https://aka.ms/gim.
FYI: current admins at Microsoft include @dcuomo, @CoreNetBuilder, @manjushetkar
Will be needed for iWARP solutions
Use something like this
$ModuleBase = (Get-Module Test-NetStack -ListAvailable).ModuleBase
Join-Path $ModuleBase -ChildPath...
Since each tests run for each NIC, we should be able to ping -l -f where the frame size is equivalent to the *JumboPacket value from Get-NetAdapterAdvancedProperty. If a failure occurs, iterate down until the mtusize is identified.
Failure scenario is where different mtu values exist for each adapter in a specified connectivity map
In Stage 2, use CTS Traffic's randomize buffer size option to reflect traffic generated by SMB and live migration
Prerequisites function in prerequisites.psm1 should be run at the beginning of each run to validate requirements like
Should be run by the selected stages. E.g. if stage 1 and 2 are selected unique requirements for stage 3 - n shouldn't be tested.
If the connectivity map contains more than one adapter on the same host, these adapters should not test each other. This unnecessarily adds time to the tests, but more importantly confuses the output.
Here you can see two adapters on AzStackHCI01 both with 9k MTUSize. Since they're on the same host, the traffic never leaves the host and is not testing/validating anything overly useful (you'll always be able to connect from the same host and MTUSize is not important on the same system because it doesn't need to be segmented to fit on the fabric).
The current mechanism to specify the RDMA Protocol (RoCE vs iWARP) does not scale to include additional vendors where they may include multi-protocol options. E.g. Intel and Marvell both support RoCE and iWARP.
A more appropriate mechanism would be to use Get-NetAdapterAdvancedProperty on the specific adapter and look for the NetworkDirectTechnology type. In the future this will be required to be non-zero. Until then, we should just default to the first option in the list for that adapter (e.g. if it specifies RoCE or RoCEv2, then choose RoCEv2 or if iWARP and RoCE, default to iWARP.
https://docs.microsoft.com/en-us/windows-hardware/drivers/network/inf-requirements-for-ndkpi
Specifically on setup files (setup and localsetup.ps1); may be other places where this is necessary
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.