Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

We need to create an Algorithm for IEPM where Monitoring sites can schedule one at a time. If site A runs tool x, then no other site should execute x at that time.We can solve this problem using a combination of two basic Algorithms i.e. Token Ring and Priority Queue. Token Ring algorithm is use to allow one host at a time to execute a tool. There is one token, passing through the sites. The site that have the token will be able to execute the tools, while other will wait for the token to receive. The token will contain the number of bytes the site can use to execute tools. At site, after execution it takes the following actions.

1. Execute the tool with highest priority if bytes received in token is greater then bytes required by the tool else execute the second highest priority tool.
2. Set the priority of executed tool to the lowest priority.
3. Decrement the number of bytes used by the tool from the token.
4. if bytes in token are greater then any tool required byes then go to step 1 else set the token to its initial value and forward to the next site.

Lets say we have an Array of N Monitoring sites M[1...N] and each site have n tools T[1..n] to execute. Let B be the bytes received by host in token and X[1..x] represent no of target to be probed with tools.

Code Block
NextSite(A,i)
if i is equal to length_of(A) then
   return A[1]
else return A[i+1] 
Code Block
ChangePriority(A){
  x = A[lengthOf(A)]
  for i = lengthOf(A)-1 down to 1
	A[i+1] = A[i]
	i = i -1
  A[1] = x
}

      ChangePriority takes an array as argument and change its priority from N to 1 and increase the other consecutive elements priority by 1. It actually treats an index of an element as its priority. Hence, It copy A[N] at A[1] and A[i] at A[i+1]

Code Block
GetMaxPriorityElement(A){
	return A[lengthOf(A)]
}
Code Block
Schedule(M,T,X){
  while isTokenRecieved() is false
	 // wait 1 sec for another check
  totalBytes = B				// B is the total no. of bytes received in Token
  target = GetHighestPriorityElement(X)
  ChangePriority(X)
  while totalBytes > 0
	tool = GetHighestPriorityElement(T)
	exec (tool,target)
	totalBytes = totalbytes - tool.bytesRequired
	ChangePriority(T)
  sendToken(NextSite(M,i),B)
}