There are a number of inter-related issues regarding the seesions trunking
model for sessions. Since these issues are so tightly inter-related, it is
assumed that a single integrated solution will need to address all of them
together and so they are being disucssed as a single "issue".
The current sessions text assumes that the client has externally given (from
DNS or otherwise) presumed correct information about when two communications
endpoints connect to the same server, allowing multiple connection sfor the
same session or multiple session to the same server to be established.
The problem with this approach is that there will be cases in which such
information is not available, and trying to protect against them, in turn
causes further difficulties for migration and failover in clustered
environments.
In particular, if a client establishes a session to two different IP addresses,
without the knowledge that they terminate at the same server, confusion can
occur if the client and the server have different views of the situation.
In particular, if the server thinks that he is dealing with a single client
while the client has no way to know that what he thinks are two servers are
in fact one, state management can become totally confused.
In order to prevent such a situation, v4.0 has established the rule that
the nfs_client_id4 should be varied based on the server IP address. This
causes the server and the client to have a common view of the situation.
The server thinks that there are two clients while the client thinks there
are two servers. The result, while at variance with reality, can work.
The problem is that it creates difficulties for failover. If a client fails
over to another server clustered with the first, it needs to be recognized
as the same client, for the purposes of reboot detection etc. This is what
the current strategy of changing nfs_cleint_id4's breaks.
We need to have some way of the server declaring its identity to the client
so as to find trunking situations, even without external knowledge (even though
the external knowledge is helpful for finding the alternate paths). This would
allow the client to declare his own identity with a fixed (i.e. not varying
based on the destination server) nfs_client_id4, and so avoid not having
a good grasp of client identity in clustered server situations.
|