I have used Native port before with baudrates at 40Mbit/s with no problems.
What do you mean by USB reception? Is it using the programming port?
Data can flow both ways on the native port (and any of the serial ports). The speed is not the same in both directions. SerialUSB.write() is much faster than SerialUSB.read().
What do you mean Serial2 is polled with a byte buffer?
If you use Serial2.print("Hello World") on Arduino Uno, Leonardo, Mega, etc, all 11 bytes are quickly written to a buffer. Your program gets to keep running. The serial2 interrupt then moves the data from the buffer to the serial line while your program can to do other stuff.
On Due, only 2 bytes of transmit buffering are used. Serial.print() will not return until 9 bits have actually been transmitted. Your program gets to run again when those last 2 bytes are still buffered.
Actually, in my design the TTL device will send data continuosly and the PC will send some short frames of three bytes, for configuration in asynchronous mode (after a user request).
Do you know where I can find a script doing something similar to this?
Is it possible a dma mode?
I can't get more involved in your project (and really, you initially didn't even give the detail of how much data you were planning in each direction).
Maybe these details will help you plan your code? If not, I just can't spend more time.
Good luck. I hope it works out well. Maybe you'll post a followup after you build this?