code: func observerGroup(m ma.Multiaddr) string {
  	//TODO: If IPv6 rolls out we should mark /64 routing zones as one group
  	first, _ := ma.SplitFirst(m)
  	return string(first.Bytes())
  }
docs: // observerGroup is a function that determines what part of
  // a multiaddr counts as a different observer. for example,
  // two ipfs nodes at the same IP/TCP transport would get
  // the exact same NAT mapping; they would count as the
  // same observer. This may protect against NATs who assign
  // different ports to addresses at different IP hosts, but
  // not TCP ports.
  //
  // Here, we use the root multiaddr address. This is mostly
  // IP addresses. In practice, this is what we want.