Just wondering if you have two ends mptcp enabled, and say client has 2 interfaces eth0 and eth1 if I understand correctly how mptcp works (depending on routing table) it will create 2 different subflows to server. If so can client send SYN on say eth0, and get a SYN-ACK on eth1 from server?
The client decides when to create subflows.
Each subflow has a seperate three-way handshake. When the client sends a syn from an IP address it expects to get the syn-ack sent back to that same IP address.
Once the subflows have been established data packets can be sent on different subflows as dictated by network performance and local policy (for example the client may consider different connections to have different costs).