IP Packet Packer Protocol (M3P)

Document revision 1.5 (13-Jun-2003)
This document applies to the MikroTik RouterOS v2.7

Table Of Contents

Summary

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.

M3P features:

Specifications

Packages required : system
License required : Any
Home menu level : /ip packing
Protocols utilized : none
Hardware usage: not significant

Related Documents

Software Package Installation and Upgrading
MikroTik Neighbor Discovery Protocol (MNDP)

MikroTik Packet Packer Protocol Description

The wireless protocol IEEE 802.11 and, due 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 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.

Specific Properties:

MikroTik Packet Packer Protocol Setup

Submenu level : /ip packing

Description

IP MikroTik Packet Packer Protocol 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.

Property Description

aggregated-size (integer; default: 1500) – the maximum size of the aggregated packet
interface (name) - interface to enable M3P on
packing (compress-all | compress-headers | none | simple; default: simple) - set the packing mode supported on interface
  • none - no packing is applied to packets
  • simple - aggregate many small packets in one big packet, minimizing the network per packet overhead cost
  • compress-headers - further increase network performace by applying packet header compression (uses more CPU resource)
  • compress-all - increase network performance even more by using header and data compression (extensive CPU usage)
    unpacking (compress-all | compress-headers | none | simple; default: simple) -
  • none - accept only usual packets
  • simple - accept aggregated packets without compression and usual packets
  • compress-headers - accept all packets except those with data compression
  • compress-all - accept all packets

    Notes

    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 endds 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)

    Example

    To enable maximal compression on the ether1 interface:
    [admin@MikroTik] ip packing> add interface=ether1 packing=compress-all \
    \... unpacking=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>
    


    © Copyright 1999-2003, MikroTik