A Transmission Control Protocol, TCP, augmented router (400,1900) capable of monitoring TCP sessions, the TCP augmented router comprising: a plurality of network interfaces (420,422,1902,1904); a computer memory (428,432) storing a bilateral TCP state database; and a packet router configured to: for the lead packet of each of a number of TCP bi-flow sessions, read metadata from the lead packet to change the destination address of each packet of the TCP bi-flow session to be a specific next-hop router and to change the source address of each packet of the TCP bi-flow session to be the address of the TCP augmented router, to cause every packet of the TCP bi-flow session to necessarily follow the same path; and implement, for each of the TCP bi-flow sessions established by the packet router, a bilateral TCP state machine that performs a process comprising: establishing, in the bilateral TCP state database, a bilateral TCP state record for the TCP bi-flow session including reference TCP sequence information for monitoring the TCP bi-flow session and statistical information regarding TCP errors detected by the bilateral TCP state machine; receiving, via a first network interface (420,1902), forward session packets in transit from a source node to a target node; receiving, via a second network interface (422,1904), return session packets in transit from the target node to the source node; monitoring the TCP bi-flow session based on received TCP sequence information from both the received forward session packets and the received return session packets and the reference TCP sequence information maintained in the bilateral TCP state record, including detecting TCP errors based on the received and reference TCP sequence information; and updating the bilateral TCP state record for the TCP bi-flow session, including updating the reference TCP sequence information in the bilateral TCP state record based on the received TCP sequence information from the received forward and return session packets and updating the statistical information in the bilateral TCP state record when a TCP error is detected. a plurality of network interfaces (420,422,1902,1904); a computer memory (428,432) storing a bilateral TCP state database; and a packet router configured to: for the lead packet of each of a number of TCP bi-flow sessions, read metadata from the lead packet to change the destination address of each packet of the TCP bi-flow session to be a specific next-hop router and to change the source address of each packet of the TCP bi-flow session to be the address of the TCP augmented router, to cause every packet of the TCP bi-flow session to necessarily follow the same path; and implement, for each of the TCP bi-flow sessions established by the packet router, a bilateral TCP state machine that performs a process comprising: establishing, in the bilateral TCP state database, a bilateral TCP state record for the TCP bi-flow session including reference TCP sequence information for monitoring the TCP bi-flow session and statistical information regarding TCP errors detected by the bilateral TCP state machine; receiving, via a first network interface (420,1902), forward session packets in transit from a source node to a target node; receiving, via a second network interface (422,1904), return session packets in transit from the target node to the source node; monitoring the TCP bi-flow session based on received TCP sequence information from both the received forward session packets and the received return session packets and the reference TCP sequence information maintained in the bilateral TCP state record, including detecting TCP errors based on the received and reference TCP sequence information; and updating the bilateral TCP state record for the TCP bi-flow session, including updating the reference TCP sequence information in the bilateral TCP state record based on the received TCP sequence information from the received forward and return session packets and updating the statistical information in the bilateral TCP state record when a TCP error is detected. establishing, in the bilateral TCP state database, a bilateral TCP state record for the TCP bi-flow session including reference TCP sequence information for monitoring the TCP bi-flow session and statistical information regarding TCP errors detected by the bilateral TCP state machine; receiving, via a first network interface (420,1902), forward session packets in transit from a source node to a target node; receiving, via a second network interface (422,1904), return session packets in transit from the target node to the source node; monitoring the TCP bi-flow session based on received TCP sequence information from both the received forward session packets and the received return session packets and the reference TCP sequence information maintained in the bilateral TCP state record, including detecting TCP errors based on the received and reference TCP sequence information; and updating the bilateral TCP state record for the TCP bi-flow session, including updating the reference TCP sequence information in the bilateral TCP state record based on the received TCP sequence information from the received forward and return session packets and updating the statistical information in the bilateral TCP state record when a TCP error is detected.