Linux Kernel before 3.6 used route caching to do IPv4 multipath routing, which meant routing between two separate lines/ISPs was quite easy. From 3.6 the algorithm changed to being per-packet, meaning that some route table/rule/iptables marker tricks were required to achieve the two lines/ISPs.
However, if you had two lines with the same ISP who could route a single IP down both lines on a per-packet basis in a balanced/failover fashion, then from 3.6 you could easily achieve line bonding (at the IP level) because of the per-packet routing in both directions.
From 4.4, the kernel changed again to flow-based load balancing based on a hash over the source and destination addresses.
I am currently running Kernel 4.4.36, and am using multipath routing over PPPoE connections. My downstream traffic from the ISP is routed across the two separate lines on a per-packet basis (one IP routed down both lines). This means I can achieve a download speed faster than the speed of one individual line. My upstream traffic is routed according to the newer flow-based algorithm across both ppp devices (which have the same IP address). This means that I cannot achieve an upload speed that is faster than the speed of a single line.
Is there a way to configure the current Kernel to use the per-packet algorithm? Would I need to revert to an older Kernel (which I don't want to do for various other reasons)?
My ISP does not support multi-link ppp.
In case it is relevant, I am currently running Arch Linux ARMv7 (on a Raspberry Pi 3) but could change to Raspian if necessary.