Physical addressing mode is a Scalable Packet Buffer Mode that also allows Onload stacks to use large amounts of packet buffer memory (avoiding the limitations of the address translation table on the adapter), but without the requirement to configure and use SR-IOV virtual functions.
Physical addressing mode, does however, remove memory protection from the network adapter’s access of packet buffers. Unprivileged user-level code is provided and directly handles the raw physical memory addresses of packets buffers. User-level code provides physical memory addresses directly to the adapter and therefore has the ability to direct the adapter to read or write arbitrary memory locations. A result of this is that a malicious or buggy application can compromise system integrity and security. Onload versions earlier than OpenOnload 201210 and EnterpriseOnload 2.1.0.0 are limited to 1 million packet buffers. This limit was raised to 2 million packet buffers in OpenOnload 201210-u1 and EnterpriseOnload 2.1.0.1.
To enable physical addressing mode:
- Ignore configuration steps 1-4 above.
- Put the following option into a user-created .conf file in
the /etc/modprobe.d directory:
options onload phys_mode_gid=<n>
Where setting <n> to be -1 allows all users to use physical addressing mode and setting to an integer x restricts use of physical addressing mode to the specific user group x.
- Reload the Onload kernel
drivers:
# onload_tool reload
- Enable the Onload environment using EF_PACKET_BUFFER_MODE 2 or 3.
EF_PACKET_BUFFER_MODE
=2
is equivalent to mode 0, but uses physical addresses. Mode 3 uses SR-IOV VFs with physical addresses, but does not use the IOMMU for memory translation and protection. Refer to Parameter Reference for a complete description of all EF_PACKET_BUFFER_MODE options.