A method for facilitating data communication comprising: receiving, at a first network node device, via a local network interface, a first tunnel data packet encapsulating a first payload according to a first tunneling protocol, a second tunnel data packet encapsulating a second payload according to the first tunneling protocol, and a third tunnel data packet encapsulating a third payload according to a second tunneling protocol that is different than the first tunneling protocol; identifying a first tunnel session associated with the first tunnel data packet and a second tunnel session associated with the third tunnel data packet that is different than the first tunnel session; generating and maintaining a first packet context for the first tunnel session based on at least the received first tunnel data packet, and a second packet context for the second tunnel session based on at least the received third tunnel data packet; determining, based on at least the first packet context and the second tunnel data packet, that the second tunnel data packet is for the first tunnel session; in response to the determination that the second tunnel data packet is for the first tunnel session, de-encapsulating the second payload from the second tunnel data packet in accordance with the first tunneling protocol; in response to the determination that the third tunnel data packet is for the second tunnel session, de-encapsulating the third payload from the third tunnel data packet in accordance with the second tunneling protocol; and submitting the second payload and the third payload to a common acceleration and optimization processor of the first network node device. receiving, at a first network node device, via a local network interface, a first tunnel data packet encapsulating a first payload according to a first tunneling protocol, a second tunnel data packet encapsulating a second payload according to the first tunneling protocol, and a third tunnel data packet encapsulating a third payload according to a second tunneling protocol that is different than the first tunneling protocol; identifying a first tunnel session associated with the first tunnel data packet and a second tunnel session associated with the third tunnel data packet that is different than the first tunnel session; generating and maintaining a first packet context for the first tunnel session based on at least the received first tunnel data packet, and a second packet context for the second tunnel session based on at least the received third tunnel data packet; determining, based on at least the first packet context and the second tunnel data packet, that the second tunnel data packet is for the first tunnel session; in response to the determination that the second tunnel data packet is for the first tunnel session, de-encapsulating the second payload from the second tunnel data packet in accordance with the first tunneling protocol; in response to the determination that the third tunnel data packet is for the second tunnel session, de-encapsulating the third payload from the third tunnel data packet in accordance with the second tunneling protocol; and submitting the second payload and the third payload to a common acceleration and optimization processor of the first network node device.