From 2633d6347d0f7c237815df0c6b880df4c8e6ccb2 Mon Sep 17 00:00:00 2001 From: "Joel Sallow (/u/ta11ow)" <32407840+vexx32@users.noreply.github.com> Date: Thu, 9 May 2019 10:59:55 -0400 Subject: [PATCH 1/8] Create RFCNNNN-Test-Connection.md --- 1-Draft/RFCNNNN-Test-Connection.md | 125 +++++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 1-Draft/RFCNNNN-Test-Connection.md diff --git a/1-Draft/RFCNNNN-Test-Connection.md b/1-Draft/RFCNNNN-Test-Connection.md new file mode 100644 index 00000000..930ccb1b --- /dev/null +++ b/1-Draft/RFCNNNN-Test-Connection.md @@ -0,0 +1,125 @@ +--- +RFC: XXXX +Author: Joel Sallow +Status: Draft +Version: 1.0 +Area: Cmdlets +Comments Due: 6/10/19 +Plan to Implement: Yes +--- + +# Proposed Changes to `Test-Connection` Cmdlet + +## Syntax + +``` +# All Sets +Test-Connection [-TargetName] [-IPv4] [-IPv6] [-ResolveDestination] [-TimeoutSeconds ] [-Quiet] [] + +# Set 1 +[-Ping] [-Count ] [-Delay ] [-Source ] [-MaxHops ] [-BufferSize ] [-DontFragment] + +# Set 2 +[-Ping] [-Continues] [-Delay ] [-Source ] [-MaxHops ] [-BufferSize ] [-DontFragment] + +# Set 3 +Test-Connection [-TargetName] -Traceroute [-Source ] [-MaxHops ] + +# Set 4 +Test-Connection [-TargetName] -MTUSizeDetect + +# Set 5 +Test-Connection [-TargetName] -TCPPort [-Source ] +``` + +## Changes + +1. All current host/information output is relegated to the `-Verbose` stream. Currently that isn't used _at all_, and this is a perfect use case for it. +2. No progress bar per committee decision in [PowerShell#6768](https://github.com/PowerShell/PowerShell/issues/6768). +3. All output occurs as soon as data is available, individual records per PingReply / trace hop. +4. All presented data should be readily available as properties to the user. + +## Output Type Proposed Members + +### PingStatus + +```csharp +class PingStatus +{ + string Source { get; } + IPAddress Address { get; } + string Destination { get; } + int RoundtripTime { get; } + int BufferSize { get; } + PingOptions Options { get; } +} + +// For -MtuSizeDetect switch +class PingMtuDetect : PingStatus +{ + int MtuSize { get; } +} +``` + +### TraceStatus + +```csharp +class TraceStatus +{ + int Hop { get; } + int[] RoundTripTimes { get; } + string Destination { get; } + IPAddress DestinationAddress { get; } + IPAddress HopAddress { get; } + int BufferSize { get; } + PingStatus[] Replies { get; } +} +``` + +## Mockups + +### `Test-Connection www.google.com` + +- Information from the `Replies` property of the output object should be included in the main output object, and primary output mode should be _multiple_ objects, each representing a single ping attempt/reply object. +- Buffer _data_ is generally irrelevant, as it cannot be specified, and only a `BufferSize` property should be exposed. `Replies.Buffer` property should remain `private`. +- `Replies.Options` property should be hidden from default formatting. +- Results output as a table, grouped by Destination address (in the case that multiple destinations are specified). + +**Resulting output:** +```code + Destination: www.google.com +Source Address RoundtripTime BufferSize +------ ------- ------------- ---------- +WS-JOEL 172.217.2.132 36 32 +WS-JOEL 172.217.2.132 21 32 +WS-JOEL 172.217.2.132 25 32 +WS-JOEL 172.217.2.132 25 32 +``` + +### `Test-Connection www.google.com -TraceRoute` + +- Each hop should be output as a separate object, each containing the `PingReply` objects as a property accessible by hidden from formatting. +- Main `TraceRouteResult` object should contain either ETS or class properties that calculate summary data from their four PingReplies. +- **Note:** This object type we're using is currently **bugged**, and all `PingReply` objects report `TtlExpired` as their status. Recommend investigating progress of fix for .NET Core 3, or designing custom solution for TraceRoute backing to resolve the issue. +- Output as a table, grouped by `DestinationHost` (Why is this property name different to that of the other object type used for standard pings?) + +**Resulting output:** +```code + Destination: www.google.com +Hop RoundtripTimes DestinationAddress HopAddress BufferSize +--- -------------- ------------------ ---------- ---------- + 1 {0, 0, 0} 172.217.2.132 192.168.22.254 + 2 {0, 0, 0} 172.217.2.132 75.144.219.238 + 3 {0, 0, 0} 172.217.2.132 96.120.37.17 + 4 {0, 0, 0} 172.217.2.132 96.110.136.65 + 5 {0, 0, 0} 172.217.2.132 69.139.180.170 + 6 {0, 0, 0} 172.217.2.132 68.85.127.121 + 7 {0, 0, 0} 172.217.2.132 68.86.165.161 + 8 {0, 0, 0} 172.217.2.132 68.86.90.205 + 9 {0, 0, 0} 172.217.2.132 68.86.82.154 + 10 {0, 0, 0} 172.217.2.132 66.208.233.242 + 11 {0, 0, 0} 172.217.2.132 0.0.0.0 + 12 {0, 0, 0} 172.217.2.132 216.239.59.124 + 13 {0, 0, 0} 172.217.2.132 216.239.59.61 + 14 {32, 28, 20} 172.217.2.132 172.217.2.132 +``` From f2d2fbce05d806dc1a06c3b34f4ea0184fe5d405 Mon Sep 17 00:00:00 2001 From: "Joel Sallow (/u/ta11ow)" <32407840+vexx32@users.noreply.github.com> Date: Thu, 9 May 2019 11:06:10 -0400 Subject: [PATCH 2/8] Update RFCNNNN-Test-Connection.md --- 1-Draft/RFCNNNN-Test-Connection.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1-Draft/RFCNNNN-Test-Connection.md b/1-Draft/RFCNNNN-Test-Connection.md index 930ccb1b..5678c8c9 100644 --- a/1-Draft/RFCNNNN-Test-Connection.md +++ b/1-Draft/RFCNNNN-Test-Connection.md @@ -34,9 +34,9 @@ Test-Connection [-TargetName] -TCPPort [-Source ] ## Changes -1. All current host/information output is relegated to the `-Verbose` stream. Currently that isn't used _at all_, and this is a perfect use case for it. +1. All current host/information output is relegated to the `-Verbose` stream. 2. No progress bar per committee decision in [PowerShell#6768](https://github.com/PowerShell/PowerShell/issues/6768). -3. All output occurs as soon as data is available, individual records per PingReply / trace hop. +3. All output occurs as soon as data is available, individual records per ping reply / trace hop. 4. All presented data should be readily available as properties to the user. ## Output Type Proposed Members From 67d894faab39921cd356c5d1d9438f4a6ce1817c Mon Sep 17 00:00:00 2001 From: "Joel Sallow (/u/ta11ow)" <32407840+vexx32@users.noreply.github.com> Date: Fri, 24 May 2019 18:40:28 -0400 Subject: [PATCH 3/8] Update RFCNNNN-Test-Connection.md Update RFC per Steve's comments --- 1-Draft/RFCNNNN-Test-Connection.md | 52 ++++++++++++++---------------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/1-Draft/RFCNNNN-Test-Connection.md b/1-Draft/RFCNNNN-Test-Connection.md index 5678c8c9..9c159bbc 100644 --- a/1-Draft/RFCNNNN-Test-Connection.md +++ b/1-Draft/RFCNNNN-Test-Connection.md @@ -52,12 +52,8 @@ class PingStatus int RoundtripTime { get; } int BufferSize { get; } PingOptions Options { get; } -} - -// For -MtuSizeDetect switch -class PingMtuDetect : PingStatus -{ - int MtuSize { get; } + // Hidden in the formatter when not set; only populated & shown when using the -MtuSizeDetect switch + int? MtuSize { get; } } ``` @@ -88,12 +84,12 @@ class TraceStatus **Resulting output:** ```code Destination: www.google.com -Source Address RoundtripTime BufferSize ------- ------- ------------- ---------- -WS-JOEL 172.217.2.132 36 32 -WS-JOEL 172.217.2.132 21 32 -WS-JOEL 172.217.2.132 25 32 -WS-JOEL 172.217.2.132 25 32 +Source Address RoundtripTime (ms) BufferSize +------ ------- ------------------ ---------- +WS-JOEL 172.217.2.132 36 32 +WS-JOEL 172.217.2.132 21 32 +WS-JOEL 172.217.2.132 25 32 +WS-JOEL 172.217.2.132 25 32 ``` ### `Test-Connection www.google.com -TraceRoute` @@ -106,20 +102,20 @@ WS-JOEL 172.217.2.132 25 32 **Resulting output:** ```code Destination: www.google.com -Hop RoundtripTimes DestinationAddress HopAddress BufferSize ---- -------------- ------------------ ---------- ---------- - 1 {0, 0, 0} 172.217.2.132 192.168.22.254 - 2 {0, 0, 0} 172.217.2.132 75.144.219.238 - 3 {0, 0, 0} 172.217.2.132 96.120.37.17 - 4 {0, 0, 0} 172.217.2.132 96.110.136.65 - 5 {0, 0, 0} 172.217.2.132 69.139.180.170 - 6 {0, 0, 0} 172.217.2.132 68.85.127.121 - 7 {0, 0, 0} 172.217.2.132 68.86.165.161 - 8 {0, 0, 0} 172.217.2.132 68.86.90.205 - 9 {0, 0, 0} 172.217.2.132 68.86.82.154 - 10 {0, 0, 0} 172.217.2.132 66.208.233.242 - 11 {0, 0, 0} 172.217.2.132 0.0.0.0 - 12 {0, 0, 0} 172.217.2.132 216.239.59.124 - 13 {0, 0, 0} 172.217.2.132 216.239.59.61 - 14 {32, 28, 20} 172.217.2.132 172.217.2.132 +Hop RoundtripTimes (ms) DestinationAddress HopAddress BufferSize +--- ------------------- ------------------ ---------- ---------- + 1 {0, 0, 0} 172.217.2.132 192.168.22.254 + 2 {0, 0, 0} 172.217.2.132 75.144.219.238 + 3 {0, 0, 0} 172.217.2.132 96.120.37.17 + 4 {0, 0, 0} 172.217.2.132 96.110.136.65 + 5 {0, 0, 0} 172.217.2.132 69.139.180.170 + 6 {0, 0, 0} 172.217.2.132 68.85.127.121 + 7 {0, 0, 0} 172.217.2.132 68.86.165.161 + 8 {0, 0, 0} 172.217.2.132 68.86.90.205 + 9 {0, 0, 0} 172.217.2.132 68.86.82.154 + 10 {0, 0, 0} 172.217.2.132 66.208.233.242 + 11 {0, 0, 0} 172.217.2.132 0.0.0.0 + 12 {0, 0, 0} 172.217.2.132 216.239.59.124 + 13 {0, 0, 0} 172.217.2.132 216.239.59.61 + 14 {32, 28, 20} 172.217.2.132 172.217.2.132 ``` From 771e964d0c1143254b36c0116451c4bed12d10d2 Mon Sep 17 00:00:00 2001 From: "Joel Sallow (/u/ta11ow)" <32407840+vexx32@users.noreply.github.com> Date: Fri, 24 May 2019 18:43:57 -0400 Subject: [PATCH 4/8] Update RFCNNNN-Test-Connection.md Update MtuSize property type & give default value --- 1-Draft/RFCNNNN-Test-Connection.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1-Draft/RFCNNNN-Test-Connection.md b/1-Draft/RFCNNNN-Test-Connection.md index 9c159bbc..838546df 100644 --- a/1-Draft/RFCNNNN-Test-Connection.md +++ b/1-Draft/RFCNNNN-Test-Connection.md @@ -53,7 +53,7 @@ class PingStatus int BufferSize { get; } PingOptions Options { get; } // Hidden in the formatter when not set; only populated & shown when using the -MtuSizeDetect switch - int? MtuSize { get; } + int MtuSize { get; } = -1 } ``` From f6dc579245ef39da6fe5ce9f4e1c4c583b59b528 Mon Sep 17 00:00:00 2001 From: "Joel Sallow (/u/ta11ow)" <32407840+vexx32@users.noreply.github.com> Date: Sun, 2 Jun 2019 12:22:21 -0400 Subject: [PATCH 5/8] :memo: Rename RoundTripTime -> Latency This name conveys the same thing without being excessively long and causing difficulty effectively formatting the output. --- 1-Draft/RFCNNNN-Test-Connection.md | 48 +++++++++++++++--------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/1-Draft/RFCNNNN-Test-Connection.md b/1-Draft/RFCNNNN-Test-Connection.md index 838546df..9812f45d 100644 --- a/1-Draft/RFCNNNN-Test-Connection.md +++ b/1-Draft/RFCNNNN-Test-Connection.md @@ -49,7 +49,7 @@ class PingStatus string Source { get; } IPAddress Address { get; } string Destination { get; } - int RoundtripTime { get; } + int Latency { get; } int BufferSize { get; } PingOptions Options { get; } // Hidden in the formatter when not set; only populated & shown when using the -MtuSizeDetect switch @@ -63,7 +63,7 @@ class PingStatus class TraceStatus { int Hop { get; } - int[] RoundTripTimes { get; } + int[] Latency { get; } string Destination { get; } IPAddress DestinationAddress { get; } IPAddress HopAddress { get; } @@ -84,12 +84,12 @@ class TraceStatus **Resulting output:** ```code Destination: www.google.com -Source Address RoundtripTime (ms) BufferSize ------- ------- ------------------ ---------- -WS-JOEL 172.217.2.132 36 32 -WS-JOEL 172.217.2.132 21 32 -WS-JOEL 172.217.2.132 25 32 -WS-JOEL 172.217.2.132 25 32 +Source Address Latency (ms) BufferSize +------ ------- ------------ ---------- +WS-JOEL 172.217.2.132 36 32 +WS-JOEL 172.217.2.132 21 32 +WS-JOEL 172.217.2.132 25 32 +WS-JOEL 172.217.2.132 25 32 ``` ### `Test-Connection www.google.com -TraceRoute` @@ -102,20 +102,20 @@ WS-JOEL 172.217.2.132 25 32 **Resulting output:** ```code Destination: www.google.com -Hop RoundtripTimes (ms) DestinationAddress HopAddress BufferSize ---- ------------------- ------------------ ---------- ---------- - 1 {0, 0, 0} 172.217.2.132 192.168.22.254 - 2 {0, 0, 0} 172.217.2.132 75.144.219.238 - 3 {0, 0, 0} 172.217.2.132 96.120.37.17 - 4 {0, 0, 0} 172.217.2.132 96.110.136.65 - 5 {0, 0, 0} 172.217.2.132 69.139.180.170 - 6 {0, 0, 0} 172.217.2.132 68.85.127.121 - 7 {0, 0, 0} 172.217.2.132 68.86.165.161 - 8 {0, 0, 0} 172.217.2.132 68.86.90.205 - 9 {0, 0, 0} 172.217.2.132 68.86.82.154 - 10 {0, 0, 0} 172.217.2.132 66.208.233.242 - 11 {0, 0, 0} 172.217.2.132 0.0.0.0 - 12 {0, 0, 0} 172.217.2.132 216.239.59.124 - 13 {0, 0, 0} 172.217.2.132 216.239.59.61 - 14 {32, 28, 20} 172.217.2.132 172.217.2.132 +Hop Latency (ms) DestinationAddress HopAddress BufferSize +--- ------------ ------------------ ---------- ---------- + 1 {0, 0, 0} 172.217.2.132 192.168.22.254 + 2 {0, 0, 0} 172.217.2.132 75.144.219.238 + 3 {0, 0, 0} 172.217.2.132 96.120.37.17 + 4 {0, 0, 0} 172.217.2.132 96.110.136.65 + 5 {0, 0, 0} 172.217.2.132 69.139.180.170 + 6 {0, 0, 0} 172.217.2.132 68.85.127.121 + 7 {0, 0, 0} 172.217.2.132 68.86.165.161 + 8 {0, 0, 0} 172.217.2.132 68.86.90.205 + 9 {0, 0, 0} 172.217.2.132 68.86.82.154 + 10 {0, 0, 0} 172.217.2.132 66.208.233.242 + 11 {0, 0, 0} 172.217.2.132 0.0.0.0 + 12 {0, 0, 0} 172.217.2.132 216.239.59.124 + 13 {0, 0, 0} 172.217.2.132 216.239.59.61 + 14 {32, 28, 20} 172.217.2.132 172.217.2.132 ``` From 6b92b9aa434382f12c81d31c7a6839fff53d9ad1 Mon Sep 17 00:00:00 2001 From: "Joel Sallow (/u/ta11ow)" <32407840+vexx32@users.noreply.github.com> Date: Thu, 20 Jun 2019 23:14:55 -0400 Subject: [PATCH 6/8] Apply suggestions from code review Update parameter sets --- 1-Draft/RFCNNNN-Test-Connection.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/1-Draft/RFCNNNN-Test-Connection.md b/1-Draft/RFCNNNN-Test-Connection.md index 9812f45d..c7294157 100644 --- a/1-Draft/RFCNNNN-Test-Connection.md +++ b/1-Draft/RFCNNNN-Test-Connection.md @@ -23,13 +23,13 @@ Test-Connection [-TargetName] [-IPv4] [-IPv6] [-ResolveDestination] [ [-Ping] [-Continues] [-Delay ] [-Source ] [-MaxHops ] [-BufferSize ] [-DontFragment] # Set 3 -Test-Connection [-TargetName] -Traceroute [-Source ] [-MaxHops ] +-Traceroute [-Source ] [-MaxHops ] # Set 4 -Test-Connection [-TargetName] -MTUSizeDetect +-MTUSizeDetect # Set 5 -Test-Connection [-TargetName] -TCPPort [-Source ] +-TCPPort [-Source ] ``` ## Changes From deb5d3f44b9d0b3f09281df2a5de1450bcfa9894 Mon Sep 17 00:00:00 2001 From: "Joel Sallow (/u/ta11ow)" <32407840+vexx32@users.noreply.github.com> Date: Thu, 27 Jun 2019 12:39:02 -0400 Subject: [PATCH 7/8] Update RFCNNNN-Test-Connection.md Update RFC & examples --- 1-Draft/RFCNNNN-Test-Connection.md | 129 ++++++++++++++++++++++++----- 1 file changed, 107 insertions(+), 22 deletions(-) diff --git a/1-Draft/RFCNNNN-Test-Connection.md b/1-Draft/RFCNNNN-Test-Connection.md index c7294157..ecc1624f 100644 --- a/1-Draft/RFCNNNN-Test-Connection.md +++ b/1-Draft/RFCNNNN-Test-Connection.md @@ -34,7 +34,7 @@ Test-Connection [-TargetName] [-IPv4] [-IPv6] [-ResolveDestination] [ ## Changes -1. All current host/information output is relegated to the `-Verbose` stream. +1. All current host/information output is output only to the `-Verbose` stream. 2. No progress bar per committee decision in [PowerShell#6768](https://github.com/PowerShell/PowerShell/issues/6768). 3. All output occurs as soon as data is available, individual records per ping reply / trace hop. 4. All presented data should be readily available as properties to the user. @@ -47,13 +47,24 @@ Test-Connection [-TargetName] [-IPv4] [-IPv6] [-ResolveDestination] [ class PingStatus { string Source { get; } - IPAddress Address { get; } string Destination { get; } + IPAddress Address { get; } int Latency { get; } + IPStatus Status { get; } int BufferSize { get; } + + // These properties are not displayed by default + PingReply Reply { get; } PingOptions Options { get; } - // Hidden in the formatter when not set; only populated & shown when using the -MtuSizeDetect switch - int MtuSize { get; } = -1 +} +``` + +#### PingMtuStatus + +```csharp +class PingMtuStatus : PingStatus +{ + public int MtuSize { get; } } ``` @@ -62,13 +73,18 @@ class PingStatus ```csharp class TraceStatus { + private PingStatus _status; + int Hop { get; } - int[] Latency { get; } - string Destination { get; } - IPAddress DestinationAddress { get; } + string Hostname { get; } IPAddress HopAddress { get; } - int BufferSize { get; } - PingStatus[] Replies { get; } + int Latency { get; } + IPStatus Status { get; } + string Source { get; } + string Target { get; } + IPAddress TargetAddress { get; } + PingReply Reply { get; } + PingOptions Options { get; } } ``` @@ -77,29 +93,89 @@ class TraceStatus ### `Test-Connection www.google.com` - Information from the `Replies` property of the output object should be included in the main output object, and primary output mode should be _multiple_ objects, each representing a single ping attempt/reply object. -- Buffer _data_ is generally irrelevant, as it cannot be specified, and only a `BufferSize` property should be exposed. `Replies.Buffer` property should remain `private`. +- Buffer _data_ is generally irrelevant, as it cannot be specified, and only a `BufferSize` property should be exposed. - `Replies.Options` property should be hidden from default formatting. -- Results output as a table, grouped by Destination address (in the case that multiple destinations are specified). +- Results output as a table, grouped by `Destination` IP / name (in the case that multiple destinations are specified). **Resulting output:** ```code - Destination: www.google.com -Source Address Latency (ms) BufferSize ------- ------- ------------ ---------- -WS-JOEL 172.217.2.132 36 32 -WS-JOEL 172.217.2.132 21 32 -WS-JOEL 172.217.2.132 25 32 -WS-JOEL 172.217.2.132 25 32 + Destination: 8.8.8.8 +Source Address Latency BufferSize Status + (ms) (B) +------ ------- ------- ---------- ------ +WS-JOEL 8.8.8.8 29 32 Success +WS-JOEL 8.8.8.8 22 32 Success +WS-JOEL 8.8.8.8 26 32 Success +WS-JOEL 8.8.8.8 35 32 Success ``` ### `Test-Connection www.google.com -TraceRoute` -- Each hop should be output as a separate object, each containing the `PingReply` objects as a property accessible by hidden from formatting. -- Main `TraceRouteResult` object should contain either ETS or class properties that calculate summary data from their four PingReplies. -- **Note:** This object type we're using is currently **bugged**, and all `PingReply` objects report `TtlExpired` as their status. Recommend investigating progress of fix for .NET Core 3, or designing custom solution for TraceRoute backing to resolve the issue. -- Output as a table, grouped by `DestinationHost` (Why is this property name different to that of the other object type used for standard pings?) +- Each ping response from a hop should be output as a separate object, each containing the `PingReply` object as a property accessible but hidden from formatting. +- **Note:** .NET Core's `PingReply` objects will always report bad data for `RoundtripTime`, `Status`, and `Options` properties when running a `-TraceRoute` as their status is reported (as it should be) as `TtlExpired` and the rest of the data is essentially discarded. For this reason, these properties are manually populated for `TraceStatus` and the `PingStatus` used in traceroutes. + - A separate `StopWatch` can be used to obtain reasonably accurate `Latency` values. + - The original `PingOptions` and `BufferSize` information can be manually inserted when the `PingStatus` object is created, giving the user the same data as would normally be returned on the `PingReply` + - The `Status` property will be overridden in a traceroute if the status is `TtlExpired`, as that behaviour is completely expected. +- Output as a table, grouped by `Target`. **Resulting output:** +```code + Target: 8.8.8.8 +Hop Hostname Latency Status Source TargetAddress + (ms) +--- -------- ------- ------ ------ ------------- + 1 192.168.22.254 1 Success WS-JOEL 8.8.8.8 + 1 192.168.22.254 1 Success WS-JOEL 8.8.8.8 + 1 192.168.22.254 1 Success WS-JOEL 8.8.8.8 + 2 75.144.219.238 2 Success WS-JOEL 8.8.8.8 + 2 75.144.219.238 7 Success WS-JOEL 8.8.8.8 + 2 75.144.219.238 6 Success WS-JOEL 8.8.8.8 + 3 96.120.97.17 18 Success WS-JOEL 8.8.8.8 + 3 96.120.97.17 11 Success WS-JOEL 8.8.8.8 + 3 96.120.97.17 12 Success WS-JOEL 8.8.8.8 + 4 96.110.136.85 16 Success WS-JOEL 8.8.8.8 + 4 96.110.136.85 17 Success WS-JOEL 8.8.8.8 + 4 96.110.136.85 27 Success WS-JOEL 8.8.8.8 + 5 68.85.127.121 27 Success WS-JOEL 8.8.8.8 + 5 68.85.127.121 28 Success WS-JOEL 8.8.8.8 + 5 68.85.127.121 25 Success WS-JOEL 8.8.8.8 + 6 68.86.165.161 37 Success WS-JOEL 8.8.8.8 + 6 68.86.165.161 26 Success WS-JOEL 8.8.8.8 + 6 68.86.165.161 30 Success WS-JOEL 8.8.8.8 + 7 68.86.90.205 25 Success WS-JOEL 8.8.8.8 + 7 68.86.90.205 24 Success WS-JOEL 8.8.8.8 + 7 68.86.90.205 36 Success WS-JOEL 8.8.8.8 + 8 68.86.82.70 26 Success WS-JOEL 8.8.8.8 + 8 68.86.82.70 26 Success WS-JOEL 8.8.8.8 + 8 68.86.82.70 27 Success WS-JOEL 8.8.8.8 + 9 23.30.207.242 28 Success WS-JOEL 8.8.8.8 + 9 23.30.207.242 32 Success WS-JOEL 8.8.8.8 + 9 23.30.207.242 28 Success WS-JOEL 8.8.8.8 + 10 108.170.253.17 26 Success WS-JOEL 8.8.8.8 + 10 108.170.253.17 26 Success WS-JOEL 8.8.8.8 + 10 108.170.253.17 29 Success WS-JOEL 8.8.8.8 + 11 216.239.59.125 25 Success WS-JOEL 8.8.8.8 + 11 216.239.59.125 39 Success WS-JOEL 8.8.8.8 + 11 216.239.59.125 25 Success WS-JOEL 8.8.8.8 + 12 8.8.8.8 23 Success WS-JOEL 8.8.8.8 + 12 8.8.8.8 29 Success WS-JOEL 8.8.8.8 + 12 8.8.8.8 27 Success WS-JOEL 8.8.8.8 +``` + + +## Alternate Proposals & Considerations + +### Grouping `TraceStatus` output +The behaviour of `Test-Connection -TraceRoute` prior to this RFC is to output trace data only after all 3 connection attempts have been made. +This behaviour could be retained, and the `TraceStatus` class contain all three `PingStatus` reply objects, with the formatting for `Latency` and `Status` properties showing multiple entries each. + +#### `Test-Connection www.google.com -TraceRoute` + +- Each hop should be output as a separate object, each containing the `PingReply` objects as a property accessible but hidden from formatting. +- Main `TraceRouteResult` object should contain either ETS or class properties that calculate summary data from their four PingReplies. +- Output as a table, grouped by `Destination` + +**Resulting output mockup:** ```code Destination: www.google.com Hop Latency (ms) DestinationAddress HopAddress BufferSize @@ -119,3 +195,12 @@ Hop Latency (ms) DestinationAddress HopAddress BufferSize 13 {0, 0, 0} 172.217.2.132 216.239.59.61 14 {32, 28, 20} 172.217.2.132 172.217.2.132 ``` + +However, by outputting one `TraceStatus` object per ping reply, the user is able to follow the trace more closely, and the output is not halted whenever there is a connection timeout. +Additionally, the user can always choose to group the output later simply by doing `Group-Object -Property [Hop|HopAddress|HopName]` if they wish. + +### Use the same type of object for `-MtuSizeDetect` switch + +This is _plausible_ but requires a change in the table formatter to permit conditional display of properties. +Currently, this has only been shown to be feasible potentially with list-type formatting. +As such, it makes more sense at the present time to have `-MtuSizeDetect` output an object that inherits from the main `PingStatus` object with the added property for `MtuSize`. From 7a3af51d26e961722c86e43724329ee2a289a45f Mon Sep 17 00:00:00 2001 From: Joey Aiello Date: Mon, 1 Jul 2019 12:04:21 -0700 Subject: [PATCH 8/8] Prepare for acceptance of RFC0037 (Test-Connection) --- .../RFC0037-Test-Connection.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename 1-Draft/RFCNNNN-Test-Connection.md => 2-Draft-Accepted/RFC0037-Test-Connection.md (100%) diff --git a/1-Draft/RFCNNNN-Test-Connection.md b/2-Draft-Accepted/RFC0037-Test-Connection.md similarity index 100% rename from 1-Draft/RFCNNNN-Test-Connection.md rename to 2-Draft-Accepted/RFC0037-Test-Connection.md