public ConeNat(TransportAddress ta, int timeout)
{
_external_ta = new TransportAddress[1] { ta };
_internal_ta = new TransportAddress[1] { ((SimulationTransportAddress) ta).Invert() };
_known_tas = _internal_ta;
// TBC uses a staged GC, so values are still in after one timeout
_allowed = new TimeBasedCache<TransportAddress, bool>(timeout / 2);
_allowed.EvictionHandler += HandleEviction;
_allow_inbound = false;
}