<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _get_connection(self):
 """Make SSH connection to the IOS XE device. The external ncclient library is used for creating this connection. This method keeps state of any existing connections and reuses them if already connected. Also interfaces (except management) are typically disabled by default when it is booted. So if connecting for the first time, driver will enable all other interfaces and keep that status in the `_itfcs_enabled` flag. """

        try:
            if self._ncc_connection and self._ncc_connection.connected:
                return self._ncc_connection
            else:
                # ncclient needs 'name' to be 'csr' in order to communicate
                # with the device in the correct way.
                self._ncc_connection = manager.connect(
                    host=self._host_ip, port=self._host_ssh_port,
                    username=self._username, password=self._password,
                    device_params={'name': "csr"}, timeout=self._timeout)
                if not self._itfcs_enabled:
                    self._itfcs_enabled = self._enable_itfcs(
                        self._ncc_connection)
            return self._ncc_connection
        except Exception as e:
            conn_params = {'host': self._host_ip, 'port': self._host_ssh_port,
                           'user': self._username,
                           'timeout': self._timeout, 'reason': e.message}
            raise cfg_exc.ConnectionException(**conn_params)