Linux Netfilter discussions
 help / color / mirror / Atom feed
* increase the number of routing tables
       [not found] <CANj2EbfR0cBaBd+t1yCZyErRpVzSC00DZohvtyazK8_9bv2aEQ@mail.gmail.com>
@ 2012-01-29  2:23 ` Simon Chen
  2012-01-29 11:50   ` Jan Engelhardt
  0 siblings, 1 reply; 8+ messages in thread
From: Simon Chen @ 2012-01-29  2:23 UTC (permalink / raw)
  To: netfilter

Hey folks,

To my limited knowledge, Linux currently supports 256 (255?) routing
tables defined in /etc/iproute2/rt_tables.

Is there a way to increase this number to something much larger? Are
there performance/scalability concerns there? I am trying to have
customized routing table for each IP address (using "ip rule add from
xxx table yyy"). I am not sure exactly how many IPs I'll handle, but
certainly more than 255...

Thanks.
-Simon

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: increase the number of routing tables
  2012-01-29  2:23 ` increase the number of routing tables Simon Chen
@ 2012-01-29 11:50   ` Jan Engelhardt
  2012-01-29 23:24     ` Ed W
  0 siblings, 1 reply; 8+ messages in thread
From: Jan Engelhardt @ 2012-01-29 11:50 UTC (permalink / raw)
  To: Simon Chen; +Cc: netfilter

On Sunday 2012-01-29 03:23, Simon Chen wrote:

>Hey folks,
>
>To my limited knowledge, Linux currently supports 256 (255?) routing
>tables defined in /etc/iproute2/rt_tables.

There are 2147483647.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: increase the number of routing tables
  2012-01-29 11:50   ` Jan Engelhardt
@ 2012-01-29 23:24     ` Ed W
  2012-01-30  0:31       ` Stephen Hemminger
  0 siblings, 1 reply; 8+ messages in thread
From: Ed W @ 2012-01-29 23:24 UTC (permalink / raw)
  To: Jan Engelhardt; +Cc: Simon Chen, netfilter

On 29/01/2012 11:50, Jan Engelhardt wrote:
> On Sunday 2012-01-29 03:23, Simon Chen wrote:
>
>> Hey folks,
>>
>> To my limited knowledge, Linux currently supports 256 (255?) routing
>> tables defined in /etc/iproute2/rt_tables.
> There are 2147483647.
>

Any reason why it's not an unsigned 32bit int? (surely there is a corner 
case where this is useful...)

Ed W

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: increase the number of routing tables
  2012-01-29 23:24     ` Ed W
@ 2012-01-30  0:31       ` Stephen Hemminger
  2012-01-30  2:02         ` Jan Engelhardt
  0 siblings, 1 reply; 8+ messages in thread
From: Stephen Hemminger @ 2012-01-30  0:31 UTC (permalink / raw)
  To: Ed W; +Cc: Jan Engelhardt, Simon Chen, netfilter

On Sun, 29 Jan 2012 23:24:27 +0000
Ed W <lists@wildgooses.com> wrote:

> On 29/01/2012 11:50, Jan Engelhardt wrote:
> > On Sunday 2012-01-29 03:23, Simon Chen wrote:
> >
> >> Hey folks,
> >>
> >> To my limited knowledge, Linux currently supports 256 (255?) routing
> >> tables defined in /etc/iproute2/rt_tables.
> > There are 2147483647.
> >
> 
> Any reason why it's not an unsigned 32bit int? (surely there is a corner 
> case where this is useful...)
> 
> Ed W

The 8 bit value is enshrined in the API for 'struct rtmsg' and therefore
increasing it would break existing applications. 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: increase the number of routing tables
  2012-01-30  0:31       ` Stephen Hemminger
@ 2012-01-30  2:02         ` Jan Engelhardt
  2012-01-30 16:14           ` Stephen Hemminger
  0 siblings, 1 reply; 8+ messages in thread
From: Jan Engelhardt @ 2012-01-30  2:02 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Ed W, Simon Chen, netfilter

On Monday 2012-01-30 01:31, Stephen Hemminger wrote:

>On Sun, 29 Jan 2012 23:24:27 +0000
>Ed W <lists@wildgooses.com> wrote:
>
>> On 29/01/2012 11:50, Jan Engelhardt wrote:
>> > On Sunday 2012-01-29 03:23, Simon Chen wrote:
>> >
>> >> Hey folks,
>> >>
>> >> To my limited knowledge, Linux currently supports 256 (255?) routing
>> >> tables defined in /etc/iproute2/rt_tables.
>> > There are 2147483647.
>> >
>> 
>> Any reason why it's not an unsigned 32bit int? (surely there is a corner 
>> case where this is useful...)
>> 
>> Ed W
>
>The 8 bit value is enshrined in the API for 'struct rtmsg' and therefore
>increasing it would break existing applications. 

Actually, what Ed (and me too) was wondering about was:

why does `ip route show table $[0x80000000]` not print an empty table, 
i.e. where is it that some code uses int/s32 during parsing of 
the argument and/or the RTA_TABLE attribute?

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: increase the number of routing tables
  2012-01-30  2:02         ` Jan Engelhardt
@ 2012-01-30 16:14           ` Stephen Hemminger
  2012-01-30 18:57             ` Jan Engelhardt
  0 siblings, 1 reply; 8+ messages in thread
From: Stephen Hemminger @ 2012-01-30 16:14 UTC (permalink / raw)
  To: Jan Engelhardt; +Cc: Ed W, Simon Chen, netfilter

On Mon, 30 Jan 2012 03:02:35 +0100 (CET)
Jan Engelhardt <jengelh@medozas.de> wrote:

> On Monday 2012-01-30 01:31, Stephen Hemminger wrote:
> 
> >On Sun, 29 Jan 2012 23:24:27 +0000
> >Ed W <lists@wildgooses.com> wrote:
> >
> >> On 29/01/2012 11:50, Jan Engelhardt wrote:
> >> > On Sunday 2012-01-29 03:23, Simon Chen wrote:
> >> >
> >> >> Hey folks,
> >> >>
> >> >> To my limited knowledge, Linux currently supports 256 (255?) routing
> >> >> tables defined in /etc/iproute2/rt_tables.
> >> > There are 2147483647.
> >> >
> >> 
> >> Any reason why it's not an unsigned 32bit int? (surely there is a corner 
> >> case where this is useful...)
> >> 
> >> Ed W
> >
> >The 8 bit value is enshrined in the API for 'struct rtmsg' and therefore
> >increasing it would break existing applications. 
> 
> Actually, what Ed (and me too) was wondering about was:
> 
> why does `ip route show table $[0x80000000]` not print an empty table, 
> i.e. where is it that some code uses int/s32 during parsing of 
> the argument and/or the RTA_TABLE attribute?

There are lots of places internally in ip utilities that use u32
for route table. But the route input/output message format is still limited
to 8 bits.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: increase the number of routing tables
  2012-01-30 16:14           ` Stephen Hemminger
@ 2012-01-30 18:57             ` Jan Engelhardt
  2012-01-30 19:21               ` Stephen Hemminger
  0 siblings, 1 reply; 8+ messages in thread
From: Jan Engelhardt @ 2012-01-30 18:57 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: Ed W, Simon Chen, netfilter

On Monday 2012-01-30 17:14, Stephen Hemminger wrote:

>> >> > There are 2147483647.
>> >> 
>> >> Any reason why it's not an unsigned 32bit int? (surely there is a corner 
>> >> case where this is useful...)
>> >
>> >The 8 bit value is enshrined in the API for 'struct rtmsg' and therefore
>> >increasing it would break existing applications. 
>> 
>> Actually, what Ed (and me too) was wondering about was:
>> 
>> why does `ip route show table $[0x80000000]` not print an empty table, 
>> i.e. where is it that some code uses int/s32 during parsing of 
>> the argument and/or the RTA_TABLE attribute?
>
>There are lots of places internally in ip utilities that use u32
>for route table. But the route input/output message format is still limited
>to 8 bits.

But then, adding a rule to table 258 would make it show up in table 2 as 
well, which is not the case.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: increase the number of routing tables
  2012-01-30 18:57             ` Jan Engelhardt
@ 2012-01-30 19:21               ` Stephen Hemminger
  0 siblings, 0 replies; 8+ messages in thread
From: Stephen Hemminger @ 2012-01-30 19:21 UTC (permalink / raw)
  To: Jan Engelhardt; +Cc: Ed W, Simon Chen, netfilter

On Mon, 30 Jan 2012 19:57:20 +0100 (CET)
Jan Engelhardt <jengelh@medozas.de> wrote:

> On Monday 2012-01-30 17:14, Stephen Hemminger wrote:
> 
> >> >> > There are 2147483647.
> >> >> 
> >> >> Any reason why it's not an unsigned 32bit int? (surely there is a corner 
> >> >> case where this is useful...)
> >> >
> >> >The 8 bit value is enshrined in the API for 'struct rtmsg' and therefore
> >> >increasing it would break existing applications. 
> >> 
> >> Actually, what Ed (and me too) was wondering about was:
> >> 
> >> why does `ip route show table $[0x80000000]` not print an empty table, 
> >> i.e. where is it that some code uses int/s32 during parsing of 
> >> the argument and/or the RTA_TABLE attribute?
> >
> >There are lots of places internally in ip utilities that use u32
> >for route table. But the route input/output message format is still limited
> >to 8 bits.
> 
> But then, adding a rule to table 258 would make it show up in table 2 as 
> well, which is not the case.

Ok, drilling deeper, overlooked the extended table support.
Tables >= 256 are handled by setting rtm_table to RT_TABLE_UNSPEC and
sending a RTA_TABLE attribute.
Therefore it has worked for quite a while.

But, I also see code in other utilities (like net-snmp and quagga)
which don't know about how to handle tables other than main. But
that is a different issue.




^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2012-01-30 19:21 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <CANj2EbfR0cBaBd+t1yCZyErRpVzSC00DZohvtyazK8_9bv2aEQ@mail.gmail.com>
2012-01-29  2:23 ` increase the number of routing tables Simon Chen
2012-01-29 11:50   ` Jan Engelhardt
2012-01-29 23:24     ` Ed W
2012-01-30  0:31       ` Stephen Hemminger
2012-01-30  2:02         ` Jan Engelhardt
2012-01-30 16:14           ` Stephen Hemminger
2012-01-30 18:57             ` Jan Engelhardt
2012-01-30 19:21               ` Stephen Hemminger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox