nuttx/net
Zhe Weng 879c337e30 net/nat: Use hashtable to optimize performance
Performance tested on simulator:

Before optimization:      -25% bandwidth @2k entries, -64% @10k entries
hashtable size=  2(1bit): -24% bandwidth @2k entries, -65% @10k entries
hashtable size=  4(2bits):-15% bandwidth @2k entries, -51% @10k entries
hashtable size= 32(5bits): -3% bandwidth @2k entries, -14% @10k entries
hashtable size=256(8bits): -1% bandwidth @2k entries,  -3% @10k entries

Note: Tested on worst performance, the earliest entry will be the worst.

Signed-off-by: Zhe Weng <wengzhe@xiaomi.com>
2022-12-22 20:20:12 +08:00
..
arp net/arp: Remove nuttx/net/arp.h 2022-12-16 22:10:59 +02:00
bluetooth sem:remove sem default protocl 2022-10-22 14:50:48 +08:00
can net/devif_send: replace all block send to nonblock mode 2022-12-08 09:53:15 +01:00
devif net/arp: Remove nuttx/net/arp.h 2022-12-16 22:10:59 +02:00
icmp net/l2/l3/l4: add support of iob offload 2022-12-03 11:47:04 +08:00
icmpv6 net/l2/l3/l4: add support of iob offload 2022-12-03 11:47:04 +08:00
ieee802154 sem:remove sem default protocl 2022-10-22 14:50:48 +08:00
igmp net/l2/l3/l4: add support of iob offload 2022-12-03 11:47:04 +08:00
inet net: extract l3 header build code into new functions 2022-11-29 18:36:15 +08:00
ipforward net/ipfwd: limit number of ipforward struct to be less than number of IOB 2022-12-09 11:20:16 +08:00
local net/local: Support the abstract path 2022-12-18 20:12:30 +02:00
mld net/l2/l3/l4: add support of iob offload 2022-12-03 11:47:04 +08:00
nat net/nat: Use hashtable to optimize performance 2022-12-22 20:20:12 +08:00
neighbor net/arp: Move arp_ipin and arp_out to private header file 2022-12-04 20:39:21 +08:00
netdev net/arp: Remove nuttx/net/arp.h 2022-12-16 22:10:59 +02:00
netlink net/arp: Remove nuttx/net/arp.h 2022-12-16 22:10:59 +02:00
pkt net/devif_send: replace all block send to nonblock mode 2022-12-08 09:53:15 +01:00
procfs compiler.h: Add _ between format|printf|syslog|scanf|strftime and like 2022-12-21 01:05:19 +02:00
route include/endian.h: Fix format specifies type 'unsigned long' but the argument has type 'unsigned int' 2022-10-30 16:03:35 +01:00
rpmsg net: remove psock reference from connect 2022-11-24 22:57:42 +08:00
sixlowpan mm/iob: iob members are initialized after allocate 2022-12-16 09:51:53 +08:00
socket net: add parameter check in psock_setsockopt 2022-11-29 00:20:09 +08:00
tcp net/tcp: rename NET_TCP_RECV_CONTIG to NET_TCP_RECV_PACK 2022-12-19 01:32:05 +08:00
udp net/arp: Remove nuttx/net/arp.h 2022-12-16 22:10:59 +02:00
usrsock net: Remove usrsock specific process from common code as much as possible 2022-11-28 16:32:41 +09:00
utils Remove redundant length checking 2022-12-14 21:20:14 +08:00
Kconfig net/l2/l3/l4: add support of iob offload 2022-12-03 11:47:04 +08:00
Makefile net: add basic NAT workflow 2022-11-11 14:36:55 +08:00
net_initialize.c net: Reoder the initialize sequence(mac->ip->tcp/udp) 2022-03-12 19:24:17 +02:00
README.txt

README
======

Directory Structure
===================

  nuttx/
   |
   `- net/
       |
       +- arp        - Address resolution protocol (IPv4)
       +- bluetooth  - PF_BLUETOOTH socket interface
       +- devif      - Stack/device interface layer
       +- icmp       - Internet Control Message Protocol (IPv4)
       +- icmpv6     - Internet Control Message Protocol (IPv6)
       +- ieee802154 - PF_IEEE802154 socket interface
       +- inet       - PF_INET/PF_INET6 socket interface
       +- ipforward  - IP forwarding logic
       +- local      - Unix domain (local) sockets
       +- mld        - Multicast Listener Discovery (MLD)
       +- neighbor   - Neighbor Discovery Protocol (IPv6)
       +- netdev     - Socket network device interface
       +- netlink    - Netlink IPC socket interface
       +- pkt        - "Raw" packet socket support
       +- sixlowpan  - 6LoWPAN implementation
       +- socket     - BSD socket interface
       +- route      - Routing table support
       +- tcp        - Transmission Control Protocol
       +- udp        - User Datagram Protocol
       +- usrsock    - User socket API for user-space networking stack
       `- utils      - Miscellaneous utility functions

    +-------------------------------------------------------------------++------------------------+
    |                     Application layer                             || usrsock daemon         |
    +-------------------------------------------------------------------++------------------------+
    +-------------------------------------------------------------------++----------------+ +-----+
    |                   Socket layer (socket/)                          || /dev/usrsock   | |     |
    +-------------------------------------------------------------------++----------------+ |     |
    +------------++--------------------------------------------------++-------------------+ |     |
    |  Network   || Protocol stacks (arp, ipv6, icmp, pkt, tcp, udp) || usrsock/          | |     |
    |   Device   |+--------------------------------------------------++-------------------+ |     |
    | Interface  |+------------------------------------++---------------------------------+ |     |
    | (netdev/)  ||  Network Device Interface (devif/) || Utilities                       | |     |
    +------------++------------------------------------++---------------------------------+ |     |
    +----------------------------------------------------------------+                      |     |
    |                    Network Device Drivers                      |                      | HAL |
    +----------------------------------------------------------------+                      +-----+
    +----------------------------------------------------------------+ +--------------------------+
    |                    Networking Hardware                         | |  Hardware TCP/IP Stack   |
    +----------------------------------------------------------------+ +--------------------------+