Linux Kernel Networking: Implementation and Theory (2014)
APPENDIX C. Glossary
The following list of glossary terms are covered in this book.
ACL—Asynchronous Connection-oriented Link. A Bluetooth protocol.
ADB — Android Debug Bridge.
AVDTP—Audio/Video Distribution Transport Protocol. A Bluetooth protocol.
AEAD—Authenticated Encryption with Associated Data.
AES-NI—AES instruction set.
AH—Authentication Header protocol. Used in IPsec, has a protocol number 51.
AID—Association ID. A unique number that a wireless client gets when it associates to an Access Point. It is assigned by the Access Point, and it is in the range 1–2007.
AMP—Alternate MAC/PHY.
AMPDU—Aggregated Mac Protocol Data Unit. A type of packet aggregation in IEEE 802.11n.
AMSDU—Aggregated Mac Service Data Unit. A type of packet aggregation in IEEE 802.11n.
AOSP—Android Open Source Project.
AP—Access Point. In wireless networks, a wireless device to which wireless clients associate and which enables them to connect to a wired network.
API—Application Programming Interface. A set of methods and data structures that define the interface to a software layer, such as an interface for a library.
ABRO—Authoritative Border Router Option. Added for Neighbour Discovery Optimization for IPv6. See RFC 6775.
ABS—Android Builders Summit.
ARO—Address Registration Option. Added for Neighbour Discovery Optimization for IPv6. See RFC 6775.
ARP—Address Resolution Protocol. A protocol used to find the mapping between a network address (such as IPv4 address) into a link layer address (like a 48-bit Ethernet address).
ARPD—ARP daemon. A userspace daemon that implements the ARP functionality.
Ashmem—Android shared memory.
ASM—Any-Source Multicast. In the any-source model, you do not specify interest in receiving multicast traffic from a single particular source address or from a set of addresses.
BA—Block Acknowledgement mechanism used in IEEE 802.11n.
BGP—Border Gateway Protocol. A core routing protocol.
BLE—Bluetooth Low Energy.
BNEP—Bluetooth Network Encapsulation Protocol.
BTH—Base Transport Header. An InfiniBand header of 12 bytes. It specifies the source and destination QPs, the operation, packet sequence number, and partition.
CM—Communication Manager in the InfiniBand stack.
CIDR—Classless Inter-Domain Routing. A way to allocate Internet addresses used in inter-domain routing.
CQ—Completion Queue (InfiniBand).
CRIU — Checkpoint/Restore In Userspace. CRIU is a software tool, mainly implemented in userspace, with which you can freeze a running process and checkpoint it to a filesystem as a collection of files. You can then use these files to restore and run the application from the point where it was frozen. See http://criu.org/Main_Page.
CSMA/CD—Carrier Sense Multiple Access/Collision Detection. A Media Access Control method used in Ethernet networks.
CSMA/CA—Carrier Sense Multiple Access/Collision Avoidance. A Media Access Control method used in wireless networks.
CT—Connection Tracking. A netfilter layer that is the basis for NAT.
DAD—Duplicate Address Detection. The DAD is a mechanism that helps to detect the existence of double L3 addresses on different hosts on a LAN.
DAC—Duplicate Address Confirmation. An ICMPv6 type which was added in RFC 6775, with numeric value of 158.
DAR—Duplicate Address Request. An ICMPv6 type which was added in RFC 6775, with numeric value of 157.
DCCP—Datagram Congestion Control Protocol. An unreliable, congestion-controlled transport layer protocol. The use of DCCP would make sense, for instance, in applications that require low delays and where a small degree of data loss is permitted, like in telephony and streaming media applications.
DHCP—Dynamic Host Configuration Protocol. A protocol for configuring network device parameters like an IP address, a default route, and one or more DNS server addresses.
DMA—Direct Memory Access.
DNAT—Destination NAT. A NAT that changes the destination address.
DNS—Domain Name System. A system for translating domain names to IP addresses.
DSCP—Differentiated Services Code Point. A classifying mechanism.
DVMRP—Distance Vector Multicast Routing Protocol. A protocol for routing multicast datagrams. Suitable for use within an autonomous system. Defined in RFC 1075 from 1988.
ECN—Explicit Congestion Notification. See RFC 3168, “The Addition of Explicit Congestion Notification (ECN) to IP.”
EDR—Enhanced Data Rate.
EGP—Exterior Gateway Protocol. A routing protocol which is now considered obsolete. It was first formalized in RFC 827 in 1982.
ERTM—Enhanced Retransmission Mode. A reliable protocol with error and flow control, used in Bluetooth.
ESP—Encapsulating Security Payload. Used in IPsec, has protocol number 50.
ETH—Extended Transport Header: An InfiniBand header with size from 4 to 28 bytes. This header represents an extra family of headers that may be present depending on the class of the service and the used operation.
ETSI—European Telecommunications Standards Institute.
FCS—Frame Check Sequence
FIB—Forwarding Information Base. The database that contains the routing tables information.
FMR—Fast Memory Region (InfiniBand).
FSF—Free Software Foundation.
FTP—File Transfer Protocol. A protocol for transferring files between two hosts, based on TCP.
GCC—GNU Compiler Collection.
GID—Global Identifier.
GMP—Group Management Protocol. A term that refers to both IGMP and MLD. See RFC 4604, section 1.
GRE—Generic Routing Encapsulation. A tunneling protocol.
GRH—Global Routing Header. An InfiniBand header of 40 bytes. It describes the source and destination port using GIDs, and its format is identical to the IPv6 header.
GRO—Generic Receive Offload. A technique with which incoming packets are merged at reception time into a bigger packet to improve performance.
GSO—Generic Segmentation Offload. A technique with which outgoing packets are segmented not in the transport layer but as close as possible to the network driver or in the network driver itself.
GUID—Global Unique Identifier.
HAL—Hardware Abstraction Layer.
HCA—Host Channel Adapter.
HCI—Host Controller Interface. Used, for example, in Bluetooth, PCI and more.
HDP—Health Device Profile. Used by Bluetooth.
HFP—Hands-Free Profile. Used by Bluetooth.
HoL Blocking—Head-of-line blocking is a performance-limiting phenomenon that occurs when a line of packets is held up by the first packet, for example, in multiple requests in HTTP pipelining.
HPC—High Performance Computing. Management of computer resources in a way that gives high performance for heavy tasks such as solving large-scale problems in science, engineering, or economics.
HS—High Speed.
HTTP—Hypertext Transfer Protocol. The basic protocol for accessing the World Wide Web.
HWMP— Hybrid Wireless Mesh Protocol. A routing protocol used in wireless Mesh networks that consists of two types of routing: on-demand routing and proactive routing.
iWARP—Internet Wide Area RDMA Protocol.
iSER—iSCSI extension for RDMA.
IANA—Internet Assigned Numbers Authority. Responsible for IP addressing, global coordination of the DNS Root, and other IP-related symbols and numbers. Operated by the Internet Corporation for Assigned Names and Numbers (ICANN).
IBTA—InfiniBand Trade Association.
ICMP—Internet Control Message Protocol. An IP protocol for control and informational messages. The well-known ping utility is based on ICMP. The ICMP protocol is known to be used in various types of security DoS attacks, like the Smurf attack.
ICE—Interactive Connectivity Establishment. Specified in RFC 5245. A protocol for NAT traversal.
ICRC—Invariant CRC. An InfiniBand header of 4 bytes. Covers all fields, which should not be changed as the packet travels in the subnet.
IDS—Intrusion Detection System.
IoT—Internet of Things. Networking of everyday objects.
IEEE—Institute of Electrical and Electronics Engineers.
IGMP—Internet Group Management Protocol. Multicast group memberships protocol.
IKE—Internet Key Exchange. A protocol for setting an IPsec Security Association.
IOMMU—I/O Memory Management Unit.
IP—Internet Protocol. The primary addressing and routing protocol for the Internet. IPv4 was first specified in RFC 791 from 1981, and IPv6 was first specified in RFC 1883 from 1995.
IPoIB—IP over InfiniBand.
IPS—Intrusion Prevention System.
ISAKMP—Internet Security Association & Key Management Protocol.
IOCTL—Input/Output Control. A system call that provides access from userspace to kernel.
IPC—Inter Process Communication. There are many different mechanisms for IPC, such as shared memory semaphores, message queues, and more.
IPCOMP—IP Payload Compression Protocol. A compressing protocol intended to reduce the size of data sent over a slow network connection. Using IPComp increases the overall communication performance between two network nodes.
IPsec—IP security. A set of protocols developed by the IETF for secure exchange of packets over the IP protocol. IPsec is mandatory in IPv6 according to the IPv6 spec and optional in IPv4, though many operating systems implemented it also in IPv4. IPsec uses two encryption modes: Transport and Tunnel.
IPVS—IP Virtual Server. A Linux kernel load balancing infrastructure, supports IPv4 and IPv6. See http://www.linuxvirtualserver.org/software/ipvs.html.
ISR—Interrupt Service Routine. An interrupt handler that is invoked when an interrupt is received.
ISM—Industrial, scientific, and medical radio band.
jumbo frames—Packets with size up to 9K. Some network interfaces allow using an MTU of up to 9K. Using jumbo frames can improve the network performance in some cases, such as in bulk data transfers.
KVM—Kernel-based Virtual Machine. A Linux virtualization project.
LACP—Link Aggregation Control Protocol.
LAN—Local Area Network. A network that connects a limited area, such as an office building.
LID—Local Identifier. A 16-bit value assigned to every subnet port by the Subnet Manager (InfiniBand).
L2CAP—Logical Link Control and Adaptation Protocol. Used in Bluetooth.
L2TP—Layer 2 Tunneling Protocol used by VPNs. L2TPv3 is specified in RFC 3931 (RFC 5641 has some updates).
LKML—Linux Kernel Mailing List.
LLCP —Logical Link Control Protocol. Used by NFC.
LLN—Low-power and Lossy Network.
LoWPAN—Low-power Wireless Personal Area Network.
LMP—Link Management Protocol. Controls the radio link between two Bluetooth devices.
LPM—Longest Prefix Match. An algorithm used by the routing subsystem.
LRH—Local Routing Header. An InfiniBand header of 8 bytes. It identifies the local source and destination ports of the packet. It also specifies the requested QoS attributes (SL and VL) of the message.
LRO—Large Receive Offload.
LR-WPAN—Low-Rate Wireless Personal Area Network. Used in IEEE 802.15.4.
LSB—Least significant bit.
LSRR—Loose Source Record Route.
LTE—Long Term Evolution.
MAC—Media Access Control. A sublayer of the Data Link Layer (L2) of the OSI model.
MAD—Management Datagram (InfiniBand).
MFC—Multicast Forwarding Cache. A data structure in the kernel that consists of multicast forwarding entries.
MIB—Management Information Base.
MLD—Multicast Listener Discovery protocol. Enables each IPv6 router to discover the presence of multicast listeners. The MLD protocol is specified in RFC 3810, from 2004.
MLME—MAC Layer Management Entity. A component in the IEEE 802.11 management layer responsible for operations such as scanning, authentication, association, and reassociation.
MR—Memory Region (InfiniBand).
MSF—Multicast Source Filtering. This is the feature to set filters so that multicast traffic from sources other than the expected ones will be dropped.
MSI—Message Signaled Interrupts.
MSS—Maximum Segment Size. A parameter of the TCP protocol.
MTU—Maximum transmission unit. The size of the largest packet that a network protocol can transmit.
MW—Memory Window (InfiniBand).
NAP—Network Access Point.
NAPI—New API. A technique by which network drivers are not interrupt-driven, but use polling. NAPI is discussed in Chapter 1.
NAT—Network Address Translation. A layer responsible for modifying IP headers. In Linux, support for IPv6 NAT was merged in kernel 3.7.
NAT-T—NAT traversal.
NCI—NFC Controller Interface.
ND / NDISC—Neighbour Discovery Protocol. Used in IPv6. Among its tasks: discovering network nodes on the same link, autoconfiguration of addresses, finding the Link Layer addresses of other nodes, and maintaining reachability information about other nodes.
NFC—Near Field Communication.
NDEF—NFC Data Exchange Format.
NIC—Network Interface Card, also known as Network Interface Controller or Network Adapter. The hardware network device.
NUMA—Non-Uniform Memory Access.
NPP—NDEF Push Protocol.
NPAR—NIC Partitioning. A technology that enables you to split up network card (NIC) traffic in partitions.
NUD—Network Unreachability Detection. A mechanism responsible for determining whether a neighbour can be reached.
OBEX—Object Exchange. A protocol for exchange of binary objects between devices, used in Bluetooth.
OEM—Original Equipment Manufacturer.
OFA—OpenFabrics Alliance.
OCF—Open Cryptography Framework.
OHA—Open Handset Alliance.
OOTB—Out of the Blue packet (a term of the SCTP protocol). A packet is an OOTB packet if it is correctly formed (that is, no checksum error), but the receiver is not able to identify the SCTP association to which the packet belongs (see section 8.4 in RFC 4960).
OPP—Object Push Profile. Used by Bluetooth.
OSI Model—Open Systems Interconnection.
OSPF—Open Shortest Path First. Interior gateway routing protocol developed for IP networks.
PADI—PPPoE Active Discovery Initiation.
PADO—PPPoE Active Discovery Offer.
PADR—PPPoE Active Discovery Request.
PADS—PPPoE Active Discovery Session.
PADT—PPPoE Active Discovery Terminate.
PAN—Personal Area Networking. A profile used in Bluetooth.
PCI—Peripheral Component Interconnect. A bus for attaching devices. Many network interface cards are PCI devices.
PD—Protection Domain.
PHDC—Personal Health Device Communication. Used by NFC.
PID—Process Identifier.
PIM—Protocol Independent Multicast Protocol. A multicast routing protocol.
PIM-SM—Protocol Independent Multicast—Sparse Mode.
PLME—Physical Layer Management Entity in IEEE 802.11.
PM—Power Management.
PPP—Point To Point data link protocol. A protocol for direct communication between two hosts.
PPPoE—PPP over Ethernet. The PPPoE protocol is specified in RFC 2516 from 1999.
PERR—Path Error. A message that informs about some failure in a wireless Mesh network routing.
PREP—Path Reply. A unicast packet sent as a reply to a PREQ message in a wireless Mesh network.
PREQ—Path Request. A broadcast packet sent when looking for some address in a wireless Mesh network.
PSK—Preshared Key.
Qdisc—Queuing Disciplines.
QP—Queue Pair (InfinBand).
RA—Router Alert. One of the IPv4 options. It notifies transit routers to more closely examine the contents of an IP packet. It is used by many protocols, such as IGMP, MLD, and more.
RANN—Root Announcement. A broadcast packet sent periodically by a Root Mesh point in a wireless Mesh network.
RARP—Reverse Address Resolution Protocol. A protocol used to find the mapping between a link layer address (like a 48-bit Ethernet address) to a network address (like an IPv4 address).
RC—A QP transport type in InfiniBand.
RDMA—Remote Direct Memory Access. A direct memory access from one host to another.
RDS—Reliable Datagram Socket. A reliable connectionless protocol developed by Oracle.
RFC—Request For Comments. A document that specifies Internet specifications, communications protocols, procedures, and events. The standardization process of RFCs is documented at http://tools.ietf.org/html/rfc2026, “The Internet Standards Process.”
RFID—Radio Frequency ID.
RFCOMM—Radio Frequency Communications protocol. Used in Bluetooth.
RFS—Receive Flow Steering.
RIP—Routing Information Protocol: A distance-vector routing protocol.
RoCE—RDMA over Converged Ethernet.
RP—Rendezvous Point.
RPL—IPv6 Routing Protocol for Low-Power and Lossy Networks. The RPL protocol is specified in RFC 6550.
RPDB—Routing Policy DataBase.
RPF—Reverse Path Filter. A technique intended to prevent source address spoofing.
RPC—Remote Procedure Call.
RPS—Receive Packet Steering.
RS—Router Solicitations.
RSA—A cryptography algorithm. RSA stands for Ron Rivest, Adi Shamir, and Leonard Adleman, the people who developed it.
RTP—Real-time Transport Protocol. A protocol for transmitting audio and video over IP networks.
RTR—Ready To Receive. A state in InfiniBand QP State Machine.
RTS—Ready To Send. A state in InfiniBand QP State Machine.
SA—Security Association. A logical relationship between two hosts that consists of various parameters, such as cryptographic key, cryptographic algorithm, SPI, and more.
SACK—Selective Acknowledgments. See RFC 2018, “TCP Selective Acknowledgment Options,” from 1996.
SAD—Security Association Database.
SAR—Segmentation and Reassembly.
SBC—Session Border Controllers.
SCO—Synchronous Connection Oriented link. A Bluetooth protocol.
SDP—Service Discovery Protocol. Used in Bluetooth.
SCTP—Stream Control Transmission Protocol. A transport protocol that has features of both UDP and TCP.
SE—Security Element (NFC).
SIG—Special Interest Group.
SIP—Session Initiation Protocol. A signaling protocol for VoIP, intended for creating and modifying VoIP sessions.
SLAAC—Stateless Address autoconfiguration. Specified in RFC 4862.
SKB—Socket Buffer. A kernel data structure representing a network packet (implemented by the sk_buff structure, include/linux/skbuff.h).
SL—Service Level. The QoS in InfiniBand is implemented using the SL to VL mapping and the resources for each VL.
SLAAC—Stateless Address Autoconfiguration.
SM—Subnet Manager.
SMA—Subnet Management Agent.
SME—System Management Entity in IEEE 802.11.
SMP—Symmetrical Multiprocessing. An architecture where two or more identical processors are connected to a single shared main memory.
SNAT—Source NAT. A NAT that changes the source address.
SNEP—Simple NDEF Exchange Protocol (SNEP) for exchanging NDEF-formatted data.
SNMP—Simple Network Management Protocol.
SPI—Security Parameter Index. Used by IPsec.
SPD—Security Policy Database.
SQD—Send Queue Drained. A state in InfiniBand QP State Machine.
SQE—Send Queue Error. A state in InfiniBand QP State Machine.
SRP—SCSI RDMA protocol.
SR-IOV—Single Root I/O Virtualization. A specification that allows a PCIe device to appear to be multiple separate physical PCIe devices.
SRQ—Shared Receive Queue (InfiniBand).
SSM—Source Specific Multicast.
STUN —Session Traversal Utilities for NAT.
SSP—Secure Simple Pairing. A security feature required by Bluetooth v2.1.
TCP—Transmission Control Protocol. The TCP protocol is the most commonly used transport protocol on the Internet today. Many protocols run on top of TCP, including FTP, HTTP, and more. TCP is specified in RFC 793 from 1981, and during the years since then there have been many protocol updates, variations, and additions to the base TCP protocol.
TIPC—Transparent Inter-process Communication protocol. See http://tipc.sourceforge.net/.
TOS —Type Of Service.
TSO—TCP Segmentation Offload.
TTL—Time To Live. A counter in the IPv4 header (its counterpart in IPv6 is called Hop Limit) that is decremented in each forwarding device. When this counter reaches 0, an ICMP of Time Exceeded is sent back, and the packet is discarded. Both the ttl member of the IPv4 header and the hop_limit member of the IPv6 header are 8-bit fields.
TURN—Traversal Using Relays around NAT.
UC—Unreliable Connected. A QP transport type in InfiniBand.
UD—Unreliable Datagram. A QP transport type in InfiniBand.
UDP—User Datagram Protocol. UDP is an unreliable protocol, as there is no guarantee that packets will be delivered for upper layer protocols. There is no handshaking phase in UDP, in contrast to TCP. The UDP header is simple and consists of only 4 fields: source port, destination port, checksum, and length.
USAGI—UniverSAl playGround for Ipv6. A project that developed IPv6 and IPsec (for both IPv4 and IPv6) stacks for the Linux kernel.
UTS—Unix Time-sharing System.
VCRC—Variant CRC. An InfiniBand header of 2 bytes. Covers all the fields of the packet.
VETH—Virtual Ethernet. A network driver which enables communication between two network devices in different network namespaces.
VoIP—Voice Over IP.
VFS—Virtual File System.
VL—Virtual Lanes. A mechanism for creating multiple virtual links over a single physical link.
VLAN—Virtual Local Area Network.
VPN—Virtual Private Network.
VXLAN—Virtual Extensible Local Area Network. VXLAN is a standard protocol to transfer Layer 2 Ethernet packets over UDP. VXLAN is needed because there are cases where firewalls block tunnels and allow, for example, only TCP/UDP traffic.
WDS—Wireless Distribution System.
WLAN—Wireless LAN.
WOL—Wake On LAN.
WSN—Wireless Sensor Networks.
XRC—eXtended Reliable Connected. A QP transport type in InfiniBand.
XFRM—IPsec Transformer. A Linux kernel framework for handling IPsec transformations. The two most fundamental data structures of the XFRM framework are the XFRM policy and the XFRM state.