Lines Matching +full:native +full:- +full:mode

1 .\" Copyright (c) 2011-2014 Matteo Landi, Luigi Rizzo, Universita` di Pisa
45 .Bl -tag -width XXXX
51 implementing a very fast and modular in-kernel software switch/dataplane;
65 (sockets, bpf, tun/tap interfaces, native switches, pipes).
72 35-40 Mpps on 40 Gbit/s NICs (limited by the hardware);
76 NICs without native
78 support can still use the API in emulated mode,
79 which uses unmodified device drivers and is 3-5 times faster than
85 mode and send and receive raw packets through
98 supports both non-blocking I/O through
116 requires native support in device drivers.
145 the rings, and possibly implement zero-copy forwarding
150 mode use the same memory region,
161 .Sh ENTERING AND EXITING NETMAP MODE
186 .Bl -tag -width XXXX
195 Both SSS and PPP have the form [0-9a-zA-Z_]+ , the string
208 Non-blocking I/O is done with special
217 mode, the OS will still believe the interface is up and running.
218 OS-generated packets for that NIC end up into a
224 and returns the NIC to normal mode (reconnecting the data path
233 .Bl -tag -width XXX
235 .Bd -literal
281 .Bd -literal
303 .Bd -literal
373 during the execution of a netmap-related system call.
375 .Va tail\ . . . head-1 ,
381 .Va head\ . . . tail-1
396 .Va head-1
401 .Bd -literal
425 .Dl ring->cur == ring->tail
432 .Dl ring->head != ring->tail + 1 (modulo the ring size).
440 .Va head\& . . . tail-1
454 .Va head-1
460 .Bd -literal
480 Normally, packets should be stored in the netmap-allocated buffers
485 .Bl -tag -width XXX
492 zero-copy forwarding, see
493 .Sx ZERO-COPY FORWARDING .
503 When a ring is in 'transparent' mode,
511 indicates that the packet's payload is in a user-supplied buffer
544 for non-blocking I/O.
548 .Bd -literal
563 uint32_t nr_flags /* (i/o) open mode */
572 .Bl -tag -width XXXX
578 interface is actually put in netmap mode.
579 .Bl -tag -width XX
586 mode all share the same memory region,
596 using interface-specific functions (e.g.,
606 mode, disconnecting
651 .Bl -tag -width XXXXX
658 .It NR_REG_ONE_NIC "netmap:foo-i"
659 only the i-th hardware ring pair, where the number is in
682 The feature can be disabled by or-ing
717 .Va ( ring->cur == ring->tail ) .
760 API, to ease porting of libpcap-based applications to
768 .Bl -tag -width XXXXX
773 .Bl -tag -width XX
837 NICs without native support can still be used in
839 mode through emulation.
840 Performance is inferior to native netmap
841 mode but still significantly higher than various raw socket types
845 emulated and native mode will likely have similar or same throughput.
856 Emulation is also available for devices with native netmap support,
860 globally controls how netmap mode is implemented.
871 .Bl -tag -width indent
873 Controls the use of native or emulated adapter mode.
877 1 forces native mode and fails if not available;
881 Number of rings used for emulated netmap mode
883 Ring size used for emulated netmap mode
885 Controls interrupt moderation for emulated mode
887 Forces NS_FORWARD mode
940 Allow ptnet devices to use virtio-net headers
948 domains, this will prevent zero-copy forwarding optimizations and thus may hurt
989 .Xr pkt-gen 8
993 .Dl pkt-gen -i ix0 -f tx -l 60
995 .Dl pkt-gen -i ix0 -f rx
1000 .Xr pkt-gen 8
1010 .Dl bridge -i netmap:ix0 -i netmap:ix1
1012 .Dl bridge -i netmap:ix0
1013 .Ss USING THE NATIVE API
1016 .Bd -literal -compact
1037 poll(&fds, 1, -1);
1039 i = ring->cur;
1040 buf = NETMAP_BUF(ring, ring->slot[i].buf_index);
1042 ring->slot[i].len = ... packet length ...
1043 ring->head = ring->cur = nm_ring_next(ring, i);
1051 .Bd -literal -compact
1066 poll(&fds, 1, -1);
1073 .Ss ZERO-COPY FORWARDING
1080 .Bd -literal -compact
1084 src = &src_ring->slot[rxr->cur];
1085 dst = &dst_ring->slot[txr->cur];
1086 tmp = dst->buf_idx;
1087 dst->buf_idx = src->buf_idx;
1088 dst->len = src->len;
1089 dst->flags = NS_BUF_CHANGED;
1090 src->buf_idx = tmp;
1091 src->flags = NS_BUF_CHANGED;
1092 rxr->head = rxr->cur = nm_ring_next(rxr, rxr->cur);
1093 txr->head = txr->cur = nm_ring_next(txr, txr->cur);
1102 mode end up into the RX ring, whereas all packets queued to the
1109 .Dl pkt-gen -i vale1:a -f rx # receiver
1110 .Dl pkt-gen -i vale1:b -f tx # sender
1113 .Dl pkt-gen -i vale2:x{3 -f rx # receiver on the master side
1114 .Dl pkt-gen -i vale2:x}3 -f tx # sender on the slave side
1118 .Dl valectl -h vale2:em0
1128 .Xr pkt-gen 8 ,
1134 Communications of the ACM, 55 (3), pp.45-51, March 2012
1147 .An -nosplit
1189 device-specific sysctl variables.