nuttx/net/route/Kconfig
Gregory Nutt ae78a925eb Add support for an in-memory routing table cache in order to improve performance when the routing table is retained in a file. The cache holds the most recently used routing table entries and so can eliminate some file access.
Squashed commit of the following:

    net/route:  Flush in cache when any entry is deleted from the routing table.  When a router matching an IP address is found, add the routing table entry to the cache.

    net/route:  Add utility functions to manage an in-memory cache to improve performance when use a file-based routing table.
2017-09-29 12:04:45 -06:00

166 lines
5.0 KiB
Plaintext

#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#
menu "Routing Table Configuration"
config NET_ROUTE
bool "Routing table support"
default n
depends on NET_IPv4 || NET_IPv6
---help---
Build in support for a routing table. See include/net/route.h
if NET_ROUTE
choice
prompt "IPv4 routing table"
default ROUTE_IPv4_RAMROUTE
depends on NET_IPv4
config ROUTE_IPv4_RAMROUTE
bool "In-memory"
---help---
Select to used a IPv4 routing table RAM.
config ROUTE_IPv4_ROMROUTE
bool "Read-only"
---help---
Select to used a fixed read-only IPv4 routing table in FLASH or ROM.
In this case, the board-specific logic must provide a routing table
of the form of a simple array:
FAR const struct net_route_ipv4_s g_ipv4_routes[];
const unsigned int g_ipv4_nroutes;
NOTE: The read-only variable g_ipv4_nroutes must be set to the
actual number of valid entries in the array.
config ROUTE_IPv4_FILEROUTE
bool "File"
---help---
Select to used a IPv4 routing table in a file in a mounted file system.
REVISIT: There is a problem with the current design. NuttX does not
currently support truncate(). Therefore, it is not possible to delete
entries from the routing table file.
In this current implementation, that leaves the last entry intact at
the end of the file. An alternative design might include a tag on
each record to indicate if the record is valid or not. That would work
but would add complexity to the other routing table functions.
The existing 'delroute' implementation is available for testing purpose
only if CONFIG_EXPERIMENTAL=y.
endchoice # IPv4 routing table
config ROUTE_MAX_IPv4_RAMROUTES
int "Preallocated IPv4 routing table entries"
default 4
depends on ROUTE_IPv4_RAMROUTE
---help---
The number of preallocated of the IPv4 routing table entries. This
eliminates dynamica memory allocations, but limits the maximum size
of the in-memory routing table to this number.
config ROUTE_IPv4_CACHEROUTE
bool "In-memory IPv4 cache"
default n
depends on ROUTE_IPv4_FILEROUTE
---help---
Accessing a routing table on a file system before each packet is sent
can harm performance. This option will cache a few of the most
frequently used routing table entries in memory to reduce performance
issues.
config ROUTE_MAX_IPv4_CACHEROUTES
int "IPv4 cache size"
default 4
depends on ROUTE_IPv4_CACHEROUTE
---help---
This determines the maxium number of routes that can be cached in
memory.
choice
prompt "IPv6 routing table"
default ROUTE_IPv6_RAMROUTE
depends on NET_IPv6
config ROUTE_IPv6_RAMROUTE
bool "In-memory"
---help---
Select to use a IPv6 routing table RAM.
config ROUTE_IPv6_ROMROUTE
bool "Read-only"
---help---
Select to use a fixed read-only IPv6 routing table in FLASH or ROM.
In this case, the board-specific logic must provide a routing table
of the form of simply array:
FAR const struct net_route_ipv6_s g_ipv6_routes[];
const unsigned int g_ipv6_nroutes;
NOTE: The read-only variable g_ipv6_nroutes must be set to the
actual number of valid entries in the array.
config ROUTE_IPv6_FILEROUTE
bool "File"
---help---
Select to use a IPv6 routing table in a file in a mounted file system.
REVISIT: There is a problem with the current design. NuttX does not
currently support truncate(). Therefore, it is not possible to delete
entries from the routing table file.
In this current implementation, that leaves the last entry intact at
the end of the file. An alternative design might include a tag on
each record to indicate if the record is valid or not. That would work
but would add complexity to the other routing table functions.
The existing 'delroute' implementation is available for testing purpose
only if CONFIG_EXPERIMENTAL=y.
endchoice # IPv6 routing table
config ROUTE_MAX_IPv6_RAMROUTES
int "Preallocated IPv6 routing table entries"
default 4
depends on ROUTE_IPv6_RAMROUTE
---help---
The number of preallocated of the IPv6 routing table entries. This
eliminates dynamica memory allocations, but limits the maximum size
of the in-memory routing table to this number.
config ROUTE_FILEDIR
string "Routing table directory"
default /tmp
depends on ROUTE_IPv4_FILEROUTE || ROUTE_IPv6_FILEROUTE
---help---
Provides the full path to location in the file system where routing
table will be accessed. This is a string and should not include
any traling '/'.
config ROUTE_IPv6_CACHEROUTE
bool "In-memory IPv6 cache"
default n
depends on ROUTE_IPv6_FILEROUTE
---help---
Accessing a routing table on a file system before each packet is sent
can harm performance. This option will cache a few of the most
frequently used routing table entries in memory to reduce performance
issues.
config ROUTE_MAX_IPv6_CACHEROUTES
int "IPv6 cache size"
default 4
depends on ROUTE_IPv6_CACHEROUTE
---help---
This determines the maxium number of routes that can be cached in
memory.
endif # NET_ROUTE
endmenu # ARP Configuration