Hi Stefan,

Could you let me know when you'll have time to respond to my request 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: Wednesday, February 21, 2024 3:30 PM
To: 'Stefan Metzmacher' <me...@samba.org>
Cc: 'cifs-protocol@lists.samba.org' <cifs-protocol@lists.samba.org>; Microsoft 
Support <supportm...@microsoft.com>
Subject: RE: MS-SWM Q9a - RESOURCE_CHANGE.name content is completely ignored - 
TrackingID#2401050040013471

Hi Stefan,

I've been working with repros to understand the behavior around Async 
Notifications. What I've observed is that the Windows Client has a 'lazy' 
efficiency. It tracks the servers it connects to, and updates their Available 
or Unavailable status internally when it gets the notifications. It doesn't act 
on the changes unless and until it needs to, such as to find a new Witness node 
or data connection. By the same token, the Server is also efficiently lazy and 
doesn't send any notifications that are moot, or the client doesn't need the 
information. 

Do you have a question on the SWN documentation? What is the problem you're 
trying to solve? 

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, January 8, 2024 10:02 AM
To: Stefan Metzmacher <me...@samba.org>
Cc: cifs-protocol@lists.samba.org; Microsoft Support <supportm...@microsoft.com>
Subject: MS-SWM Q9a - RESOURCE_CHANGE.name content is completely ignored - 
TrackingID#2401050040013471

Hi Stefan, 

We have created SR 2401050040013471 to address this question: 

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.

I will dig into this and get back to you. 

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: Stefan Metzmacher <me...@samba.org>
Sent: Thursday, January 4, 2024 8:23 AM
To: Jeff McCashland (He/him) <je...@microsoft.com>
Cc: cifs-protocol@lists.samba.org; Microsoft Support <supportm...@microsoft.com>
Subject: [EXTERNAL] 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 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

Reply via email to