The MikroTik Packet Packer Protocol (M3P) optimizes the data rate usage of links using protocols that have a high overhead per packet transmitted. The basic purpose of this protocol is to better enable wireless networks to transport VoIP traffic and other traffic that uses small packet sizes of around 100 bytes.
enabled by a per interface setting
other routers with MikroTik Discovery Protocol enabled will broadcast M3P settings
significantly increases bandwidth availability over some wireless links by approximately four times
offer configuration settings to customize this feature
Packages required: system
License required: Level1
Submenu level: /ip packing
Standards and Technologies: M3P
Hardware usage: Not significant
The wireless protocol IEEE 802.11 and, to a lesser extent, Ethernet protocol have a high overhead per packet as for each packet it is necessary to access the media, check for errors, resend in case of errors occured, and send network maintenance messages (network maintenance is applicable only for wireless). The MikroTik Packet Packer Protocol improves network performance by aggregating many small packets into a big packet, thereby minimizing the network per packet overhead cost. The M3P is very effective when the average packet size is 50-300 bytes the common size of VoIP packets.
may work on any Ethernet-like media
is disabled by default for all interfaces
when older version on the RouterOS are upgraded from a version without M3P to a version with discovery, current wireless interfaces will not be automatically enabled for M3P
small packets going to the same MAC level destination (regardless of IP destination) are collected according to the set configuration and aggregated into a large packet according to the set size
the packet is sent as soon as the maximum aggregated-packet packet size is reached or a maximum time of 15ms (+/-5ms)
Submenu level: /ip packing
M3P is working only between MikroTik routers, which are discovered with MikroTik Neighbor Discovery Protocol (MNDP). When M3P is enabled router needs to know which of its neighbouring hosts have enabled M3P. MNDP is used to negotiate unpacking settings of neighbours, therefore it has to be enabled on interfaces you wish to enable M3P. Consult MNDP manual on how to do it.
aggregated-size (integer; default: 1500) - the maximum aggregated packet's sizeinterface (name) - interface to enable M3P onpacking (none | simple | compress-all | compress-headers; default: simple) - specifies the packing mode
none - no packing is applied to packets
simple - aggregate many small packets into one large packet, minimizing network overhead per packet
compress-headers - further increase network performance by compressing IP packet header (consumes more CPU resources)
compress-all - increase network performance even more by using header and data compression (extensive CPU usage)
unpacking (none | simple | compress-all | compress-headers; default: simple) - specifies the unpacking mode
none - accept only usual packets
simple - accept usual packets and aggregated packets without compression
compress-headers - accept all packets except those with payload compression
compress-all - accept all packets
Level of packet compression increases like this: none -> simple -> compress-headers -> compress-all.
When router has to send a packet it choses minimum level of packet compression from what its own packing type is set and what other router's unpacking type is set. Same is with aggregated-size setting - minimum value of both ends is actual maximum size of aggregated packet used.
aggregated-size can be bigger than interface MTU if network device allows it to be (i.e., it supports sending and receiving frames bigger than 1514 bytes)
To enable maximal compression on the ether1 interface:
[admin@MikroTik] ip packing> add interface=ether1 packing=compress-all \
[admin@MikroTik] ip packing> print
Flags: X - disabled
# INTERFACE PACKING UNPACKING AGGREGATED-SIZE
0 ether1 compress-all compress-all 1500
[admin@MikroTik] ip packing>