tree: 96fd19b4b5d7c7e396efe4a4f112fcdf5ab26077 [path history] [tgz]
  1. bench/
  2. dhcp/
  3. dns/
  4. docs/
  5. fidlconv/
  6. fidlext/
  7. filter/
  8. gentool/
  9. inspect/
  10. link/
  11. meta/
  12. pprof/
  13. routes/
  14. stub/
  15. sync/
  16. tests/
  17. testutil/
  18. time/
  19. tracing/
  20. util/
  21. BUILD.gn
  22. errors.go
  23. fuchsia_inspect_inspect.go
  24. fuchsia_inspect_inspect_test.go
  25. fuchsia_net_debug.go
  26. fuchsia_net_dhcp.go
  27. fuchsia_net_interfaces.go
  28. fuchsia_net_interfaces_admin.go
  29. fuchsia_net_interfaces_admin_test.go
  30. fuchsia_net_interfaces_test.go
  31. fuchsia_net_name_dns_server_watcher.go
  32. fuchsia_net_name_dns_server_watcher_test.go
  33. fuchsia_net_neighbor.go
  34. fuchsia_net_neighbor_test.go
  35. fuchsia_net_routes.go
  36. fuchsia_net_stack.go
  37. fuchsia_net_stack_test.go
  38. fuchsia_posix_socket.go
  39. INSPECT.md
  40. main.go
  41. ndp.go
  42. ndp_test.go
  43. netstack.go
  44. netstack_service.go
  45. netstack_service_impl_test.go
  46. netstack_test.go
  47. noop_endpoint_test.go
  48. README.md
  49. socket_conv.go
  50. udp_serde.cc
  51. udp_serde.h
  52. udp_serde_c_compilation_test.c
  53. udp_serde_test.cc
src/connectivity/network/netstack/README.md

Netstack

Netstack is a userspace TCP/IP network stack and interfaces with zircon network drivers. Netstack serves as a back-end for fdio socket API.

     +-----------+           +-----------+
     | FIDL app  |           | POSIX app |
     +--+--------+           +-----+-----+
        |                          |
        |                          |
        |                          |
        |                          |
        |                          |
        |                          |
        |   +----------------------v---------+
        |   |         BSD socket API         |
        |   |  (//sdk/lib/fdio)              |
        |   +---------+----------------------+
        |             |
     +--v-------------v----------------------+
     |            netstack                   |
     | (//src/connectivity/network/netstack) |
     +----------------+----------------------+
                      |
     +----------------v-----------------+
     |         Ethernet driver          |
     | (//zircon/system/udev/ethernet)  |
     +----------------------------------+

Benchmarking

To run the benchmarks and obtain profiling data:

    fx test -o netstack-bench-gotests -- --test.run - --test.bench - \
      && ffx test run --output-directory out/profile fuchsia-pkg://fuchsia.com/netstack-bench-gotests#meta/netstack-bench-gotests.cm \
      && fx go tool pprof -http=:8080 out/profile/artifact-0/custom-0/netstack_bench_profile

Example output (astro):

goos: fuchsia
goarch: arm64
pkg: netstack/bench
BenchmarkWritePacket/checksumOffloadDisabled/len(payload)=2048-4                  190443              6513 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadDisabled/len(payload)=1024-4                  247176              4831 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadDisabled/len(payload)=512-4                   326691              3842 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadDisabled/len(payload)=256-4                   364168              3426 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadDisabled/len(payload)=128-4                   394536              3282 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadDisabled/len(payload)=64-4                    405102              3218 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadDisabled/len(payload)=32-4                    423908              2967 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadDisabled/len(payload)=16-4                    424617              2931 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadDisabled/len(payload)=8-4                     386036              2935 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadDisabled/len(payload)=4-4                     404241              2990 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadDisabled/len(payload)=2-4                     371358              2887 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadDisabled/len(payload)=1-4                     431478              2889 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadEnabled/len(payload)=2048-4                   461614              2766 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadEnabled/len(payload)=1024-4                   417296              2924 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadEnabled/len(payload)=512-4                    474790              2814 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadEnabled/len(payload)=256-4                    453231              2832 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadEnabled/len(payload)=128-4                    472670              2835 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadEnabled/len(payload)=64-4                     469988              2894 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadEnabled/len(payload)=32-4                     490627              2614 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadEnabled/len(payload)=16-4                     485992              2753 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadEnabled/len(payload)=8-4                      492573              2798 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadEnabled/len(payload)=4-4                      487836              2923 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadEnabled/len(payload)=2-4                      434959              2658 ns/op             112 B/op          3 allocs/op
BenchmarkWritePacket/checksumOffloadEnabled/len(payload)=1-4                      490470              3010 ns/op             112 B/op          3 allocs/op