From: linmiaohe <linmiaohe@huawei.com>
To: David Ahern <dsa@cumulusnetworks.com>, <shrijeet@gmail.com>,
<davem@davemloft.net>, <netdev@vger.kernel.org>,
<linux-kernel@vger.kernel.org>
Cc: Mingfangsen <mingfangsen@huawei.com>
Subject: some trouble when using vrf
Date: Tue, 16 Apr 2019 19:26:27 +0800 [thread overview]
Message-ID: <15adf635-a74b-e9e3-5dad-b35890f0a746@huawei.com> (raw)
Hi all:
I meet some trouble when using vrf, it's very nice of you if you
can help me fix it.
1.If I bind a vrf address before I set SO_BINDTODEVICE opts to bind an
enslaved device, "Cannot assign requested address" will occurs. It's
because only after we set SO_BINDTODEVICE opts to bind an enslaved device,
then we can lookup the route in the specified l3mdev domain.
I think we couldn't limit the order of bind ip addr and SO_BINDTODEVICE opts
otherwise many vrf unaware apps many need to change their code.
I can't find a convenient way to fix it.Here is an example:
...
bind(sock_fd, (struct sockaddr *)&addr_serv, sizeof(addr_serv));
...
ret = setsockopt(sock_fd, SOL_SOCKET, SO_BINDTODEVICE, bind_dev, strlen(bind_dev)+1);
...
This code snipet doesn't work if the ip address of addr_serv is not in default vrf. And
"Cannot assign requested address" will occurs.
2.When I run a udp server in default vrf and set net.ipv4.udp_l3mdev_accept=1,
it's supposed to work accorss VRFs.
But it occurs when udp server received a packet, it sends back with the source
ip address from default vrf which is supposed to from the specified l3mdev domain.
And the connection between server and client is broken. It's because udp server
run in default vrf and doesn't bind the enslaved device, so only the route table in
default vrf is avaliable.
For example,I run a udp server in default vrf and set net.ipv4.udp_l3mdev_accept=1:
[root@localhost vrf]# sysctl -a | grep l3mdev
net.ipv4.raw_l3mdev_accept = 1
net.ipv4.tcp_l3mdev_accept = 1
net.ipv4.udp_l3mdev_accept = 1
Then connect the server and send a udp packet to the specified vrf. Here is tcpdump output:
17:28:54.925417 IP 10.0.0.2.43003 > 10.0.0.1.irdmi: UDP, length 17
17:28:54.925953 IP 9.85.153.236.irdmi > 10.0.0.2.43003: UDP, length 17
ps. 10.0.0.2 is client ip, 10.0.0.1 is specified vrf ip, and 9.85.153.236 is default vrf ip.
10.0.0.1 and 9.85.153.236 are in the same host.
Thanks a lot if you can help me fix these. Have a nice day.
next reply other threads:[~2019-04-16 11:26 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-04-16 11:26 linmiaohe [this message]
2019-04-16 12:11 ` Mike Manning
2019-04-16 14:16 ` linmiaohe
2019-04-16 15:20 ` David Ahern
2019-04-17 2:22 ` linmiaohe
2019-04-17 4:56 ` David Ahern
2019-04-17 6:52 ` linmiaohe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=15adf635-a74b-e9e3-5dad-b35890f0a746@huawei.com \
--to=linmiaohe@huawei.com \
--cc=davem@davemloft.net \
--cc=dsa@cumulusnetworks.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingfangsen@huawei.com \
--cc=netdev@vger.kernel.org \
--cc=shrijeet@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®