Re: [cifs-protocol] MS-SWN Q9: Section 3.2.4.27-3.2.4.29 seems to actions triggered when the client receives an RESP_ASYNC_NOTIFY - TrackingID#2311070040010334

2024-01-04 Thread Stefan Metzmacher via cifs-protocol

Hi Jeff,


I didn't see a response to my previous request. It's not clear to us what you 
are looking for here. Having a single netname for multiple nodes sounds similar 
to a SOFS configuration. We use DNS to enumerate the IP addresses.

Windows uses witness for the following:
-   If networking interface on the server has changed then hint client 
about that so it can query list of new interfaces sooner than default 10 
minutes poling interval.


Do you mean the witness GetInterfaceList() call or the 
FSCTL_QUERY_NETWORK_INTERFACE_INFO used for smb3 multichannel?


-   If cluster node is down then notify client about that so it can 
disconnect from the downer and connect to some other node, before TCP/IP 
timeout expires. Would work only of cluster can detect downer faster than 
TCP/IP timeout.


I'll refer to this below with RESOURCE_CHANGE.


-   If cluster has asymmetric storage (one node can process IOs faster than 
the others) then hint client that it should move to that node. In Windows if 
Direct IO is possible then storage connectivity is considered symmetrical and 
we prefer load balancing clients across all cluster nodes. If we are in File 
System Redirected IO (same blog) then storage connectivity is asymmetrical and 
client is advised to move to the node that has file system mounted to avoid 
double hop..


I'll refer to this below with CLIENT_MOVE_NOTIFICATION.


All notifications are advisory.

Could you clarify your expectations for the doc and tell us more about what 
you're trying to accomplish?


I'll try...


This is in regards to your question:
Question 9:
Section 3.2.4.27-3.2.4.29 seems to actions triggered when the client receives an RESP_ASYNC_NOTIFY, but there's no specification on how the individual witness registrations handle specific notification events. 



E.g. based on the different posibilities for RESOURCE_CHANGE.ResourceName


So far I found this in my testing:

A RESOURCE_CHANGE message with WITNESS_RESOURCE_STATE_UNAVAILABLE will trigger 
a reconnect,
but the RESOURCE_CHANGE.name content is completely ignored, currently I'm 
sending the ip address string
that's no longer available, it's mainly in order to make it easier to read 
wireshark traces or logs.
It could also be "SoME RandOM-StriNg!!!".

A RESOURCE_CHANGE message with WITNESS_RESOURCE_STATE_AVAILABLE also doesn't 
have any notable effect.

I think this should be documented somewhere.

If needed I an create network captures for it.


Is a CLIENT_MOVE_NOTIFICATION a better choice when using a single 
InterfaceGroupName for all nodes?


The line/question above is no longer useful, as I found how to get the client 
react
on RESOURCE_CHANGE with WITNESS_RESOURCE_STATE_UNAVAILABLE.

But by testing I found that a CLIENT_MOVE_NOTIFICATION is ignored if the list 
of ip addresses
if the also contains the ip address that was given to the Register[Ex]() call.

I have only tested the case where all ip addresses have IPADDR_ONLINE set,
but I haven't tested if it's needed or what happens with IPADDR_OFFLINE or
when the given ip address if not part of the set that is resolved by dns
and/or isn't available.

I think this should be documented somewhere.

If needed I an create network captures for it.


I'm ready to file document change requests to explain the processing, but I 
don't fully understand your example question.


I hope the above makes it clearer.


Resource Change notifications are used when resources such as disks change 
status


The point is that as noted above it seems RESOURCE_CHANGE.name seems to be 
completely ignored.


while Client Move notifications are used when a node has gone down and the 
client needs to move to another node.


Yes, I found what I needed, but these details should be documented somewhere
in order to let server implementers know how to drive a windows client to
a desired/expected behavior.


They aren't interchangeable. Could you clarify your question?


I got it thanks!
metze


___
cifs-protocol mailing list
cifs-protocol@lists.samba.org
https://lists.samba.org/mailman/listinfo/cifs-protocol


Re: [cifs-protocol] MS-SWN Q9: Section 3.2.4.27-3.2.4.29 seems to actions triggered when the client receives an RESP_ASYNC_NOTIFY - TrackingID#2311070040010334

2024-01-03 Thread Jeff McCashland (He/him) via cifs-protocol
Hi Stefan,

Could you let me know when you think you'll have time to provide more 
information as requested below? 

Best regards,
Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft Protocol Open 
Specifications Team
Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone: (UTC-08:00) 
Pacific Time (US and Canada)
Local country phone number found here: 
http://support.microsoft.com/globalenglish | Extension 1138300

-Original Message-
From: Jeff McCashland (He/him) 
Sent: Monday, December 18, 2023 2:49 PM
To: metze 
Cc: cifs-protocol@lists.samba.org; Microsoft Support 
Subject: RE: MS-SWN Q9: Section 3.2.4.27-3.2.4.29 seems to actions triggered 
when the client receives an RESP_ASYNC_NOTIFY - TrackingID#2311070040010334

Hi Stefan,

I didn't see a response to my previous request. It's not clear to us what you 
are looking for here. Having a single netname for multiple nodes sounds similar 
to a SOFS configuration. We use DNS to enumerate the IP addresses. 

Windows uses witness for the following: 
-   If networking interface on the server has changed then hint client 
about that so it can query list of new interfaces sooner than default 10 
minutes poling interval.
-   If cluster node is down then notify client about that so it can 
disconnect from the downer and connect to some other node, before TCP/IP 
timeout expires. Would work only of cluster can detect downer faster than 
TCP/IP timeout.
-   If cluster has asymmetric storage (one node can process IOs faster than 
the others) then hint client that it should move to that node. In Windows if 
Direct IO is possible then storage connectivity is considered symmetrical and 
we prefer load balancing clients across all cluster nodes. If we are in File 
System Redirected IO (same blog) then storage connectivity is asymmetrical and 
client is advised to move to the node that has file system mounted to avoid 
double hop.

All notifications are advisory.

Could you clarify your expectations for the doc and tell us more about what 
you're trying to accomplish? 

Best regards,
Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft Protocol Open 
Specifications Team
Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone: (UTC-08:00) 
Pacific Time (US and Canada) Local country phone number found here: 
http://support.microsoft.com/globalenglish | Extension 1138300

-Original Message-
From: Jeff McCashland (He/him)
Sent: Tuesday, November 28, 2023 11:00 AM
To: metze 
Cc: cifs-protocol@lists.samba.org; Microsoft Support 
Subject: MS-SWN Q9: Section 3.2.4.27-3.2.4.29 seems to actions triggered when 
the client receives an RESP_ASYNC_NOTIFY - TrackingID#2311070040010334

Hi Stefan,

This is in regards to your question: 
Question 9:
Section 3.2.4.27-3.2.4.29 seems to actions triggered when the client receives 
an RESP_ASYNC_NOTIFY, but there's no specification on how the individual 
witness registrations handle specific notification events. E.g. based on the 
different posibilities for RESOURCE_CHANGE.ResourceName Is a 
CLIENT_MOVE_NOTIFICATION a better choice when using a single InterfaceGroupName 
for all nodes?

I'm ready to file document change requests to explain the processing, but I 
don't fully understand your example question. Resource Change notifications are 
used when resources such as disks change status, while Client Move 
notifications are used when a node has gone down and the client needs to move 
to another node. 

They aren't interchangeable. Could you clarify your question? 

Best regards,
Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft Protocol Open 
Specifications Team
Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone: (UTC-08:00) 
Pacific Time (US and Canada) Local country phone number found here: 
http://support.microsoft.com/globalenglish | Extension 1138300

-Original Message-
From: Tom Jebo 
Sent: Tuesday, November 7, 2023 9:47 AM
To: metze 
Cc: cifs-protocol@lists.samba.org; Microsoft Support 
Subject: RE: [EXTERNAL] Trying to let a Windows client use MS-SWN against a 
samba cluster - TrackingID#2311070040009453 

[dochelp to bcc]
[support mail to cc]

Hi Stefan, 

Thanks for your request regarding MS-SWN (various questions). One of the Open 
Specifications team members will respond to assist you. In the meantime, we’ve 
created the following cases to track this request (I've added the first case to 
the subject so initially, please leave that case number in the subject when 
communicating with our team about this request.

Q1: 2311070040009453
Q2: 2311070040009696
Q3: 2311070040009793
Q4: 2311070040009927
Q5: 2311070040010003
Q6: 2311070040010094
Q7: 2311070040010182
Q8: 2311070040010257
Q9: 2311070040010334
Q10: 2311070040010406
Q11: 2311070040010486

Best regards,
Tom Jebo
Microsoft Open Specifications Support

-Original Message-
From: Stefan Metzmacher 
Sent: Tuesday, November 7, 2023 6:30 AM
To: Interoperability Documentation 

Re: [cifs-protocol] MS-SWN Q9: Section 3.2.4.27-3.2.4.29 seems to actions triggered when the client receives an RESP_ASYNC_NOTIFY - TrackingID#2311070040010334

2023-12-18 Thread Jeff McCashland (He/him) via cifs-protocol
Hi Stefan,

I didn't see a response to my previous request. It's not clear to us what you 
are looking for here. Having a single netname for multiple nodes sounds similar 
to a SOFS configuration. We use DNS to enumerate the IP addresses. 

Windows uses witness for the following: 
-   If networking interface on the server has changed then hint client 
about that so it can query list of new interfaces sooner than default 10 
minutes poling interval.
-   If cluster node is down then notify client about that so it can 
disconnect from the downer and connect to some other node, before TCP/IP 
timeout expires. Would work only of cluster can detect downer faster than 
TCP/IP timeout.
-   If cluster has asymmetric storage (one node can process IOs faster than 
the others) then hint client that it should move to that node. In Windows if 
Direct IO is possible then storage connectivity is considered symmetrical and 
we prefer load balancing clients across all cluster nodes. If we are in File 
System Redirected IO (same blog) then storage connectivity is asymmetrical and 
client is advised to move to the node that has file system mounted to avoid 
double hop.

All notifications are advisory.

Could you clarify your expectations for the doc and tell us more about what 
you're trying to accomplish? 

Best regards,
Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft Protocol Open 
Specifications Team
Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone: (UTC-08:00) 
Pacific Time (US and Canada)
Local country phone number found here: 
http://support.microsoft.com/globalenglish | Extension 1138300

-Original Message-
From: Jeff McCashland (He/him) 
Sent: Tuesday, November 28, 2023 11:00 AM
To: metze 
Cc: cifs-protocol@lists.samba.org; Microsoft Support 
Subject: MS-SWN Q9: Section 3.2.4.27-3.2.4.29 seems to actions triggered when 
the client receives an RESP_ASYNC_NOTIFY - TrackingID#2311070040010334

Hi Stefan,

This is in regards to your question: 
Question 9:
Section 3.2.4.27-3.2.4.29 seems to actions triggered when the client receives 
an RESP_ASYNC_NOTIFY, but there's no specification on how the individual 
witness registrations handle specific notification events. E.g. based on the 
different posibilities for RESOURCE_CHANGE.ResourceName Is a 
CLIENT_MOVE_NOTIFICATION a better choice when using a single InterfaceGroupName 
for all nodes?

I'm ready to file document change requests to explain the processing, but I 
don't fully understand your example question. Resource Change notifications are 
used when resources such as disks change status, while Client Move 
notifications are used when a node has gone down and the client needs to move 
to another node. 

They aren't interchangeable. Could you clarify your question? 

Best regards,
Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft Protocol Open 
Specifications Team
Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone: (UTC-08:00) 
Pacific Time (US and Canada) Local country phone number found here: 
http://support.microsoft.com/globalenglish | Extension 1138300

-Original Message-
From: Tom Jebo 
Sent: Tuesday, November 7, 2023 9:47 AM
To: metze 
Cc: cifs-protocol@lists.samba.org; Microsoft Support 
Subject: RE: [EXTERNAL] Trying to let a Windows client use MS-SWN against a 
samba cluster - TrackingID#2311070040009453 

[dochelp to bcc]
[support mail to cc]

Hi Stefan, 

Thanks for your request regarding MS-SWN (various questions). One of the Open 
Specifications team members will respond to assist you. In the meantime, we’ve 
created the following cases to track this request (I've added the first case to 
the subject so initially, please leave that case number in the subject when 
communicating with our team about this request.

Q1: 2311070040009453
Q2: 2311070040009696
Q3: 2311070040009793
Q4: 2311070040009927
Q5: 2311070040010003
Q6: 2311070040010094
Q7: 2311070040010182
Q8: 2311070040010257
Q9: 2311070040010334
Q10: 2311070040010406
Q11: 2311070040010486

Best regards,
Tom Jebo
Microsoft Open Specifications Support

-Original Message-
From: Stefan Metzmacher 
Sent: Tuesday, November 7, 2023 6:30 AM
To: Interoperability Documentation Help 
Cc: cifs-protocol@lists.samba.org
Subject: [EXTERNAL] Trying to let a Windows client use MS-SWN against a samba 
cluster

Hi DocHelp,

I'm currently implementing MS-SWN for samba in order to allow clients to move 
to a different network interface or cluster node if a specific interface or a 
complete cluster node gets offline.

In a Samba cluster we have multiple nodes, but just a single netname for all of 
them, so there's only a single computer with it's sAMAccountName in active 
directory. But each node can have multiple ip addresses, which may move around 
between nodes, but some can be node local.

Now my goal is to let a Windows client use the witness service in order to get 
notified about ip addresses going down, because the interface 

[cifs-protocol] MS-SWN Q9: Section 3.2.4.27-3.2.4.29 seems to actions triggered when the client receives an RESP_ASYNC_NOTIFY - TrackingID#2311070040010334

2023-11-28 Thread Jeff McCashland (He/him) via cifs-protocol
Hi Stefan,

This is in regards to your question: 
Question 9:
Section 3.2.4.27-3.2.4.29 seems to actions triggered when the client receives 
an RESP_ASYNC_NOTIFY, but there's no specification on how the individual 
witness registrations handle specific notification events. E.g. based on the 
different posibilities for RESOURCE_CHANGE.ResourceName Is a 
CLIENT_MOVE_NOTIFICATION a better choice when using a single InterfaceGroupName 
for all nodes?

I'm ready to file document change requests to explain the processing, but I 
don't fully understand your example question. Resource Change notifications are 
used when resources such as disks change status, while Client Move 
notifications are used when a node has gone down and the client needs to move 
to another node. 

They aren't interchangeable. Could you clarify your question? 

Best regards,
Jeff McCashland (He/him) | Senior Escalation Engineer | Microsoft Protocol Open 
Specifications Team
Phone: +1 (425) 703-8300 x38300 | Hours: 9am-5pm | Time zone: (UTC-08:00) 
Pacific Time (US and Canada)
Local country phone number found here: 
http://support.microsoft.com/globalenglish | Extension 1138300

-Original Message-
From: Tom Jebo  
Sent: Tuesday, November 7, 2023 9:47 AM
To: metze 
Cc: cifs-protocol@lists.samba.org; Microsoft Support 
Subject: RE: [EXTERNAL] Trying to let a Windows client use MS-SWN against a 
samba cluster - TrackingID#2311070040009453 

[dochelp to bcc]
[support mail to cc]

Hi Stefan, 

Thanks for your request regarding MS-SWN (various questions). One of the Open 
Specifications team members will respond to assist you. In the meantime, we’ve 
created the following cases to track this request (I've added the first case to 
the subject so initially, please leave that case number in the subject when 
communicating with our team about this request.

Q1: 2311070040009453
Q2: 2311070040009696
Q3: 2311070040009793
Q4: 2311070040009927
Q5: 2311070040010003
Q6: 2311070040010094
Q7: 2311070040010182
Q8: 2311070040010257
Q9: 2311070040010334
Q10: 2311070040010406
Q11: 2311070040010486

Best regards,
Tom Jebo
Microsoft Open Specifications Support

-Original Message-
From: Stefan Metzmacher  
Sent: Tuesday, November 7, 2023 6:30 AM
To: Interoperability Documentation Help 
Cc: cifs-protocol@lists.samba.org
Subject: [EXTERNAL] Trying to let a Windows client use MS-SWN against a samba 
cluster

Hi DocHelp,

I'm currently implementing MS-SWN for samba in order to allow clients to move 
to a different network interface or cluster node if a specific interface or a 
complete cluster node gets offline.

In a Samba cluster we have multiple nodes, but just a single netname for all of 
them, so there's only a single computer with it's sAMAccountName in active 
directory. But each node can have multiple ip addresses, which may move around 
between nodes, but some can be node local.

Now my goal is to let a Windows client use the witness service in order to get 
notified about ip addresses going down, because the interface link or a whole 
node gets offline.

In order to archive that I need to understand the exact client behavior 
implemented in the Windows clients (also with possible differences of various 
Windows versions).

However this is hard from just reading the existing docs...

MS-SWN "3.2 Witness Client Details" doesn't contain any detail for the logical 
processing, e.g.

- 3.2.4.1 Application Requests Witness Register
   doesn't say that WITNESS_INTERFACE_INFO.InterfaceGroupName
   is that name used as part of the servicePrincipalName
   (after being prefixed by 'CIFS/') passed to the authentication
   layer (spnego, kerberos, ntlm), but I'm seeing this
   behavior from a Windows 2022 server as client.

   In older version (Windows 2012) I saw that the principal
   was requested by the method from MS-RPCE 2.2.1.3.4
   rpc_mgmt_inq_princ_name.

Question 1:
Can you please update this with a product behavior note reflecting the reality 
with all Windows versions.

- 3.2.4.2 Application Requests Witness Event Notification
   only says: ...
   The status and any received RESP_ASYNC_NOTIFY result obtained from
   the server in the previous step MUST be returned to the caller.

- 3.2.4.3 Application Requests Witness UnRegister
   Has the following notable section:
 ... or if the WitnessRegistration.WitnessNotifyRequest is TRUE,
 the client MUST stop processing and return an implementation-defined
 local error to the caller.

   So it seems with a pending AsyncNotify request the Unregister
   seems to be skipped.

With that I'd expect the core logic/behavior of a Windows client being 
specified in MS-SMB2, when I look there I found the following


3.2.5.2 Receiving an SMB2 NEGOTIATE Response

   ...

   If SMB2_GLOBAL_CAP_PERSISTENT_HANDLES is set in the Capabilities field of the
   SMB2 NEGOTIATE Response, the client SHOULD invoke the event as specified in
   [MS-SWN] section 3.2.4.1 by providing Connection.ServerName as Netname