Remove NAPT from PacketForwarder
Consider below scenario:
Internal address: 1.2.3.4
External address: 5.6.7.8
Remote address: 8.8.8.8
When a packet was sent from 1.2.3.4 to 8.8.8.8, the current design
translate it to a packet from 8.8.8.8 to 5.6.7.8 and foward it
to the external interface. However, when the response is received
from the external interface, there is a need to remember what is
the original address to forward to. Thus, an address translation
mechanism was introduced in current design.
This change simplify PacketForwarder by removing the address
translation.
Consider, if the 2 interfaces are using the same address.
Internal address: 1.2.3.4
External address: 1.2.3.4
Remote address: 8.8.8.8
When a packet was sent from 1.2.3.4 to 8.8.8.8, simply swap
source and destination and and foward it to the external
interface. When there is a response from the external interface,
the same process can be done, this removes the need of address
translation.
Test: atest NetworkStackIntegrationTests:android.net.NetworkStatsIntegrationTest
Test: atest CtsHostsideNetworkTests:com.android.cts.net.HostsideVpnTests
Bug: N/A
Change-Id: I86f2e774e9112905e5255b5a28c927562a42ab84
6 files changed