Lines Matching +full:ports +full:- +full:implemented

1 .\" Copyright (c) 2011-2014 Matteo Landi, Luigi Rizzo, Universita` di Pisa
43 .Nm netmap ports ,
45 .Bl -tag -width XXXX
46 .It Nm physical NIC ports
48 .It Nm host ports
50 .It Nm VALE ports
51 implementing a very fast and modular in-kernel software switch/dataplane;
61 .Nm netmap ports
72 35-40 Mpps on 40 Gbit/s NICs (limited by the hardware);
73 about 20 Mpps per core for VALE ports;
79 which uses unmodified device drivers and is 3-5 times faster than
89 switch instances and ports,
98 supports both non-blocking I/O through
108 .Nm netmap ports
111 are implemented by a single kernel module, which also emulates the
135 Ports use preallocated circular queues of buffers
145 the rings, and possibly implement zero-copy forwarding
146 between ports.
158 ports
165 ports (including
169 ports).
174 Ports and rings are created and controlled through a file descriptor,
186 .Bl -tag -width XXXX
193 Switch instances and ports are dynamically created if necessary.
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
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
481 assigned to slots when ports are bound to a file descriptor.
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
517 ports, and it helps reducing data copies in the interconnection
530 ports when connecting virtual machines, as they generate large
544 for non-blocking I/O.
547 to query and configure ports, with the following argument:
548 .Bd -literal
572 .Bl -tag -width XXXX
579 .Bl -tag -width XX
589 ports have independent regions for each port.
596 using interface-specific functions (e.g.,
622 consisting of two netmap ports with a crossover connection.
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
860 globally controls how netmap mode is implemented.
871 .Bl -tag -width indent
940 Allow ptnet devices to use virtio-net headers
944 systems, allocate memory for netmap ports from the local NUMA domain when
947 However, when forwarding packets between ports attached to different NUMA
948 domains, this will prevent zero-copy forwarding optimizations and thus may hurt
964 is used to configure ports and
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
1007 ports.
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);
1049 A simple receiver can be implemented using the helper functions:
1051 .Bd -literal -compact
1066 poll(&fds, 1, -1);
1073 .Ss ZERO-COPY FORWARDING
1075 it is possible to do packet forwarding between ports
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
1150 framework has been originally designed and implemented at the
1189 device-specific sysctl variables.