code: func (s *remoteSite) Dial(params DialParams) (net.Conn, error) {
  	err := params.CheckAndSetDefaults()
  	if err != nil {
  		return nil, trace.Wrap(err)
  	}
  
  	clusterConfig, err := s.localAccessPoint.GetClusterConfig()
  	if err != nil {
  		return nil, trace.Wrap(err)
  	}
  
  	// if the proxy is in recording mode use the agent to dial and build a
  	// in-memory forwarding server
  	if clusterConfig.GetSessionRecording() == services.RecordAtProxy {
  		if params.UserAgent == nil {
  			return nil, trace.BadParameter("user agent missing")
  		}
  		return s.dialWithAgent(params)
  	}
  	return s.DialTCP(params.From, params.To)
  }
docs: // Dial is used to connect a requesting client (say, tsh) to an SSH server
  // located in a remote connected site, the connection goes through the
  // reverse proxy tunnel.