Solution (source code)

= Solution

Dynamic <network address and port translation> has an important <soft state> aspect: activity refreshes a binding's lifetime, and inactivity eventually expires it without a reliably delivered close message. This is especially useful for <UDP>, which supplies no connection-closing exchange. Even for <TCP>, the <router> cannot assume that it will observe every closing <packet>.

However, an expiring entry is not necessarily harmlessly disposable. Suppose the binding `10.0.0.2:49152` to `198.51.100.7:62001` disappears while the remote <endpoint> is still using it. A reply to port 62001 no longer reveals the private destination. New outbound traffic might obtain a different public <transport port>, which does not reconstruct the old connection as viewed by the remote <endpoint>. Losing the binding can therefore break the exchange even though both <endpoints> remain alive. This conflicts with <fate-sharing> when indispensable connection information resides in a separate <router>.

Static address mappings and configured <port forwarding> are <hard state>; a fixed translation rule need not even require a dynamic per-exchange table. Thus
$$
\boxed{\text{dynamic bindings use soft-state expiry, but may hold essential connection state}.}
$$
Describing all <network address translation> information as fully reconstructible <soft state> would overlook both this recovery limitation and the static configuration.