well.. openflow is pretty much dead, too inflexible, too slow. The whole control/user plane split is an attempt of the classical router vendors to keep their proprietary boxes. It adds complexity as it requires to synchronize the state of some controller with some data plane box.
P4 was a great idea, but there's not much hardware that supports it.
fd.io / vpp is an impressive stack for software-only routing. Like all SW-only solutions, it suffers from high power consumption and packet rate variability. At today's packet rates, you always have to ask 'how many CPU instructions / cycles are required to perform this or that function per packet'.