Mountd problem in 5.3

Dear all,

I'm troubleshooting some problem with NFS server, mountd to be precise. Server is running AIX 5.3. When NFS starts, mountd listens both on TCP and UDP ports:

rpcinfo -p | grep mountd
    100005    1   tcp   6666  mountd
    100005    2   tcp   6666  mountd
    100005    3   tcp   6666  mountd
    100005    1   udp   6666  mountd
    100005    2   udp   6666  mountd
    100005    3   udp   6666  mountd

Port 6666 is fixed in /etc/services. After the start server works fine, clients can mount exported directories without any issues. After some time (not sure how long, perhaps after some idle period) mountd stops listening on TCP and only UDP remains:

 rpcinfo -p | grep mountd
    100005    1   udp   6666  mountd
    100005    2   udp   6666  mountd
    100005    3   udp   6666  mountd

The problem is that clients still try to contact TCP port first, despite the fact (I can see that in network trace) that portmap says TCP program is not available. Such requests are retransmitted until they timeout and there is 2 min delay in service because of such retransmits. After timeout client tries UDP port and everything goes fine. Roughly speaking, network conversation goes like this:

Client: GETPORT Call MOUNT TCP
Server: GETPORT Reply PROGRAM_NOT_AVAILABLE
Client: GETPORT Call MOUNT UDP
Server: GETPORT Reply Port: 6666
<...some communication ongoing...>
Client: sends SYN to TCP port 6666
Client: resend SYN
Client: resend SYN
....
Timeout
Client: GETPORT Call MOUNT UDP
Server: GETPORT Reply Port: 6666
Client: MNT Call
...and everything goes ok...

Any ideas why mountd stops listening on TCP? Of course, there is another issue with clients who insist on TCP and ignores answers from portmap, but I thought I'll start with server side. In fact, I tried to read a bit about such client behaviour, too, but found nothing.

The description of your problem lacks a few (IMHO necessary) details: which NFS version do you use? If i remember correctly NFSv2 uses UDP, NFSv3 uses TCP. This is why you have to explicitly state which NFS version the share should be exported with.

If you use NFSv4 you need to specify your NFS-domain in addition. I usually set it to the same name as the DNS-domain, but its content doesn't really matter as long as it is set at all and its content is consistent between NFS-server and -clients.

Please post (a significant part of) the content of /etc/exports .

I hope this helps.

bakunin

1 Like

NFSv3 is used and version is stated explicitly on client side. I also tried to specify protocol (TCP or UDP) in client options, but it doesn't change anything. On server side we do not specify neither version, nor protocol. As I understand from docs, if version is not explicitly stated, server should work both with v2 and v3.

Entries in

/etc/exports

are quite simple, such as:

/test -rw,root=host1,access=host1

only lists of hosts differ.