Very slow PPTP tunnel

alternatively use my following script to import (sync) an address-list into routing-rules table.. then you can fasttrack PPTP and you will not need to mark-routing.

remember to add ; SRC:(empty) DST:LAN table:main routing rule, manually for the incoming traffic..

:local LANaddr "192.168.88.0/24"
:local fwaddrlist "pptp"
:local scriptname "fw_sync_rrule"
:local routetable "pptp"

{
	/system script job
	:if ([:len [find script="$scriptname"]] > 1) do={
		 :log info "$scriptname : script already running"
		:error "$scriptname : script already running"
	}
}

/routing/rule
:local addrlistentryId
:foreach i in=[find comment="$scriptname"] do={
	:local src [get $i src-address]
	:local dst [get $i dst-address]
	:local dstWO32 [get $i dst-address]
	:if ( :len [:find $dst "/32"] > 0) do={
		:set dstWO32 [:pick $dst 0 [:find $dst "/32"]]
	}

	:if ($LANaddr != $src) do={
		/routing/rule/set $i src-address=$LANaddr
		:log info "$scriptname : routing rule $dst fixed (wrong LAN address)"
	}
	:if ( [:len [:find $dst "/"]] < 1 ) do={
		/routing/rule/set $i dst-address=($dst . "/32")
		:log info "$scriptname : routing rule $dst fixed (add missing /32)"
	}
	:set addrlistentryId [ /ip/firewall/address-list/find list="$fwaddrlist" address="$dstWO32"]
	:if ( [ :len $addrlistentryId ] < 1 ) do={
		/routing/rule/remove $i
		:log info "$scriptname : routing rule $dst removed (not in firewall)"
	}
}

/ip/firewall/address-list/
:local rruleentryId
:foreach i in=[find list="$fwaddrlist"] do={
	:local addr [get $i address]

	:if ( [:len [:find $addr "/"]] < 1 ) do={
		:set addr ($addr . "/32")
	}
	:set rruleentryId [ /routing/rule/find comment="$scriptname" dst-address="$addr"]
	:if ( [ :len $rruleentryId ] < 1 ) do={
		/routing/rule/add comment="$scriptname" src-address=$LANaddr dst-address=$addr action=lookup table=$routetable
		:log info "$scriptname : routing rule added for $addr"
	}
}

note: add scheduler for running it every ten seconds, or so…

WARNING: script is experimental… use it at your own risk…

Hope this can be implemented natively someday by MikroTik Team! because using the script is resource-intensive.