Lines Matching +full:hardware +full:- +full:controlled
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;
66 With suitably fast hardware (NICs, PCIe buses, CPUs),
72 35-40 Mpps on 40 Gbit/s NICs (limited by the hardware);
79 which uses unmodified device drivers and is 3-5 times faster than
98 supports both non-blocking I/O through
145 the rings, and possibly implement zero-copy forwarding
174 Ports and rings are created and controlled through a file descriptor,
181 has multiple modes of operation controlled by the
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
218 OS-generated packets for that NIC end up into a
233 .Bl -tag -width XXX
235 .Bd -literal
252 normally depends on the hardware.
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 .
511 indicates that the packet's payload is in a user-supplied buffer
544 for non-blocking I/O.
548 .Bd -literal
572 .Bl -tag -width XXXX
579 .Bl -tag -width XX
596 using interface-specific functions (e.g.,
638 indicating the identity of the rings controlled through the file
643 selects which rings are controlled through this file descriptor.
651 .Bl -tag -width XXXXX
653 (default) all hardware ring pairs
657 all hardware rings and the host rings
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
699 tells the hardware of new packets to transmit, and updates the
702 tells the hardware of consumed packets, and asks for newly available
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
844 or several 10 Gbit/s NICs whose hardware is unable to sustain line rate),
866 are controlled through sysctl variables on
871 .Bl -tag -width indent
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
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);
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
1168 requires hardware with sufficient performance.
1189 device-specific sysctl variables.