Yeah, probably a router bug that only go-ipfs manages to hit, so obviously it's the fault of the router, not the software that is the only one managing to crash the router.
No, actually, I'm going to continue believing that the only thing doing X, is the cause of X, because there is absolutely zero evidence of otherwise.
edit:
ok. the problem is almost certainly in connection management. note that the authors of rfc791 explicitly were trying to avoid keeping per-connection state in intermediate systems for this and other reasons.
so the market decided against that and built this whole NAT monstrosity. in any case though, inability to maintain these structures correctly or inability to manage out-of-memory conditions _must_ fall on that implementation. remote endpoints have no machinery to coordinate memory reservations on intermediate systems (alternate network layers designs that do keep per-connection state have so far failed...we can speculate why)
more pragmatically, any crash of any router software is an error. you can ask any network protocol developer that ever existed. if the originator emitted a malformed header, or failed to keep up its end of some complicated state management contract then it too has a bug, but the intermediate system is still responsible for handling that gracefully.
a forwarding implementation should never crash. ever.