2011-06-07 00:16:09

by Ben Greear

[permalink] [raw]
Subject: Question on portmapper source

What is the official upstream project that contains the portmapper
source?

Also, the mount.nfs package, as I'll probably need to modify that
as well...

I am going to try to allow portmapper to bind to a particular
source IP when making outbound requests....

Thanks,
Ben

--
Ben Greear <[email protected]>
Candela Technologies Inc http://www.candelatech.com



2011-06-07 14:41:19

by Ben Greear

[permalink] [raw]
Subject: Re: Question on portmapper source

On 06/07/2011 12:52 AM, Max Matveev wrote:
> On Mon, 06 Jun 2011 20:52:39 -0700, Ben Greear wrote:
>
> greearb> On 06/06/2011 06:11 PM, Chuck Lever wrote:
> >>
> >> On Jun 6, 2011, at 8:16 PM, Ben Greear wrote:
> >>
> >>> What is the official upstream project that contains the portmapper
> >>> source?
> >>
> >> Do you want pormapper or rpcbind? The newer rpcbind actually allows RPC services to register at specific addresses, but the legacy portmapper does not.
>
> greearb> I don't know. I was testing my nfs binding patches (which
> greearb> fixes up some of the kernel processes, at least), but when
> greearb> trying to connect through a router, we noticed that this
> greearb> traffic was using the wrong source IP (ie, it wasn't bound):
>
> greearb> 0.000000 192.168.100.117 -> 172.16.0.100 TCP 33282> 111 [SYN] Seq=0
> greearb> Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSV=6981376 TSER=0 WS=10
> greearb> 3.007677 192.168.100.117 -> 172.16.0.100 TCP 33282> 111 [SYN] Seq=0
> greearb> Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSV=6984384 TSER=0 WS=10
> greearb> 9.023670 192.168.100.117 -> 172.16.0.100 TCP 33282> 111 [SYN] Seq=0
> greearb> Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSV=6990400 TSER=0 WS=10
> greearb> 10.010239 192.168.100.117 -> 172.16.0.100 Portmap V2 GETPORT Call NFS(100003)
> greearb> V:3 UDP
> greearb> 11.011269 192.168.100.117 -> 172.16.0.100 Portmap [RPC retransmission of #4]V2
> greearb> GETPORT Call NFS(100003) V:3 UDP
> greearb> 12.012298 192.168.100.117 -> 172.16.0.100 Portmap [RPC retransmission of #4]V2
> greearb> GETPORT Call NFS(100003) V:3 UDP
> greearb> 20.422093 192.168.100.117 -> 172.16.0.100 TCP 44732> 111 [SYN] Seq=0
> greearb> Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSV=7001798 TSER=0 WS=10
> greearb> 23.423683 192.168.100.117 -> 172.16.0.100 TCP 44732> 111 [SYN] Seq=0
> greearb> Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSV=7004800 TSER=0 WS=10
> greearb> 29.439676 192.168.100.117 -> 172.16.0.100 TCP 44732> 111 [SYN] Seq=0
> greearb> Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSV=7010816 TSER=0 WS=10
> greearb> 30.432383 192.168.100.117 -> 172.16.0.100 Portmap V2 GETPORT Call NFS(100003)
> greearb> V:3 UDP
> greearb> 31.433420 192.168.100.117 -> 172.16.0.100 Portmap [RPC retransmission of
> greearb> #10]V2 GETPORT Call NFS(100003) V:3 UDP
> greearb> 32.434458 192.168.100.117 -> 172.16.0.100 Portmap [RPC retransmission of
> greearb> #10]V2 GETPORT Call NFS(100003) V:3 UDP
>
> greearb> I need to make whatever is generating that traffic bind to a source IP.
>
> It's hard to say what's "rigth" and "wrong" from just this tcpdump:
> there is only one IP address.
>
> Recently there was a change to libtirpc to fix IP address selection
> for UDP datagrams:
>
> http://git.infradead.org/users/steved/libtirpc.git/commit/74ef3df0236c55185225c62fba34953f2582da72
>
> This is on the server side - it looks to me you're trying to deal with
> client side so it may be irrelevant.

It's not really wrong for most users..just for me because I need it (mount.nfs, evidently)
to use a specific source-IP so that my ip routing rules choose the correct route.

>
> >>> Also, the mount.nfs package, as I'll probably need to modify that
> >>> as well...
> >>
> >> mount.nfs is in nfs-utils.
>
> greearb> What is the git repo for it, though?
>
> http://git.infradead.org/users/steved/nfs-utils.git
>
> >>> I am going to try to allow portmapper to bind to a particular
> >>> source IP when making outbound requests....
> >>
> >> I don't understand. portmapper, as an RPC service, receives
> >> incoming requests. But we don't use the rpcbind CALLIT procedure
> >> on Linux, thus it doesn't make outbound requests.
>
> greearb> I could easily be confused about where the problem lies.
> greearb> Any idea what is generating those requests on the nfs client
> greearb> above?
>
> mount.nfs does.

Thanks, I'll dig into the mount.nfs code.

Thanks,
Ben

>
> max
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html


--
Ben Greear <[email protected]>
Candela Technologies Inc http://www.candelatech.com

2011-06-07 07:52:06

by Max Matveev

[permalink] [raw]
Subject: Re: Question on portmapper source

On Mon, 06 Jun 2011 20:52:39 -0700, Ben Greear wrote:

greearb> On 06/06/2011 06:11 PM, Chuck Lever wrote:
>>
>> On Jun 6, 2011, at 8:16 PM, Ben Greear wrote:
>>
>>> What is the official upstream project that contains the portmapper
>>> source?
>>
>> Do you want pormapper or rpcbind? The newer rpcbind actually allows RPC services to register at specific addresses, but the legacy portmapper does not.

greearb> I don't know. I was testing my nfs binding patches (which
greearb> fixes up some of the kernel processes, at least), but when
greearb> trying to connect through a router, we noticed that this
greearb> traffic was using the wrong source IP (ie, it wasn't bound):

greearb> 0.000000 192.168.100.117 -> 172.16.0.100 TCP 33282 > 111 [SYN] Seq=0
greearb> Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSV=6981376 TSER=0 WS=10
greearb> 3.007677 192.168.100.117 -> 172.16.0.100 TCP 33282 > 111 [SYN] Seq=0
greearb> Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSV=6984384 TSER=0 WS=10
greearb> 9.023670 192.168.100.117 -> 172.16.0.100 TCP 33282 > 111 [SYN] Seq=0
greearb> Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSV=6990400 TSER=0 WS=10
greearb> 10.010239 192.168.100.117 -> 172.16.0.100 Portmap V2 GETPORT Call NFS(100003)
greearb> V:3 UDP
greearb> 11.011269 192.168.100.117 -> 172.16.0.100 Portmap [RPC retransmission of #4]V2
greearb> GETPORT Call NFS(100003) V:3 UDP
greearb> 12.012298 192.168.100.117 -> 172.16.0.100 Portmap [RPC retransmission of #4]V2
greearb> GETPORT Call NFS(100003) V:3 UDP
greearb> 20.422093 192.168.100.117 -> 172.16.0.100 TCP 44732 > 111 [SYN] Seq=0
greearb> Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSV=7001798 TSER=0 WS=10
greearb> 23.423683 192.168.100.117 -> 172.16.0.100 TCP 44732 > 111 [SYN] Seq=0
greearb> Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSV=7004800 TSER=0 WS=10
greearb> 29.439676 192.168.100.117 -> 172.16.0.100 TCP 44732 > 111 [SYN] Seq=0
greearb> Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSV=7010816 TSER=0 WS=10
greearb> 30.432383 192.168.100.117 -> 172.16.0.100 Portmap V2 GETPORT Call NFS(100003)
greearb> V:3 UDP
greearb> 31.433420 192.168.100.117 -> 172.16.0.100 Portmap [RPC retransmission of
greearb> #10]V2 GETPORT Call NFS(100003) V:3 UDP
greearb> 32.434458 192.168.100.117 -> 172.16.0.100 Portmap [RPC retransmission of
greearb> #10]V2 GETPORT Call NFS(100003) V:3 UDP

greearb> I need to make whatever is generating that traffic bind to a source IP.

It's hard to say what's "rigth" and "wrong" from just this tcpdump:
there is only one IP address.

Recently there was a change to libtirpc to fix IP address selection
for UDP datagrams:

http://git.infradead.org/users/steved/libtirpc.git/commit/74ef3df0236c55185225c62fba34953f2582da72

This is on the server side - it looks to me you're trying to deal with
client side so it may be irrelevant.

>>> Also, the mount.nfs package, as I'll probably need to modify that
>>> as well...
>>
>> mount.nfs is in nfs-utils.

greearb> What is the git repo for it, though?

http://git.infradead.org/users/steved/nfs-utils.git

>>> I am going to try to allow portmapper to bind to a particular
>>> source IP when making outbound requests....
>>
>> I don't understand. portmapper, as an RPC service, receives
>> incoming requests. But we don't use the rpcbind CALLIT procedure
>> on Linux, thus it doesn't make outbound requests.

greearb> I could easily be confused about where the problem lies.
greearb> Any idea what is generating those requests on the nfs client
greearb> above?

mount.nfs does.

max

2011-06-07 03:52:44

by Ben Greear

[permalink] [raw]
Subject: Re: Question on portmapper source

On 06/06/2011 06:11 PM, Chuck Lever wrote:
>
> On Jun 6, 2011, at 8:16 PM, Ben Greear wrote:
>
>> What is the official upstream project that contains the portmapper
>> source?
>
> Do you want pormapper or rpcbind? The newer rpcbind actually allows RPC services to register at specific addresses, but the legacy portmapper does not.

I don't know. I was testing my nfs binding patches (which fixes up some of the kernel
processes, at least), but when trying to connect through a router, we noticed that
this traffic was using the wrong source IP (ie, it wasn't bound):

0.000000 192.168.100.117 -> 172.16.0.100 TCP 33282 > 111 [SYN] Seq=0
Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSV=6981376 TSER=0 WS=10
3.007677 192.168.100.117 -> 172.16.0.100 TCP 33282 > 111 [SYN] Seq=0
Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSV=6984384 TSER=0 WS=10
9.023670 192.168.100.117 -> 172.16.0.100 TCP 33282 > 111 [SYN] Seq=0
Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSV=6990400 TSER=0 WS=10
10.010239 192.168.100.117 -> 172.16.0.100 Portmap V2 GETPORT Call NFS(100003)
V:3 UDP
11.011269 192.168.100.117 -> 172.16.0.100 Portmap [RPC retransmission of #4]V2
GETPORT Call NFS(100003) V:3 UDP
12.012298 192.168.100.117 -> 172.16.0.100 Portmap [RPC retransmission of #4]V2
GETPORT Call NFS(100003) V:3 UDP
20.422093 192.168.100.117 -> 172.16.0.100 TCP 44732 > 111 [SYN] Seq=0
Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSV=7001798 TSER=0 WS=10
23.423683 192.168.100.117 -> 172.16.0.100 TCP 44732 > 111 [SYN] Seq=0
Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSV=7004800 TSER=0 WS=10
29.439676 192.168.100.117 -> 172.16.0.100 TCP 44732 > 111 [SYN] Seq=0
Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSV=7010816 TSER=0 WS=10
30.432383 192.168.100.117 -> 172.16.0.100 Portmap V2 GETPORT Call NFS(100003)
V:3 UDP
31.433420 192.168.100.117 -> 172.16.0.100 Portmap [RPC retransmission of
#10]V2 GETPORT Call NFS(100003) V:3 UDP
32.434458 192.168.100.117 -> 172.16.0.100 Portmap [RPC retransmission of
#10]V2 GETPORT Call NFS(100003) V:3 UDP

I need to make whatever is generating that traffic bind to a source IP.

>
>> Also, the mount.nfs package, as I'll probably need to modify that
>> as well...
>
> mount.nfs is in nfs-utils.

What is the git repo for it, though?

>
>> I am going to try to allow portmapper to bind to a particular
>> source IP when making outbound requests....
>
> I don't understand. portmapper, as an RPC service, receives incoming requests. But we don't use the rpcbind CALLIT procedure on Linux, thus it doesn't make outbound requests.

I could easily be confused about where the problem lies. Any idea what is generating
those requests on the nfs client above?

Thanks,
Ben


--
Ben Greear <[email protected]>
Candela Technologies Inc http://www.candelatech.com

2011-06-07 01:11:13

by Chuck Lever III

[permalink] [raw]
Subject: Re: Question on portmapper source


On Jun 6, 2011, at 8:16 PM, Ben Greear wrote:

> What is the official upstream project that contains the portmapper
> source?

Do you want pormapper or rpcbind? The newer rpcbind actually allows RPC services to register at specific addresses, but the legacy portmapper does not.

> Also, the mount.nfs package, as I'll probably need to modify that
> as well...

mount.nfs is in nfs-utils.

> I am going to try to allow portmapper to bind to a particular
> source IP when making outbound requests....

I don't understand. portmapper, as an RPC service, receives incoming requests. But we don't use the rpcbind CALLIT procedure on Linux, thus it doesn't make outbound requests.

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com