diff mbox

[pve-devel] bridge vlan range, kernel 4.1 : "message truncated" warning when too much vlans defined

Message ID 972878625.39892449.1441867226052.JavaMail.zimbra@oxygem.tv
State RFC, archived
Delegated to: stephen hemminger
Headers show

Commit Message

Alexandre DERUMIER Sept. 10, 2015, 6:40 a.m. UTC
Hi,

This still not fixed in iproute 4.2.

Is they any plan to increase the rtnl_dump_filter buffer size soon ?

Regards,

Alexandre Derumier


----- Mail original -----
De: "aderumier" <aderumier@odiso.com>
À: "Arad, Ronen" <ronen.arad@intel.com>
Cc: "netdev" <netdev@vger.kernel.org>, "pve-devel" <pve-devel@pve.proxmox.com>
Envoyé: Jeudi 30 Juillet 2015 07:31:44
Objet: Re: [pve-devel] bridge vlan range, kernel 4.1 : "message truncated" warning when too much vlans defined

Thanks Ronen, 

I have tested 

- char buf[16384]; 
+ char buf[3*16384]; 


and It's working fine to handle 4096 vlans numbers. 

(The problem was really the number of vlans ids defined, 
could be 1 interface with 2-4095vlans, or 100 interfaces with same 2-4095vlans). 

With this buffer size it's working fine 


Thanks for the fast reply. 

Regards, 

Alexadre 

----- Mail original ----- 
De: "Arad, Ronen" <ronen.arad@intel.com> 
À: "aderumier" <aderumier@odiso.com>, "netdev" <netdev@vger.kernel.org> 
Cc: "pve-devel" <pve-devel@pve.proxmox.com> 
Envoyé: Jeudi 30 Juillet 2015 04:03:06 
Objet: RE: bridge vlan range, kernel 4.1 : "message truncated" warning when too much vlans defined 

The easiest fix is in iproute2. 
Increasing the buffer size used in rtnl_dump_filter_l 3x empirically resolves the 
issue. 

The root-cause is due to the buffer size calculation of dump request in the 
kernel. It is based on the total number of VLANs and does not account for 
compressed vlan requests. 
The flag argument is not propagated to get size functions. 

Fixing the size calculation in the kernel would work most of the time but would 
Fail when the number of ranges (and/or non-contiguous VLANs) exceeds ~1800. 

Therefore, fixing the size calculation in the kernel does not worth the 
Effort. Fixing iproute2 seems the easy way to overcome the issue. 

Ronen 

>-----Original Message----- 
>From: netdev-owner@vger.kernel.org [mailto:netdev-owner@vger.kernel.org] On 
>Behalf Of Alexandre DERUMIER 
>Sent: Wednesday, July 29, 2015 11:25 AM 
>To: netdev 
>Cc: pve-devel 
>Subject: bridge vlan range, kernel 4.1 : "message truncated" warning when too 
>much vlans defined 
> 
>Hi, 
> 
>I'm currently testing vlan range on bridge filtering with kernel 4.1. 
> 
> 
>If I defined too much vlans, or too big vlan range, 
>I have a warning "message truncated", even if I'm using "-c" 
> 
> 
># bridge -c vlan 
>Message truncated 
>port vlan ids 
>eth2 1 PVID Egress Untagged 
> 
>bond0 1 PVID Egress Untagged 
>2-1850 
> 
>vmbr0 1 PVID Egress Untagged 
>94 
> 
> 
>or 
># bridge -c vlan 
>Message truncated 
>port vlan ids 
>eth2 1 PVID Egress Untagged 
>2-900 
>bond0 1 PVID Egress Untagged 
>2-900 
> 
>vmbr0 1 PVID Egress Untagged 
>94 
> 
> 
> 
>Also, more important, this is also impact "ip", and truncate the output 
> 
>#ip link 
> 
>Message truncated 
>1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode 
>DEFAULT group default 
>link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
>2: eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 9000 qdisc pfifo_fast master 
>vmbr1 state DOWN mode DEFAULT group default qlen 1000 
>link/ether 00:15:17:80:29:e6 brd ff:ff:ff:ff:ff:ff 
>3: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT 
>group default qlen 1000 
>link/ether 00:15:17:80:29:e7 brd ff:ff:ff:ff:ff:ff 
>4: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master 
>bond0 state UP mode DEFAULT group default qlen 1000 
>link/ether 00:1a:a0:3c:98:c5 brd ff:ff:ff:ff:ff:ff 
>5: eth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast master 
>ovs-system state UP mode DEFAULT group default qlen 1000 
>link/ether 68:05:ca:09:c3:7c brd ff:ff:ff:ff:ff:ff 
>6: eth4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc pfifo_fast master 
>ovs-system state UP mode DEFAULT group default qlen 1000 
>link/ether 68:05:ca:09:c3:7d brd ff:ff:ff:ff:ff:ff 
>7: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc mq master 
>bond0 state UP mode DEFAULT group default qlen 1000 
>link/ether 00:1a:a0:3c:98:c5 brd ff:ff:ff:ff:ff:ff 
>8: ovs-system@NONE: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode 
>DEFAULT group default 
>link/ether 7e:dd:5d:ea:ef:26 brd ff:ff:ff:ff:ff:ff 
>9: vmbr10@NONE: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc noqueue state 
>UNKNOWN mode DEFAULT group default 
>link/ether 68:05:ca:09:c3:7d brd ff:ff:ff:ff:ff:ff 
>10: bond1@NONE: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc noqueue state 
>UNKNOWN mode DEFAULT group default 
>link/ether 8a:c3:da:b0:9d:87 brd ff:ff:ff:ff:ff:ff 
>11: bond0@NONE: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc 
>noqueue master vmbr0 state UP mode DEFAULT group default 
>link/ether 00:1a:a0:3c:98:c5 brd ff:ff:ff:ff:ff:ff 
>12: vmbr0@NONE: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state 
>UP mode DEFAULT group default 
>link/ether 00:1a:a0:3c:98:c5 brd ff:ff:ff:ff:ff:ff 
>13: vmbr0.94@vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue 
>state UP mode DEFAULT group default 
>link/ether 00:1a:a0:3c:98:c5 brd ff:ff:ff:ff:ff:ff 
> 
>---->should have more interfaces here 
> 
> 
>Is it a known bug ? 
> 
> 
> 
>Regards, 
> 
>Alexandre Derumier 
> 
>-- 
>To unsubscribe from this list: send the line "unsubscribe netdev" in 
>the body of a message to majordomo@vger.kernel.org 
>More majordomo info at http://vger.kernel.org/majordomo-info.html 
_______________________________________________ 
pve-devel mailing list 
pve-devel@pve.proxmox.com 
http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel 
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Roopa Prabhu Sept. 10, 2015, 10:26 p.m. UTC | #1
On 9/9/15, 11:40 PM, Alexandre DERUMIER wrote:
> Hi,
>
> This still not fixed in iproute 4.2.
>
> Is they any plan to increase the rtnl_dump_filter buffer size soon ?
>
Instead of increasing the default size, it would be nicer if this was 
configurable for iproute2 (I haven't looked yet).
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller Sept. 10, 2015, 10:58 p.m. UTC | #2
From: roopa <roopa@cumulusnetworks.com>
Date: Thu, 10 Sep 2015 15:26:30 -0700

> On 9/9/15, 11:40 PM, Alexandre DERUMIER wrote:
>> Hi,
>>
>> This still not fixed in iproute 4.2.
>>
>> Is they any plan to increase the rtnl_dump_filter buffer size soon ?
>
> Instead of increasing the default size, it would be nicer if this was
> configurable for iproute2 (I haven't looked yet).

I would definitely prefer this be done in a run-time manner of some
sort, and then other libraries can use iproute2's logic as a reference
for how to deal with this reliably, properly, and in a %100
future-proof manner.

Something of the "if request X fails, double the buffer size" variety.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Roopa Prabhu Sept. 11, 2015, 12:02 a.m. UTC | #3
On 9/10/15, 3:58 PM, David Miller wrote:
> From: roopa <roopa@cumulusnetworks.com>
> Date: Thu, 10 Sep 2015 15:26:30 -0700
>
>> On 9/9/15, 11:40 PM, Alexandre DERUMIER wrote:
>>> Hi,
>>>
>>> This still not fixed in iproute 4.2.
>>>
>>> Is they any plan to increase the rtnl_dump_filter buffer size soon ?
>> Instead of increasing the default size, it would be nicer if this was
>> configurable for iproute2 (I haven't looked yet).
> I would definitely prefer this be done in a run-time manner of some
> sort, and then other libraries can use iproute2's logic as a reference
> for how to deal with this reliably, properly, and in a %100
> future-proof manner.
>
> Something of the "if request X fails, double the buffer size" variety.
agreed. This would be ideal. libnl already handles it this way.
We have to move iproute2 recv buffer to dynamic allocation and also 
realloc on MSG_TRUNC.

I can get to it one of these days unless somebody beats me to it.

thanks.


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/lib/libnetlink.c b/lib/libnetlink.c 
index 901236e..25c1c02 100644 
--- a/lib/libnetlink.c 
+++ b/lib/libnetlink.c 
@@ -198,7 +198,7 @@  int rtnl_dump_filter_l(struct rtnl_handle *rth, 
.msg_iov = &iov, 
.msg_iovlen = 1, 
}; 
- char buf[16384]; 
+ char buf[3*16384]; 
int dump_intr = 0; 
iov.iov_base = buf;