LigandScout, 
    
      iscreen
    
     or  
		
    
      idbgen
    
     allows to execute tasks through a network. Multiple nodes can be used to 
		execute multiple tasks in parallel to take full advantage of multi-core and/or multi-processor systems.	
	
  
  
  
    
		On the client side a screening or conformation generation task can be started directly in LigandScout 
		or through the command line using idbgen. The task is divided into multiple small tasks and distributed 
		to connected worker nodes (iworkers) in the network. The iworker executes the tasks and sends the results 
		back to the client. 
	
  
  
      
			To build connections to iworkers, first, they need to be found in the network. Therefore, 
			the iworkers connection data which consists of an address/host-name and the TCP port 
			(defaults to 30000, but can be changed if needed), where they listen for incoming connection requests, 
			is distributed through the network. The data is sent to the multicast group 255.1.1.1 using UDP 
			(the UDP outgoing port number is the same as the TCP incoming port number which is 30000 by default). 
			Note that multicasting/broadcasting has to be enabled in the firewall. Clients with multicast discovery 
			enabled are registered to this multicast group (255.1.1.1) and listen on the UDP port 40000 for such data. 
			When data is received the appropriate host:port pair is added to the iworkers list of this client. 
			Alternatively, the connection data (host:port) can be added to the iworkers list of the client manually. 
			The client tries to connect to the iworkers in the list periodically until a connection is successfully 
			established (see 
      
        Figure A.6, “Discovery of iworkers in a network”
      
      ). Alternatively, a list of iworkers can be specified 
			statically in the 
      
        LigandScout preferences
      
       or with command-line options of 
			
      
        iscreen
      
       or 
			
      
        idbgen
      
       using the '- -host-list' option.
		
    
    
    
      iworkers are permanently running. Only if clients possess tasks to be executed, 
			a connection will be established to the iworkers. A connection stays open until the client finishes 
			sending tasks or the iworker is terminated. Note that the TCP port needs to be opened on the iworker-side 
			(check the firewall) so that the client can build the connection to the clients. Furthermore, to allow 
			multicast discovery broadcasting needs to be enabled in the network.
		
    
  
      After the connection establishment between the client and iworkers, the client sends 
			tasks to the iworkers. To prevent idle time, iworkers store incoming tasks in a queue which can be accessed 
			very fast if an execution seat is available. The iworker executes the tasks in parallel. The amount of 
			parallel tasks can be specified by the user and defaults to the number of CPU’s. The queue size is limited 
			depending on the number of tasks that can be executed at the same time. As long as the task queue is not full, 
			the iworker request tasks from clients it is connected to. The queue is processed by the 'First in First Out' 
			principle. The first task to be added to the queue will be the first task to be executed, then processing  
			sequentially in the same order. The iworker sends the results back to the client once these are available. 
			The client gathers the part results and provides the overall result. 
		
    
    
    
      If a client loses connection to an iworker it has sent tasks for execution, 
			the client removes the iworker from its iworkers list and resubmits these tasks to other 
			iworkers it is connected to. Analogue, if an iworker loses connection to a client it cancels 
			all tasks in execution which have been submitted by this particular client, and all tasks in 
			the queue submitted by this client are also dropped.
		
    
  
      To configure network traffic, the following ports will be used for communication. 
			If firewalls are used on the specific systems, for the systems running the iworker process, the 
			'TCP incoming port' (default: 30000) must be open. On the client side (i.e. the computer running the iworker, 
			idbgen or LigandScout process, connections to UDP port 40000 must be allowed.
		
    
    
      iworker ports for firewall configuration:
		
    
    | TCP incoming port | Default: 30000 | 
| Multicast group for automatic discovery (optional) | 255.1.1.1 | 
| Example of iptables firewall configuration | /sbin/iptables -A INPUT -p tcp --dport 30000 -j ACCEPT | 
      Client (i.e. idbgen, iscreen or LigandScout) port for firewall configuration:
		
    
    | UDP incoming port | Default: 40000 | 
| Multicast group for automatic discovery (optional) | 255.1.1.1 | 
| Example of iptables firewall configuration | /sbin/iptables -A INPUT -p udp --dport 40000 -j ACCEPT |