Capturing all udp traffic cause network gone after around three hours

Hi there,

This is for making it a separate thread for this capturing all udp traffic case that causes network gone.

I am using this filter setting:
Code Block for seg in 1...254 {
if seg != 127 {
hosts = [("\(seg).0.0.0", "0")]
for host in hosts {
let ep = NWHostEndpoint(hostname: host.0, port: host.1)
let rule = NENetworkRule.init(remoteNetwork: ep, remotePrefix: 8, localNetwork: nil, localPrefix: 0, protocol: .UDP, direction: .outbound)
rules.append(rule)
}
}
}


It works since the beginning as expecting capturing all udp traffic including port 53 ones. But then after around three hours time, network is gone like below:
Code Block
ping apple.com
...
Request timeout for icmp_seq 14745
ping: sendto: No route to host
Request timeout for icmp_seq 14746
ping: sendto: No route to host

When issue happens, appproxy network service is still connected and running, but my wifi network service becomes unconnected (as self-assigned IP) and not recoverable. Only by removing the appproxy service and reconnect wifi, can it recover.

I have tried for udp both NWUDPSession and NWConnection, but with the same result.

Would like to see with your suggestion as got your point before saying:

Proxying UDP flows is something that can be done without a crash.

Thanks in advance.

When issue happens, appproxy network service is still connected and running, but my wifi network service becomes unconnected (as self-assigned IP) and not recoverable. Only by removing the appproxy service and reconnect wifi, can it recover.

Does the same thing happen if you run over ethernet without Wi-Fi?


Matt Eaton
DTS Engineering, CoreOS
meaton3@apple.com
Capturing all udp traffic cause network gone after around three hours
 
 
Q