PPP link compression with Linux host

I have a fairly slow PPP session on which I would like to get compression working on. Connecting a RB411U running RouterOS 6.10 to a CentOS 6.5 server using L2TP and pppd.

Firstly, I know MPPE is negotiated in the CCP (Compression Control Protocol) network layer negotiation of PPP and subsequently doesn’t make it possible to use deflate compression at the same time. I’m wanting to peer internet access from our offices using a local only ADSL account at home so not having encryption is not a concern.

Problem:
It appears RouterOS implements a different deflate compression algorithm which isn’t compatible with deflate available on standard Linux system. RouterOS rejects the ‘<deflate 15> <deflate(old#) 15>’ offer and instead offers ‘<deflate 16 method 6> <deflate(old#) 16 method 6>’ in return. Are there any details available anywhere to implement this on a Linux host?

pppd connection log:
Mar 1 17:32:06 unix-01 pppd[1345]: pppd 2.4.5 started by root, uid 0
Mar 1 17:32:06 unix-01 pppd[1345]: using channel 36
Mar 1 17:32:06 unix-01 pppd[1345]: Using interface ppp0
Mar 1 17:32:06 unix-01 pppd[1345]: Connect: ppp0 ↔ /dev/pts/0
Mar 1 17:32:06 unix-01 pppd[1345]: sent [LCP ConfReq id=0x1 <mru 1440> <asyncmap 0x0> <magic 0x6f46d9d> ]
Mar 1 17:32:06 unix-01 pppd[1345]: rcvd [LCP ConfReq id=0x2b <mru 1440> <magic 0x42cc68af>]
Mar 1 17:32:06 unix-01 pppd[1345]: sent [LCP ConfAck id=0x2b <mru 1440> <magic 0x42cc68af>]
Mar 1 17:32:06 unix-01 pppd[1345]: rcvd [LCP ConfRej id=0x1 <asyncmap 0x0> ]
Mar 1 17:32:06 unix-01 pppd[1345]: sent [LCP ConfReq id=0x2 <mru 1440> <magic 0x6f46d9d>]
Mar 1 17:32:06 unix-01 pppd[1345]: rcvd [LCP ConfAck id=0x2 <mru 1440> <magic 0x6f46d9d>]
Mar 1 17:32:06 unix-01 pppd[1345]: sent [CHAP Challenge id=0xc <4203177342c69c1622597f03ec68e3a5>, name = “xl2tp”]
Mar 1 17:32:07 unix-01 pppd[1345]: rcvd [CHAP Response id=0xc , name = “bbs2web-home”]
Mar 1 17:32:07 unix-01 pppd[1345]: sent [CHAP Success id=0xc “S=54E5590429483BF2C9CB425B1B67A92F6B4F9E3B M=Access granted”]
Mar 1 17:32:07 unix-01 pppd[1345]: sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15>]
Mar 1 17:32:07 unix-01 pppd[1345]: sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 192.168.251.1>]
Mar 1 17:32:07 unix-01 pppd[1345]: rcvd [IPCP ConfReq id=0x21 <addr 0.0.0.0> <compress VJ 0f 01>]
Mar 1 17:32:07 unix-01 pppd[1345]: sent [IPCP ConfNak id=0x21 <addr 192.168.251.244>]
Mar 1 17:32:07 unix-01 pppd[1345]: rcvd [CCP ConfReq id=0x2a]
Mar 1 17:32:07 unix-01 pppd[1345]: sent [CCP ConfAck id=0x2a]
Mar 1 17:32:07 unix-01 pppd[1345]: rcvd [CCP ConfNak id=0x1 <deflate 16 method 6> <deflate(old#) 16 method 6>]
Mar 1 17:32:07 unix-01 pppd[1345]: sent [CCP ConfReq id=0x2]
Mar 1 17:32:07 unix-01 pppd[1345]: rcvd [IPCP ConfAck id=0x1 <compress VJ 0f 01> <addr 192.168.251.1>]
Mar 1 17:32:07 unix-01 pppd[1345]: rcvd [IPCP ConfReq id=0x22 <addr 192.168.251.244> <compress VJ 0f 01>]
Mar 1 17:32:07 unix-01 pppd[1345]: sent [IPCP ConfAck id=0x22 <addr 192.168.251.244> <compress VJ 0f 01>]
Mar 1 17:32:07 unix-01 pppd[1345]: local IP address 192.168.251.1
Mar 1 17:32:07 unix-01 pppd[1345]: remote IP address 192.168.251.244
Mar 1 17:32:07 unix-01 pppd[1345]: Script /etc/ppp/ip-up started (pid 1361)
Mar 1 17:32:07 unix-01 pppd[1345]: rcvd [CCP ConfAck id=0x2]
Mar 1 17:32:07 unix-01 pppd[1345]: rcvd [CCP TermReq id=0x2b"No compression negotiated"]
Mar 1 17:32:07 unix-01 pppd[1345]: CCP terminated by peer (No compression negotiated)
Mar 1 17:32:07 unix-01 pppd[1345]: sent [CCP TermAck id=0x2b]
Mar 1 17:32:07 unix-01 pppd[1345]: Compression disabled by peer.
Mar 1 17:32:07 unix-01 pppd[1345]: Script /etc/ppp/ip-up finished (pid 1361), status = 0x0


RouterOS configuration:

/ppp profile
    add change-tcp-mss=yes name=compressonly use-compression=yes use-encryption=no use-mpls=no use-vj-compression=yes
/interface l2tp-client
    add add-default-route=no allow=mschap2 connect-to=vpn.office.com dial-on-demand=no disabled=no keepalive-timeout=60 \
    max-mru=1440 max-mtu=1440 mrru=disabled name=office user=bbs2web-home password=******** profile=compressonly

CentOS configuration:
/etc/xl2tpd/xl2tpd.conf

[global]
port = 1701

[lns default]
exclusive = no
ip range = 192.168.251.244-192.168.251.253
local ip = 192.168.251.1
require authentication = yes
hostname = L2TP_VPN_Server
ppp debug = no
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

/etc/ppp/options.xl2tpd

auth
lock
crtscts
nodetach
mru 1440
mtu 1440
nodefaultroute
connect-delay 5000

refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
plugin winbind.so
ntlm_auth-helper "/usr/bin/ntlm_auth --helper-protocol=ntlm-server-1 --require-membership-of='B2W+vpn_access'"
name xl2tp

Maybe I am wrong, but it seems that compression algorithm in mikrotik is compatible only with microsoft proprietal protocol and is not aviable for linux :-/