<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://homeostasis.scs.carleton.ca/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Npradhan</id>
	<title>Soma-notes - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://homeostasis.scs.carleton.ca/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Npradhan"/>
	<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php/Special:Contributions/Npradhan"/>
	<updated>2026-06-02T22:24:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=6909</id>
		<title>COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=6909"/>
		<updated>2010-12-03T09:39:13Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Critique */  added paragraph on merits of AVM cheat detection&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Accountable Virtual Machines ==&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
=Research problem=&lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect &#039;&#039;&#039;integrity violations&#039;&#039;&#039; can be separated into different categories of operations. The first would be &#039;&#039;&#039;Cheat Detection&#039;&#039;&#039;, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability&#039;&#039;&#039; is another important problem that has been the subject of much research. An accountable system provides a method to ascertain whether execution took place correctly and as expected. These systems can also provide reliable evidence of proper execution to third parties, if required. This evidence can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an &#039;&#039;&#039;AVM&#039;&#039;&#039;. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is &#039;&#039;&#039;remote fault detection&#039;&#039;&#039; in a distributed system. That is, having a method to verify proper code execution and machine functionality of a node. Network activity is a common solution to this problem, as it looks at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for &#039;&#039;&#039;deterministic replay&#039;&#039;&#039;. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The hash function used is a cyrptographic hash function, which is a way of translating a arbituary block of data into a string. While not impossible to spoof or break, if it has the three properities specified in the assumptions it is concidered a &amp;quot;hard&amp;quot; problem that is infeasible for a malicious attacker to use as a attack vector in the foreseable future, and thus is secure.&lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so the inputs can be  injected at the same moment during the replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallels streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation.&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
=Critique=&lt;br /&gt;
&lt;br /&gt;
The layout of the paper is primordial for the comprehension of the reader. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved.&lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it casts a much wider net for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server.&lt;br /&gt;
&lt;br /&gt;
As a proof of concept, they used their AVM in the online game Counter Strike and tried to detect online cheats. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[[#References |[10]]]. A 10 year old game [[#References |[10]]] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
While the AVM cheat detection method comes with a performance penalty, it was successful in its goal. This cheat detection method was able to detect all of the 26 downloaded cheats for Counterstrike, without prior knowledge of the nature of the cheats. This is an important step since most cheat detection is responsive. That is, cheat detection for a specific type of cheat is added when that cheat is developed, used, and discovered. The AVM cheat detection method shuts the door on a wide variety of cheats without any prior knowledge of how the cheat works.&lt;br /&gt;
&lt;br /&gt;
When discussing the Counterstrike use case, the authors did not state that in counterstrike the user can record a demo of his current game. Some online playing leagues require every player to record his own demo and upload it to the website, where every person in the league can watch it. Without this demo the team lost the match immediately. Additionally, some leagues require the player to start an extra program (e.g. Electronic Sports League WIRE), which checks the programs running in the background. It also takes random snapshots of the current player and compresses all information into a file and uploads it to one of the server in the online league, where it can be checked by any player.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [[#References |[12]]]&lt;br /&gt;
&lt;br /&gt;
While the paper does test a slightly larger than one to one scenario, it certainly does not test in a real world environement where 16,32 or even 64 players would be playing in the sametime.&lt;br /&gt;
&lt;br /&gt;
Spot checking can be used for applications that require snapshots every x seconds. Even if this way remove a lot of overhead and data storage, it only verify if the applications or user is working as intended every x second. Thus, someone could find the patern of those snapshots and render the AVM inutile.&lt;br /&gt;
&lt;br /&gt;
AVM&#039;s are extremely effective against two types of cheating, that which gives incorrect networking messages and the one that has to be loaded with the game. This is the perfect world for tournaments competition type of game, but in a real world this wouldn&#039;t be of much use. Games get patched, users download add-ons for the game, etc. Every patch or add-ons would require a new AVM which is unreasonable for the amount of people playing the game. A solution brought from the team was to disable the right to install anything on the AVM. As this could work in a tournament environment, a normal users at home would not be pleased with this limitation.&lt;br /&gt;
&lt;br /&gt;
An AVM&#039;s will not in any way catch any bug or exploit in a program that a malicious user could exploit, as the exploit would appear on both user/monitor systems and perform the same. This type of exploit would not be detected, since both the real time execution and the execution log that is known to be correct would both show the exploit as being correct.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;br /&gt;
&lt;br /&gt;
[10] Counter-Strike http://store.steampowered.com/app/10/&lt;br /&gt;
&lt;br /&gt;
[12] Larry L. Peterson and Bruce S. Davie. Computer Networks a Systems Approach, 2007&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=6906</id>
		<title>COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=6906"/>
		<updated>2010-12-03T09:25:07Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Critique */ better expression&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Accountable Virtual Machines ==&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
=Research problem=&lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect &#039;&#039;&#039;integrity violations&#039;&#039;&#039; can be separated into different categories of operations. The first would be &#039;&#039;&#039;Cheat Detection&#039;&#039;&#039;, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability&#039;&#039;&#039; is another important problem that has been the subject of much research. An accountable system provides a method to ascertain whether execution took place correctly and as expected. These systems can also provide reliable evidence of proper execution to third parties, if required. This evidence can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an &#039;&#039;&#039;AVM&#039;&#039;&#039;. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is &#039;&#039;&#039;remote fault detection&#039;&#039;&#039; in a distributed system. That is, having a method to verify proper code execution and machine functionality of a node. Network activity is a common solution to this problem, as it looks at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for &#039;&#039;&#039;deterministic replay&#039;&#039;&#039;. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The hash function used is a cyrptographic hash function, which is a way of translating a arbituary block of data into a string. While not impossible to spoof or break, if it has the three properities specified in the assumptions it is concidered a &amp;quot;hard&amp;quot; problem that is infeasible for a malicious attacker to use as a attack vector in the foreseable future, and thus is secure.&lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so the inputs can be  injected at the same moment during the replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallels streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation.&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
=Critique=&lt;br /&gt;
&lt;br /&gt;
The layout of the paper is primordial for the comprehension of the reader. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved.&lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it casts a much wider net for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server.&lt;br /&gt;
&lt;br /&gt;
As a proof of concept, they used their AVM in the online game Counter Strike and tried to detect online cheats. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[[#References |[10]]]. A 10 year old game [[#References |[10]]] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
When discussing the Counterstrike use case, the authors did not state that in counterstrike the user can record a demo of his current game. Some online playing leagues require every player to record his own demo and upload it to the website, where every person in the league can watch it. Without this demo the team lost the match immediately. Additionally, some leagues require the player to start an extra program (e.g. Electronic Sports League WIRE), which checks the programs running in the background. It also takes random snapshots of the current player and compresses all information into a file and uploads it to one of the server in the online league, where it can be checked by any player.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [[#References |[12]]]&lt;br /&gt;
&lt;br /&gt;
While the paper does test a slightly larger than one to one scenario, it certainly does not test in a real world environement where 16,32 or even 64 players would be playing in the sametime.&lt;br /&gt;
&lt;br /&gt;
Spot checking can be used for applications that require snapshots every x seconds. Even if this way remove a lot of overhead and data storage, it only verify if the applications or user is working as intended every x second. Thus, someone could find the patern of those snapshots and render the AVM inutile.&lt;br /&gt;
&lt;br /&gt;
AVM&#039;s are extremely effective against two types of cheating, that which gives incorrect networking messages and the one that has to be loaded with the game. This is the perfect world for tournaments competition type of game, but in a real world this wouldn&#039;t be of much use. Games get patched, users download add-ons for the game, etc. Every patch or add-ons would require a new AVM which is unreasonable for the amount of people playing the game. A solution brought from the team was to disable the right to install anything on the AVM. As this could work in a tournament environment, a normal users at home would not be pleased with this limitation.&lt;br /&gt;
&lt;br /&gt;
An AVM&#039;s will not in any way catch any bug or exploit in a program that a malicious user could exploit, as the exploit would appear on both user/monitor systems and perform the same. This type of exploit would not be detected, since both the real time execution and the execution log that is known to be correct would both show the exploit as being correct.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;br /&gt;
&lt;br /&gt;
[10] Counter-Strike http://store.steampowered.com/app/10/&lt;br /&gt;
&lt;br /&gt;
[12] Larry L. Peterson and Bruce S. Davie. Computer Networks a Systems Approach, 2007&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=6902</id>
		<title>COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=6902"/>
		<updated>2010-12-03T09:15:23Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Critique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Accountable Virtual Machines ==&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
=Research problem=&lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect &#039;&#039;&#039;integrity violations&#039;&#039;&#039; can be separated into different categories of operations. The first would be &#039;&#039;&#039;Cheat Detection&#039;&#039;&#039;, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability&#039;&#039;&#039; is another important problem that has been the subject of much research. An accountable system provides a method to ascertain whether execution took place correctly and as expected. These systems can also provide reliable evidence of proper execution to third parties, if required. This evidence can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an &#039;&#039;&#039;AVM&#039;&#039;&#039;. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is &#039;&#039;&#039;remote fault detection&#039;&#039;&#039; in a distributed system. That is, having a method to verify proper code execution and machine functionality of a node. Network activity is a common solution to this problem, as it looks at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for &#039;&#039;&#039;deterministic replay&#039;&#039;&#039;. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The hash function used is a cyrptographic hash function, which is a way of translating a arbituary block of data into a string. While not impossible to spoof or break, if it has the three properities specified in the assumptions it is concidered a &amp;quot;hard&amp;quot; problem that is infeasible for a malicious attacker to use as a attack vector in the foreseable future, and thus is secure.&lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so the inputs can be  injected at the same moment during the replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallels streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation.&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
=Critique=&lt;br /&gt;
&lt;br /&gt;
The layout of the paper is primordial for the comprehension of the reader. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved.&lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it has a wider support for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server.&lt;br /&gt;
&lt;br /&gt;
As a proof of concept, they used their AVM in the online game Counter Strike and tried to detect online cheats. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[[#References |[10]]]. A 10 year old game [[#References |[10]]] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
When discussing the Counterstrike use case, the authors did not state that in counterstrike the user can record a demo of his current game. Some online playing leagues require every player to record his own demo and upload it to the website, where every person in the league can watch it. Without this demo the team lost the match immediately. Additionally, some leagues require the player to start an extra program (e.g. Electronic Sports League WIRE), which checks the programs running in the background. It also takes random snapshots of the current player and compresses all information into a file and uploads it to one of the server in the online league, where it can be checked by any player.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [[#References |[12]]]&lt;br /&gt;
&lt;br /&gt;
While the paper does test a slightly larger than one to one scenario, it certainly does not test in a real world environement where 16,32 or even 64 players would be playing in the sametime.&lt;br /&gt;
&lt;br /&gt;
Spot checking can be used for applications that require snapshots every x seconds. Even if this way remove a lot of overhead and data storage, it only verify if the applications or user is working as intended every x second. Thus, someone could find the patern of those snapshots and render the AVM inutile.&lt;br /&gt;
&lt;br /&gt;
AVM&#039;s are extremely effective against two types of cheating, that which gives incorrect networking messages and the one that has to be loaded with the game. This is the perfect world for tournaments competition type of game, but in a real world this wouldn&#039;t be of much use. Games get patched, users download add-ons for the game, etc. Every patch or add-ons would require a new AVM which is unreasonable for the amount of people playing the game. A solution brought from the team was to disable the right to install anything on the AVM. As this could work in a tournament environment, a normal users at home would not be pleased with this limitation.&lt;br /&gt;
&lt;br /&gt;
An AVM&#039;s will not in any way catch any bug or exploit in a program that a malicious user could exploit, as the exploit would appear on both user/monitor systems and perform the same. This type of exploit would not be detected, since both the real time execution and the execution log that is known to be correct would both show the exploit as being correct.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;br /&gt;
&lt;br /&gt;
[10] Counter-Strike http://store.steampowered.com/app/10/&lt;br /&gt;
&lt;br /&gt;
[12] Larry L. Peterson and Bruce S. Davie. Computer Networks a Systems Approach, 2007&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=6901</id>
		<title>COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=6901"/>
		<updated>2010-12-03T09:14:56Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Critique */  organisation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Accountable Virtual Machines ==&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
=Research problem=&lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect &#039;&#039;&#039;integrity violations&#039;&#039;&#039; can be separated into different categories of operations. The first would be &#039;&#039;&#039;Cheat Detection&#039;&#039;&#039;, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability&#039;&#039;&#039; is another important problem that has been the subject of much research. An accountable system provides a method to ascertain whether execution took place correctly and as expected. These systems can also provide reliable evidence of proper execution to third parties, if required. This evidence can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an &#039;&#039;&#039;AVM&#039;&#039;&#039;. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is &#039;&#039;&#039;remote fault detection&#039;&#039;&#039; in a distributed system. That is, having a method to verify proper code execution and machine functionality of a node. Network activity is a common solution to this problem, as it looks at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for &#039;&#039;&#039;deterministic replay&#039;&#039;&#039;. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The hash function used is a cyrptographic hash function, which is a way of translating a arbituary block of data into a string. While not impossible to spoof or break, if it has the three properities specified in the assumptions it is concidered a &amp;quot;hard&amp;quot; problem that is infeasible for a malicious attacker to use as a attack vector in the foreseable future, and thus is secure.&lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so the inputs can be  injected at the same moment during the replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallels streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation.&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
=Critique=&lt;br /&gt;
&lt;br /&gt;
The layout of the paper is primordial for the comprehension of the reader. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved.&lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it has a wider support for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server.&lt;br /&gt;
&lt;br /&gt;
As a proof of concept, they used their AVM in the online game Counter Strike and tried to detect online cheats. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[[#References |[10]]]. A 10 year old game [[#References |[10]]] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
Also for their use case, the authors did not state that in counterstrike the user can record a demo of his current game. Some online playing leagues require every player to record his own demo and upload it to the website, where every person in the league can watch it. Without this demo the team lost the match immediately. Additionally, some leagues require the player to start an extra program (e.g. Electronic Sports League WIRE), which checks the programs running in the background. It also takes random snapshots of the current player and compresses all information into a file and uploads it to one of the server in the online league, where it can be checked by any player.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [[#References |[12]]]&lt;br /&gt;
&lt;br /&gt;
While the paper does test a slightly larger than one to one scenario, it certainly does not test in a real world environement where 16,32 or even 64 players would be playing in the sametime.&lt;br /&gt;
&lt;br /&gt;
Spot checking can be used for applications that require snapshots every x seconds. Even if this way remove a lot of overhead and data storage, it only verify if the applications or user is working as intended every x second. Thus, someone could find the patern of those snapshots and render the AVM inutile.&lt;br /&gt;
&lt;br /&gt;
AVM&#039;s are extremely effective against two types of cheating, that which gives incorrect networking messages and the one that has to be loaded with the game. This is the perfect world for tournaments competition type of game, but in a real world this wouldn&#039;t be of much use. Games get patched, users download add-ons for the game, etc. Every patch or add-ons would require a new AVM which is unreasonable for the amount of people playing the game. A solution brought from the team was to disable the right to install anything on the AVM. As this could work in a tournament environment, a normal users at home would not be pleased with this limitation.&lt;br /&gt;
&lt;br /&gt;
An AVM&#039;s will not in any way catch any bug or exploit in a program that a malicious user could exploit, as the exploit would appear on both user/monitor systems and perform the same. This type of exploit would not be detected, since both the real time execution and the execution log that is known to be correct would both show the exploit as being correct.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;br /&gt;
&lt;br /&gt;
[10] Counter-Strike http://store.steampowered.com/app/10/&lt;br /&gt;
&lt;br /&gt;
[12] Larry L. Peterson and Bruce S. Davie. Computer Networks a Systems Approach, 2007&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=6900</id>
		<title>COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=6900"/>
		<updated>2010-12-03T09:12:24Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Contribution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Accountable Virtual Machines ==&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
=Research problem=&lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect &#039;&#039;&#039;integrity violations&#039;&#039;&#039; can be separated into different categories of operations. The first would be &#039;&#039;&#039;Cheat Detection&#039;&#039;&#039;, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability&#039;&#039;&#039; is another important problem that has been the subject of much research. An accountable system provides a method to ascertain whether execution took place correctly and as expected. These systems can also provide reliable evidence of proper execution to third parties, if required. This evidence can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an &#039;&#039;&#039;AVM&#039;&#039;&#039;. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is &#039;&#039;&#039;remote fault detection&#039;&#039;&#039; in a distributed system. That is, having a method to verify proper code execution and machine functionality of a node. Network activity is a common solution to this problem, as it looks at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for &#039;&#039;&#039;deterministic replay&#039;&#039;&#039;. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The hash function used is a cyrptographic hash function, which is a way of translating a arbituary block of data into a string. While not impossible to spoof or break, if it has the three properities specified in the assumptions it is concidered a &amp;quot;hard&amp;quot; problem that is infeasible for a malicious attacker to use as a attack vector in the foreseable future, and thus is secure.&lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so the inputs can be  injected at the same moment during the replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallels streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation.&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
=Critique=&lt;br /&gt;
&lt;br /&gt;
The layout of the paper is primordial for the comprehension of the reader. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved.&lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it has a wider support for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server.&lt;br /&gt;
&lt;br /&gt;
As a proof of concept, they used their AVM in the online game Counter Strike and tried to detect online cheats. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[[#References |[10]]]. A 10 year old game [[#References |[10]]] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [[#References |[12]]]&lt;br /&gt;
&lt;br /&gt;
While the paper does test a slightly larger than one to one scenario, it certainly does not test in a real world environement where 16,32 or even 64 players would be playing in the sametime.&lt;br /&gt;
&lt;br /&gt;
Spot checking can be used for applications that require snapshots every x seconds. Even if this way remove a lot of overhead and data storage, it only verify if the applications or user is working as intended every x second. Thus, someone could find the patern of those snapshots and render the AVM inutile.&lt;br /&gt;
&lt;br /&gt;
AVM&#039;s are extremely effective against two types of cheating, that which gives incorrect networking messages and the one that has to be loaded with the game. This is the perfect world for tournaments competition type of game, but in a real world this wouldn&#039;t be of much use. Games get patched, users download add-ons for the game, etc. Every patch or add-ons would require a new AVM which is unreasonable for the amount of people playing the game. A solution brought from the team was to disable the right to install anything on the AVM. As this could work in a tournament environment, a normal users at home would not be pleased with this limitation.&lt;br /&gt;
&lt;br /&gt;
An AVM&#039;s will not in any way catch any bug or exploit in a program that a malicious user could exploit, as the exploit would appear on both user/monitor systems and perform the same. This type of exploit would not be detected, since both the real time execution and the execution log that is known to be correct would both show the exploit as being correct.&lt;br /&gt;
&lt;br /&gt;
For their use case, the authors did not state that in counterstrike the user can record a demo of his current game. Some online playing leagues require every player to record his own demo and upload it to the website, where every person in the league can watch it. Without this demo the team lost the match immediately. Additionally, some leagues require the player to start an extra program (e.g. Electronic Sports League WIRE), which checks the programs running in the background. It also takes random snapshots of the current player and compresses all information into a file and uploads it to one of the server in the online league, where it can be checked by any player.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;br /&gt;
&lt;br /&gt;
[10] Counter-Strike http://store.steampowered.com/app/10/&lt;br /&gt;
&lt;br /&gt;
[12] Larry L. Peterson and Bruce S. Davie. Computer Networks a Systems Approach, 2007&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=6899</id>
		<title>COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=6899"/>
		<updated>2010-12-03T09:11:54Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Critique */ emphasis&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Accountable Virtual Machines ==&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
=Research problem=&lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect &#039;&#039;&#039;integrity violations&#039;&#039;&#039; can be separated into different categories of operations. The first would be &#039;&#039;&#039;Cheat Detection&#039;&#039;&#039;, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability&#039;&#039;&#039; is another important problem that has been the subject of much research. An accountable system provides a method to ascertain whether execution took place correctly and as expected. These systems can also provide reliable evidence of proper execution to third parties, if required. This evidence can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an &#039;&#039;&#039;AVM&#039;&#039;&#039;. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is &#039;&#039;&#039;remote fault detection&#039;&#039;&#039; in a distributed system. That is, having a method to verify proper code execution and machine functionality of a node. Network activity is a common solution to this problem, as it looks at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for &#039;&#039;&#039;deterministic replay&#039;&#039;&#039;. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The hash function used is a cyrptographic hash function, which is a way of translating a arbituary block of data into a string. While not impossible to spoof or break, if it has the three properities specified in the assumptions it is concidered a &amp;quot;hard&amp;quot; problem that is infeasible for a malicious attacker to use as a attack vector in the foreseable future, and thus is secure.&lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so the inputs can be  injected at the same moment during the replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallels streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
=Critique=&lt;br /&gt;
&lt;br /&gt;
The layout of the paper is primordial for the comprehension of the reader. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved.&lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it has a wider support for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server.&lt;br /&gt;
&lt;br /&gt;
As a proof of concept, they used their AVM in the online game Counter Strike and tried to detect online cheats. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[[#References |[10]]]. A 10 year old game [[#References |[10]]] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [[#References |[12]]]&lt;br /&gt;
&lt;br /&gt;
While the paper does test a slightly larger than one to one scenario, it certainly does not test in a real world environement where 16,32 or even 64 players would be playing in the sametime.&lt;br /&gt;
&lt;br /&gt;
Spot checking can be used for applications that require snapshots every x seconds. Even if this way remove a lot of overhead and data storage, it only verify if the applications or user is working as intended every x second. Thus, someone could find the patern of those snapshots and render the AVM inutile.&lt;br /&gt;
&lt;br /&gt;
AVM&#039;s are extremely effective against two types of cheating, that which gives incorrect networking messages and the one that has to be loaded with the game. This is the perfect world for tournaments competition type of game, but in a real world this wouldn&#039;t be of much use. Games get patched, users download add-ons for the game, etc. Every patch or add-ons would require a new AVM which is unreasonable for the amount of people playing the game. A solution brought from the team was to disable the right to install anything on the AVM. As this could work in a tournament environment, a normal users at home would not be pleased with this limitation.&lt;br /&gt;
&lt;br /&gt;
An AVM&#039;s will not in any way catch any bug or exploit in a program that a malicious user could exploit, as the exploit would appear on both user/monitor systems and perform the same. This type of exploit would not be detected, since both the real time execution and the execution log that is known to be correct would both show the exploit as being correct.&lt;br /&gt;
&lt;br /&gt;
For their use case, the authors did not state that in counterstrike the user can record a demo of his current game. Some online playing leagues require every player to record his own demo and upload it to the website, where every person in the league can watch it. Without this demo the team lost the match immediately. Additionally, some leagues require the player to start an extra program (e.g. Electronic Sports League WIRE), which checks the programs running in the background. It also takes random snapshots of the current player and compresses all information into a file and uploads it to one of the server in the online league, where it can be checked by any player.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;br /&gt;
&lt;br /&gt;
[10] Counter-Strike http://store.steampowered.com/app/10/&lt;br /&gt;
&lt;br /&gt;
[12] Larry L. Peterson and Bruce S. Davie. Computer Networks a Systems Approach, 2007&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=6251</id>
		<title>COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=6251"/>
		<updated>2010-12-02T09:48:55Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Research problem */  asked a question without question mark, phrasing was awkward&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Accountable Virtual Machines ==&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
=Research problem=&lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect &#039;&#039;&#039;integrity violations&#039;&#039;&#039; can be separated into different categories of operations. The first would be &#039;&#039;&#039;Cheat Detection&#039;&#039;&#039;, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability&#039;&#039;&#039; is another important problem that has been the subject of much research. An accountable system provides a method to ascertain whether execution took place correctly and as expected. These systems can also provide reliable evidence of proper execution to third parties, if required. This evidence can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an &#039;&#039;&#039;AVM&#039;&#039;&#039;. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is &#039;&#039;&#039;remote fault detection&#039;&#039;&#039; in a distributed system. That is, having a method to verify proper code execution and machine functionality of a node. Network activity is a common solution to this problem, as it looks at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for &#039;&#039;&#039;deterministic replay&#039;&#039;&#039;. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The hash function used is a cyrptographic hash function, which is a way of translating a arbituary block of data into a string. While not impossible to spoof or break, if it has the three properities specified in the assumptions it is concidered a &amp;quot;hard&amp;quot; problem that is infeasible for a malicious attacker to use as a attack vector in the foreseable future, and thus is secure.&lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so the inputs can be  injected at the same moment during the replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallels streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
=Critique=&lt;br /&gt;
&lt;br /&gt;
The layout of the paper is primordial for the comprehension of the reader. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved.&lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it has a wider support for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server.&lt;br /&gt;
&lt;br /&gt;
As a proof of concept, they used their AVM in the online game Counter Strike and tried to detect online cheats. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[[#References |[10]]]. A 10 year old game [[#References |[10]]] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [[#References |[12]]]&lt;br /&gt;
&lt;br /&gt;
While the paper does test a slightly larger than one to one scenario, it certainly does not test in a real world environement where 16,32 or even 64 players would be playing in the sametime.&lt;br /&gt;
&lt;br /&gt;
Spot checking can be used for applications that require snapshots every x seconds. Even if this way remove a lot of overhead and data storage, it only verify if the applications or user is working as intended every x second. Thus, someone could find the patern of those snapshots and render the AVM inutile.&lt;br /&gt;
&lt;br /&gt;
AVM&#039;s are extremely effective against two types of cheating, that which gives incorrect networking messages and the one that has to be loaded with the game. This is the perfect world for tournaments competition type of game, but in a real world this wouldn&#039;t be of much use. Games get patched, users download add-ons for the game, etc. Every patch or add-ons would require a new AVM which is unreasonable for the amount of people playing the game. A solution brought from the team was to disable the right to install anything on the AVM. As this could work in a tournament environment, a normal users at home would not be pleased with this limitation.&lt;br /&gt;
&lt;br /&gt;
An AVM&#039;s will not in any way catch any bug or exploit in a program that a malicious user could exploit, as the exploit would appear on both user/monitor systems and perform the same.&lt;br /&gt;
&lt;br /&gt;
For their use case, the authors did not state that in counterstrike the user can record a demo of his current game. Some online playing leagues require every player to record his own demo and upload it to the website, where every person in the league can watch it. Without this demo the team lost the match immediately. Additionally, some leagues require the player to start an extra program (e.g. Electronic Sports League WIRE), which checks the programs running in the background. It also takes random snapshots of the current player and compresses all information into a file and uploads it to one of the server in the online league, where it can be checked by any player.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;br /&gt;
&lt;br /&gt;
[10] Counter-Strike http://store.steampowered.com/app/10/&lt;br /&gt;
&lt;br /&gt;
[12] Larry L. Peterson and Bruce S. Davie. Computer Networks a Systems Approach, 2007&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=6250</id>
		<title>COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=6250"/>
		<updated>2010-12-02T09:39:08Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Research problem */  phrasing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Accountable Virtual Machines ==&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
=Research problem=&lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect &#039;&#039;&#039;integrity violations&#039;&#039;&#039; can be separated into different categories of operations. The first would be &#039;&#039;&#039;Cheat Detection&#039;&#039;&#039;, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability&#039;&#039;&#039; is another important problem that has been the subject of much research. An accountable system provides a method to ascertain whether execution took place correctly and as expected. These systems can also provide reliable evidence of proper execution to third parties, if required. This evidence can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an &#039;&#039;&#039;AVM&#039;&#039;&#039;. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is &#039;&#039;&#039;remote fault detection&#039;&#039;&#039; in a distributed system. How can we determine if a remote node is running the code correctly or if the machine itself is working as intended. Network activity is a common solution to this problem, as they look at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for &#039;&#039;&#039;deterministic replay&#039;&#039;&#039;. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The hash function used is a cyrptographic hash function, which is a way of translating a arbituary block of data into a string. While not impossible to spoof or break, if it has the three properities specified in the assumptions it is concidered a &amp;quot;hard&amp;quot; problem that is infeasible for a malicious attacker to use as a attack vector in the foreseable future, and thus is secure.&lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so the inputs can be  injected at the same moment during the replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallels streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
=Critique=&lt;br /&gt;
&lt;br /&gt;
The layout of the paper is primordial for the comprehension of the reader. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved.&lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it has a wider support for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server.&lt;br /&gt;
&lt;br /&gt;
As a proof of concept, they used their AVM in the online game Counter Strike and tried to detect online cheats. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[[#References |[10]]]. A 10 year old game [[#References |[10]]] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [[#References |[12]]]&lt;br /&gt;
&lt;br /&gt;
While the paper does test a slightly larger than one to one scenario, it certainly does not test in a real world environement where 16,32 or even 64 players would be playing in the sametime.&lt;br /&gt;
&lt;br /&gt;
Spot checking can be used for applications that require snapshots every x seconds. Even if this way remove a lot of overhead and data storage, it only verify if the applications or user is working as intended every x second. Thus, someone could find the patern of those snapshots and render the AVM inutile.&lt;br /&gt;
&lt;br /&gt;
AVM&#039;s are extremely effective against two types of cheating, that which gives incorrect networking messages and the one that has to be loaded with the game. This is the perfect world for tournaments competition type of game, but in a real world this wouldn&#039;t be of much use. Games get patched, users download add-ons for the game, etc. Every patch or add-ons would require a new AVM which is unreasonable for the amount of people playing the game. A solution brought from the team was to disable the right to install anything on the AVM. As this could work in a tournament environment, a normal users at home would not be pleased with this limitation.&lt;br /&gt;
&lt;br /&gt;
An AVM&#039;s will not in any way catch any bug or exploit in a program that a malicious user could exploit, as the exploit would appear on both user/monitor systems and perform the same.&lt;br /&gt;
&lt;br /&gt;
For their use case, the authors did not state that in counterstrike the user can record a demo of his current game. Some online playing leagues require every player to record his own demo and upload it to the website, where every person in the league can watch it. Without this demo the team lost the match immediately. Additionally, some leagues require the player to start an extra program (e.g. Electronic Sports League WIRE), which checks the programs running in the background. It also takes random snapshots of the current player and compresses all information into a file and uploads it to one of the server in the online league, where it can be checked by any player.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;br /&gt;
&lt;br /&gt;
[10] Counter-Strike http://store.steampowered.com/app/10/&lt;br /&gt;
&lt;br /&gt;
[12] Larry L. Peterson and Bruce S. Davie. Computer Networks a Systems Approach, 2007&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=6247</id>
		<title>COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_2_2010_Question_4&amp;diff=6247"/>
		<updated>2010-12-02T09:22:38Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Research problem */  phrasing needed work.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Accountable Virtual Machines ==&lt;br /&gt;
&#039;&#039;&#039;Authors:&#039;&#039;&#039; Andreas Haeberlen, Paarijaat Aditya, Rodrigo Rodrigues, Peter Druschel&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Affiliates:&#039;&#039;&#039;&lt;br /&gt;
University of Pennsylvania, Max Planck Institute for Software Systems (MPI-SWS)]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Link to Paper:&#039;&#039;&#039; [http://www.usenix.org/events/osdi10/tech/full_papers/Haeberlen.pdf Accountable Virtual Machines]&lt;br /&gt;
&lt;br /&gt;
==Background Concepts==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountable Virtual Machine (AVM)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Deterministic Replay&#039;&#039;&#039;: A machine can record its executions into a file so that it can be replayed in order to see the executions and follow what was happening on the machine. Remus [[#References | [1]]] has contributed a highly efficient snap-shotting mechanism for these replays.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability:&#039;&#039;&#039; Accountability in the context of this paper means that every action done on the virtual machine is recorded and will be used against the machine or user to verify the correctness of the application. The AVM is responsible of its action and will answers for its action against an auditor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remote Fault Detection:&#039;&#039;&#039; There are programs like GridCop[[#References | [2]]] that can be used to monitor the progress  and execution of a remotely executing program by requesting a beacon packet. When the remote computer is sending the packets, the receiving/logging computer must be a trusted computer (hardware,software, OS) so that the receiving of packets remains consistent. To detect a fault in a remote system, every packet must arrive safely, and any interrupts during the logging must be handled or the inconsistencies will result in an inaccurate outcome. The AVM does not require trusted hardware and can be used over wide-area networks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cheat Detection:&#039;&#039;&#039; Cheating in games or any specific modification in a program can be either scanned[[#References | [3][4]]] for or prevented[[#References | [5][6]]] by certain programs. The issue with these scanning and preventative software is the knowledge/awareness of specific cheats or situations that the software can handle. An AVM is designed to counter any kind of general cheat.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity Violations:&#039;&#039;&#039; This refers how the consistency of normal/expected operations of an execution does not equal to that of the host/reference (Trusted) execution, hence a violation has occurred.&lt;br /&gt;
&lt;br /&gt;
- The word &amp;quot;node&amp;quot; is used to refer to a computer or server in order to represent the interactions between one computer and another, or a computer and a server.&lt;br /&gt;
&lt;br /&gt;
=Research problem=&lt;br /&gt;
&lt;br /&gt;
The research presented in this paper tries to tackle a problem that has haunted computer scientists for a long time. How can you be sure that the software running on a remote machine is working correctly or as intended. Cloud computing, online multi-player games, and other online services such as auctions are only a few examples that rely on a trust relation between users and a host. When a node (user or computer) expects some sort of result or feedback from another node, they would hope that that interaction being done would be independent of the node and only dependent on the intended software. Let&#039;s say, that node A interacts with node B with execution exe1 and node A interacts with node C also with ex1, but node C has been modified and respond with exe2. Thus, we can assume that the respond of B and C will be different. Being able to prove that the node C has been modified without any doubt is the purpose of this paper.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Previous work that has been done in efforts to prevent or detect &#039;&#039;&#039;integrity violations&#039;&#039;&#039; can be separated into different categories of operations. The first would be &#039;&#039;&#039;Cheat Detection&#039;&#039;&#039;, where in many different games there are cheats that users use to usually create benefits for themselves that was not intended by the original game.[[#References |[4]]] These detectors are not dynamic, in the sense that they do not actually detect whether a cheat is being used, more so they are checking if there is a cheating operation that they have logged before, being operated on the user&#039;s system. For example, if there was a known cheating program named aimbot.exe that can be run in the background of a game such as CounterStrike, and the PunkBuster system that was implemented on the user&#039;s system had the aimbot.exe program already logged as a cheating program from the developers, the PunkBuster program might notify the current game servers of this or even prevent the user from playing any games until the aimbot.exe operation is no longer running. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Accountability&#039;&#039;&#039; is another important problem that many have already worked on. An accountable system provides a method to ascertain whether execution took place correctly and as expected. These systems can also provide reliable evidence of proper execution to third parties, if required. This evidence can also be used to defend a node when threatened with false accusation. Numerous systems already use accountability in their system, but they were mostly all linked to specific applications, where a point of reference must be used to compare. As example PeerReview[[#References |[7]]], which is a system closely related to what the research team have worked on,   must be implemented into the application which makes it less portable and cannot be implemented as easily as an &#039;&#039;&#039;AVM&#039;&#039;&#039;. PeerReview verifies the inbound and outbound packets and can see if the software is running as intended. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another problem that is related to the paper is &#039;&#039;&#039;remote fault detection&#039;&#039;&#039; in a distributed system. How can we determine if a remote node is running the code correctly or if the machine itself is working as intended. Network activity is a common solution to this problem, as they look at the inbound and outbound of the node. This can let them know how the software is operating, or in the case of AVM how the whole virtual machine is working. Gridcop[[#References |[8]]] is another example that inspects a small number of packets periodically.  Another way of determining the fault remotely is to use a trusted node,  where it can tell immediately if a fault occurs or a modification is made where it should not have been made. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The problem of logging and auditing the processes of an execution of a specific node (computer) is greatly dependent on the work done for &#039;&#039;&#039;deterministic replay&#039;&#039;&#039;. Deterministic replay programs can create a log file that can be used to replay the operations done for some execution that occurs on a node. Replaying the operations done on the node can show what the node was doing, and this would seem like it is sufficient in finding out whether a node was causing integrity violations or not. The concept of snap-shoting/recording the operations is not the issue with deterministic replay, it is the fact that the data being outputted into the replay may be tampered with by the node itself so that it generates optimal results in replay. By faking the results of the operations, the auditing computer will falsely believe that the tested computer is running all operations as normal. The logging operations done by these recording programs can be directly related to the work needed to detect integrity violations.&lt;br /&gt;
&lt;br /&gt;
=Contribution=&lt;br /&gt;
The accountable virtual machine (AVM), that was proposed in this essay, most useful contribution was the implementation of the accountable virtual machine monitor (AVMM). It is what allows for the fault checking of virtual machines in a cloud computing environment. The AVMM can be broken down into different parts: the virtual machine monitor (VMM), the temper-evident log, and auditing mechanisms.  The VMM is based off the VMM found in VMWare Workstation 6.5.1[[#References |[9]]], the temper-evident log was adapted from code in PeerReview[[#References |[7]]], and the audit tools were built up from scratch. &lt;br /&gt;
&lt;br /&gt;
The accountable virtual machine monitor relies on four assumptions:&lt;br /&gt;
&lt;br /&gt;
1. All transmitted messages are received, retransmitted if needed.&lt;br /&gt;
&lt;br /&gt;
2. Machines and Users have access to a hash function that is pre-image resistant, second pre-image resistant, and collision resistant.&lt;br /&gt;
&lt;br /&gt;
3. All parties have a certified keypair, that can be used to sign messages.&lt;br /&gt;
&lt;br /&gt;
4. To audit a log, the user has a reference copy of the VM used.&lt;br /&gt;
The job of the AVMM is to record all incoming and outgoing messages to a tamper-evident log&lt;br /&gt;
and enough info of the execution to enable deterministic replay. &lt;br /&gt;
&lt;br /&gt;
The hash function used is a cyrptographic hash function, which is a way of translating a arbituary block of data into a string. While not impossible to spoof or break, if it has the three properities specified in the assumptions it is concidered a &amp;quot;hard&amp;quot; problem that is infeasible for a malicious attacker to use as a attack vector in the foreseable future, and thus is secure.&lt;br /&gt;
&lt;br /&gt;
The AVMM must record nondeterministic inputs (such as hardware interrupts), because the input is asynchronous, and the exact timing of input must be recorded so the inputs can be  injected at the same moment during the replay. Wall-clock time is not accurate enough for this recording, so the AVMM must use a combination of instruction pointer, branch counter, and additional registers. Not all inputs have to be recorded this way (software interrupts) because they send requests to the AVM, which will be issued again during replay.     &lt;br /&gt;
&lt;br /&gt;
Two parallels streams appear in the tamper-evident log: message exchanges and nondeterministic inputs. &lt;br /&gt;
It is important for the AVMM to detect inconsistencies between the user&#039;s log and the machine&#039;s log (in case of foul play), so the AVMM simply cross-references messages and inputs during replay, thus, easily detecting any discrepancies.&lt;br /&gt;
&lt;br /&gt;
The AVMM periodically takes snapshots of the AVM&#039;s current state, this facilitates fine-grain audits for the user, but it also increases overhead. The overhead is lowered slightly by the snapshots being incremental (only save the state that has been changed since the last snapshot). The user can authenticate the snapshot using a hash tree of the state (generated by the AVMM) and it can update the hash tree after each snapshot.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tamper-Evident Log&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The log is made up of hash code entries.&lt;br /&gt;
Each log entry in form e = (s,t,c,h)&lt;br /&gt;
s = monotonically increasing sequence number&lt;br /&gt;
t = type&lt;br /&gt;
c = data of the type&lt;br /&gt;
h = hash value&lt;br /&gt;
&lt;br /&gt;
The hash value is calculated by: h = H(hi-1 || s || t || H(c))&lt;br /&gt;
H() is a hash function.&lt;br /&gt;
|| stands for concatenation&lt;br /&gt;
&lt;br /&gt;
Each message sent gets signed with a private key, when the AVMM logs the messages with the signature attached but removes it before sending it to the AVM.   To ensure nonrepudiation, an authenticator is attached to each outgoing message.&lt;br /&gt;
&lt;br /&gt;
To detect when a message is dropped, each party sends an acknowledgement for each message they receive. If an acknowledgement is not received the message is resent a few times, if the user stops receiving messages, then the machine is presumed to have failed.&lt;br /&gt;
&lt;br /&gt;
To preform a log check, the user retrieves a pair of authenticators, then challenges the machine to produce the log segment between the two. The log is computationally infeasible to edit without breaking the hash chain, thus, if the log has been tampered with, the hash chain will be different and the user will notified of the tampering.&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Auditing Mechanism&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
From VMM&#039;s perspective all things are deterministic.&lt;br /&gt;
&lt;br /&gt;
To perform a audit, the user:&lt;br /&gt;
&lt;br /&gt;
1. obtains a segment of the machine&#039;s log and the authenticators&lt;br /&gt;
&lt;br /&gt;
2. downloads a snapshot of the AVM at the beginning of the segment&lt;br /&gt;
&lt;br /&gt;
3. replays the entire segment, starting from the snapshot, to verify the events in the log are the correct execution of the software.&lt;br /&gt;
&lt;br /&gt;
The user can verify the execution of software through three different methods: Verifying the log, snapshot, and execution.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify a log segment, the user retrieves the authenticators from the machine with the sequence numbers in the range of the log segment. The user then downloads the log segment from the machine, and, starting with the most recent snapshot before the log segment and ending with the most recent snapshot before the end of the log segment. The user then checks the authenticators for tampering. If this step proceeds, the user can assume the log segment executed properly. If the machine is faulty, the segment will be unavailable to download or may return a corrupted log segment. This can be used to convince a third party of the fault.&lt;br /&gt;
&lt;br /&gt;
When the user wants to verify the snapshot, the user obtains a snapshot of the AVM&#039;s state at the beginning of the log segment. The user then downloads a snapshot from the machine and the AVMM recomputes the hash tree. The new hash tree is compared to the hash tree contained in the orignal log segment. If any discrepancies are detected, the user can use this to convince a third party of the machine&#039;s faults.&lt;br /&gt;
&lt;br /&gt;
In order for the user to verifying the execution of a log segment, the user needs three inputs: the log segment, the snapshot, and the public keys of the machine and any users of the machine. The auditing tool performs two checks on the log segment, a syntactic check (determines if log is well-formed), and a semantic check (determines if the information in the log shows the correct execution of the machine).&lt;br /&gt;
&lt;br /&gt;
The syntactic check checks whether all log entries are in the proper format, the signatures in each message and acknowledgement, if each message was acknowledged, and the sequence of sent and received messages is correct when compared to the sequence of messages that enter and exit the AVM.&lt;br /&gt;
&lt;br /&gt;
The semantic check creates a local VM that will execute the machine&#039;s log segment, the VM is initialized with a snapshot from the machine if possible. The local VM then runs the log segment and the data is recorded. The auditing tool then checks the log segments, inputs, outputs, and verification of snapshot hashes of the replayed execution against the original log. If any discrepancies are detected then the fault is reported and can be used as evidence against the machine.&lt;br /&gt;
&lt;br /&gt;
=Critique=&lt;br /&gt;
&lt;br /&gt;
The layout of the paper is primordial for the comprehension of the reader. The introduction clearly describes what the reader has to expect in the following pages, especially what problems are addressed and how they are solved.&lt;br /&gt;
&lt;br /&gt;
This paper gives multiple examples about advantages and disadvantages in an AVM. A good example is &amp;quot;Cheat Detection&amp;quot;. Cheaters use programs to go around the original game code to gain an major advantage over other players. Since an AVM is generic in cheat detection it has a wider support for detecting cheats than most of the other cheat detection algorithms. The logs give the game the function to replay the game. Thus, players using AVM can see the way other players play by replaying the game with the player&#039;s log.&lt;br /&gt;
&lt;br /&gt;
The negative side is that the player might have to suffer from the AVM. Everything is being logged and stored on the hard drive, which takes a lot amount of space. In the example in the paper it is 148mb per hour after compression. This reduces the fps. Additionally, the connection to the AVM increases the ping time to the server.&lt;br /&gt;
&lt;br /&gt;
As a proof of concept, they used their AVM in the online game Counter Strike and tried to detect online cheats. They were using “Dell Precision T1500 workstations, with 8 GB of memory and 2.8 GHz Intel Core i7 860 CPUs”[pg 10]. These machines are considerably more high powered than the system requirements of Counter-Strike, which are “500 MHz processor, 96 MB RAM”[[#References |[10]]]. A 10 year old game [[#References |[10]]] should use fewer resources on a Dell Precision T1500 workstations. In comparison, newer games consume far more resources than Counter-Strike giving it less room to run the AVM. A 13% slowdown [pg 12.] in a game where you are only getting 30 to 40 fps is a pretty noticeable slowdown. This is very detrimental to the game play because having over 60fps is the optimal performance.&lt;br /&gt;
&lt;br /&gt;
In the paper the authors state that the AVM will only generate an extra 5ms of latency. While this does not seem like a lot the measurement was taken over a LAN with all the computers connected to the same switch [pg. 12]. This sample does not accurately represent real life situations and therefore lacks external validity, since many of these online games are played over the internet with the participants sometimes not even on the same continent; the latency overhead of the AVM would certainly increase due to the added distance. [[#References |[12]]]&lt;br /&gt;
&lt;br /&gt;
While the paper does test a slightly larger than one to one scenario, it certainly does not test in a real world environement where 16,32 or even 64 players would be playing in the sametime.&lt;br /&gt;
&lt;br /&gt;
Spot checking can be used for applications that require snapshots every x seconds. Even if this way remove a lot of overhead and data storage, it only verify if the applications or user is working as intended every x second. Thus, someone could find the patern of those snapshots and render the AVM inutile.&lt;br /&gt;
&lt;br /&gt;
AVM&#039;s are extremely effective against two types of cheating, that which gives incorrect networking messages and the one that has to be loaded with the game. This is the perfect world for tournaments competition type of game, but in a real world this wouldn&#039;t be of much use. Games get patched, users download add-ons for the game, etc. Every patch or add-ons would require a new AVM which is unreasonable for the amount of people playing the game. A solution brought from the team was to disable the right to install anything on the AVM. As this could work in a tournament environment, a normal users at home would not be pleased with this limitation.&lt;br /&gt;
&lt;br /&gt;
An AVM&#039;s will not in any way catch any bug or exploit in a program that a malicious user could exploit, as the exploit would appear on both user/monitor systems and perform the same.&lt;br /&gt;
&lt;br /&gt;
For their use case, the authors did not state that in counterstrike the user can record a demo of his current game. Some online playing leagues require every player to record his own demo and upload it to the website, where every person in the league can watch it. Without this demo the team lost the match immediately. Additionally, some leagues require the player to start an extra program (e.g. Electronic Sports League WIRE), which checks the programs running in the background. It also takes random snapshots of the current player and compresses all information into a file and uploads it to one of the server in the online league, where it can be checked by any player.&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
[1] B. Cully, G. Lefebvre, D. Meyer, M. Feeley, N. Hutchinson, and&lt;br /&gt;
A. Warfield. Remus: High availability via asynchronous virtual&lt;br /&gt;
machine replication. In Proceedings of the USENIX Symposium&lt;br /&gt;
on Networked Systems Design and Implementation (NSDI), Apr.&lt;br /&gt;
2008.&lt;br /&gt;
&lt;br /&gt;
[2] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[3] G. Hoglund. 4.5 million copies of EULA-compliant spyware.&lt;br /&gt;
http://www.rootkit.com/blog.php?newsid=358.&lt;br /&gt;
&lt;br /&gt;
[4] PunkBuster web site. http://www.evenbalance.com/.&lt;br /&gt;
&lt;br /&gt;
[5] N. E. Baughman, M. Liberatore, and B. N. Levine. Cheat-proof&lt;br /&gt;
playout for centralized and peer-to-peer gaming. IEEE/ACM&lt;br /&gt;
Transactions on Networking (ToN), 15(1):1–13, Feb. 2007.&lt;br /&gt;
&lt;br /&gt;
[6] C. M¨onch, G. Grimen, and R. Midtstraum. Protecting online&lt;br /&gt;
games against cheating. In Proceedings of the Workshop on Network&lt;br /&gt;
and Systems Support for Games (NetGames), Oct. 2006.&lt;br /&gt;
&lt;br /&gt;
[7] A. Haeberlen, P. Kuznetsov, and P. Druschel. PeerReview: Practical&lt;br /&gt;
accountability for distributed systems. In Proceedings of&lt;br /&gt;
the ACM Symposium on Operating Systems Principles (SOSP),Oct. 2007.&lt;br /&gt;
&lt;br /&gt;
[8] S. Yang, A. R. Butt, Y. C. Hu, and S. P. Midkiff. Trust but&lt;br /&gt;
verify: Monitoring remotely executing programs for progress&lt;br /&gt;
and correctness. In Proceedings of the ACM SIGPLAN Annual&lt;br /&gt;
Symposium on Principles and Practice of Parallel Programming&lt;br /&gt;
(PPoPP), June 2005.&lt;br /&gt;
&lt;br /&gt;
[9] VMWare Workstation 6.5.1 web site. http://www.vmware.com/products/workstation/&lt;br /&gt;
&lt;br /&gt;
[10] Counter-Strike http://store.steampowered.com/app/10/&lt;br /&gt;
&lt;br /&gt;
[12] Larry L. Peterson and Bruce S. Davie. Computer Networks a Systems Approach, 2007&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5057</id>
		<title>Talk:COMP 3000 Essay 2 2010 Question 4</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_2_2010_Question_4&amp;diff=5057"/>
		<updated>2010-11-16T15:54:47Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Group Essay 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Group Essay 2 =&lt;br /&gt;
&lt;br /&gt;
Hello Group. Please post your information here. I assume everybody read the email at your connect account. Anyone specific wants to send him the email with the group members inside? If not, I just go ahead tomorrow at about 13:00 and send the email with the group members who wrote their contact information in here. - [[User:Sschnei1|Sschnei1]] 03:25, 15 November 2010 (UTC)&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sebastian Schneider sschnei1@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Matthew Chou mchou2@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Mark Walts mwalts@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Henry Irving hirving@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
Jean-Benoit Aubin jbaubin@connect.carleton.ca &lt;br /&gt;
&lt;br /&gt;
Pradhan Nishant npradhan npradhan@connect.carleton.ca&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Only Paul Cox didn&#039;t answer i sent this morning. &lt;br /&gt;
&lt;br /&gt;
Cox     Paul    pcox&lt;br /&gt;
&lt;br /&gt;
And I just sent an email to the teacher. &lt;br /&gt;
&lt;br /&gt;
--Jean-Benoit&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=4622</id>
		<title>COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=4622"/>
		<updated>2010-10-15T07:55:47Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Changing Storage Needs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
Why are object stores an increasingly attractive building block for filesystems (as opposed to block-based stores)? Explain.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each year we are faced with growing storage needs as the world&#039;s information increases exponentially, business&#039; are increasingly choosing to archive and retain all the data they produce and &amp;quot;store everything, forever&amp;quot; (Dell, 2010)&amp;lt;sup&amp;gt;[[#Foot1|1]]&amp;lt;/sup&amp;gt; is the common mantra of storage administrators. The storage industry has been able to keep up with the increasing demand with matching increases in storage capacity. Unfortunately the interfaces between clients and storage devices has hardly changed since the 1950s. The dominate storage mechanism is still block-based storage technology. &lt;br /&gt;
&lt;br /&gt;
Innovation in storage technology is especially pertinent to businesses that use network storage. The two dominant technologies of network storage; storage area network (SAN) and network-attached storage (NAS), each have their own benefits and drawbacks and would benefit greatly with improvement in storage technology. Specifically, improvements that can provide better scalability, business intelligence, and management while ensuring security and data access speed of traditional storage solutions would be ideal.&lt;br /&gt;
&lt;br /&gt;
Object Based Storage Devices (OSD) solve these issues by design. Using objects that consist of both data and metadata, they are accessed with defined methods such as read and write and carry a unique identifier. They also handle the underlying security, space allocation and basic storage routines.&amp;lt;sup&amp;gt;[[#Foot2|2]]&amp;lt;/sup&amp;gt; This storage technology has the potential to address some of the problems with block-based storage.&lt;br /&gt;
&lt;br /&gt;
With increased scalability, better security through per-object level access, ensured integrity of data with unique hash keys and benefits in management and business intelligence with rich metadata, OSD can be seen as a viable alternative to improve the standard architectures of SAN and NAS.&lt;br /&gt;
&lt;br /&gt;
== Overview of Block-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Hard disks as a storage medium date back to the 1950s with the introduction of the IBM 350 disk storage unit.&amp;lt;sup&amp;gt;[[#Foot3|3]]&amp;lt;/sup&amp;gt; Hard disks store data in blocks, which are a fixed length series&#039; of bytes. Since early devices like the IBM 350, the interface that the operating system uses to communicate with the hard disk has remained mostly the same.&amp;lt;sup&amp;gt;[[#Foot4|4]]&amp;lt;/sup&amp;gt; This interface simply allows the operating system to read or write to blocks on the disk. This means that the goal of abstracting stored data into related groups or into human-understandable constructs such as objects or files is left completely in the space of the operating system&#039;s filesystem. For example, when the filesystem wants to write data to a file it must translate that into a block on the disk to write to. In this way, the scope of a filesystem extends from high level constructs like files to low level constructs like blocks. This wide scope is necessary because of the simple interface presented to the filesystem that must be abstracted up to the complex expectations of a user.&lt;br /&gt;
&lt;br /&gt;
Multiple standards exist to implement this interface. The small computer system interface (SCSI) standards, which have been around in one form or another since the late 1970s, are popular with industry. Parallel ATA, another standard which was designed in the 1980s, continues today in the form of Serial ATA (SATA). However, even though these standards have been around for a long time, &amp;quot;the logical interface, or the command set, has seen only minor additions&amp;quot; (Bandulet, 2007)&amp;lt;sup&amp;gt;[[#Foot2|2]]&amp;lt;/sup&amp;gt;. This means that the functionality that the command set allows has also remained mostly the same, since the functionality must be built on top of these dated commands.&lt;br /&gt;
&lt;br /&gt;
== Overview of Object-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Unlike block-based storage, object-based storage research started in the 1990s. See for example the work of Gibson et al in &amp;quot;A Cost-Effective, High-Bandwidth Storage Architecture&amp;quot;, Proceedings of the 8th Conference on Architectural Support for Programming Languages and Operating Systems, 1998. The fundamental idea of an object based storage device is to have the storage device itself handle a layer of abstraction on top of the block. Instead of the interface presenting the filesystem with blocks to read and write to, the interface presents the filesystem with &amp;quot;objects&amp;quot;  which it can read to, write to, create, or destroy. Objects can be variable sized, and the device itself handles mapping onto physical memory. These objects also have metadata and access controls immediately associated with them. This allows the filesystem to work at a higher level of abstraction, which allows for much more flexibility, which in turn gives rise to numerous capabilities not present in block-based storage. This is important because the needs placed on filesystems have changed, and we will see as we compare object based storage with block based storage that the design of objects is more suited to the needs of today&#039;s filesystems, than blocks, especially with networked filesystems,.&lt;br /&gt;
&lt;br /&gt;
== Changing Storage Needs ==&lt;br /&gt;
&lt;br /&gt;
Storage needs have changed significantly since the first hard disks were developed in the 1950s, and the standardization of the interface in the 1970s. This means that the functionality of storage devices must also change to reflect these needs. Storage has become increasingly networked. Networked storage must deal with several issues. Firstly, the storage architecture must be able to scale to terabytes (10^12 bytes), petabytes (10^15 bytes) and beyond with many servers and clients while avoiding bottlenecks. Bottlenecks in networks are easier to avoid if data storage is distributed rather than centralized. The data stored on these networks has also become more sensitive. Personal information, such as financial, is stored in large databases. Sensitive corporate and governmental information is stored similarly. Since the value of data has increased, it becomes more important to ensure the data&#039;s integrity and security. Block based storage, as we will see, has difficulty dealing with these priorities because of limitations inherent in its design. Object based storage is more suited to address these issues by design.&lt;br /&gt;
&lt;br /&gt;
== Comparison of object and block based stores ==&lt;br /&gt;
=== Scalability ===&lt;br /&gt;
Scalability is very important for large businesses that need to manage large data centers. Managing metadata while ensuring data access speed as the systems grows is paramount. &lt;br /&gt;
&lt;br /&gt;
Most block based storage systems contain many layers of metadata. There are also various types of virtualized systems that contain metadata to deal with device diversity or remapping of blocks for archiving or duplication. Building systems to scale with the metadata becomes a major issue. But at the same time the current speeds of block-based storage needs to be maintained.&lt;br /&gt;
&lt;br /&gt;
NAS coordinates the interface between file level access and clients. This is done through a single NAS head which usually has thousands of gigabytes of storage behind it.&amp;lt;sup&amp;gt;[[#Foot5|5]]&amp;lt;/sup&amp;gt; All data traffic must flow through this single access point. The benefits of the NAS is through its ability to manage security, prevent unauthorized access to files and use metadata to map blocks into files for the client. However, this causes a bottleneck issue with all the data passing through one point. Another issue is managing the metadata. Metadata is shared among separate metadata servers remote from the hosts. Space allocation management on different storage system layers and applications that add policy and management metadata individually is spread throughout the system. So this results in the metadata becoming very hard to manage.&lt;br /&gt;
&lt;br /&gt;
SANs on the other hand offer file systems that are distributed, but provide a single system image of the file system. This means that a local user need not be concerned with where the data is physically stored, since a level of abstraction separates the user from the physical location of the data. In the past, SANs were implemented on private fiber channel networks, which were designed to emulate local storage media. As long as the network remained exclusive, it could be assumed that all the clients could be trusted, so security was not a primary concern. The lack of security concern is one of the main reasons that block storage was a viable option for SANs of the past. Modern SANs can serve a much larger set of users, not all of whom can or should be trusted. This, in addition to the possible adoption of IP based SAN solutions, make data security a primary concern&amp;lt;sup&amp;gt;[[#Foot6|6]]&amp;lt;/sup&amp;gt;. Object stores can make user privilege management a much more manageable task, since each object can is aware of who is allowed to access it.&lt;br /&gt;
&lt;br /&gt;
Object storage provides the ability to operate a SAN setup with direct access to data while offering better security and scalability with metadata. Each object comes with a set of access rules given to it by the management server and metadata is associated and stored directly with each data object and is automatically carried between layers and across devices. Space allocation and management metadata are the responsibility of the storage device.&amp;lt;sup&amp;gt;[[#Foot1|1]]&amp;lt;/sup&amp;gt; This allows metadata layers to be folded, reducing server overhead and processing, and allows for larger clusters of storage compared with traditional block-based interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Integrity ===&lt;br /&gt;
Block based file systems in archive solutions usually have no built in mechanisms for assuring data integrity. A common best practice is to conduct frequent backups, which adds to the complexity of using file systems for archiving and scalability. The mechanisms for ensuring data integrity in OSDs have mechanisms that operate differently from block store systems.&lt;br /&gt;
&lt;br /&gt;
One of the major problems with storage at the block level is that if there is an error in a block, it is almost impossible to determine what part of the file system is affected. It may be the case that the error in a particular block may not even contain any data. This usually happens during a backup procedure or when a controller is organizing data. &lt;br /&gt;
&lt;br /&gt;
OSDs provide a level of abstraction that hides the fact that a disk device has blocks. It no longer matters to the file system manager what kind of disk drive is being used, it only worries about managing objects. This is done through managing metadata as well as maintaining internal copies of its metadata. Hence, OSDs have knowledge of its object layout even though one or more groups of objects are on different OSDs. In this way OSDs know what kind of space is being used or unused and can scan and correct errors without losing data. In the event of a failure in recovering a file or a number of files, traditional systems may have to do a complete file system restore. However, an OSDs awareness of its object layout enables it to recover data specific to a byte range and thus restore files in an efficient manner.&lt;br /&gt;
&lt;br /&gt;
OSDs have another powerful feature. Each object file has an associated hash key that is generated uniquely to the contents of the file. Thus the file can be checked for to ensure integrity and guard against data corruption. The hash key can also be used for disk management to quickly detect and flag duplicate data.&amp;lt;sup&amp;gt;[[#Foot1|1]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
&lt;br /&gt;
Security is an issue that must be confronted in all modern storage networks. Security issues come in a wide variety of types, so can be difficult to deal with. Both SAN and NAS have a variety of ways for handling security, but an object based approach can make the implementation of security measures more effective and easier to manage.&lt;br /&gt;
&lt;br /&gt;
SAN has traditionally run on fibre channels.&amp;lt;sup&amp;gt;[[#Foot7|7]]&amp;lt;/sup&amp;gt; For the sake of security, running a SAN on fibre channels helps to isolate its network as they do not communicate over TCP/IP connections. However, since the SAN devices themselves do not restrict access, it&#039;s up to the network infrastructure and host system to handle its security.&lt;br /&gt;
&lt;br /&gt;
Zoning and logical unit number (LUN) masking are typical ways SAN systems could use as security measures. Zoning allocates a certain amount of storage to clients. These zones are isolated and are not allowed to communicate outside their respective zone. LUN masking is similar to zoning, however, they differ in the type of devices being used. Switches utilize zoning while disk array controllers use LUN masking. A disk array controller is a device which manages the physical disk drives and interprets them as logical unit numbers. Thus, the term LUN masking.&amp;lt;sup&amp;gt;[[#Foot8|8]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NAS has its own vulnerabilities but as with SAN, it is only as secure as the network they operate on. NAS security is conceptually simpler than SAN. NAS environments can administer security tasks as well as control disk usage quotas. The proprietary operating system it runs on has access control configurations much like other traditional OSs that can prevent unauthorized access to data. &lt;br /&gt;
&lt;br /&gt;
Unlike NAS and SAN systems, OSD devices handle security requests directly. The set of protocols used by OSD gives it a fair amount of flexibility in controlling access. Clients can access an OSD device by providing &amp;quot;cryptographically secure credentials&amp;quot;, called capabilities, which specify a tuple (OSD name, partition ID, object ID) to identify the object.&amp;lt;sup&amp;gt;[[#Foot9|9]]&amp;lt;/sup&amp;gt; This can prevent a wide range of potential attacks, which gives OSD systems an advantage over block based systems.&lt;br /&gt;
&lt;br /&gt;
== Real World Implementation ==&lt;br /&gt;
&lt;br /&gt;
Ceph is an example of a real world networked storage system based around OSDs. The Ceph developers specifically list performance, reliability, and scalability as the benefits their system offers over current solutions.&amp;lt;sup&amp;gt;[[#Foot10|10]]&amp;lt;/sup&amp;gt; Since Ceph is based on OSDs, it takes advantage of the ability for clients to interact directly with the devices, which avoids the traditional bottlenecks to performance caused by SAN controllers or NAS heads. This direct access allows Ceph to support a very large number of clients concurrently accessing data on the system. Since objects have security controls it can allow this direct access safely, unlike other network storage architectures.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Although object storage is relatively new compared to block storage, work has progressed steadily in universities and on standards such as the ANSI T10 SCSI OSD standard. However, there remains challenges to its adoption in the industry. One of which, is that OSD is only needed in high end business solutions at the moment, preventing it from reaching smaller businesses.&amp;lt;sup&amp;gt;[[#Foot11|11]]&amp;lt;/sup&amp;gt; As newer features are added and the standards mature we will see an increased adoption.&lt;br /&gt;
&lt;br /&gt;
It is obvious however that changes do need to occur as storage grows and finer levels of management are needed for data storage. Object-based storage has evolved to fit these needs where block-based storage has stagnated. The better tools for managing the data using the rich metadata of objects, the security and data transfer speeds of NAS and SAN combined with integrity controls for backups and redundancies will be an attractive choice for storage administrators in the future.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot1&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Dell Product Group, 2010. Object Storage A Fresh Approach to Long-Term File Storage. [online] Dell Available at: &amp;lt;http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf&amp;gt; [Accessed 13 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot2&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; C. Bandulet, 2007. Object-Based Storage Devices. [online] Oracle Available at: &amp;lt;http://developers.sun.com/solaris/articles/osd.html&amp;gt; [Accessed 13 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot3&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; IBM 350 disk storage unit, IBM Archives. [online] IBM Available at : &amp;lt;http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot4&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt; M. Mesnier, G. R. Ganger, and E. Riedel. Object-Based Storage. IEEE Communications Magazine, 41(8), August 2003.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot5&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; TechRepublic Guest Contributor, Foundations of Network Storage, Lesson Two: NAS. [online] Available at &amp;lt;http://articles.techrepublic.com.com/5100-22_11-5841266.html&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot6&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt; Satran and Teperman, Object Store Based SAN File Systems. [online] IBM Labs Available at: &amp;lt;http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot7&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; J. Tate, F. Lucchese, R. Moore. Introduction to Storage Area Networks. [online] Available at &amp;lt;http://www.redbooks.ibm.com/redbooks/pdfs/sg245470.pdf&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot8&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt; H. Yoshida. LUN Security Considerations for Storage Area Networks. [online] Available at &amp;lt;http://www.it.hds.com/pdf/wp91_san_lun_secur.pdf&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot9&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;9&amp;lt;/sup&amp;gt; M. Factor, D. Nagle, D. Naor, E. Riedel, J.Satran, 2005. The OSD Security Protocol. [online] Available at &amp;lt;http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot10&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt; S. A. Weil, S. A. Brandt, E. L. Miller, D. D. E. Long,&lt;br /&gt;
and C. Maltzahn. Ceph: A scalable, high-performance distributed file system. In Proc. OSDI, 2006. [online] Available at: &amp;lt;http://www.usenix.org/events/osdi06/tech/full_papers/weil/weil_html/&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot11&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;11&amp;lt;/sup&amp;gt; M. Factor, K. Meth, D. Naor, O. Rodeh, J. Satran, 2005. Object storage: The future building block for storage systems. In 2nd International IEEE Symposium on Mass Storage Systems and Technologies, Sardinia  [online] Available at: &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122.3959&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt; [Accessed 13 October 2010].&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=4619</id>
		<title>COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=4619"/>
		<updated>2010-10-15T07:50:27Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Overview of Object-Based Storage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
Why are object stores an increasingly attractive building block for filesystems (as opposed to block-based stores)? Explain.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each year we are faced with growing storage needs as the world&#039;s information increases exponentially, business&#039; are increasingly choosing to archive and retain all the data they produce and &amp;quot;store everything, forever&amp;quot; (Dell, 2010)&amp;lt;sup&amp;gt;[[#Foot1|1]]&amp;lt;/sup&amp;gt; is the common mantra of storage administrators. The storage industry has been able to keep up with the increasing demand with matching increases in storage capacity. Unfortunately the interfaces between clients and storage devices has hardly changed since the 1950s. The dominate storage mechanism is still block-based storage technology. &lt;br /&gt;
&lt;br /&gt;
Innovation in storage technology is especially pertinent to businesses that use network storage. The two dominant technologies of network storage; storage area network (SAN) and network-attached storage (NAS), each have their own benefits and drawbacks and would benefit greatly with improvement in storage technology. Specifically, improvements that can provide better scalability, business intelligence, and management while ensuring security and data access speed of traditional storage solutions would be ideal.&lt;br /&gt;
&lt;br /&gt;
Object Based Storage Devices (OSD) solve these issues by design. Using objects that consist of both data and metadata, they are accessed with defined methods such as read and write and carry a unique identifier. They also handle the underlying security, space allocation and basic storage routines.&amp;lt;sup&amp;gt;[[#Foot2|2]]&amp;lt;/sup&amp;gt; This storage technology has the potential to address some of the problems with block-based storage.&lt;br /&gt;
&lt;br /&gt;
With increased scalability, better security through per-object level access, ensured integrity of data with unique hash keys and benefits in management and business intelligence with rich metadata, OSD can be seen as a viable alternative to improve the standard architectures of SAN and NAS.&lt;br /&gt;
&lt;br /&gt;
== Overview of Block-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Hard disks as a storage medium date back to the 1950s with the introduction of the IBM 350 disk storage unit.&amp;lt;sup&amp;gt;[[#Foot3|3]]&amp;lt;/sup&amp;gt; Hard disks store data in blocks, which are a fixed length series&#039; of bytes. Since early devices like the IBM 350, the interface that the operating system uses to communicate with the hard disk has remained mostly the same.&amp;lt;sup&amp;gt;[[#Foot4|4]]&amp;lt;/sup&amp;gt; This interface simply allows the operating system to read or write to blocks on the disk. This means that the goal of abstracting stored data into related groups or into human-understandable constructs such as objects or files is left completely in the space of the operating system&#039;s filesystem. For example, when the filesystem wants to write data to a file it must translate that into a block on the disk to write to. In this way, the scope of a filesystem extends from high level constructs like files to low level constructs like blocks. This wide scope is necessary because of the simple interface presented to the filesystem that must be abstracted up to the complex expectations of a user.&lt;br /&gt;
&lt;br /&gt;
Multiple standards exist to implement this interface. The small computer system interface (SCSI) standards, which have been around in one form or another since the late 1970s, are popular with industry. Parallel ATA, another standard which was designed in the 1980s, continues today in the form of Serial ATA (SATA). However, even though these standards have been around for a long time, &amp;quot;the logical interface, or the command set, has seen only minor additions&amp;quot; (Bandulet, 2007)&amp;lt;sup&amp;gt;[[#Foot2|2]]&amp;lt;/sup&amp;gt;. This means that the functionality that the command set allows has also remained mostly the same, since the functionality must be built on top of these dated commands.&lt;br /&gt;
&lt;br /&gt;
== Overview of Object-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Unlike block-based storage, object-based storage research started in the 1990s. See for example the work of Gibson et al in &amp;quot;A Cost-Effective, High-Bandwidth Storage Architecture&amp;quot;, Proceedings of the 8th Conference on Architectural Support for Programming Languages and Operating Systems, 1998. The fundamental idea of an object based storage device is to have the storage device itself handle a layer of abstraction on top of the block. Instead of the interface presenting the filesystem with blocks to read and write to, the interface presents the filesystem with &amp;quot;objects&amp;quot;  which it can read to, write to, create, or destroy. Objects can be variable sized, and the device itself handles mapping onto physical memory. These objects also have metadata and access controls immediately associated with them. This allows the filesystem to work at a higher level of abstraction, which allows for much more flexibility, which in turn gives rise to numerous capabilities not present in block-based storage. This is important because the needs placed on filesystems have changed, and we will see as we compare object based storage with block based storage that the design of objects is more suited to the needs of today&#039;s filesystems, than blocks, especially with networked filesystems,.&lt;br /&gt;
&lt;br /&gt;
== Changing Storage Needs ==&lt;br /&gt;
&lt;br /&gt;
Storage needs have changed significantly since the first hard disks were developed in the 1950s, and the standardization of the interface in the 1970s. This means that the functionality of storage devices must also change to reflect these needs. Storage has become increasingly networked. Networked storage must deal with several issues. Firstly, the storage architecture must be able to scale to terabytes (10^12 bytes), petabytes (10^15 bytes) and beyond with many servers and clients while avoiding bottlenecks. The data stored on these networks has also become more sensitive. Personal information, such as financial, is stored in large databases. Sensitive corporate and governmental information is stored similarly. Since the value of data has increased, it becomes more important to ensure the data&#039;s integrity and security. Block based storage, as we will see, has difficulty dealing with these priorities because of limitations inherent in its design. Object based storage is more suited to address these issues by design.&lt;br /&gt;
&lt;br /&gt;
== Comparison of object and block based stores ==&lt;br /&gt;
=== Scalability ===&lt;br /&gt;
Scalability is very important for large businesses that need to manage large data centers. Managing metadata while ensuring data access speed as the systems grows is paramount. &lt;br /&gt;
&lt;br /&gt;
Most block based storage systems contain many layers of metadata. There are also various types of virtualized systems that contain metadata to deal with device diversity or remapping of blocks for archiving or duplication. Building systems to scale with the metadata becomes a major issue. But at the same time the current speeds of block-based storage needs to be maintained.&lt;br /&gt;
&lt;br /&gt;
NAS coordinates the interface between file level access and clients. This is done through a single NAS head which usually has thousands of gigabytes of storage behind it.&amp;lt;sup&amp;gt;[[#Foot5|5]]&amp;lt;/sup&amp;gt; All data traffic must flow through this single access point. The benefits of the NAS is through its ability to manage security, prevent unauthorized access to files and use metadata to map blocks into files for the client. However, this causes a bottleneck issue with all the data passing through one point. Another issue is managing the metadata. Metadata is shared among separate metadata servers remote from the hosts. Space allocation management on different storage system layers and applications that add policy and management metadata individually is spread throughout the system. So this results in the metadata becoming very hard to manage.&lt;br /&gt;
&lt;br /&gt;
SANs on the other hand offer file systems that are distributed, but provide a single system image of the file system. This means that a local user need not be concerned with where the data is physically stored, since a level of abstraction separates the user from the physical location of the data. In the past, SANs were implemented on private fiber channel networks, which were designed to emulate local storage media. As long as the network remained exclusive, it could be assumed that all the clients could be trusted, so security was not a primary concern. The lack of security concern is one of the main reasons that block storage was a viable option for SANs of the past. Modern SANs can serve a much larger set of users, not all of whom can or should be trusted. This, in addition to the possible adoption of IP based SAN solutions, make data security a primary concern&amp;lt;sup&amp;gt;[[#Foot6|6]]&amp;lt;/sup&amp;gt;. Object stores can make user privilege management a much more manageable task, since each object can is aware of who is allowed to access it.&lt;br /&gt;
&lt;br /&gt;
Object storage provides the ability to operate a SAN setup with direct access to data while offering better security and scalability with metadata. Each object comes with a set of access rules given to it by the management server and metadata is associated and stored directly with each data object and is automatically carried between layers and across devices. Space allocation and management metadata are the responsibility of the storage device.&amp;lt;sup&amp;gt;[[#Foot1|1]]&amp;lt;/sup&amp;gt; This allows metadata layers to be folded, reducing server overhead and processing, and allows for larger clusters of storage compared with traditional block-based interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Integrity ===&lt;br /&gt;
Block based file systems in archive solutions usually have no built in mechanisms for assuring data integrity. A common best practice is to conduct frequent backups, which adds to the complexity of using file systems for archiving and scalability. The mechanisms for ensuring data integrity in OSDs have mechanisms that operate differently from block store systems.&lt;br /&gt;
&lt;br /&gt;
One of the major problems with storage at the block level is that if there is an error in a block, it is almost impossible to determine what part of the file system is affected. It may be the case that the error in a particular block may not even contain any data. This usually happens during a backup procedure or when a controller is organizing data. &lt;br /&gt;
&lt;br /&gt;
OSDs provide a level of abstraction that hides the fact that a disk device has blocks. It no longer matters to the file system manager what kind of disk drive is being used, it only worries about managing objects. This is done through managing metadata as well as maintaining internal copies of its metadata. Hence, OSDs have knowledge of its object layout even though one or more groups of objects are on different OSDs. In this way OSDs know what kind of space is being used or unused and can scan and correct errors without losing data. In the event of a failure in recovering a file or a number of files, traditional systems may have to do a complete file system restore. However, an OSDs awareness of its object layout enables it to recover data specific to a byte range and thus restore files in an efficient manner.&lt;br /&gt;
&lt;br /&gt;
OSDs have another powerful feature. Each object file has an associated hash key that is generated uniquely to the contents of the file. Thus the file can be checked for to ensure integrity and guard against data corruption. The hash key can also be used for disk management to quickly detect and flag duplicate data.&amp;lt;sup&amp;gt;[[#Foot1|1]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
&lt;br /&gt;
Security is an issue that must be confronted in all modern storage networks. Security issues come in a wide variety of types, so can be difficult to deal with. Both SAN and NAS have a variety of ways for handling security, but an object based approach can make the implementation of security measures more effective and easier to manage.&lt;br /&gt;
&lt;br /&gt;
SAN has traditionally run on fibre channels.&amp;lt;sup&amp;gt;[[#Foot7|7]]&amp;lt;/sup&amp;gt; For the sake of security, running a SAN on fibre channels helps to isolate its network as they do not communicate over TCP/IP connections. However, since the SAN devices themselves do not restrict access, it&#039;s up to the network infrastructure and host system to handle its security.&lt;br /&gt;
&lt;br /&gt;
Zoning and logical unit number (LUN) masking are typical ways SAN systems could use as security measures. Zoning allocates a certain amount of storage to clients. These zones are isolated and are not allowed to communicate outside their respective zone. LUN masking is similar to zoning, however, they differ in the type of devices being used. Switches utilize zoning while disk array controllers use LUN masking. A disk array controller is a device which manages the physical disk drives and interprets them as logical unit numbers. Thus, the term LUN masking.&amp;lt;sup&amp;gt;[[#Foot8|8]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NAS has its own vulnerabilities but as with SAN, it is only as secure as the network they operate on. NAS security is conceptually simpler than SAN. NAS environments can administer security tasks as well as control disk usage quotas. The proprietary operating system it runs on has access control configurations much like other traditional OSs that can prevent unauthorized access to data. &lt;br /&gt;
&lt;br /&gt;
Unlike NAS and SAN systems, OSD devices handle security requests directly. The set of protocols used by OSD gives it a fair amount of flexibility in controlling access. Clients can access an OSD device by providing &amp;quot;cryptographically secure credentials&amp;quot;, called capabilities, which specify a tuple (OSD name, partition ID, object ID) to identify the object.&amp;lt;sup&amp;gt;[[#Foot9|9]]&amp;lt;/sup&amp;gt; This can prevent a wide range of potential attacks, which gives OSD systems an advantage over block based systems.&lt;br /&gt;
&lt;br /&gt;
== Real World Implementation ==&lt;br /&gt;
&lt;br /&gt;
Ceph is an example of a real world networked storage system based around OSDs. The Ceph developers specifically list performance, reliability, and scalability as the benefits their system offers over current solutions.&amp;lt;sup&amp;gt;[[#Foot10|10]]&amp;lt;/sup&amp;gt; Since Ceph is based on OSDs, it takes advantage of the ability for clients to interact directly with the devices, which avoids the traditional bottlenecks to performance caused by SAN controllers or NAS heads. This direct access allows Ceph to support a very large number of clients concurrently accessing data on the system. Since objects have security controls it can allow this direct access safely, unlike other network storage architectures.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Although object storage is relatively new compared to block storage, work has progressed steadily in universities and on standards such as the ANSI T10 SCSI OSD standard. However, there remains challenges to its adoption in the industry. One of which, is that OSD is only needed in high end business solutions at the moment, preventing it from reaching smaller businesses.&amp;lt;sup&amp;gt;[[#Foot11|11]]&amp;lt;/sup&amp;gt; As newer features are added and the standards mature we will see an increased adoption.&lt;br /&gt;
&lt;br /&gt;
It is obvious however that changes do need to occur as storage grows and finer levels of management are needed for data storage. Object-based storage has evolved to fit these needs where block-based storage has stagnated. The better tools for managing the data using the rich metadata of objects, the security and data transfer speeds of NAS and SAN combined with integrity controls for backups and redundancies will be an attractive choice for storage administrators in the future.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot1&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Dell Product Group, 2010. Object Storage A Fresh Approach to Long-Term File Storage. [online] Dell Available at: &amp;lt;http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf&amp;gt; [Accessed 13 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot2&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; C. Bandulet, 2007. Object-Based Storage Devices. [online] Oracle Available at: &amp;lt;http://developers.sun.com/solaris/articles/osd.html&amp;gt; [Accessed 13 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot3&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; IBM 350 disk storage unit, IBM Archives. [online] IBM Available at : &amp;lt;http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot4&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt; M. Mesnier, G. R. Ganger, and E. Riedel. Object-Based Storage. IEEE Communications Magazine, 41(8), August 2003.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot5&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; TechRepublic Guest Contributor, Foundations of Network Storage, Lesson Two: NAS. [online] Available at &amp;lt;http://articles.techrepublic.com.com/5100-22_11-5841266.html&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot6&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt; Satran and Teperman, Object Store Based SAN File Systems. [online] IBM Labs Available at: &amp;lt;http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot7&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; J. Tate, F. Lucchese, R. Moore. Introduction to Storage Area Networks. [online] Available at &amp;lt;http://www.redbooks.ibm.com/redbooks/pdfs/sg245470.pdf&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot8&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt; H. Yoshida. LUN Security Considerations for Storage Area Networks. [online] Available at &amp;lt;http://www.it.hds.com/pdf/wp91_san_lun_secur.pdf&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot9&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;9&amp;lt;/sup&amp;gt; M. Factor, D. Nagle, D. Naor, E. Riedel, J.Satran, 2005. The OSD Security Protocol. [online] Available at &amp;lt;http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot10&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt; S. A. Weil, S. A. Brandt, E. L. Miller, D. D. E. Long,&lt;br /&gt;
and C. Maltzahn. Ceph: A scalable, high-performance distributed file system. In Proc. OSDI, 2006. [online] Available at: &amp;lt;http://www.usenix.org/events/osdi06/tech/full_papers/weil/weil_html/&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot11&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;11&amp;lt;/sup&amp;gt; M. Factor, K. Meth, D. Naor, O. Rodeh, J. Satran, 2005. Object storage: The future building block for storage systems. In 2nd International IEEE Symposium on Mass Storage Systems and Technologies, Sardinia  [online] Available at: &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122.3959&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt; [Accessed 13 October 2010].&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=4614</id>
		<title>COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=4614"/>
		<updated>2010-10-15T07:45:44Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Integrity */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
Why are object stores an increasingly attractive building block for filesystems (as opposed to block-based stores)? Explain.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each year we are faced with growing storage needs as the world&#039;s information increases exponentially, business&#039; are increasingly choosing to archive and retain all the data they produce and &amp;quot;store everything, forever&amp;quot; (Dell, 2010)&amp;lt;sup&amp;gt;[[#Foot1|1]]&amp;lt;/sup&amp;gt; is the common mantra of storage administrators. The storage industry has been able to keep up with the increasing demand with matching increases in storage capacity. Unfortunately the interfaces between clients and storage devices has hardly changed since the 1950s. The dominate storage mechanism is still block-based storage technology. &lt;br /&gt;
&lt;br /&gt;
Innovation in storage technology is especially pertinent to businesses that use network storage. The two dominant technologies of network storage; storage area network (SAN) and network-attached storage (NAS), each have their own benefits and drawbacks and would benefit greatly with improvement in storage technology. Specifically, improvements that can provide better scalability, business intelligence, and management while ensuring security and data access speed of traditional storage solutions would be ideal.&lt;br /&gt;
&lt;br /&gt;
Object Based Storage Devices (OSD) solve these issues by design. Using objects that consist of both data and metadata, they are accessed with defined methods such as read and write and carry a unique identifier. They also handle the underlying security, space allocation and basic storage routines.&amp;lt;sup&amp;gt;[[#Foot2|2]]&amp;lt;/sup&amp;gt; This storage technology has the potential to address some of the problems with block-based storage.&lt;br /&gt;
&lt;br /&gt;
With increased scalability, better security through per-object level access, ensured integrity of data with unique hash keys and benefits in management and business intelligence with rich metadata, OSD can be seen as a viable alternative to improve the standard architectures of SAN and NAS.&lt;br /&gt;
&lt;br /&gt;
== Overview of Block-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Hard disks as a storage medium date back to the 1950s with the introduction of the IBM 350 disk storage unit.&amp;lt;sup&amp;gt;[[#Foot3|3]]&amp;lt;/sup&amp;gt; Hard disks store data in blocks, which are a fixed length series&#039; of bytes. Since early devices like the IBM 350, the interface that the operating system uses to communicate with the hard disk has remained mostly the same.&amp;lt;sup&amp;gt;[[#Foot4|4]]&amp;lt;/sup&amp;gt; This interface simply allows the operating system to read or write to blocks on the disk. This means that the goal of abstracting stored data into related groups or into human-understandable constructs such as objects or files is left completely in the space of the operating system&#039;s filesystem. For example, when the filesystem wants to write data to a file it must translate that into a block on the disk to write to. In this way, the scope of a filesystem extends from high level constructs like files to low level constructs like blocks. This wide scope is necessary because of the simple interface presented to the filesystem that must be abstracted up to the complex expectations of a user.&lt;br /&gt;
&lt;br /&gt;
Multiple standards exist to implement this interface. The small computer system interface (SCSI) standards, which have been around in one form or another since the late 1970s, are popular with industry. Parallel ATA, another standard which was designed in the 1980s, continues today in the form of Serial ATA (SATA). However, even though these standards have been around for a long time, &amp;quot;the logical interface, or the command set, has seen only minor additions&amp;quot; (Bandulet, 2007)&amp;lt;sup&amp;gt;[[#Foot2|2]]&amp;lt;/sup&amp;gt;. This means that the functionality that the command set allows has also remained mostly the same, since the functionality must be built on top of these dated commands.&lt;br /&gt;
&lt;br /&gt;
== Overview of Object-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Unlike block-based storage, object-based storage research started in the 1990s. See for example the work of Gibson et al in &amp;quot;A Cost-Effective, High-Bandwidth Storage Architecture&amp;quot;, Proceedings of the 8th Conference on Architectural Support for Programming Languages and Operating Systems, 1998. The fundamental idea of an object based storage device is to have the storage device itself handle a layer of abstraction on top of the block. Instead of the interface presenting the filesystem with blocks to read and write to, the interface presents the filesystem with &amp;quot;objects&amp;quot;  which it can read to, write to, create, or destroy. Objects can be variable sized, and the device itself handles mapping onto physical memory. These objects also have metadata and access controls immediately associated with them. This allows the filesystem to work at a higher level of abstraction. This is important because the needs placed on filesystems have changed, and we will see as we compare object based storage with block based storage that the design of objects is more suited to the needs of today&#039;s filesystems, than blocks, especially with networked filesystems,.&lt;br /&gt;
&lt;br /&gt;
== Changing Storage Needs ==&lt;br /&gt;
&lt;br /&gt;
Storage needs have changed significantly since the first hard disks were developed in the 1950s, and the standardization of the interface in the 1970s. This means that the functionality of storage devices must also change to reflect these needs. Storage has become increasingly networked. Networked storage must deal with several issues. Firstly, the storage architecture must be able to scale to terabytes (10^12 bytes), petabytes (10^15 bytes) and beyond with many servers and clients while avoiding bottlenecks. The data stored on these networks has also become more sensitive. Personal information, such as financial, is stored in large databases. Sensitive corporate and governmental information is stored similarly. Since the value of data has increased, it becomes more important to ensure the data&#039;s integrity and security. Block based storage, as we will see, has difficulty dealing with these priorities because of limitations inherent in its design. Object based storage is more suited to address these issues by design.&lt;br /&gt;
&lt;br /&gt;
== Comparison of object and block based stores ==&lt;br /&gt;
=== Scalability ===&lt;br /&gt;
Scalability is very important for large businesses that need to manage large data centers. Managing metadata while ensuring data access speed as the systems grows is paramount. &lt;br /&gt;
&lt;br /&gt;
Most block based storage systems contain many layers of metadata. There are also various types of virtualized systems that contain metadata to deal with device diversity or remapping of blocks for archiving or duplication. Building systems to scale with the metadata becomes a major issue. But at the same time the current speeds of block-based storage needs to be maintained.&lt;br /&gt;
&lt;br /&gt;
NAS coordinates the interface between file level access and clients. This is done through a single NAS head which usually has thousands of gigabytes of storage behind it.&amp;lt;sup&amp;gt;[[#Foot5|5]]&amp;lt;/sup&amp;gt; All data traffic must flow through this single access point. The benefits of the NAS is through its ability to manage security, prevent unauthorized access to files and use metadata to map blocks into files for the client. However, this causes a bottleneck issue with all the data passing through one point. Another issue is managing the metadata. Metadata is shared among separate metadata servers remote from the hosts. Space allocation management on different storage system layers and applications that add policy and management metadata individually is spread throughout the system. So this results in the metadata becoming very hard to manage.&lt;br /&gt;
&lt;br /&gt;
SANs on the other hand offer file systems that are distributed, but provide a single system image of the file system. This means that a local user need not be concerned with where the data is physically stored, since a level of abstraction separates the user from the physical location of the data. In the past, SANs were implemented on private fiber channel networks, which were designed to emulate local storage media. As long as the network remained exclusive, it could be assumed that all the clients could be trusted, so security was not a primary concern. The lack of security concern is one of the main reasons that block storage was a viable option for SANs of the past. Modern SANs can serve a much larger set of users, not all of whom can or should be trusted. This, in addition to the possible adoption of IP based SAN solutions, make data security a primary concern&amp;lt;sup&amp;gt;[[#Foot6|6]]&amp;lt;/sup&amp;gt;. Object stores can make user privilege management a much more manageable task, since each object can is aware of who is allowed to access it.&lt;br /&gt;
&lt;br /&gt;
Object storage provides the ability to operate a SAN setup with direct access to data while offering better security and scalability with metadata. Each object comes with a set of access rules given to it by the management server and metadata is associated and stored directly with each data object and is automatically carried between layers and across devices. Space allocation and management metadata are the responsibility of the storage device.&amp;lt;sup&amp;gt;[[#Foot1|1]]&amp;lt;/sup&amp;gt; This allows metadata layers to be folded, reducing server overhead and processing, and allows for larger clusters of storage compared with traditional block-based interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Integrity ===&lt;br /&gt;
Block based file systems in archive solutions usually have no built in mechanisms for assuring data integrity. A common best practice is to conduct frequent backups, which adds to the complexity of using file systems for archiving and scalability. The mechanisms for ensuring data integrity in OSDs have mechanisms that operate differently from block store systems.&lt;br /&gt;
&lt;br /&gt;
One of the major problems with storage at the block level is that if there is an error in a block, it is almost impossible to determine what part of the file system is affected. It may be the case that the error in a particular block may not even contain any data. This usually happens during a backup procedure or when a controller is organizing data. &lt;br /&gt;
&lt;br /&gt;
OSDs provide a level of abstraction that hides the fact that a disk device has blocks. It no longer matters to the file system manager what kind of disk drive is being used, it only worries about managing objects. This is done through managing metadata as well as maintaining internal copies of its metadata. Hence, OSDs have knowledge of its object layout even though one or more groups of objects are on different OSDs. In this way OSDs know what kind of space is being used or unused and can scan and correct errors without losing data. In the event of a failure in recovering a file or a number of files, traditional systems may have to do a complete file system restore. However, an OSDs awareness of its object layout enables it to recover data specific to a byte range and thus restore files in an efficient manner.&lt;br /&gt;
&lt;br /&gt;
OSDs have another powerful feature. Each object file has an associated hash key that is generated uniquely to the contents of the file. Thus the file can be checked for to ensure integrity and guard against data corruption. The hash key can also be used for disk management to quickly detect and flag duplicate data.&amp;lt;sup&amp;gt;[[#Foot1|1]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
&lt;br /&gt;
Security is an issue that must be confronted in all modern storage networks. Security issues come in a wide variety of types, so can be difficult to deal with. Both SAN and NAS have a variety of ways for handling security, but an object based approach can make the implementation of security measures more effective and easier to manage.&lt;br /&gt;
&lt;br /&gt;
SAN has traditionally run on fibre channels.&amp;lt;sup&amp;gt;[[#Foot7|7]]&amp;lt;/sup&amp;gt; For the sake of security, running a SAN on fibre channels helps to isolate its network as they do not communicate over TCP/IP connections. However, since the SAN devices themselves do not restrict access, it&#039;s up to the network infrastructure and host system to handle its security.&lt;br /&gt;
&lt;br /&gt;
Zoning and logical unit number (LUN) masking are typical ways SAN systems could use as security measures. Zoning allocates a certain amount of storage to clients. These zones are isolated and are not allowed to communicate outside their respective zone. LUN masking is similar to zoning, however, they differ in the type of devices being used. Switches utilize zoning while disk array controllers use LUN masking. A disk array controller is a device which manages the physical disk drives and interprets them as logical unit numbers. Thus, the term LUN masking.&amp;lt;sup&amp;gt;[[#Foot8|8]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NAS has its own vulnerabilities but as with SAN, it is only as secure as the network they operate on. NAS security is conceptually simpler than SAN. NAS environments can administer security tasks as well as control disk usage quotas. The proprietary operating system it runs on has access control configurations much like other traditional OSs that can prevent unauthorized access to data. &lt;br /&gt;
&lt;br /&gt;
Unlike NAS and SAN systems, OSD devices handle security requests directly. The set of protocols used by OSD gives it a fair amount of flexibility in controlling access. Clients can access an OSD device by providing &amp;quot;cryptographically secure credentials&amp;quot;, called capabilities, which specify a tuple (OSD name, partition ID, object ID) to identify the object.&amp;lt;sup&amp;gt;[[#Foot9|9]]&amp;lt;/sup&amp;gt; This can prevent a wide range of potential attacks, which gives OSD systems an advantage over block based systems.&lt;br /&gt;
&lt;br /&gt;
== Real World Implementation ==&lt;br /&gt;
&lt;br /&gt;
Ceph is an example of a real world networked storage system based around OSDs. The Ceph developers specifically list performance, reliability, and scalability as the benefits their system offers over current solutions.&amp;lt;sup&amp;gt;[[#Foot10|10]]&amp;lt;/sup&amp;gt; Since Ceph is based on OSDs, it takes advantage of the ability for clients to interact directly with the devices, which avoids the traditional bottlenecks to performance caused by SAN controllers or NAS heads. This direct access allows Ceph to support a very large number of clients concurrently accessing data on the system. Since objects have security controls it can allow this direct access safely, unlike other network storage architectures.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Although object storage is relatively new compared to block storage, work has progressed steadily in universities and on standards such as the ANSI T10 SCSI OSD standard. However, there remains challenges to its adoption in the industry. One of which, is that OSD is only needed in high end business solutions at the moment, preventing it from reaching smaller businesses.&amp;lt;sup&amp;gt;[[#Foot11|11]]&amp;lt;/sup&amp;gt; As newer features are added and the standards mature we will see an increased adoption.&lt;br /&gt;
&lt;br /&gt;
It is obvious however that changes do need to occur as storage grows and finer levels of management are needed for data storage. Object-based storage has evolved to fit these needs where block-based storage has stagnated. The better tools for managing the data using the rich metadata of objects, the security and data transfer speeds of NAS and SAN combined with integrity controls for backups and redundancies will be an attractive choice for storage administrators in the future.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot1&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Dell Product Group, 2010. Object Storage A Fresh Approach to Long-Term File Storage. [online] Dell Available at: &amp;lt;http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf&amp;gt; [Accessed 13 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot2&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; C. Bandulet, 2007. Object-Based Storage Devices. [online] Oracle Available at: &amp;lt;http://developers.sun.com/solaris/articles/osd.html&amp;gt; [Accessed 13 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot3&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; IBM 350 disk storage unit, IBM Archives. [online] IBM Available at : &amp;lt;http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot4&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt; M. Mesnier, G. R. Ganger, and E. Riedel. Object-Based Storage. IEEE Communications Magazine, 41(8), August 2003.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot5&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; TechRepublic Guest Contributor, Foundations of Network Storage, Lesson Two: NAS. [online] Available at &amp;lt;http://articles.techrepublic.com.com/5100-22_11-5841266.html&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot6&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt; Satran and Teperman, Object Store Based SAN File Systems. [online] IBM Labs Available at: &amp;lt;http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot7&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; J. Tate, F. Lucchese, R. Moore. Introduction to Storage Area Networks. [online] Available at &amp;lt;http://www.redbooks.ibm.com/redbooks/pdfs/sg245470.pdf&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot8&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt; H. Yoshida. LUN Security Considerations for Storage Area Networks. [online] Available at &amp;lt;http://www.it.hds.com/pdf/wp91_san_lun_secur.pdf&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot9&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;9&amp;lt;/sup&amp;gt; M. Factor, D. Nagle, D. Naor, E. Riedel, J.Satran, 2005. The OSD Security Protocol. [online] Available at &amp;lt;http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot10&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt; S. A. Weil, S. A. Brandt, E. L. Miller, D. D. E. Long,&lt;br /&gt;
and C. Maltzahn. Ceph: A scalable, high-performance distributed file system. In Proc. OSDI, 2006. [online] Available at: &amp;lt;http://www.usenix.org/events/osdi06/tech/full_papers/weil/weil_html/&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot11&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;11&amp;lt;/sup&amp;gt; M. Factor, K. Meth, D. Naor, O. Rodeh, J. Satran, 2005. Object storage: The future building block for storage systems. In 2nd International IEEE Symposium on Mass Storage Systems and Technologies, Sardinia  [online] Available at: &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122.3959&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt; [Accessed 13 October 2010].&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=4613</id>
		<title>COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=4613"/>
		<updated>2010-10-15T07:44:58Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Integrity */ Removal of redundant phrasing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
Why are object stores an increasingly attractive building block for filesystems (as opposed to block-based stores)? Explain.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each year we are faced with growing storage needs as the world&#039;s information increases exponentially, business&#039; are increasingly choosing to archive and retain all the data they produce and &amp;quot;store everything, forever&amp;quot; (Dell, 2010)&amp;lt;sup&amp;gt;[[#Foot1|1]]&amp;lt;/sup&amp;gt; is the common mantra of storage administrators. The storage industry has been able to keep up with the increasing demand with matching increases in storage capacity. Unfortunately the interfaces between clients and storage devices has hardly changed since the 1950s. The dominate storage mechanism is still block-based storage technology. &lt;br /&gt;
&lt;br /&gt;
Innovation in storage technology is especially pertinent to businesses that use network storage. The two dominant technologies of network storage; storage area network (SAN) and network-attached storage (NAS), each have their own benefits and drawbacks and would benefit greatly with improvement in storage technology. Specifically, improvements that can provide better scalability, business intelligence, and management while ensuring security and data access speed of traditional storage solutions would be ideal.&lt;br /&gt;
&lt;br /&gt;
Object Based Storage Devices (OSD) solve these issues by design. Using objects that consist of both data and metadata, they are accessed with defined methods such as read and write and carry a unique identifier. They also handle the underlying security, space allocation and basic storage routines.&amp;lt;sup&amp;gt;[[#Foot2|2]]&amp;lt;/sup&amp;gt; This storage technology has the potential to address some of the problems with block-based storage.&lt;br /&gt;
&lt;br /&gt;
With increased scalability, better security through per-object level access, ensured integrity of data with unique hash keys and benefits in management and business intelligence with rich metadata, OSD can be seen as a viable alternative to improve the standard architectures of SAN and NAS.&lt;br /&gt;
&lt;br /&gt;
== Overview of Block-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Hard disks as a storage medium date back to the 1950s with the introduction of the IBM 350 disk storage unit.&amp;lt;sup&amp;gt;[[#Foot3|3]]&amp;lt;/sup&amp;gt; Hard disks store data in blocks, which are a fixed length series&#039; of bytes. Since early devices like the IBM 350, the interface that the operating system uses to communicate with the hard disk has remained mostly the same.&amp;lt;sup&amp;gt;[[#Foot4|4]]&amp;lt;/sup&amp;gt; This interface simply allows the operating system to read or write to blocks on the disk. This means that the goal of abstracting stored data into related groups or into human-understandable constructs such as objects or files is left completely in the space of the operating system&#039;s filesystem. For example, when the filesystem wants to write data to a file it must translate that into a block on the disk to write to. In this way, the scope of a filesystem extends from high level constructs like files to low level constructs like blocks. This wide scope is necessary because of the simple interface presented to the filesystem that must be abstracted up to the complex expectations of a user.&lt;br /&gt;
&lt;br /&gt;
Multiple standards exist to implement this interface. The small computer system interface (SCSI) standards, which have been around in one form or another since the late 1970s, are popular with industry. Parallel ATA, another standard which was designed in the 1980s, continues today in the form of Serial ATA (SATA). However, even though these standards have been around for a long time, &amp;quot;the logical interface, or the command set, has seen only minor additions&amp;quot; (Bandulet, 2007)&amp;lt;sup&amp;gt;[[#Foot2|2]]&amp;lt;/sup&amp;gt;. This means that the functionality that the command set allows has also remained mostly the same, since the functionality must be built on top of these dated commands.&lt;br /&gt;
&lt;br /&gt;
== Overview of Object-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Unlike block-based storage, object-based storage research started in the 1990s. See for example the work of Gibson et al in &amp;quot;A Cost-Effective, High-Bandwidth Storage Architecture&amp;quot;, Proceedings of the 8th Conference on Architectural Support for Programming Languages and Operating Systems, 1998. The fundamental idea of an object based storage device is to have the storage device itself handle a layer of abstraction on top of the block. Instead of the interface presenting the filesystem with blocks to read and write to, the interface presents the filesystem with &amp;quot;objects&amp;quot;  which it can read to, write to, create, or destroy. Objects can be variable sized, and the device itself handles mapping onto physical memory. These objects also have metadata and access controls immediately associated with them. This allows the filesystem to work at a higher level of abstraction. This is important because the needs placed on filesystems have changed, and we will see as we compare object based storage with block based storage that the design of objects is more suited to the needs of today&#039;s filesystems, than blocks, especially with networked filesystems,.&lt;br /&gt;
&lt;br /&gt;
== Changing Storage Needs ==&lt;br /&gt;
&lt;br /&gt;
Storage needs have changed significantly since the first hard disks were developed in the 1950s, and the standardization of the interface in the 1970s. This means that the functionality of storage devices must also change to reflect these needs. Storage has become increasingly networked. Networked storage must deal with several issues. Firstly, the storage architecture must be able to scale to terabytes (10^12 bytes), petabytes (10^15 bytes) and beyond with many servers and clients while avoiding bottlenecks. The data stored on these networks has also become more sensitive. Personal information, such as financial, is stored in large databases. Sensitive corporate and governmental information is stored similarly. Since the value of data has increased, it becomes more important to ensure the data&#039;s integrity and security. Block based storage, as we will see, has difficulty dealing with these priorities because of limitations inherent in its design. Object based storage is more suited to address these issues by design.&lt;br /&gt;
&lt;br /&gt;
== Comparison of object and block based stores ==&lt;br /&gt;
=== Scalability ===&lt;br /&gt;
Scalability is very important for large businesses that need to manage large data centers. Managing metadata while ensuring data access speed as the systems grows is paramount. &lt;br /&gt;
&lt;br /&gt;
Most block based storage systems contain many layers of metadata. There are also various types of virtualized systems that contain metadata to deal with device diversity or remapping of blocks for archiving or duplication. Building systems to scale with the metadata becomes a major issue. But at the same time the current speeds of block-based storage needs to be maintained.&lt;br /&gt;
&lt;br /&gt;
NAS coordinates the interface between file level access and clients. This is done through a single NAS head which usually has thousands of gigabytes of storage behind it.&amp;lt;sup&amp;gt;[[#Foot5|5]]&amp;lt;/sup&amp;gt; All data traffic must flow through this single access point. The benefits of the NAS is through its ability to manage security, prevent unauthorized access to files and use metadata to map blocks into files for the client. However, this causes a bottleneck issue with all the data passing through one point. Another issue is managing the metadata. Metadata is shared among separate metadata servers remote from the hosts. Space allocation management on different storage system layers and applications that add policy and management metadata individually is spread throughout the system. So this results in the metadata becoming very hard to manage.&lt;br /&gt;
&lt;br /&gt;
SANs on the other hand offer file systems that are distributed, but provide a single system image of the file system. This means that a local user need not be concerned with where the data is physically stored, since a level of abstraction separates the user from the physical location of the data. In the past, SANs were implemented on private fiber channel networks, which were designed to emulate local storage media. As long as the network remained exclusive, it could be assumed that all the clients could be trusted, so security was not a primary concern. The lack of security concern is one of the main reasons that block storage was a viable option for SANs of the past. Modern SANs can serve a much larger set of users, not all of whom can or should be trusted. This, in addition to the possible adoption of IP based SAN solutions, make data security a primary concern&amp;lt;sup&amp;gt;[[#Foot6|6]]&amp;lt;/sup&amp;gt;. Object stores can make user privilege management a much more manageable task, since each object can is aware of who is allowed to access it.&lt;br /&gt;
&lt;br /&gt;
Object storage provides the ability to operate a SAN setup with direct access to data while offering better security and scalability with metadata. Each object comes with a set of access rules given to it by the management server and metadata is associated and stored directly with each data object and is automatically carried between layers and across devices. Space allocation and management metadata are the responsibility of the storage device.&amp;lt;sup&amp;gt;[[#Foot1|1]]&amp;lt;/sup&amp;gt; This allows metadata layers to be folded, reducing server overhead and processing, and allows for larger clusters of storage compared with traditional block-based interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Integrity ===&lt;br /&gt;
Block based file systems in archive solutions usually have no built in mechanisms for assuring data integrity. A common best practice is to conduct frequent backups, which adds to the complexity of using file systems for archiving and scalability. The mechanisms for ensuring data integrity in OSDs have mechanisms that operate differently from block store systems.&lt;br /&gt;
&lt;br /&gt;
One of the major problems with storage at the block level is that if there is an error in a block, it is almost impossible to determine what part of the file system is affected. It may be the case that the error in a particular block may not even contain any data. This usually happens during a backup procedure or when a controller is organizing data. &lt;br /&gt;
&lt;br /&gt;
OSDs provide a level of abstraction that hides the fact that a disk device has blocks. It no longer matters to the file system manager what kind of disk drive is being used, it only worries about managing objects. This is done through managing metadata as well as maintaining internal copies of its metadata. Hence, OSDs have knowledge of its object layout even though one or more groups of objects are on different OSDs. In this way OSDs know what kind of space is being used or unused and can scan and correct errors without losing data. In the event of a failure in recovering a file or a number of files, traditional systems may have to do a complete file system restore. However, an OSDs awareness of its object layout enables it to recover data specific to a byte range and thus restore files in an efficient manner.&lt;br /&gt;
&lt;br /&gt;
OSDs have another powerful feature. Each object file has an associated hash key that is generated uniquely to the contents of the file. Thus the file can be checked for to ensure integrity and guard against data corruption. The hash key can also be used for management of data to flag duplicate data.&amp;lt;sup&amp;gt;[[#Foot1|1]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
&lt;br /&gt;
Security is an issue that must be confronted in all modern storage networks. Security issues come in a wide variety of types, so can be difficult to deal with. Both SAN and NAS have a variety of ways for handling security, but an object based approach can make the implementation of security measures more effective and easier to manage.&lt;br /&gt;
&lt;br /&gt;
SAN has traditionally run on fibre channels.&amp;lt;sup&amp;gt;[[#Foot7|7]]&amp;lt;/sup&amp;gt; For the sake of security, running a SAN on fibre channels helps to isolate its network as they do not communicate over TCP/IP connections. However, since the SAN devices themselves do not restrict access, it&#039;s up to the network infrastructure and host system to handle its security.&lt;br /&gt;
&lt;br /&gt;
Zoning and logical unit number (LUN) masking are typical ways SAN systems could use as security measures. Zoning allocates a certain amount of storage to clients. These zones are isolated and are not allowed to communicate outside their respective zone. LUN masking is similar to zoning, however, they differ in the type of devices being used. Switches utilize zoning while disk array controllers use LUN masking. A disk array controller is a device which manages the physical disk drives and interprets them as logical unit numbers. Thus, the term LUN masking.&amp;lt;sup&amp;gt;[[#Foot8|8]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NAS has its own vulnerabilities but as with SAN, it is only as secure as the network they operate on. NAS security is conceptually simpler than SAN. NAS environments can administer security tasks as well as control disk usage quotas. The proprietary operating system it runs on has access control configurations much like other traditional OSs that can prevent unauthorized access to data. &lt;br /&gt;
&lt;br /&gt;
Unlike NAS and SAN systems, OSD devices handle security requests directly. The set of protocols used by OSD gives it a fair amount of flexibility in controlling access. Clients can access an OSD device by providing &amp;quot;cryptographically secure credentials&amp;quot;, called capabilities, which specify a tuple (OSD name, partition ID, object ID) to identify the object.&amp;lt;sup&amp;gt;[[#Foot9|9]]&amp;lt;/sup&amp;gt; This can prevent a wide range of potential attacks, which gives OSD systems an advantage over block based systems.&lt;br /&gt;
&lt;br /&gt;
== Real World Implementation ==&lt;br /&gt;
&lt;br /&gt;
Ceph is an example of a real world networked storage system based around OSDs. The Ceph developers specifically list performance, reliability, and scalability as the benefits their system offers over current solutions.&amp;lt;sup&amp;gt;[[#Foot10|10]]&amp;lt;/sup&amp;gt; Since Ceph is based on OSDs, it takes advantage of the ability for clients to interact directly with the devices, which avoids the traditional bottlenecks to performance caused by SAN controllers or NAS heads. This direct access allows Ceph to support a very large number of clients concurrently accessing data on the system. Since objects have security controls it can allow this direct access safely, unlike other network storage architectures.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Although object storage is relatively new compared to block storage, work has progressed steadily in universities and on standards such as the ANSI T10 SCSI OSD standard. However, there remains challenges to its adoption in the industry. One of which, is that OSD is only needed in high end business solutions at the moment, preventing it from reaching smaller businesses.&amp;lt;sup&amp;gt;[[#Foot11|11]]&amp;lt;/sup&amp;gt; As newer features are added and the standards mature we will see an increased adoption.&lt;br /&gt;
&lt;br /&gt;
It is obvious however that changes do need to occur as storage grows and finer levels of management are needed for data storage. Object-based storage has evolved to fit these needs where block-based storage has stagnated. The better tools for managing the data using the rich metadata of objects, the security and data transfer speeds of NAS and SAN combined with integrity controls for backups and redundancies will be an attractive choice for storage administrators in the future.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot1&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt; Dell Product Group, 2010. Object Storage A Fresh Approach to Long-Term File Storage. [online] Dell Available at: &amp;lt;http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf&amp;gt; [Accessed 13 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot2&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; C. Bandulet, 2007. Object-Based Storage Devices. [online] Oracle Available at: &amp;lt;http://developers.sun.com/solaris/articles/osd.html&amp;gt; [Accessed 13 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot3&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt; IBM 350 disk storage unit, IBM Archives. [online] IBM Available at : &amp;lt;http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot4&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;4&amp;lt;/sup&amp;gt; M. Mesnier, G. R. Ganger, and E. Riedel. Object-Based Storage. IEEE Communications Magazine, 41(8), August 2003.&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot5&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;5&amp;lt;/sup&amp;gt; TechRepublic Guest Contributor, Foundations of Network Storage, Lesson Two: NAS. [online] Available at &amp;lt;http://articles.techrepublic.com.com/5100-22_11-5841266.html&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot6&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt; Satran and Teperman, Object Store Based SAN File Systems. [online] IBM Labs Available at: &amp;lt;http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot7&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;7&amp;lt;/sup&amp;gt; J. Tate, F. Lucchese, R. Moore. Introduction to Storage Area Networks. [online] Available at &amp;lt;http://www.redbooks.ibm.com/redbooks/pdfs/sg245470.pdf&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot8&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;8&amp;lt;/sup&amp;gt; H. Yoshida. LUN Security Considerations for Storage Area Networks. [online] Available at &amp;lt;http://www.it.hds.com/pdf/wp91_san_lun_secur.pdf&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot9&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;9&amp;lt;/sup&amp;gt; M. Factor, D. Nagle, D. Naor, E. Riedel, J.Satran, 2005. The OSD Security Protocol. [online] Available at &amp;lt;http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot10&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;10&amp;lt;/sup&amp;gt; S. A. Weil, S. A. Brandt, E. L. Miller, D. D. E. Long,&lt;br /&gt;
and C. Maltzahn. Ceph: A scalable, high-performance distributed file system. In Proc. OSDI, 2006. [online] Available at: &amp;lt;http://www.usenix.org/events/osdi06/tech/full_papers/weil/weil_html/&amp;gt; [Accessed 14 October 2010].&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;Foot11&amp;quot;&amp;gt;&amp;lt;sup&amp;gt;11&amp;lt;/sup&amp;gt; M. Factor, K. Meth, D. Naor, O. Rodeh, J. Satran, 2005. Object storage: The future building block for storage systems. In 2nd International IEEE Symposium on Mass Storage Systems and Technologies, Sardinia  [online] Available at: &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122.3959&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt; [Accessed 13 October 2010].&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3687</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3687"/>
		<updated>2010-10-14T08:37:42Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Essay Format and Assigned Tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Wikipedia Sources ==&lt;br /&gt;
I think we may want to replace the references to wikipedia with something more authoritative. [http://www.redbooks.ibm.com/abstracts/sg245470.html?Open this massive pdf] from IBM supports the idea that fiber channels are the dominant infrastructure of SANs, but i&#039;m not sure if it mentions how that is changing.&lt;br /&gt;
&lt;br /&gt;
The wikipedia page for LUN masking has [http://www.sansecurity.com/san-security-faq.shtml this] as its reference for the definitions, there&#039;s also [http://technet.microsoft.com/en-us/library/cc758640(WS.10).aspx this] microsoft article and [http://www.it.hds.com/pdf/wp91_san_lun_secur.pdf this] paper from Hitachi. I&#039;m not sure which of these is most relevant since I just did a quick google search and haven&#039;t really read up on LUN masking or zoning, so someone else would probably be better suited to decide which one if any to use.&lt;br /&gt;
&lt;br /&gt;
How does that sound to everyone?&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:55, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Some Sourcing Issues and Other Stuff ==&lt;br /&gt;
Just a reminder, if we&#039;re taking direct quotes from a source they need to be in quotation marks and attributed with the authors name and the date (I think) in parenthesis at the end, not just a link or footnote reference. There was an issue with this in the first couple sentences of the scalability section. I&#039;ve put it in quotes (though I didn&#039;t see any authors listed so I just put the company), but I think that that information might be better worked into the &amp;quot;Changing Storage Needs&amp;quot; section, what do you guys think?&lt;br /&gt;
&lt;br /&gt;
Also, I think probably sometime today we should divide the rest of the sections up and try to get most of the content in so we have tomorrow for editing and combining the information so that it flows well. Again, any thoughts?&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 19:32, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Sorry about the citation issue, you&#039;re right. I used the quote to emphasize the fact that scalability issues are evident in disk block systems. But now that I read it, it doesn&#039;t really transition well into the second paragraph. I don&#039;t mind if you move the quote to another section. Other than that, I could just finish up the section about Security. I don&#039;t really know who else is actively contributing to this essay though...or at least don&#039;t see anyone volunteering to take a topic other than Mbingham, Smcilroy and myself...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 15:47, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:No problem, it&#039;s just something to watch out for. I&#039;ll integrate it with the other section. &lt;br /&gt;
:Dagar has been making edits to the essay as well, he&#039;s cleaned up the language in some of the sections and organized the references. Maybe he would like to tackle one of the object specific sections?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 20:02, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I apologize for the delay, this has been an easy thing to neglect during a busy week. What&#039;s the proper way to reference with this wiki? --[[User:Dagar|Dagar]] 21:29, 13 October 2010 (UTC) &lt;br /&gt;
&lt;br /&gt;
:::check out this reference guide, it explain how to reference any material you find online. [http://libweb.anglia.ac.uk/referencing/harvard.htm Harvard System of Reference] --[[User:Smcilroy|Smcilroy]] 22:46, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to finish up the Security section if nobody tags it by the end of today. I have a draft written up. The fact that more people aren&#039;t tagging the document outline and volunteering responsibilities is kind of unnerving...&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 07:57, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to expand the scalability and integrity sections. Then once the security section is done, I think that just leaves the section on the OSD standard and future plans for the tech. Then in the conclusion we can recap.&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 22:54, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a plan. I&#039;ll clean up/expand what I have written and get started with some initial stuff for the object sections. Anyone else is welcome to expand and edit as well.&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 00:44, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Essay Format and Assigned Tasks ==&lt;br /&gt;
So I added an intro and I did it like it was an essay and not a wiki article. Feel free to edit, expand and replace it as you see fit.&lt;br /&gt;
Also I think we should just list the topics we want to talk about and then people can put their name beside it and work on it, that way we don&#039;t have two people working on the same thing. Then we can edit it all so it fits together in the end. What do you think?&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 15:16, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a good idea. Here&#039;s a relatively quick list of topics to talk about, based on our discussions and the outline below. Add in any sections anyone thinks are missing and put your name beside areas you want:&lt;br /&gt;
&lt;br /&gt;
:*Overview and history of block-based storage -Mbingham  (I added a useful diagram here -Npradhan)&lt;br /&gt;
:*Block based storage standards - SCSI, SATA, ATA/IDE etc -Mbingham&lt;br /&gt;
:*Networked storage architectures: SAN and NAS -Smcilroy&lt;br /&gt;
&lt;br /&gt;
:*How storage needs have changed since the development of block-based storage -Npradhan&lt;br /&gt;
:(maybe focus on the Internet, massive coorporate/government networks, large personal storage, etc)&lt;br /&gt;
&lt;br /&gt;
:*Overview and History of object-based storage -Npradhan&lt;br /&gt;
:*Object-based storage standards (ANSI OSD specification)&lt;br /&gt;
:*Object-based storage applied to networked storage -dagar&lt;br /&gt;
&lt;br /&gt;
:Comparison of object and block based stores focusing on:&lt;br /&gt;
::*Scalability -Myagi&lt;br /&gt;
::*Integrity -Myagi&lt;br /&gt;
::*Security -Myagi&lt;br /&gt;
&lt;br /&gt;
:*Conclusion -Smcilroy&lt;br /&gt;
&lt;br /&gt;
:Also, it would probably add it would be useful for people to be reading over each other&#039;s work and making suggestions, etc. I would also be cool with other people adding stuff to my sections if they have additional info or if there&#039;s something i&#039;ve overlooked. There&#039;s 11 or 12 sections there, and I think there&#039;s six of us, so we can start off taking maybe 2 sections each, and then if we don&#039;t have all the sections covered we can divide them up later. How does that sound?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 16:45, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Good plan, I took Scalability and Integrity comparisons of object and block stores.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 13:26, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Initial Outline ==&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
* Thesis Statement: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes.&lt;br /&gt;
* What will be discussed&lt;br /&gt;
 - Current state of block based storage&lt;br /&gt;
 - Brief overview of object store&lt;br /&gt;
 - Scalability&lt;br /&gt;
 - Integrity&lt;br /&gt;
 - Security&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block based storage&#039;&#039;&#039;&lt;br /&gt;
* NAS is a single storage device that is shared on a LAN&lt;br /&gt;
 - File level/Single storage device(s) that operates individually&lt;br /&gt;
 - Clients connect to the NAS head (interface between client and NAS) rather than to the individual storage devices&lt;br /&gt;
 - Use small, specialized and proprietary operating systems instead of general purpose OSs&lt;br /&gt;
 - Can enforce security constraints, quotas, indexing&lt;br /&gt;
 - Example of access: \\NAS\Sharename&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - Dedicated, feature-rich file sharing&lt;br /&gt;
 - Network optimized&lt;br /&gt;
 - Centralized storage&lt;br /&gt;
 - Less administration overhead&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Metadata processing has to be handled on the NAS server&lt;br /&gt;
 - Scaling up with more storage behind the NAS head is restricted because metadata processing on the NAS device becomes a bottleneck&lt;br /&gt;
 - Scaling by adding additional NAS devices quickly becomes a management issue because data is isolated on individual NAS islands&lt;br /&gt;
 - High latency protocols that clogs LANs, using TCP/IP &lt;br /&gt;
 - Not suitable for data transfer intensive apps &lt;br /&gt;
&lt;br /&gt;
* SAN filesystem is a local network of multiple devices that operate on disk blocks and provides a file system abstraction&lt;br /&gt;
 - Block level/local network of multiple device&lt;br /&gt;
 - Every client computer has its own file system&lt;br /&gt;
 - A SAN alone does not provide the file abstraction but there is a file system built on top of SANs&lt;br /&gt;
 - Example of access: D:\, E:\, etc.&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - High-performance shared disk&lt;br /&gt;
 - Scalable&lt;br /&gt;
 - Short I/O paths&lt;br /&gt;
 - Lots of parallelism&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Harder to maintain, lots of file systems to manage&lt;br /&gt;
 - Harder to administer, lots of storage access rights to coordinate&lt;br /&gt;
&lt;br /&gt;
* OSDs closes the gap between the scalability of SAN and the file sharing capabilities of NAS&lt;br /&gt;
* Block storage has limitations that have become more apparent as demand for scalability and security has grown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview of OSD&#039;&#039;&#039;&lt;br /&gt;
* An OSD device deals in objects&lt;br /&gt;
 - Handles the mapping from object to physical media locations itself&lt;br /&gt;
 - Tracks metadata as attributes, such as creation timestamps, allowing for easier sharing of data among clients&lt;br /&gt;
 - OSDs are directly connected to clients without the need for an intermediary to handle metadata.&lt;br /&gt;
&lt;br /&gt;
* ANSI ratified version 1.0 of the OSD specification in 2004, defining a protocol for communication with object-based storage devices&lt;br /&gt;
* The OSD specification describes:&lt;br /&gt;
 - a SCSI command set that provides a high-level interface to OSD devices&lt;br /&gt;
 - how file systems and databases stores and retrieves data objects&lt;br /&gt;
 - work has continued in ratifying OSD-2 and OSD-3 specificiations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scalability&#039;&#039;&#039;&lt;br /&gt;
* Metadata is associated and stored directly with data objects and carried between layers and across devices&lt;br /&gt;
* Space allocation delegated to storage device&lt;br /&gt;
* Server has reduced overhead and processing, allowing larger clusters of storage&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity&#039;&#039;&#039;&lt;br /&gt;
* OSD&#039;s have knowledge of its object layout&lt;br /&gt;
* Unlike block stores, OSD&#039;s can recover data specific to a byte range&lt;br /&gt;
 - OSD&#039;s know what space is being unused in this way&lt;br /&gt;
 - Can scan and correct errors without losing data&lt;br /&gt;
* OSD&#039;s maintain internal copies of metadata&lt;br /&gt;
 - User doesn&#039;t have to do a complete file system restore for the sake of one or few unrecoverable files&lt;br /&gt;
 - OSD&#039;s can identify the byte range lost and restore the file efficiently&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039;&lt;br /&gt;
* Suited for network based storage&lt;br /&gt;
* Associate security attributes directly with data object&lt;br /&gt;
* Security requests handled directly by storage device &lt;br /&gt;
* Computer system can access OSD device by providing cryptographically secure credentials(capability) that the OSD device can validate&lt;br /&gt;
 - This can prevent malicious access from unauthorized requests or accidental access from misconfigured machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conclusion&#039;&#039;&#039;&lt;br /&gt;
* Reiteration of thesis statement&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Myagi, I thought i&#039;d move your outline to its own section at the top of the page so it&#039;s more visible. I hope you don&#039;t mind. If you do, feel free to revert this edit.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: It&#039;s all good.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:00, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:This outline looks pretty good to me. I like the three focus points of scalability, integrity and security, those seem to be constant themes in what i&#039;ve read about object stores. &lt;br /&gt;
&lt;br /&gt;
:For the block storage overview, the two current standards for a block based interface seem to be SCSI and SATA. SCSI seems to be used more in enterprise storage and SATA more in personal storage (someone correct me if i&#039;m wrong here). We might also want to take a look at SAN and NAS. I need to do some more reading, haha.&lt;br /&gt;
&lt;br /&gt;
:Also, I think we might as well start putting up some stuff on the article page. Even just a few sentences per section. I can start on that tomorrow or maybe Saturday. Of course any one else is welcome to as well.&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Quick Overview ==&lt;br /&gt;
So I hope i&#039;m not the only one who was wondering &amp;quot;What are object stores?&amp;quot; when reading the question. I don&#039;t think the textbook mentions it but I didn&#039;t read through the filesystems chapter very thoroughly. Here&#039;s where some quick googling has got me:&lt;br /&gt;
&lt;br /&gt;
Most storage devices divide their storage up into blocks,  a fixed length sequence of bytes. The interface that storage devices provide to the rest of the system is pretty simple. It&#039;s essentially &amp;quot;Here, you can read to or write to blocks, have fun&amp;quot;. This is block-based storage.&lt;br /&gt;
&lt;br /&gt;
Object-based storage is different. The interface it presents to the rest of the system is more sophisticated. Instead of directly accessing blocks on the disk, the system accesses objects. Objects are like a level of abstraction on top of blocks. Objects can be variable sized, read/written to, created, and deleted. The device itself handles mapping these objects to blocks and all the issues that come with that, rather than the OS.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some papers that give an overview of object-based storage:&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1612479 Object Storage: The Future Building Block for Storage Systems]&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722 Object-Based Storage]&lt;br /&gt;
&lt;br /&gt;
I think if you just look those up on google scholar you can access the pdf without even being inside carleton&#039;s network.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 23:56, 1 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Some more links ==&lt;br /&gt;
I haven&#039;t been reading many academic papers on the subject so those links will be very useful.&lt;br /&gt;
&lt;br /&gt;
If I may add to this. I read articles on object storage here:&lt;br /&gt;
&lt;br /&gt;
[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Object Storage Overview] &lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
[http://www.snia.org/education/tutorials/2010/spring/file/PaulMassiglia_File_Systems_Object_Storage_Devices.pdf File Systems for OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
I can add that metadata is much richer in an object store context. Searching for files and grouping related files together is much easier with the context information that metadata supplies for objects. I&#039;m beginning to read:&lt;br /&gt;
&lt;br /&gt;
[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf The advantages of OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:39, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to write a version of my essay out over the long weekend with headings and references and put it up on the wiki. I&#039;d like to know who and how many people are working on this essay but dunno if that&#039;s possible. We&#039;ll see what we do from there I guess? I was thinking we just homogenize all of the information we write into one unified essay.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:42, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I think there&#039;s 6 people in our group, though there might only be 5. I&#039;ll be working on this over the long weekend too. I was thinking maybe we should try to get a rough outline up, thursday or friday. Since Prof Somayaji mentioned that this should have the format of an essay, maybe we could start with what our main argument is?&lt;br /&gt;
&lt;br /&gt;
:I was thinking something like objects stores are becoming more attractive because the demands on filesystems has changed, but the interface has not been updated to accomodate these changes. Then we could go into an explanation of block based storage, how it fails to meet the needs placed on modern FSs, then how object stores solves these problems. What do you think?&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 01:55, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:You don&#039;t need to write your own independent essay on the wiki. Let&#039;s just add info as it comes along. I&#039;ll be completely without internet access this weekend, but I&#039;ll try to bring some background reading with me. Expect lots of edits from me starting Monday night/Tuesday morning.&lt;br /&gt;
:--[[User:Dagar|Dagar]] 12:59, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds good! I think that&#039;s a good idea for a thesis statement and we should have a concrete one by Thurs/Fri. Although I&#039;m not absolutely clear about the interface not being updated? I think the object store SCSI standard is constantly being ratified and now they have an OSD-3 draft. [http://www.t10.org/drafts.htm#OSD_Family T10 OSD Working Drafts]. But then again I&#039;m probably misunderstanding something...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:08, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I didn&#039;t mean that the object interface hadn&#039;t been updated, I meant that the block interface hasn&#039;t been updated to reflect the changing requirements put on storage. Since the block interface is still largely the same as it was decades ago (read/write to blocks) it is unable to handle the new requirements. Object stores look attractive because they are designed to deal with issues like scalability, integrity, security, etc. Sorry for the confusion, I hope it makes more sense now, haha.&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 15:44, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:I gotcha, thanks for explaining! I&#039;d say that would be a great thesis statement then: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes. We can work from there. I think we can address the inadequacies of block based storage after stating our thesis and then for the body, we point out how object stores deal with issues of scalability, integrity, security as well as flexibility. And then some kind of nice tie up reiterating our thesis.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 12:50, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I mine as well put my contribution here. I&#039;m willing to move or change it for the sake of organizing this discussion page.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:(moved Myagi&#039;s outline to top of page) --[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Some links that I found while doing the assignment about object storage and its application to SAN systems:&lt;br /&gt;
http://dsc.sun.com/solaris/articles/osd.html&lt;br /&gt;
http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&lt;br /&gt;
&lt;br /&gt;
--[[User:Npradhan|Npradhan]] 23:45, 9 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
-instead of storing filesytems in terms of blocks, you store in terms of objects.&lt;br /&gt;
&lt;br /&gt;
-extents, named extents&lt;br /&gt;
&lt;br /&gt;
-objects fancier because they can move around.&lt;br /&gt;
&lt;br /&gt;
-extra level of abstraction and indirection&lt;br /&gt;
&lt;br /&gt;
-files made of objects, objects made of blocks&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3686</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3686"/>
		<updated>2010-10-14T08:37:11Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Essay Format and Assigned Tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Wikipedia Sources ==&lt;br /&gt;
I think we may want to replace the references to wikipedia with something more authoritative. [http://www.redbooks.ibm.com/abstracts/sg245470.html?Open this massive pdf] from IBM supports the idea that fiber channels are the dominant infrastructure of SANs, but i&#039;m not sure if it mentions how that is changing.&lt;br /&gt;
&lt;br /&gt;
The wikipedia page for LUN masking has [http://www.sansecurity.com/san-security-faq.shtml this] as its reference for the definitions, there&#039;s also [http://technet.microsoft.com/en-us/library/cc758640(WS.10).aspx this] microsoft article and [http://www.it.hds.com/pdf/wp91_san_lun_secur.pdf this] paper from Hitachi. I&#039;m not sure which of these is most relevant since I just did a quick google search and haven&#039;t really read up on LUN masking or zoning, so someone else would probably be better suited to decide which one if any to use.&lt;br /&gt;
&lt;br /&gt;
How does that sound to everyone?&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:55, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Some Sourcing Issues and Other Stuff ==&lt;br /&gt;
Just a reminder, if we&#039;re taking direct quotes from a source they need to be in quotation marks and attributed with the authors name and the date (I think) in parenthesis at the end, not just a link or footnote reference. There was an issue with this in the first couple sentences of the scalability section. I&#039;ve put it in quotes (though I didn&#039;t see any authors listed so I just put the company), but I think that that information might be better worked into the &amp;quot;Changing Storage Needs&amp;quot; section, what do you guys think?&lt;br /&gt;
&lt;br /&gt;
Also, I think probably sometime today we should divide the rest of the sections up and try to get most of the content in so we have tomorrow for editing and combining the information so that it flows well. Again, any thoughts?&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 19:32, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Sorry about the citation issue, you&#039;re right. I used the quote to emphasize the fact that scalability issues are evident in disk block systems. But now that I read it, it doesn&#039;t really transition well into the second paragraph. I don&#039;t mind if you move the quote to another section. Other than that, I could just finish up the section about Security. I don&#039;t really know who else is actively contributing to this essay though...or at least don&#039;t see anyone volunteering to take a topic other than Mbingham, Smcilroy and myself...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 15:47, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:No problem, it&#039;s just something to watch out for. I&#039;ll integrate it with the other section. &lt;br /&gt;
:Dagar has been making edits to the essay as well, he&#039;s cleaned up the language in some of the sections and organized the references. Maybe he would like to tackle one of the object specific sections?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 20:02, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I apologize for the delay, this has been an easy thing to neglect during a busy week. What&#039;s the proper way to reference with this wiki? --[[User:Dagar|Dagar]] 21:29, 13 October 2010 (UTC) &lt;br /&gt;
&lt;br /&gt;
:::check out this reference guide, it explain how to reference any material you find online. [http://libweb.anglia.ac.uk/referencing/harvard.htm Harvard System of Reference] --[[User:Smcilroy|Smcilroy]] 22:46, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to finish up the Security section if nobody tags it by the end of today. I have a draft written up. The fact that more people aren&#039;t tagging the document outline and volunteering responsibilities is kind of unnerving...&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 07:57, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to expand the scalability and integrity sections. Then once the security section is done, I think that just leaves the section on the OSD standard and future plans for the tech. Then in the conclusion we can recap.&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 22:54, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a plan. I&#039;ll clean up/expand what I have written and get started with some initial stuff for the object sections. Anyone else is welcome to expand and edit as well.&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 00:44, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Essay Format and Assigned Tasks ==&lt;br /&gt;
So I added an intro and I did it like it was an essay and not a wiki article. Feel free to edit, expand and replace it as you see fit.&lt;br /&gt;
Also I think we should just list the topics we want to talk about and then people can put their name beside it and work on it, that way we don&#039;t have two people working on the same thing. Then we can edit it all so it fits together in the end. What do you think?&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 15:16, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a good idea. Here&#039;s a relatively quick list of topics to talk about, based on our discussions and the outline below. Add in any sections anyone thinks are missing and put your name beside areas you want:&lt;br /&gt;
&lt;br /&gt;
:*Overview and history of block-based storage -Mbingham  (I added a useful diagram here -Npradhan)&lt;br /&gt;
:*Block based storage standards - SCSI, SATA, ATA/IDE etc -Mbingham&lt;br /&gt;
:*Networked storage architectures: SAN and NAS -Smcilroy&lt;br /&gt;
&lt;br /&gt;
:*How storage needs have changed since the development of block-based storage&lt;br /&gt;
:(maybe focus on the Internet, massive coorporate/government networks, large personal storage, etc)&lt;br /&gt;
&lt;br /&gt;
:*Overview and History of object-based storage -Npradhan&lt;br /&gt;
:*Object-based storage standards (ANSI OSD specification)&lt;br /&gt;
:*Object-based storage applied to networked storage -dagar&lt;br /&gt;
&lt;br /&gt;
:Comparison of object and block based stores focusing on:&lt;br /&gt;
::*Scalability -Myagi&lt;br /&gt;
::*Integrity -Myagi&lt;br /&gt;
::*Security -Myagi&lt;br /&gt;
&lt;br /&gt;
:*Conclusion -Smcilroy&lt;br /&gt;
&lt;br /&gt;
:Also, it would probably add it would be useful for people to be reading over each other&#039;s work and making suggestions, etc. I would also be cool with other people adding stuff to my sections if they have additional info or if there&#039;s something i&#039;ve overlooked. There&#039;s 11 or 12 sections there, and I think there&#039;s six of us, so we can start off taking maybe 2 sections each, and then if we don&#039;t have all the sections covered we can divide them up later. How does that sound?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 16:45, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Good plan, I took Scalability and Integrity comparisons of object and block stores.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 13:26, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Initial Outline ==&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
* Thesis Statement: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes.&lt;br /&gt;
* What will be discussed&lt;br /&gt;
 - Current state of block based storage&lt;br /&gt;
 - Brief overview of object store&lt;br /&gt;
 - Scalability&lt;br /&gt;
 - Integrity&lt;br /&gt;
 - Security&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block based storage&#039;&#039;&#039;&lt;br /&gt;
* NAS is a single storage device that is shared on a LAN&lt;br /&gt;
 - File level/Single storage device(s) that operates individually&lt;br /&gt;
 - Clients connect to the NAS head (interface between client and NAS) rather than to the individual storage devices&lt;br /&gt;
 - Use small, specialized and proprietary operating systems instead of general purpose OSs&lt;br /&gt;
 - Can enforce security constraints, quotas, indexing&lt;br /&gt;
 - Example of access: \\NAS\Sharename&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - Dedicated, feature-rich file sharing&lt;br /&gt;
 - Network optimized&lt;br /&gt;
 - Centralized storage&lt;br /&gt;
 - Less administration overhead&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Metadata processing has to be handled on the NAS server&lt;br /&gt;
 - Scaling up with more storage behind the NAS head is restricted because metadata processing on the NAS device becomes a bottleneck&lt;br /&gt;
 - Scaling by adding additional NAS devices quickly becomes a management issue because data is isolated on individual NAS islands&lt;br /&gt;
 - High latency protocols that clogs LANs, using TCP/IP &lt;br /&gt;
 - Not suitable for data transfer intensive apps &lt;br /&gt;
&lt;br /&gt;
* SAN filesystem is a local network of multiple devices that operate on disk blocks and provides a file system abstraction&lt;br /&gt;
 - Block level/local network of multiple device&lt;br /&gt;
 - Every client computer has its own file system&lt;br /&gt;
 - A SAN alone does not provide the file abstraction but there is a file system built on top of SANs&lt;br /&gt;
 - Example of access: D:\, E:\, etc.&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - High-performance shared disk&lt;br /&gt;
 - Scalable&lt;br /&gt;
 - Short I/O paths&lt;br /&gt;
 - Lots of parallelism&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Harder to maintain, lots of file systems to manage&lt;br /&gt;
 - Harder to administer, lots of storage access rights to coordinate&lt;br /&gt;
&lt;br /&gt;
* OSDs closes the gap between the scalability of SAN and the file sharing capabilities of NAS&lt;br /&gt;
* Block storage has limitations that have become more apparent as demand for scalability and security has grown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview of OSD&#039;&#039;&#039;&lt;br /&gt;
* An OSD device deals in objects&lt;br /&gt;
 - Handles the mapping from object to physical media locations itself&lt;br /&gt;
 - Tracks metadata as attributes, such as creation timestamps, allowing for easier sharing of data among clients&lt;br /&gt;
 - OSDs are directly connected to clients without the need for an intermediary to handle metadata.&lt;br /&gt;
&lt;br /&gt;
* ANSI ratified version 1.0 of the OSD specification in 2004, defining a protocol for communication with object-based storage devices&lt;br /&gt;
* The OSD specification describes:&lt;br /&gt;
 - a SCSI command set that provides a high-level interface to OSD devices&lt;br /&gt;
 - how file systems and databases stores and retrieves data objects&lt;br /&gt;
 - work has continued in ratifying OSD-2 and OSD-3 specificiations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scalability&#039;&#039;&#039;&lt;br /&gt;
* Metadata is associated and stored directly with data objects and carried between layers and across devices&lt;br /&gt;
* Space allocation delegated to storage device&lt;br /&gt;
* Server has reduced overhead and processing, allowing larger clusters of storage&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity&#039;&#039;&#039;&lt;br /&gt;
* OSD&#039;s have knowledge of its object layout&lt;br /&gt;
* Unlike block stores, OSD&#039;s can recover data specific to a byte range&lt;br /&gt;
 - OSD&#039;s know what space is being unused in this way&lt;br /&gt;
 - Can scan and correct errors without losing data&lt;br /&gt;
* OSD&#039;s maintain internal copies of metadata&lt;br /&gt;
 - User doesn&#039;t have to do a complete file system restore for the sake of one or few unrecoverable files&lt;br /&gt;
 - OSD&#039;s can identify the byte range lost and restore the file efficiently&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039;&lt;br /&gt;
* Suited for network based storage&lt;br /&gt;
* Associate security attributes directly with data object&lt;br /&gt;
* Security requests handled directly by storage device &lt;br /&gt;
* Computer system can access OSD device by providing cryptographically secure credentials(capability) that the OSD device can validate&lt;br /&gt;
 - This can prevent malicious access from unauthorized requests or accidental access from misconfigured machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conclusion&#039;&#039;&#039;&lt;br /&gt;
* Reiteration of thesis statement&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Myagi, I thought i&#039;d move your outline to its own section at the top of the page so it&#039;s more visible. I hope you don&#039;t mind. If you do, feel free to revert this edit.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: It&#039;s all good.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:00, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:This outline looks pretty good to me. I like the three focus points of scalability, integrity and security, those seem to be constant themes in what i&#039;ve read about object stores. &lt;br /&gt;
&lt;br /&gt;
:For the block storage overview, the two current standards for a block based interface seem to be SCSI and SATA. SCSI seems to be used more in enterprise storage and SATA more in personal storage (someone correct me if i&#039;m wrong here). We might also want to take a look at SAN and NAS. I need to do some more reading, haha.&lt;br /&gt;
&lt;br /&gt;
:Also, I think we might as well start putting up some stuff on the article page. Even just a few sentences per section. I can start on that tomorrow or maybe Saturday. Of course any one else is welcome to as well.&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Quick Overview ==&lt;br /&gt;
So I hope i&#039;m not the only one who was wondering &amp;quot;What are object stores?&amp;quot; when reading the question. I don&#039;t think the textbook mentions it but I didn&#039;t read through the filesystems chapter very thoroughly. Here&#039;s where some quick googling has got me:&lt;br /&gt;
&lt;br /&gt;
Most storage devices divide their storage up into blocks,  a fixed length sequence of bytes. The interface that storage devices provide to the rest of the system is pretty simple. It&#039;s essentially &amp;quot;Here, you can read to or write to blocks, have fun&amp;quot;. This is block-based storage.&lt;br /&gt;
&lt;br /&gt;
Object-based storage is different. The interface it presents to the rest of the system is more sophisticated. Instead of directly accessing blocks on the disk, the system accesses objects. Objects are like a level of abstraction on top of blocks. Objects can be variable sized, read/written to, created, and deleted. The device itself handles mapping these objects to blocks and all the issues that come with that, rather than the OS.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some papers that give an overview of object-based storage:&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1612479 Object Storage: The Future Building Block for Storage Systems]&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722 Object-Based Storage]&lt;br /&gt;
&lt;br /&gt;
I think if you just look those up on google scholar you can access the pdf without even being inside carleton&#039;s network.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 23:56, 1 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Some more links ==&lt;br /&gt;
I haven&#039;t been reading many academic papers on the subject so those links will be very useful.&lt;br /&gt;
&lt;br /&gt;
If I may add to this. I read articles on object storage here:&lt;br /&gt;
&lt;br /&gt;
[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Object Storage Overview] &lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
[http://www.snia.org/education/tutorials/2010/spring/file/PaulMassiglia_File_Systems_Object_Storage_Devices.pdf File Systems for OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
I can add that metadata is much richer in an object store context. Searching for files and grouping related files together is much easier with the context information that metadata supplies for objects. I&#039;m beginning to read:&lt;br /&gt;
&lt;br /&gt;
[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf The advantages of OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:39, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to write a version of my essay out over the long weekend with headings and references and put it up on the wiki. I&#039;d like to know who and how many people are working on this essay but dunno if that&#039;s possible. We&#039;ll see what we do from there I guess? I was thinking we just homogenize all of the information we write into one unified essay.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:42, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I think there&#039;s 6 people in our group, though there might only be 5. I&#039;ll be working on this over the long weekend too. I was thinking maybe we should try to get a rough outline up, thursday or friday. Since Prof Somayaji mentioned that this should have the format of an essay, maybe we could start with what our main argument is?&lt;br /&gt;
&lt;br /&gt;
:I was thinking something like objects stores are becoming more attractive because the demands on filesystems has changed, but the interface has not been updated to accomodate these changes. Then we could go into an explanation of block based storage, how it fails to meet the needs placed on modern FSs, then how object stores solves these problems. What do you think?&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 01:55, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:You don&#039;t need to write your own independent essay on the wiki. Let&#039;s just add info as it comes along. I&#039;ll be completely without internet access this weekend, but I&#039;ll try to bring some background reading with me. Expect lots of edits from me starting Monday night/Tuesday morning.&lt;br /&gt;
:--[[User:Dagar|Dagar]] 12:59, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds good! I think that&#039;s a good idea for a thesis statement and we should have a concrete one by Thurs/Fri. Although I&#039;m not absolutely clear about the interface not being updated? I think the object store SCSI standard is constantly being ratified and now they have an OSD-3 draft. [http://www.t10.org/drafts.htm#OSD_Family T10 OSD Working Drafts]. But then again I&#039;m probably misunderstanding something...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:08, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I didn&#039;t mean that the object interface hadn&#039;t been updated, I meant that the block interface hasn&#039;t been updated to reflect the changing requirements put on storage. Since the block interface is still largely the same as it was decades ago (read/write to blocks) it is unable to handle the new requirements. Object stores look attractive because they are designed to deal with issues like scalability, integrity, security, etc. Sorry for the confusion, I hope it makes more sense now, haha.&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 15:44, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:I gotcha, thanks for explaining! I&#039;d say that would be a great thesis statement then: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes. We can work from there. I think we can address the inadequacies of block based storage after stating our thesis and then for the body, we point out how object stores deal with issues of scalability, integrity, security as well as flexibility. And then some kind of nice tie up reiterating our thesis.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 12:50, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I mine as well put my contribution here. I&#039;m willing to move or change it for the sake of organizing this discussion page.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:(moved Myagi&#039;s outline to top of page) --[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Some links that I found while doing the assignment about object storage and its application to SAN systems:&lt;br /&gt;
http://dsc.sun.com/solaris/articles/osd.html&lt;br /&gt;
http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&lt;br /&gt;
&lt;br /&gt;
--[[User:Npradhan|Npradhan]] 23:45, 9 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
-instead of storing filesytems in terms of blocks, you store in terms of objects.&lt;br /&gt;
&lt;br /&gt;
-extents, named extents&lt;br /&gt;
&lt;br /&gt;
-objects fancier because they can move around.&lt;br /&gt;
&lt;br /&gt;
-extra level of abstraction and indirection&lt;br /&gt;
&lt;br /&gt;
-files made of objects, objects made of blocks&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3685</id>
		<title>COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3685"/>
		<updated>2010-10-14T07:44:31Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Overview of Object-Based Storage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
Why are object stores an increasingly attractive building block for filesystems (as opposed to block-based stores)? Explain.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each year we are faced with growing storage needs as the world&#039;s information increases exponentially and business&#039; are increasingly choosing to archive and retain all the data they produce. The storage industry has been able to keep up with demand with matching increases in storage capacity. Unfortunately the interfaces between clients and storage devices has remained unchanged since the 1950&#039;s. The dominate storage mechanism is still block-based storage technology. This has been sufficient for meeting most needs of modern businesses, but as we enter an age where &amp;quot;store everything, forever&amp;quot;&amp;lt;sup&amp;gt;[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt; is the common mantra of storage administrators and unstructured data with little meta-data is the norm, we have to look for technology that can provide better scalability, business intelligence, and management while ensuring security and data access speed of traditional storage solutions.&lt;br /&gt;
&lt;br /&gt;
Object Based Storage Devices (OSD) solve these issues because of how they are designed. Object storage uses objects that consists of data and meta-data that describe the object. They are accessed with defined methods such as read and write and carry a unique ID. They manage all necessary low-level storage, space management, and security functions.&amp;lt;sup&amp;gt;[http://developers.sun.com/solaris/articles/osd.html]&amp;lt;/sup&amp;gt; This storage technology has the potential to address some of the problems with block-based storage.&lt;br /&gt;
&lt;br /&gt;
With increased scalability, better security through per-object level access and ensured integrity of data with unique hash key&#039;s for each object along due to some benefits in management and business intelligence with rich meta-data, OSD can be seen as a viable alternative to improve the standard architectures of   storage area network (SAN) and network-attached storage (NAS).&lt;br /&gt;
&lt;br /&gt;
== Overview of Block-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Hard disks as a storage medium date back to the 1950&#039;s with the introduction of the IBM 350 disk storage unit.&amp;lt;sup&amp;gt;[http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html]&amp;lt;/sup&amp;gt; Hard disks store data in blocks, which are a fixed length series&#039; of bytes. Since early devices like the IBM 350, the interface that the operating system uses to communicate with the hard disk has remained mostly the same.&amp;lt;sup&amp;gt;[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722]&amp;lt;/sup&amp;gt; This interface simply allows the operating system to read or write to blocks on the disk. This means that the goal of abstracting stored data into related groups or into human-understandable constructs such as objects or files is left completely in the space of the operating system&#039;s filesystem. For example, when the filesystem wants to write data to a file it must translate that into what block on the disk to write to. In this way, the scope of a filesystem extends from high level constructs like files to low level constructs like blocks. This wide scope is necessary because of the simple interface presented to the filesystem that must be abstracted up to the complex expectations of a user.&lt;br /&gt;
&lt;br /&gt;
Multiple standards exist to implement this interface. The small computer system interface (SCSI) standards, which have been around in one form or another since the late 1970s, are popular with industry. Parallel ATA, another standard which was designed in the 1980s, continues today in the form of Serial ATA (SATA). However, even though these standards have been around for a long time, &amp;quot;the logical interface, or the command set, has seen only minor additions&amp;quot;&amp;lt;sup&amp;gt;[http://developers.sun.com/solaris/articles/osd.html]&amp;lt;/sup&amp;gt;(Bandulet). This means that the functionality that the command set allows has also remained mostly the same, since the functionality must be built on top of these commands.&lt;br /&gt;
&lt;br /&gt;
== Overview of Object-Based Storage ==&lt;br /&gt;
&#039;&#039;&#039;Anyone feel free to expand on this section&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Unlike block-based storage, whose design reaches back to the 1950s, object-based storage research goes back to the 1990s. See for example the work of Gibson et al in &amp;quot;A Cost-Effective, High-Bandwidth Storage Architecture&amp;quot;, Proceedings of the 8th Conference on Architectural Support for Programming Languages and Operating Systems, 1998. The fundamental idea of an object based storage device is to have the storage device itself handle a layer of abstraction on top of the block. Instead of the interface presenting the filesystem with blocks to read and write to, the interface presents the filesystem with &amp;quot;objects&amp;quot;  which it can read to, write to, create, or destroy. Objects can be variable sized, and the device itself handles mapping onto physical blocks of memory. These objects also have meta-data and access controls immediately associated with them. This allows the filesystem to work at a higher level of abstraction. This is important because the needs placed on filesystems has changed, and we will see as we compare object based storage with block based storage that the design of objects are more suited to the needs of todays filesystems than blocks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Osd_figure3.jpg|thumb|center|650x405px|alt=White diagonal cross over blue background|Diagram illustrating the components of an object store.&amp;lt;sup&amp;gt;[http://dsc.sun.com/solaris/articles/osd.html]&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== Changing Storage Needs ==&lt;br /&gt;
&#039;&#039;&#039;Note: Just getting the ball rolling on this section. Anyone else is welcome to pick it up and expand&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Storage needs have changed a lot since the 1950s, when the first hard disks were developed, and the 1970s, when the interface became standardized. This means that the functionality of storage devices must also change to reflect these needs. Firstly, the scale of data being stored, both personally and by organizations, has gone up by orders of magnitude. Today personal hard drives routinely store terabytes of data, massive networks store even more. In fact, &amp;quot;a survey of over one thousand ASNP members indicates that 20% of them manage over 100 terabytes of data&amp;quot; (Seagate Research, 2005).&amp;lt;sup&amp;gt;[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf]&amp;lt;/sup&amp;gt;  Data has also become more sensitive. Personal information, such as credit card numbers and financial information, is stored in large databases. Sensitive corporate and governmental information is stored similarly. Since the value of data has gone up, it becomes more important to ensure the data&#039;s integrity and security. Block based storage, as we will see, has difficulty dealing with these priorities because of limitations inherent in it&#039;s design. Object based storage is more suited to address these issues because of how it has been designed.&lt;br /&gt;
&lt;br /&gt;
One application where the utility of object stores has become increasingly apparent is in SAN (Storage Area Network) systems. SAN file systems are distributed, however they provide a single system image of the file system. This means that a local user need not be concerned with where the data is physically stored, since a level of abstraction separates the user from the physical location of the data. In the past, SANs were implemented on private fiber channel networks, which were designed to emulate local storage media. As long as the network remained exclusive, it could be assumed that all the clients could be trusted, so security was not a primary concern. The lack of security concern is one of the main reasons that block storage was a viable option for SAN networks of the past. Modern SAN networks can serve a much larger set of users, not all of whom can be trusted. This, in addition to the possible adoption of IP based SAN solutions, make data security a primary concern&amp;lt;sup&amp;gt;[http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf]&amp;lt;/sup&amp;gt;. Object stores can make user privilege management a much more manageable task, since each object can &#039;know&#039; who is allowed to access it.&lt;br /&gt;
&lt;br /&gt;
== Comparison of object and block based stores ==&lt;br /&gt;
=== Scalability ===&lt;br /&gt;
Today&#039;s storage systems consist of two main technologies, SAN and NAS storage. They both have their benefits and drawbacks. The key issues being managing metadata and ensuring data access speed as the systems grow. &lt;br /&gt;
&lt;br /&gt;
Most block based storage systems contain many layers of metadata. There are also various types of virtualized systems that contain metadata to deal with device diversity or remapping of blocks for archiving or duplication. Building systems to scale with the metadata becomes a major issue. But at the same time the current speeds of block-based storage needs to be maintained.&lt;br /&gt;
&lt;br /&gt;
NAS is a file system that coordinates the interface between file blocks and the clients access to files. This is done through a single NAS head which usually has thousands of gigabytes of storage behind it.&amp;lt;sup&amp;gt;[http://articles.techrepublic.com.com/5100-22_11-5841266.html]&amp;lt;/sup&amp;gt; All data traffic must flow through this single access point. The benefits of the NAS file system is through its ability to set block access, manage security, prevent unauthorized access to files and use metadata to map blocks into files for the client. However, this causes a bottleneck issue with all the data passing through one point. Another issue is managing the metadata. Metadata is shared among separate metadata servers remote from the hosts. Space allocation management on different storage system layers and applications that add policy and management metadata individually is spread throughout the system. So this results in the metadata becoming very hard to manage.&lt;br /&gt;
&lt;br /&gt;
SAN&#039;s on the other hand, allow data access through fiber cables directly accessing the storage. The storage management and file system is connected separately to both the client and the storage, separating the data channel with the management channel and acts as the mediator with the client and the storage blocks. This eliminates the bottleneck. Although SAN filesystems have the benefits of shared access for scalability, coordination of this shared access leads to scalability problems. File systems must coordinate allocation of blocks. For clients to share read-write access, they must coordinate usage of data blocks through metadata. Security also must be addressed as it opens up a host of security issues as the clients must be trusted to access the data.&lt;br /&gt;
&lt;br /&gt;
Object storage provides the ability to operate a SAN setup with direct access to data while offering better security and scalability with metadata. Each object comes with a set of access rules given to it by the management server and metadata is associated and stored directly with each data object and is automatically carried between layers and across devices. Space allocation and management metadata are the responsibility of the storage device.&amp;lt;sup&amp;gt; [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt; This allows metadata layers to be folded, reducing server overhead and processing, and allows for larger clusters of storage compared with traditional block-based interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Integrity ===&lt;br /&gt;
Block based file systems in archive solutions usually have no built in mechanisms for assuring data integrity. A common best practice is to conduct frequent backups, which adds to the complexity of using file systems for archiving and scalability. The mechanisms for ensuring data integrity in OSDs have mechanisms that operate differently from block store systems.&lt;br /&gt;
&lt;br /&gt;
One of the major problems with storage at the block level is that if there is an error in a block, it is almost impossible to determine what part of the file system is affected. It may be the case that the error in a particular block may not even contain any data. This usually happens during a backup procedure or when a controller is organizing data. &lt;br /&gt;
&lt;br /&gt;
OSDs provide a level of abstraction that hides the fact that a disk device has blocks. It no longer matters to the file system manager what kind of disk drive is being used, it only worries about managing objects. This is done through managing metadata as well as maintaining internal copies of its metadata. Hence, OSDs have knowledge of its object layout even though one or more groups of objects are on different OSDs. In this way OSDs know what kind of space is being used or unused and can scan and correct errors without losing data. In the event of a failure in recovering a file or a number of files, traditional systems may have to do a complete file system restore. However, an OSDs awareness of its object layout enables it to recover data specific to a byte range and thus restore files in an efficient manner.&lt;br /&gt;
&lt;br /&gt;
OSDs have another powerful feature. Each object file has an associated hash key that is generated uniquely to the contents of the file. Thus the file can be verified for accuracy to ensure the contents remain the same and integrity to ensure the data has not been corrupted. Also it can be used for management of data to flag duplicate data.&amp;lt;sup&amp;gt; [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
&lt;br /&gt;
Security threats can be thought of as having four quadrants. External, internal, accidental and malicious. Block based stores have a variety of ways for handling security but there are basic concepts that SAN and NAS technologies use to secure data.&lt;br /&gt;
&lt;br /&gt;
SAN has traditionally run on fibre channels, although this is a trend that is changing. &amp;lt;sup&amp;gt; [http://en.wikipedia.org/wiki/Storage_area_network] &amp;lt;/sup&amp;gt;&lt;br /&gt;
For the sake of security, running a SAN on fibre channels help isolate its network as they do not communicate over TCP/IP connections. However, since the SAN devices themselves do not restrict access, it&#039;s up to the network infrastructure and host system to handle its security. &lt;br /&gt;
&lt;br /&gt;
Zoning and LUN masking are typical ways SAN systems could use as security measures. Zoning allocates a certain amount of storage to clients. These zones are isolated and are not allowed to communicate outside their respective zone. LUN masking is similar to zoning, however, they differ in the type of devices being used. Switches utilize zoning while disk array controllers use LUN masking. A disk array controller is a device which manages the physical disk drives and interprets them as logical unit numbers. Thus, the term LUN masking. &amp;lt;sup&amp;gt; [http://en.wikipedia.org/wiki/Fibre_Channel_zoning] &amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NAS has its own vulnerabilities but as with SAN, it is only as secure as the network they operate on. NAS security is conceptually simpler than SAN. NAS environments can administer security tasks as well as control disk usage quotas. The proprietary operating system it runs on has access control configurations much like other traditional OSs that can prevent unauthorized access to data. &lt;br /&gt;
&lt;br /&gt;
Unlike NAS and SAN systems, OSD devices handle security requests directly. The set of protocols used by OSD enable it to cover the four quadrants of security threats outlined above. Clients can access an OSD device by providing &amp;quot;cryptographically secure credentials&amp;quot;, called capabilities, which specify a tuple (OSD name, partition ID, object ID) to identify the object. &amp;lt;sup&amp;gt; [http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf] &amp;lt;/sup&amp;gt; This can prevent accidental or even malicious access to an OSD externally or internally.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Although object storage is relatively new compared to block storage, work as progressed steadily in universities and on standards such as the ANSI T10 SCSI OSD standard. But there remains challenges to its adoption in the industry. One of which, is that it is only needed in high end business solutions at the moment, preventing it from reaching smaller businesses.&amp;lt;sup&amp;gt;[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122.3959&amp;amp;rep=rep1&amp;amp;type=pdf]&amp;lt;/sup&amp;gt; But as newer features are added and the standards mature we will see an increased adoption.&lt;br /&gt;
&lt;br /&gt;
It is obvious however that changes do need to occur as storage grows and finer levels of management are needed for data storage. Object-based storage has evolved to fit these needs where block-based storage has stagnated. The better tools for managing the data using the rich metadata of objects, the security and data transfer speeds of NAS and SAN combined and integrity controls for backups and redundancies will be an attracted choice for storage administrators in the future.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] Dell Product Group, 2010. Object Storage A Fresh Approach to Long-Term File Storage. [online] Dell Available at: &amp;lt;http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf&amp;gt; [Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[2] Christian Bandulet, 2007. Object-Based Storage Devices. [online] Oracle Available at: &amp;lt;http://developers.sun.com/solaris/articles/osd.html&amp;gt;&lt;br /&gt;
[Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[3] [http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html IBM 350 Disk Storage Unit]&lt;br /&gt;
&lt;br /&gt;
[4] M. Mesnier, G. R. Ganger, and E. Riedel. Object-Based Storage. IEEE Communications Magazine, 41(8), August 2003.&lt;br /&gt;
&lt;br /&gt;
[5] [http://developers.sun.com/solaris/articles/osd.html Object-Based Storage Devices Christian Bandulet, July 2007]&lt;br /&gt;
&lt;br /&gt;
[6] [http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf Seagate]&lt;br /&gt;
&lt;br /&gt;
[7] [http://articles.techrepublic.com.com/5100-22_11-5841266.html Foundations of Network Storage]&lt;br /&gt;
&lt;br /&gt;
[8] [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Dell Object Storage Overview]&lt;br /&gt;
&lt;br /&gt;
[9] Dell Product Group, 2010. Object Storage A Fresh Approach to Long-Term File Storage. [online] Dell Available at: &amp;lt;http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf&amp;gt; [Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[10] [http://en.wikipedia.org/wiki/Storage_area_network Storage Area Network]&lt;br /&gt;
&lt;br /&gt;
[11] [http://en.wikipedia.org/wiki/Fibre_Channel_zoning Fibre Channel zoning]&lt;br /&gt;
&lt;br /&gt;
[12] [http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf IBM OSD Security Protocol Overview]&lt;br /&gt;
&lt;br /&gt;
[13] Michael Factor, Kalman Meth, Dalit Naor, Ohad Rodeh, Julian Satran, 2005. Object storage: The future building block for storage systems. In 2nd International IEEE Symposium on Mass Storage Systems and Technologies, Sardinia  [online] IBM Available at: &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122.3959&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt; [Accessed 13 October 2010].&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3684</id>
		<title>COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3684"/>
		<updated>2010-10-14T07:44:03Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Changing Storage Needs */  Added section on SAN since it is representative of &amp;quot;changing storage needs&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
Why are object stores an increasingly attractive building block for filesystems (as opposed to block-based stores)? Explain.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each year we are faced with growing storage needs as the world&#039;s information increases exponentially and business&#039; are increasingly choosing to archive and retain all the data they produce. The storage industry has been able to keep up with demand with matching increases in storage capacity. Unfortunately the interfaces between clients and storage devices has remained unchanged since the 1950&#039;s. The dominate storage mechanism is still block-based storage technology. This has been sufficient for meeting most needs of modern businesses, but as we enter an age where &amp;quot;store everything, forever&amp;quot;&amp;lt;sup&amp;gt;[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt; is the common mantra of storage administrators and unstructured data with little meta-data is the norm, we have to look for technology that can provide better scalability, business intelligence, and management while ensuring security and data access speed of traditional storage solutions.&lt;br /&gt;
&lt;br /&gt;
Object Based Storage Devices (OSD) solve these issues because of how they are designed. Object storage uses objects that consists of data and meta-data that describe the object. They are accessed with defined methods such as read and write and carry a unique ID. They manage all necessary low-level storage, space management, and security functions.&amp;lt;sup&amp;gt;[http://developers.sun.com/solaris/articles/osd.html]&amp;lt;/sup&amp;gt; This storage technology has the potential to address some of the problems with block-based storage.&lt;br /&gt;
&lt;br /&gt;
With increased scalability, better security through per-object level access and ensured integrity of data with unique hash key&#039;s for each object along due to some benefits in management and business intelligence with rich meta-data, OSD can be seen as a viable alternative to improve the standard architectures of   storage area network (SAN) and network-attached storage (NAS).&lt;br /&gt;
&lt;br /&gt;
== Overview of Block-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Hard disks as a storage medium date back to the 1950&#039;s with the introduction of the IBM 350 disk storage unit.&amp;lt;sup&amp;gt;[http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html]&amp;lt;/sup&amp;gt; Hard disks store data in blocks, which are a fixed length series&#039; of bytes. Since early devices like the IBM 350, the interface that the operating system uses to communicate with the hard disk has remained mostly the same.&amp;lt;sup&amp;gt;[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722]&amp;lt;/sup&amp;gt; This interface simply allows the operating system to read or write to blocks on the disk. This means that the goal of abstracting stored data into related groups or into human-understandable constructs such as objects or files is left completely in the space of the operating system&#039;s filesystem. For example, when the filesystem wants to write data to a file it must translate that into what block on the disk to write to. In this way, the scope of a filesystem extends from high level constructs like files to low level constructs like blocks. This wide scope is necessary because of the simple interface presented to the filesystem that must be abstracted up to the complex expectations of a user.&lt;br /&gt;
&lt;br /&gt;
Multiple standards exist to implement this interface. The small computer system interface (SCSI) standards, which have been around in one form or another since the late 1970s, are popular with industry. Parallel ATA, another standard which was designed in the 1980s, continues today in the form of Serial ATA (SATA). However, even though these standards have been around for a long time, &amp;quot;the logical interface, or the command set, has seen only minor additions&amp;quot;&amp;lt;sup&amp;gt;[http://developers.sun.com/solaris/articles/osd.html]&amp;lt;/sup&amp;gt;(Bandulet). This means that the functionality that the command set allows has also remained mostly the same, since the functionality must be built on top of these commands.&lt;br /&gt;
&lt;br /&gt;
== Overview of Object-Based Storage ==&lt;br /&gt;
&#039;&#039;&#039;Anyone feel free to expand on this section&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Unlike block-based storage, whose design reaches back to the 1950s, object-based storage research goes back to the 1990s. See for example the work of Gibson et al in &amp;quot;A Cost-Effective, High-Bandwidth Storage Architecture&amp;quot;, Proceedings of the 8th Conference on Architectural Support for Programming Languages and Operating Systems, 1998. The fundamental idea of an object based storage device is to have the storage device itself handle a layer of abstraction on top of the block. Instead of the interface presenting the filesystem with blocks to read and write to, the interface presents the filesystem with &amp;quot;objects&amp;quot;  which it can read to, write to, create, or destroy. Objects can be variable sized, and the device itself handles mapping onto physical blocks of memory. These objects also have meta-data and access controls immediately associated with them. This allows the filesystem to work at a higher level of abstraction. This is important because the needs placed on filesystems has changed, and we will see as we compare object based storage with block based storage that the design of objects are more suited to the needs of todays filesystems than blocks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Osd_figure3.jpg|thumb|center|650x405px|alt=White diagonal cross over blue background|Diagram illustrating the components of an object store.&amp;lt;sup&amp;gt;http://dsc.sun.com/solaris/articles/osd.html&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== Changing Storage Needs ==&lt;br /&gt;
&#039;&#039;&#039;Note: Just getting the ball rolling on this section. Anyone else is welcome to pick it up and expand&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Storage needs have changed a lot since the 1950s, when the first hard disks were developed, and the 1970s, when the interface became standardized. This means that the functionality of storage devices must also change to reflect these needs. Firstly, the scale of data being stored, both personally and by organizations, has gone up by orders of magnitude. Today personal hard drives routinely store terabytes of data, massive networks store even more. In fact, &amp;quot;a survey of over one thousand ASNP members indicates that 20% of them manage over 100 terabytes of data&amp;quot; (Seagate Research, 2005).&amp;lt;sup&amp;gt;[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf]&amp;lt;/sup&amp;gt;  Data has also become more sensitive. Personal information, such as credit card numbers and financial information, is stored in large databases. Sensitive corporate and governmental information is stored similarly. Since the value of data has gone up, it becomes more important to ensure the data&#039;s integrity and security. Block based storage, as we will see, has difficulty dealing with these priorities because of limitations inherent in it&#039;s design. Object based storage is more suited to address these issues because of how it has been designed.&lt;br /&gt;
&lt;br /&gt;
One application where the utility of object stores has become increasingly apparent is in SAN (Storage Area Network) systems. SAN file systems are distributed, however they provide a single system image of the file system. This means that a local user need not be concerned with where the data is physically stored, since a level of abstraction separates the user from the physical location of the data. In the past, SANs were implemented on private fiber channel networks, which were designed to emulate local storage media. As long as the network remained exclusive, it could be assumed that all the clients could be trusted, so security was not a primary concern. The lack of security concern is one of the main reasons that block storage was a viable option for SAN networks of the past. Modern SAN networks can serve a much larger set of users, not all of whom can be trusted. This, in addition to the possible adoption of IP based SAN solutions, make data security a primary concern&amp;lt;sup&amp;gt;[http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf]&amp;lt;/sup&amp;gt;. Object stores can make user privilege management a much more manageable task, since each object can &#039;know&#039; who is allowed to access it.&lt;br /&gt;
&lt;br /&gt;
== Comparison of object and block based stores ==&lt;br /&gt;
=== Scalability ===&lt;br /&gt;
Today&#039;s storage systems consist of two main technologies, SAN and NAS storage. They both have their benefits and drawbacks. The key issues being managing metadata and ensuring data access speed as the systems grow. &lt;br /&gt;
&lt;br /&gt;
Most block based storage systems contain many layers of metadata. There are also various types of virtualized systems that contain metadata to deal with device diversity or remapping of blocks for archiving or duplication. Building systems to scale with the metadata becomes a major issue. But at the same time the current speeds of block-based storage needs to be maintained.&lt;br /&gt;
&lt;br /&gt;
NAS is a file system that coordinates the interface between file blocks and the clients access to files. This is done through a single NAS head which usually has thousands of gigabytes of storage behind it.&amp;lt;sup&amp;gt;[http://articles.techrepublic.com.com/5100-22_11-5841266.html]&amp;lt;/sup&amp;gt; All data traffic must flow through this single access point. The benefits of the NAS file system is through its ability to set block access, manage security, prevent unauthorized access to files and use metadata to map blocks into files for the client. However, this causes a bottleneck issue with all the data passing through one point. Another issue is managing the metadata. Metadata is shared among separate metadata servers remote from the hosts. Space allocation management on different storage system layers and applications that add policy and management metadata individually is spread throughout the system. So this results in the metadata becoming very hard to manage.&lt;br /&gt;
&lt;br /&gt;
SAN&#039;s on the other hand, allow data access through fiber cables directly accessing the storage. The storage management and file system is connected separately to both the client and the storage, separating the data channel with the management channel and acts as the mediator with the client and the storage blocks. This eliminates the bottleneck. Although SAN filesystems have the benefits of shared access for scalability, coordination of this shared access leads to scalability problems. File systems must coordinate allocation of blocks. For clients to share read-write access, they must coordinate usage of data blocks through metadata. Security also must be addressed as it opens up a host of security issues as the clients must be trusted to access the data.&lt;br /&gt;
&lt;br /&gt;
Object storage provides the ability to operate a SAN setup with direct access to data while offering better security and scalability with metadata. Each object comes with a set of access rules given to it by the management server and metadata is associated and stored directly with each data object and is automatically carried between layers and across devices. Space allocation and management metadata are the responsibility of the storage device.&amp;lt;sup&amp;gt; [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt; This allows metadata layers to be folded, reducing server overhead and processing, and allows for larger clusters of storage compared with traditional block-based interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Integrity ===&lt;br /&gt;
Block based file systems in archive solutions usually have no built in mechanisms for assuring data integrity. A common best practice is to conduct frequent backups, which adds to the complexity of using file systems for archiving and scalability. The mechanisms for ensuring data integrity in OSDs have mechanisms that operate differently from block store systems.&lt;br /&gt;
&lt;br /&gt;
One of the major problems with storage at the block level is that if there is an error in a block, it is almost impossible to determine what part of the file system is affected. It may be the case that the error in a particular block may not even contain any data. This usually happens during a backup procedure or when a controller is organizing data. &lt;br /&gt;
&lt;br /&gt;
OSDs provide a level of abstraction that hides the fact that a disk device has blocks. It no longer matters to the file system manager what kind of disk drive is being used, it only worries about managing objects. This is done through managing metadata as well as maintaining internal copies of its metadata. Hence, OSDs have knowledge of its object layout even though one or more groups of objects are on different OSDs. In this way OSDs know what kind of space is being used or unused and can scan and correct errors without losing data. In the event of a failure in recovering a file or a number of files, traditional systems may have to do a complete file system restore. However, an OSDs awareness of its object layout enables it to recover data specific to a byte range and thus restore files in an efficient manner.&lt;br /&gt;
&lt;br /&gt;
OSDs have another powerful feature. Each object file has an associated hash key that is generated uniquely to the contents of the file. Thus the file can be verified for accuracy to ensure the contents remain the same and integrity to ensure the data has not been corrupted. Also it can be used for management of data to flag duplicate data.&amp;lt;sup&amp;gt; [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
&lt;br /&gt;
Security threats can be thought of as having four quadrants. External, internal, accidental and malicious. Block based stores have a variety of ways for handling security but there are basic concepts that SAN and NAS technologies use to secure data.&lt;br /&gt;
&lt;br /&gt;
SAN has traditionally run on fibre channels, although this is a trend that is changing. &amp;lt;sup&amp;gt; [http://en.wikipedia.org/wiki/Storage_area_network] &amp;lt;/sup&amp;gt;&lt;br /&gt;
For the sake of security, running a SAN on fibre channels help isolate its network as they do not communicate over TCP/IP connections. However, since the SAN devices themselves do not restrict access, it&#039;s up to the network infrastructure and host system to handle its security. &lt;br /&gt;
&lt;br /&gt;
Zoning and LUN masking are typical ways SAN systems could use as security measures. Zoning allocates a certain amount of storage to clients. These zones are isolated and are not allowed to communicate outside their respective zone. LUN masking is similar to zoning, however, they differ in the type of devices being used. Switches utilize zoning while disk array controllers use LUN masking. A disk array controller is a device which manages the physical disk drives and interprets them as logical unit numbers. Thus, the term LUN masking. &amp;lt;sup&amp;gt; [http://en.wikipedia.org/wiki/Fibre_Channel_zoning] &amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NAS has its own vulnerabilities but as with SAN, it is only as secure as the network they operate on. NAS security is conceptually simpler than SAN. NAS environments can administer security tasks as well as control disk usage quotas. The proprietary operating system it runs on has access control configurations much like other traditional OSs that can prevent unauthorized access to data. &lt;br /&gt;
&lt;br /&gt;
Unlike NAS and SAN systems, OSD devices handle security requests directly. The set of protocols used by OSD enable it to cover the four quadrants of security threats outlined above. Clients can access an OSD device by providing &amp;quot;cryptographically secure credentials&amp;quot;, called capabilities, which specify a tuple (OSD name, partition ID, object ID) to identify the object. &amp;lt;sup&amp;gt; [http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf] &amp;lt;/sup&amp;gt; This can prevent accidental or even malicious access to an OSD externally or internally.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Although object storage is relatively new compared to block storage, work as progressed steadily in universities and on standards such as the ANSI T10 SCSI OSD standard. But there remains challenges to its adoption in the industry. One of which, is that it is only needed in high end business solutions at the moment, preventing it from reaching smaller businesses.&amp;lt;sup&amp;gt;[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122.3959&amp;amp;rep=rep1&amp;amp;type=pdf]&amp;lt;/sup&amp;gt; But as newer features are added and the standards mature we will see an increased adoption.&lt;br /&gt;
&lt;br /&gt;
It is obvious however that changes do need to occur as storage grows and finer levels of management are needed for data storage. Object-based storage has evolved to fit these needs where block-based storage has stagnated. The better tools for managing the data using the rich metadata of objects, the security and data transfer speeds of NAS and SAN combined and integrity controls for backups and redundancies will be an attracted choice for storage administrators in the future.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] Dell Product Group, 2010. Object Storage A Fresh Approach to Long-Term File Storage. [online] Dell Available at: &amp;lt;http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf&amp;gt; [Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[2] Christian Bandulet, 2007. Object-Based Storage Devices. [online] Oracle Available at: &amp;lt;http://developers.sun.com/solaris/articles/osd.html&amp;gt;&lt;br /&gt;
[Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[3] [http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html IBM 350 Disk Storage Unit]&lt;br /&gt;
&lt;br /&gt;
[4] M. Mesnier, G. R. Ganger, and E. Riedel. Object-Based Storage. IEEE Communications Magazine, 41(8), August 2003.&lt;br /&gt;
&lt;br /&gt;
[5] [http://developers.sun.com/solaris/articles/osd.html Object-Based Storage Devices Christian Bandulet, July 2007]&lt;br /&gt;
&lt;br /&gt;
[6] [http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf Seagate]&lt;br /&gt;
&lt;br /&gt;
[7] [http://articles.techrepublic.com.com/5100-22_11-5841266.html Foundations of Network Storage]&lt;br /&gt;
&lt;br /&gt;
[8] [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Dell Object Storage Overview]&lt;br /&gt;
&lt;br /&gt;
[9] Dell Product Group, 2010. Object Storage A Fresh Approach to Long-Term File Storage. [online] Dell Available at: &amp;lt;http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf&amp;gt; [Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[10] [http://en.wikipedia.org/wiki/Storage_area_network Storage Area Network]&lt;br /&gt;
&lt;br /&gt;
[11] [http://en.wikipedia.org/wiki/Fibre_Channel_zoning Fibre Channel zoning]&lt;br /&gt;
&lt;br /&gt;
[12] [http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf IBM OSD Security Protocol Overview]&lt;br /&gt;
&lt;br /&gt;
[13] Michael Factor, Kalman Meth, Dalit Naor, Ohad Rodeh, Julian Satran, 2005. Object storage: The future building block for storage systems. In 2nd International IEEE Symposium on Mass Storage Systems and Technologies, Sardinia  [online] IBM Available at: &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122.3959&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt; [Accessed 13 October 2010].&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3670</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=3670"/>
		<updated>2010-10-14T06:20:20Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Essay Format and Assigned Tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Wikipedia Sources ==&lt;br /&gt;
I think we may want to replace the references to wikipedia with something more authoritative. [http://www.redbooks.ibm.com/abstracts/sg245470.html?Open this massive pdf] from IBM supports the idea that fiber channels are the dominant infrastructure of SANs, but i&#039;m not sure if it mentions how that is changing.&lt;br /&gt;
&lt;br /&gt;
The wikipedia page for LUN masking has [http://www.sansecurity.com/san-security-faq.shtml this] as its reference for the definitions, there&#039;s also [http://technet.microsoft.com/en-us/library/cc758640(WS.10).aspx this] microsoft article and [http://www.it.hds.com/pdf/wp91_san_lun_secur.pdf this] paper from Hitachi. I&#039;m not sure which of these is most relevant since I just did a quick google search and haven&#039;t really read up on LUN masking or zoning, so someone else would probably be better suited to decide which one if any to use.&lt;br /&gt;
&lt;br /&gt;
How does that sound to everyone?&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:55, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Some Sourcing Issues and Other Stuff ==&lt;br /&gt;
Just a reminder, if we&#039;re taking direct quotes from a source they need to be in quotation marks and attributed with the authors name and the date (I think) in parenthesis at the end, not just a link or footnote reference. There was an issue with this in the first couple sentences of the scalability section. I&#039;ve put it in quotes (though I didn&#039;t see any authors listed so I just put the company), but I think that that information might be better worked into the &amp;quot;Changing Storage Needs&amp;quot; section, what do you guys think?&lt;br /&gt;
&lt;br /&gt;
Also, I think probably sometime today we should divide the rest of the sections up and try to get most of the content in so we have tomorrow for editing and combining the information so that it flows well. Again, any thoughts?&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 19:32, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: Sorry about the citation issue, you&#039;re right. I used the quote to emphasize the fact that scalability issues are evident in disk block systems. But now that I read it, it doesn&#039;t really transition well into the second paragraph. I don&#039;t mind if you move the quote to another section. Other than that, I could just finish up the section about Security. I don&#039;t really know who else is actively contributing to this essay though...or at least don&#039;t see anyone volunteering to take a topic other than Mbingham, Smcilroy and myself...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 15:47, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:No problem, it&#039;s just something to watch out for. I&#039;ll integrate it with the other section. &lt;br /&gt;
:Dagar has been making edits to the essay as well, he&#039;s cleaned up the language in some of the sections and organized the references. Maybe he would like to tackle one of the object specific sections?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 20:02, 12 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I apologize for the delay, this has been an easy thing to neglect during a busy week. What&#039;s the proper way to reference with this wiki? --[[User:Dagar|Dagar]] 21:29, 13 October 2010 (UTC) &lt;br /&gt;
&lt;br /&gt;
:::check out this reference guide, it explain how to reference any material you find online. [http://libweb.anglia.ac.uk/referencing/harvard.htm Harvard System of Reference] --[[User:Smcilroy|Smcilroy]] 22:46, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to finish up the Security section if nobody tags it by the end of today. I have a draft written up. The fact that more people aren&#039;t tagging the document outline and volunteering responsibilities is kind of unnerving...&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 07:57, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to expand the scalability and integrity sections. Then once the security section is done, I think that just leaves the section on the OSD standard and future plans for the tech. Then in the conclusion we can recap.&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 22:54, 13 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a plan. I&#039;ll clean up/expand what I have written and get started with some initial stuff for the object sections. Anyone else is welcome to expand and edit as well.&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 00:44, 14 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Essay Format and Assigned Tasks ==&lt;br /&gt;
So I added an intro and I did it like it was an essay and not a wiki article. Feel free to edit, expand and replace it as you see fit.&lt;br /&gt;
Also I think we should just list the topics we want to talk about and then people can put their name beside it and work on it, that way we don&#039;t have two people working on the same thing. Then we can edit it all so it fits together in the end. What do you think?&lt;br /&gt;
--[[User:Smcilroy|Smcilroy]] 15:16, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds like a good idea. Here&#039;s a relatively quick list of topics to talk about, based on our discussions and the outline below. Add in any sections anyone thinks are missing and put your name beside areas you want:&lt;br /&gt;
&lt;br /&gt;
:*Overview and history of block-based storage -Mbingham  (I added a useful diagram here -Npradhan)&lt;br /&gt;
:*Block based storage standards - SCSI, SATA, ATA/IDE etc -Mbingham&lt;br /&gt;
:*Networked storage architectures: SAN and NAS -Smcilroy&lt;br /&gt;
&lt;br /&gt;
:*How storage needs have changed since the development of block-based storage&lt;br /&gt;
:(maybe focus on the Internet, massive coorporate/government networks, large personal storage, etc)&lt;br /&gt;
&lt;br /&gt;
:*Overview and History of object-based storage &lt;br /&gt;
:*Object-based storage standards (ANSI OSD specification)&lt;br /&gt;
:*Object-based storage applied to networked storage -dagar&lt;br /&gt;
&lt;br /&gt;
:Comparison of object and block based stores focusing on:&lt;br /&gt;
::*Scalability -Myagi&lt;br /&gt;
::*Integrity -Myagi&lt;br /&gt;
::*Security -Myagi&lt;br /&gt;
&lt;br /&gt;
:*Conclusion -Smcilroy&lt;br /&gt;
&lt;br /&gt;
:Also, it would probably add it would be useful for people to be reading over each other&#039;s work and making suggestions, etc. I would also be cool with other people adding stuff to my sections if they have additional info or if there&#039;s something i&#039;ve overlooked. There&#039;s 11 or 12 sections there, and I think there&#039;s six of us, so we can start off taking maybe 2 sections each, and then if we don&#039;t have all the sections covered we can divide them up later. How does that sound?&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 16:45, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Good plan, I took Scalability and Integrity comparisons of object and block stores.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 13:26, 10 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Initial Outline ==&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
* Thesis Statement: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes.&lt;br /&gt;
* What will be discussed&lt;br /&gt;
 - Current state of block based storage&lt;br /&gt;
 - Brief overview of object store&lt;br /&gt;
 - Scalability&lt;br /&gt;
 - Integrity&lt;br /&gt;
 - Security&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block based storage&#039;&#039;&#039;&lt;br /&gt;
* NAS is a single storage device that is shared on a LAN&lt;br /&gt;
 - File level/Single storage device(s) that operates individually&lt;br /&gt;
 - Clients connect to the NAS head (interface between client and NAS) rather than to the individual storage devices&lt;br /&gt;
 - Use small, specialized and proprietary operating systems instead of general purpose OSs&lt;br /&gt;
 - Can enforce security constraints, quotas, indexing&lt;br /&gt;
 - Example of access: \\NAS\Sharename&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - Dedicated, feature-rich file sharing&lt;br /&gt;
 - Network optimized&lt;br /&gt;
 - Centralized storage&lt;br /&gt;
 - Less administration overhead&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Metadata processing has to be handled on the NAS server&lt;br /&gt;
 - Scaling up with more storage behind the NAS head is restricted because metadata processing on the NAS device becomes a bottleneck&lt;br /&gt;
 - Scaling by adding additional NAS devices quickly becomes a management issue because data is isolated on individual NAS islands&lt;br /&gt;
 - High latency protocols that clogs LANs, using TCP/IP &lt;br /&gt;
 - Not suitable for data transfer intensive apps &lt;br /&gt;
&lt;br /&gt;
* SAN filesystem is a local network of multiple devices that operate on disk blocks and provides a file system abstraction&lt;br /&gt;
 - Block level/local network of multiple device&lt;br /&gt;
 - Every client computer has its own file system&lt;br /&gt;
 - A SAN alone does not provide the file abstraction but there is a file system built on top of SANs&lt;br /&gt;
 - Example of access: D:\, E:\, etc.&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - High-performance shared disk&lt;br /&gt;
 - Scalable&lt;br /&gt;
 - Short I/O paths&lt;br /&gt;
 - Lots of parallelism&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Harder to maintain, lots of file systems to manage&lt;br /&gt;
 - Harder to administer, lots of storage access rights to coordinate&lt;br /&gt;
&lt;br /&gt;
* OSDs closes the gap between the scalability of SAN and the file sharing capabilities of NAS&lt;br /&gt;
* Block storage has limitations that have become more apparent as demand for scalability and security has grown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview of OSD&#039;&#039;&#039;&lt;br /&gt;
* An OSD device deals in objects&lt;br /&gt;
 - Handles the mapping from object to physical media locations itself&lt;br /&gt;
 - Tracks metadata as attributes, such as creation timestamps, allowing for easier sharing of data among clients&lt;br /&gt;
 - OSDs are directly connected to clients without the need for an intermediary to handle metadata.&lt;br /&gt;
&lt;br /&gt;
* ANSI ratified version 1.0 of the OSD specification in 2004, defining a protocol for communication with object-based storage devices&lt;br /&gt;
* The OSD specification describes:&lt;br /&gt;
 - a SCSI command set that provides a high-level interface to OSD devices&lt;br /&gt;
 - how file systems and databases stores and retrieves data objects&lt;br /&gt;
 - work has continued in ratifying OSD-2 and OSD-3 specificiations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scalability&#039;&#039;&#039;&lt;br /&gt;
* Metadata is associated and stored directly with data objects and carried between layers and across devices&lt;br /&gt;
* Space allocation delegated to storage device&lt;br /&gt;
* Server has reduced overhead and processing, allowing larger clusters of storage&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity&#039;&#039;&#039;&lt;br /&gt;
* OSD&#039;s have knowledge of its object layout&lt;br /&gt;
* Unlike block stores, OSD&#039;s can recover data specific to a byte range&lt;br /&gt;
 - OSD&#039;s know what space is being unused in this way&lt;br /&gt;
 - Can scan and correct errors without losing data&lt;br /&gt;
* OSD&#039;s maintain internal copies of metadata&lt;br /&gt;
 - User doesn&#039;t have to do a complete file system restore for the sake of one or few unrecoverable files&lt;br /&gt;
 - OSD&#039;s can identify the byte range lost and restore the file efficiently&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039;&lt;br /&gt;
* Suited for network based storage&lt;br /&gt;
* Associate security attributes directly with data object&lt;br /&gt;
* Security requests handled directly by storage device &lt;br /&gt;
* Computer system can access OSD device by providing cryptographically secure credentials(capability) that the OSD device can validate&lt;br /&gt;
 - This can prevent malicious access from unauthorized requests or accidental access from misconfigured machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conclusion&#039;&#039;&#039;&lt;br /&gt;
* Reiteration of thesis statement&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Myagi, I thought i&#039;d move your outline to its own section at the top of the page so it&#039;s more visible. I hope you don&#039;t mind. If you do, feel free to revert this edit.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: It&#039;s all good.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:00, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:This outline looks pretty good to me. I like the three focus points of scalability, integrity and security, those seem to be constant themes in what i&#039;ve read about object stores. &lt;br /&gt;
&lt;br /&gt;
:For the block storage overview, the two current standards for a block based interface seem to be SCSI and SATA. SCSI seems to be used more in enterprise storage and SATA more in personal storage (someone correct me if i&#039;m wrong here). We might also want to take a look at SAN and NAS. I need to do some more reading, haha.&lt;br /&gt;
&lt;br /&gt;
:Also, I think we might as well start putting up some stuff on the article page. Even just a few sentences per section. I can start on that tomorrow or maybe Saturday. Of course any one else is welcome to as well.&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Quick Overview ==&lt;br /&gt;
So I hope i&#039;m not the only one who was wondering &amp;quot;What are object stores?&amp;quot; when reading the question. I don&#039;t think the textbook mentions it but I didn&#039;t read through the filesystems chapter very thoroughly. Here&#039;s where some quick googling has got me:&lt;br /&gt;
&lt;br /&gt;
Most storage devices divide their storage up into blocks,  a fixed length sequence of bytes. The interface that storage devices provide to the rest of the system is pretty simple. It&#039;s essentially &amp;quot;Here, you can read to or write to blocks, have fun&amp;quot;. This is block-based storage.&lt;br /&gt;
&lt;br /&gt;
Object-based storage is different. The interface it presents to the rest of the system is more sophisticated. Instead of directly accessing blocks on the disk, the system accesses objects. Objects are like a level of abstraction on top of blocks. Objects can be variable sized, read/written to, created, and deleted. The device itself handles mapping these objects to blocks and all the issues that come with that, rather than the OS.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some papers that give an overview of object-based storage:&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1612479 Object Storage: The Future Building Block for Storage Systems]&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722 Object-Based Storage]&lt;br /&gt;
&lt;br /&gt;
I think if you just look those up on google scholar you can access the pdf without even being inside carleton&#039;s network.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 23:56, 1 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Some more links ==&lt;br /&gt;
I haven&#039;t been reading many academic papers on the subject so those links will be very useful.&lt;br /&gt;
&lt;br /&gt;
If I may add to this. I read articles on object storage here:&lt;br /&gt;
&lt;br /&gt;
[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Object Storage Overview] &lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
[http://www.snia.org/education/tutorials/2010/spring/file/PaulMassiglia_File_Systems_Object_Storage_Devices.pdf File Systems for OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
I can add that metadata is much richer in an object store context. Searching for files and grouping related files together is much easier with the context information that metadata supplies for objects. I&#039;m beginning to read:&lt;br /&gt;
&lt;br /&gt;
[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf The advantages of OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:39, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to write a version of my essay out over the long weekend with headings and references and put it up on the wiki. I&#039;d like to know who and how many people are working on this essay but dunno if that&#039;s possible. We&#039;ll see what we do from there I guess? I was thinking we just homogenize all of the information we write into one unified essay.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:42, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I think there&#039;s 6 people in our group, though there might only be 5. I&#039;ll be working on this over the long weekend too. I was thinking maybe we should try to get a rough outline up, thursday or friday. Since Prof Somayaji mentioned that this should have the format of an essay, maybe we could start with what our main argument is?&lt;br /&gt;
&lt;br /&gt;
:I was thinking something like objects stores are becoming more attractive because the demands on filesystems has changed, but the interface has not been updated to accomodate these changes. Then we could go into an explanation of block based storage, how it fails to meet the needs placed on modern FSs, then how object stores solves these problems. What do you think?&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 01:55, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:You don&#039;t need to write your own independent essay on the wiki. Let&#039;s just add info as it comes along. I&#039;ll be completely without internet access this weekend, but I&#039;ll try to bring some background reading with me. Expect lots of edits from me starting Monday night/Tuesday morning.&lt;br /&gt;
:--[[User:Dagar|Dagar]] 12:59, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds good! I think that&#039;s a good idea for a thesis statement and we should have a concrete one by Thurs/Fri. Although I&#039;m not absolutely clear about the interface not being updated? I think the object store SCSI standard is constantly being ratified and now they have an OSD-3 draft. [http://www.t10.org/drafts.htm#OSD_Family T10 OSD Working Drafts]. But then again I&#039;m probably misunderstanding something...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:08, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I didn&#039;t mean that the object interface hadn&#039;t been updated, I meant that the block interface hasn&#039;t been updated to reflect the changing requirements put on storage. Since the block interface is still largely the same as it was decades ago (read/write to blocks) it is unable to handle the new requirements. Object stores look attractive because they are designed to deal with issues like scalability, integrity, security, etc. Sorry for the confusion, I hope it makes more sense now, haha.&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 15:44, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:I gotcha, thanks for explaining! I&#039;d say that would be a great thesis statement then: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes. We can work from there. I think we can address the inadequacies of block based storage after stating our thesis and then for the body, we point out how object stores deal with issues of scalability, integrity, security as well as flexibility. And then some kind of nice tie up reiterating our thesis.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 12:50, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I mine as well put my contribution here. I&#039;m willing to move or change it for the sake of organizing this discussion page.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:(moved Myagi&#039;s outline to top of page) --[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Some links that I found while doing the assignment about object storage and its application to SAN systems:&lt;br /&gt;
http://dsc.sun.com/solaris/articles/osd.html&lt;br /&gt;
http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&lt;br /&gt;
&lt;br /&gt;
--[[User:Npradhan|Npradhan]] 23:45, 9 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
-instead of storing filesytems in terms of blocks, you store in terms of objects.&lt;br /&gt;
&lt;br /&gt;
-extents, named extents&lt;br /&gt;
&lt;br /&gt;
-objects fancier because they can move around.&lt;br /&gt;
&lt;br /&gt;
-extra level of abstraction and indirection&lt;br /&gt;
&lt;br /&gt;
-files made of objects, objects made of blocks&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3665</id>
		<title>COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3665"/>
		<updated>2010-10-14T05:53:38Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Overview of Object-Based Storage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
Why are object stores an increasingly attractive building block for filesystems (as opposed to block-based stores)? Explain.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each year we are faced with growing storage needs as the world&#039;s information increases exponentially and business&#039; are increasingly choosing to archive and retain all the data they produce. The storage industry has been able to keep up with demand with matching increases in storage capacity. Unfortunately the interfaces between clients and storage devices has remained unchanged since the 1950&#039;s. The dominate storage mechanism is still block-based storage technology. This has been sufficient for meeting most needs of modern businesses, but as we enter an age where &amp;quot;store everything, forever&amp;quot;&amp;lt;sup&amp;gt;[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt; is the common mantra of storage administrators and unstructured data with little meta-data is the norm, we have to look for technology that can provide better scalability, business intelligence, and management while ensuring security and data access speed of traditional storage solutions.&lt;br /&gt;
&lt;br /&gt;
Object Based Storage Devices (OSD) solve these issues because of how they are designed. Object storage uses objects that consists of data and meta-data that describe the object. They are accessed with defined methods such as read and write and carry a unique ID. They manage all necessary low-level storage, space management, and security functions.&amp;lt;sup&amp;gt;[http://developers.sun.com/solaris/articles/osd.html]&amp;lt;/sup&amp;gt; This storage technology has the potential to address some of the problems with block-based storage.&lt;br /&gt;
&lt;br /&gt;
With increased scalability, better security through per-object level access and ensured integrity of data with unique hash key&#039;s for each object along due to some benefits in management and business intelligence with rich meta-data, OSD can be seen as a viable alternative to improve the standard architectures of   storage area network (SAN) and network-attached storage (NAS).&lt;br /&gt;
&lt;br /&gt;
== Overview of Block-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Hard disks as a storage medium date back to the 1950&#039;s with the introduction of the IBM 350 disk storage unit.&amp;lt;sup&amp;gt;[http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html]&amp;lt;/sup&amp;gt; Hard disks store data in blocks, which are a fixed length series&#039; of bytes. Since early devices like the IBM 350, the interface that the operating system uses to communicate with the hard disk has remained mostly the same.&amp;lt;sup&amp;gt;[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722]&amp;lt;/sup&amp;gt; This interface simply allows the operating system to read or write to blocks on the disk. This means that the goal of abstracting stored data into related groups or into human-understandable constructs such as objects or files is left completely in the space of the operating system&#039;s filesystem. For example, when the filesystem wants to write data to a file it must translate that into what block on the disk to write to. In this way, the scope of a filesystem extends from high level constructs like files to low level constructs like blocks. This wide scope is necessary because of the simple interface presented to the filesystem that must be abstracted up to the complex expectations of a user.&lt;br /&gt;
&lt;br /&gt;
Multiple standards exist to implement this interface. The small computer system interface (SCSI) standards, which have been around in one form or another since the late 1970s, are popular with industry. Parallel ATA, another standard which was designed in the 1980s, continues today in the form of Serial ATA (SATA). However, even though these standards have been around for a long time, &amp;quot;the logical interface, or the command set, has seen only minor additions&amp;quot;&amp;lt;sup&amp;gt;[http://developers.sun.com/solaris/articles/osd.html]&amp;lt;/sup&amp;gt;(Bandulet). This means that the functionality that the command set allows has also remained mostly the same, since the functionality must be built on top of these commands.&lt;br /&gt;
&lt;br /&gt;
== Overview of Object-Based Storage ==&lt;br /&gt;
&#039;&#039;&#039;Anyone feel free to expand on this section&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Unlike block-based storage, whose design reaches back to the 1950s, object-based storage research goes back to the 1990s. See for example the work of Gibson et al in &amp;quot;A Cost-Effective, High-Bandwidth Storage Architecture&amp;quot;, Proceedings of the 8th Conference on Architectural Support for Programming Languages and Operating Systems, 1998. The fundamental idea of an object based storage device is to have the storage device itself handle a layer of abstraction on top of the block. Instead of the interface presenting the filesystem with blocks to read and write to, the interface presents the filesystem with &amp;quot;objects&amp;quot;  which it can read to, write to, create, or destroy. Objects can be variable sized, and the device itself handles mapping onto physical blocks of memory. These objects also have meta-data and access controls immediately associated with them. This allows the filesystem to work at a higher level of abstraction. This is important because the needs placed on filesystems has changed, and we will see as we compare object based storage with block based storage that the design of objects are more suited to the needs of todays filesystems than blocks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Osd_figure3.jpg|thumb|center|650x405px|alt=White diagonal cross over blue background|Diagram illustrating the components of an object store.&amp;lt;sup&amp;gt;http://dsc.sun.com/solaris/articles/osd.html&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
== Changing Storage Needs ==&lt;br /&gt;
&#039;&#039;&#039;Note: Just getting the ball rolling on this section. Anyone else is welcome to pick it up and expand&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Storage needs have changed a lot since the 1950s, when the first hard disks were developed, and the 1970s, when the interface became standardized. This means that the functionality of storage devices must also change to reflect these needs. Firstly, the scale of data being stored, both personally and by organizations, has gone up by orders of magnitude. Today personal hard drives routinely store terabytes of data, massive networks store even more. In fact, &amp;quot;a survey of over one thousand ASNP members indicates that 20% of them manage over 100 terabytes of data&amp;quot; (Seagate Research, 2005).&amp;lt;sup&amp;gt;[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf]&amp;lt;/sup&amp;gt;  Data has also become more sensitive. Personal information, such as credit card numbers and financial information, is stored in large databases. Sensitive corporate and governmental information is stored similarly. Since the value of data has gone up, it becomes more important to ensure the data&#039;s integrity and security. Block based storage, as we will see, has difficulty dealing with these priorities because of limitations inherent in it&#039;s design. Object based storage is more suited to address these issues because of how it has been designed.&lt;br /&gt;
&lt;br /&gt;
== Comparison of object and block based stores ==&lt;br /&gt;
=== Scalability ===&lt;br /&gt;
Today&#039;s storage systems consist of two main technologies, SAN and NAS storage. They both have their benefits and drawbacks. The key issues being managing metadata and ensuring data access speed as the systems grow. &lt;br /&gt;
&lt;br /&gt;
Most block based storage systems contain many layers of metadata. There are also various types of virtualized systems that contain metadata to deal with device diversity or remapping of blocks for archiving or duplication. Building systems to scale with the metadata becomes a major issue. But at the same time the current speeds of block-based storage needs to be maintained.&lt;br /&gt;
&lt;br /&gt;
NAS is a file system that coordinates the interface between file blocks and the clients access to files. This is done through a single NAS head which usually has thousands of gigabytes of storage behind it.&amp;lt;sup&amp;gt;[http://articles.techrepublic.com.com/5100-22_11-5841266.html]&amp;lt;/sup&amp;gt; All data traffic must flow through this single access point. The benefits of the NAS file system is through its ability to set block access, manage security, prevent unauthorized access to files and use metadata to map blocks into files for the client. However, this causes a bottleneck issue with all the data passing through one point. Another issue is managing the metadata. Metadata is shared among separate metadata servers remote from the hosts. Space allocation management on different storage system layers and applications that add policy and management metadata individually is spread throughout the system. So this results in the metadata becoming very hard to manage.&lt;br /&gt;
&lt;br /&gt;
SAN&#039;s on the other hand, allow data access through fiber cables directly accessing the storage. The storage management and file system is connected separately to both the client and the storage, separating the data channel with the management channel and acts as the mediator with the client and the storage blocks. This eliminates the bottleneck. Although SAN filesystems have the benefits of shared access for scalability, coordination of this shared access leads to scalability problems. File systems must coordinate allocation of blocks. For clients to share read-write access, they must coordinate usage of data blocks through metadata. Security also must be addressed as it opens up a host of security issues as the clients must be trusted to access the data.&lt;br /&gt;
&lt;br /&gt;
Object storage provides the ability to operate a SAN setup with direct access to data while offering better security and scalability with metadata. Each object comes with a set of access rules given to it by the management server and metadata is associated and stored directly with each data object and is automatically carried between layers and across devices. Space allocation and management metadata are the responsibility of the storage device.&amp;lt;sup&amp;gt; [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt; This allows metadata layers to be folded, reducing server overhead and processing, and allows for larger clusters of storage compared with traditional block-based interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Integrity ===&lt;br /&gt;
Block based file systems in archive solutions usually have no built in mechanisms for assuring data integrity. A common best practice is to conduct frequent backups, which adds to the complexity of using file systems for archiving and scalability. The mechanisms for ensuring data integrity in OSDs have mechanisms that operate differently from block store systems.&lt;br /&gt;
&lt;br /&gt;
One of the major problems with storage at the block level is that if there is an error in a block, it is almost impossible to determine what part of the file system is affected. It may be the case that the error in a particular block may not even contain any data. This usually happens during a backup procedure or when a controller is organizing data. &lt;br /&gt;
&lt;br /&gt;
OSDs provide a level of abstraction that hides the fact that a disk device has blocks. It no longer matters to the file system manager what kind of disk drive is being used, it only worries about managing objects. This is done through managing metadata as well as maintaining internal copies of its metadata. Hence, OSDs have knowledge of its object layout even though one or more groups of objects are on different OSDs. In this way OSDs know what kind of space is being used or unused and can scan and correct errors without losing data. In the event of a failure in recovering a file or a number of files, traditional systems may have to do a complete file system restore. However, an OSDs awareness of its object layout enables it to recover data specific to a byte range and thus restore files in an efficient manner.&lt;br /&gt;
&lt;br /&gt;
OSDs have another powerful feature. Each object file has an associated hash key that is generated uniquely to the contents of the file. Thus the file can be verified for accuracy to ensure the contents remain the same and integrity to ensure the data has not been corrupted. Also it can be used for management of data to flag duplicate data.&amp;lt;sup&amp;gt; [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
&lt;br /&gt;
Security threats can be thought of as having four quadrants. External, internal, accidental and malicious. Block based stores have a variety of ways for handling security but there are basic concepts that SAN and NAS technologies use to secure data.&lt;br /&gt;
&lt;br /&gt;
SAN has traditionally run on fibre channels, although this is a trend that is changing. &amp;lt;sup&amp;gt; [http://en.wikipedia.org/wiki/Storage_area_network] &amp;lt;/sup&amp;gt;&lt;br /&gt;
For the sake of security, running a SAN on fibre channels help isolate its network as they do not communicate over TCP/IP connections. However, since the SAN devices themselves do not restrict access, it&#039;s up to the network infrastructure and host system to handle its security. &lt;br /&gt;
&lt;br /&gt;
Zoning and LUN masking are typical ways SAN systems could use as security measures. Zoning allocates a certain amount of storage to clients. These zones are isolated and are not allowed to communicate outside their respective zone. LUN masking is similar to zoning, however, they differ in the type of devices being used. Switches utilize zoning while disk array controllers use LUN masking. A disk array controller is a device which manages the physical disk drives and interprets them as logical unit numbers. Thus, the term LUN masking. &amp;lt;sup&amp;gt; [http://en.wikipedia.org/wiki/Fibre_Channel_zoning] &amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NAS has its own vulnerabilities but as with SAN, it is only as secure as the network they operate on. NAS security is conceptually simpler than SAN. NAS environments can administer security tasks as well as control disk usage quotas. The proprietary operating system it runs on has access control configurations much like other traditional OSs that can prevent unauthorized access to data. &lt;br /&gt;
&lt;br /&gt;
Unlike NAS and SAN systems, OSD devices handle security requests directly. The set of protocols used by OSD enable it to cover the four quadrants of security threats outlined above. Clients can access an OSD device by providing &amp;quot;cryptographically secure credentials&amp;quot;, called capabilities, which specify a tuple (OSD name, partition ID, object ID) to identify the object. &amp;lt;sup&amp;gt; [http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf] &amp;lt;/sup&amp;gt; This can prevent accidental or even malicious access to an OSD externally or internally.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Although object storage is relatively new compared to block storage, work as progressed steadily in universities and on standards such as the ANSI T10 SCSI OSD standard. But there remains challenges to its adoption in the industry. One of which, is that it is only needed in high end business solutions at the moment, preventing it from reaching smaller businesses.&amp;lt;sup&amp;gt;[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122.3959&amp;amp;rep=rep1&amp;amp;type=pdf]&amp;lt;/sup&amp;gt; But as newer features are added and the standards mature we will see an increased adoption.&lt;br /&gt;
&lt;br /&gt;
It is obvious however that changes do need to occur as storage grows and finer levels of management are needed for data storage. Object-based storage has evolved to fit these needs where block-based storage has stagnated. The better tools for managing the data using the rich metadata of objects, the security and data transfer speeds of NAS and SAN combined and integrity controls for backups and redundancies will be an attracted choice for storage administrators in the future.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] Dell Product Group, 2010. Object Storage A Fresh Approach to Long-Term File Storage. [online] Dell Available at: &amp;lt;http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf&amp;gt; [Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[2] Christian Bandulet, 2007. Object-Based Storage Devices. [online] Oracle Available at: &amp;lt;http://developers.sun.com/solaris/articles/osd.html&amp;gt;&lt;br /&gt;
[Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[3] [http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html IBM 350 Disk Storage Unit]&lt;br /&gt;
&lt;br /&gt;
[4] M. Mesnier, G. R. Ganger, and E. Riedel. Object-Based Storage. IEEE Communications Magazine, 41(8), August 2003.&lt;br /&gt;
&lt;br /&gt;
[5] [http://developers.sun.com/solaris/articles/osd.html Object-Based Storage Devices Christian Bandulet, July 2007]&lt;br /&gt;
&lt;br /&gt;
[6] [http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf Seagate]&lt;br /&gt;
&lt;br /&gt;
[7] [http://articles.techrepublic.com.com/5100-22_11-5841266.html Foundations of Network Storage]&lt;br /&gt;
&lt;br /&gt;
[8] [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Dell Object Storage Overview]&lt;br /&gt;
&lt;br /&gt;
[9] Dell Product Group, 2010. Object Storage A Fresh Approach to Long-Term File Storage. [online] Dell Available at: &amp;lt;http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf&amp;gt; [Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[10] [http://en.wikipedia.org/wiki/Storage_area_network Storage Area Network]&lt;br /&gt;
&lt;br /&gt;
[11] [http://en.wikipedia.org/wiki/Fibre_Channel_zoning Fibre Channel zoning]&lt;br /&gt;
&lt;br /&gt;
[12] [http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf IBM OSD Security Protocol Overview]&lt;br /&gt;
&lt;br /&gt;
[13] Michael Factor, Kalman Meth, Dalit Naor, Ohad Rodeh, Julian Satran, 2005. Object storage: The future building block for storage systems. In 2nd International IEEE Symposium on Mass Storage Systems and Technologies, Sardinia  [online] IBM Available at: &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122.3959&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt; [Accessed 13 October 2010].&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Osd_figure3.jpg&amp;diff=3654</id>
		<title>File:Osd figure3.jpg</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=File:Osd_figure3.jpg&amp;diff=3654"/>
		<updated>2010-10-14T05:28:38Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: Diagram of the components of an object store.

Taken from:
http://dsc.sun.com/solaris/articles/osd.html&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Diagram of the components of an object store.&lt;br /&gt;
&lt;br /&gt;
Taken from:&lt;br /&gt;
http://dsc.sun.com/solaris/articles/osd.html&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3622</id>
		<title>COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3622"/>
		<updated>2010-10-14T04:37:16Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Introduction */ better phrasing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
Why are object stores an increasingly attractive building block for filesystems (as opposed to block-based stores)? Explain.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each year we are faced with growing storage needs as the world&#039;s information increases exponentially and business&#039; are increasingly choosing to archive and retain all the data they produce. The storage industry has been able to keep up with demand with matching increases in storage capacity. Unfortunately the interfaces between clients and storage devices has remained unchanged since the 1950&#039;s. The dominate storage mechanism is still block-based storage technology. This has been sufficient for meeting most needs of modern businesses, but as we enter an age where &amp;quot;store everything, forever&amp;quot;&amp;lt;sup&amp;gt;[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt; is the common mantra of storage administrators and unstructured data with little meta-data is the norm, we have to look for technology that can provide better scalability, business intelligence, and management while ensuring security and data access speed of traditional storage solutions.&lt;br /&gt;
&lt;br /&gt;
Object Based Storage Devices (OSD) solve these issues because of how they are designed. Object storage uses objects that consists of data and meta-data that describe the object. They are accessed with defined methods such as read and write and carry a unique ID. They manage all necessary low-level storage, space management, and security functions.&amp;lt;sup&amp;gt;[http://developers.sun.com/solaris/articles/osd.html]&amp;lt;/sup&amp;gt; This storage technology has the potential to address some of the problems with block-based storage.&lt;br /&gt;
&lt;br /&gt;
With increased scalability, better security through per-object level access and ensured integrity of data with unique hash key&#039;s for each object along due to some benefits in management and business intelligence with rich meta-data, OSD can be seen as a viable alternative to improve the standard architectures of   storage area network (SAN) and network-attached storage (NAS).&lt;br /&gt;
&lt;br /&gt;
== Overview of Block-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Hard disks as a storage medium date back to the 1950&#039;s with the introduction of the IBM 350 disk storage unit.&amp;lt;sup&amp;gt;[http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html]&amp;lt;/sup&amp;gt; Hard disks store data in blocks, which are a fixed length series&#039; of bytes. Since early devices like the IBM 350, the interface that the operating system uses to communicate with the hard disk has remained mostly the same.&amp;lt;sup&amp;gt;[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722]&amp;lt;/sup&amp;gt; This interface simply allows the operating system to read or write to blocks on the disk. This means that the goal of abstracting stored data into related groups or into human-understandable constructs such as objects or files is left completely in the space of the operating system&#039;s filesystem. For example, when the filesystem wants to write data to a file it must translate that into what block on the disk to write to. In this way, the scope of a filesystem extends from high level constructs like files to low level constructs like blocks. This wide scope is necessary because of the simple interface presented to the filesystem that must be abstracted up to the complex expectations of a user.&lt;br /&gt;
&lt;br /&gt;
Multiple standards exist to implement this interface. The small computer system interface (SCSI) standards, which have been around in one form or another since the late 1970s, are popular with industry. Parallel ATA, another standard which was designed in the 1980s, continues today in the form of Serial ATA (SATA). However, even though these standards have been around for a long time, &amp;quot;the logical interface, or the command set, has seen only minor additions&amp;quot;&amp;lt;sup&amp;gt;[http://developers.sun.com/solaris/articles/osd.html]&amp;lt;/sup&amp;gt;(Bandulet). This means that the functionality that the command set allows has also remained mostly the same, since the functionality must be built on top of these commands.&lt;br /&gt;
&lt;br /&gt;
== Overview of Object-Based Storage ==&lt;br /&gt;
&#039;&#039;&#039;Anyone feel free to expand on this section&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Unlike block-based storage, whose design reaches back to the 1950s, object-based storage research goes back to the 1990s. See for example the work of Gibson et al in &amp;quot;A Cost-Effective, High-Bandwidth Storage Architecture&amp;quot;, Proceedings of the 8th Conference on Architectural Support for Programming Languages and Operating Systems, 1998. The fundamental idea of an object based storage device is to have the storage device itself handle a layer of abstraction on top of the block. Instead of the interface presenting the filesystem with blocks to read and write to, the interface presents the filesystem with &amp;quot;objects&amp;quot;  which it can read to, write to, create, or destroy. Objects can be variable sized, and the device itself handles mapping onto physical blocks of memory. These objects also have meta-data and access controls immediately associated with them. This allows the filesystem to work at a higher level of abstraction. This is important because the needs placed on filesystems has changed, and we will see as we compare object based storage with block based storage that the design of objects are more suited to the needs of todays filesystems than blocks.&lt;br /&gt;
&lt;br /&gt;
== Changing Storage Needs ==&lt;br /&gt;
&#039;&#039;&#039;Note: Just getting the ball rolling on this section. Anyone else is welcome to pick it up and expand&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Storage needs have changed a lot since the 1950s, when the first hard disks were developed, and the 1970s, when the interface became standardized. This means that the functionality of storage devices must also change to reflect these needs. Firstly, the scale of data being stored, both personally and by organizations, has gone up by orders of magnitude. Today personal hard drives routinely store terabytes of data, massive networks store even more. In fact, &amp;quot;a survey of over one thousand ASNP members indicates that 20% of them manage over 100 terabytes of data&amp;quot; (Seagate Research, 2005).&amp;lt;sup&amp;gt;[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf]&amp;lt;/sup&amp;gt;  Data has also become more sensitive. Personal information, such as credit card numbers and financial information, is stored in large databases. Sensitive corporate and governmental information is stored similarly. Since the value of data has gone up, it becomes more important to ensure the data&#039;s integrity and security. Block based storage, as we will see, has difficulty dealing with these priorities because of limitations inherent in it&#039;s design. Object based storage is more suited to address these issues because of how it has been designed.&lt;br /&gt;
&lt;br /&gt;
== Comparison of object and block based stores ==&lt;br /&gt;
=== Scalability ===&lt;br /&gt;
Today&#039;s storage systems consist of two main technologies, SAN and NAS storage. They both have their benefits and drawbacks. The key issues being managing metadata and ensuring data access speed as the systems grow. &lt;br /&gt;
&lt;br /&gt;
Most block based storage systems contain many layers of metadata. There are also various types of virtualized systems that contain metadata to deal with device diversity or remapping of blocks for archiving or duplication. Building systems to scale with the metadata becomes a major issue. But at the same time the current speeds of block-based storage needs to be maintained.&lt;br /&gt;
&lt;br /&gt;
NAS is a file system that coordinates the interface between file blocks and the clients access to files. This is done through a single NAS head which usually has thousands of gigabytes of storage behind it.&amp;lt;sup&amp;gt;[http://articles.techrepublic.com.com/5100-22_11-5841266.html]&amp;lt;/sup&amp;gt; All data traffic must flow through this single access point. The benefits of the NAS file system is through its ability to set block access, manage security, prevent unauthorized access to files and use metadata to map blocks into files for the client. However, this causes a bottleneck issue with all the data passing through one point. Another issue is managing the metadata. Metadata is shared among separate metadata servers remote from the hosts. Space allocation management on different storage system layers and applications that add policy and management metadata individually is spread throughout the system. So this results in the metadata becoming very hard to manage.&lt;br /&gt;
&lt;br /&gt;
SAN&#039;s on the other hand, allow data access through fiber cables directly accessing the storage. The storage management and file system is connected separately to both the client and the storage, separating the data channel with the management channel and acts as the mediator with the client and the storage blocks. This eliminates the bottleneck. Although SAN filesystems have the benefits of shared access for scalability, coordination of this shared access leads to scalability problems. File systems must coordinate allocation of blocks. For clients to share read-write access, they must coordinate usage of data blocks through metadata. Security also must be addressed as it opens up a host of security issues as the clients must be trusted to access the data.&lt;br /&gt;
&lt;br /&gt;
Object storage provides the ability to operate a SAN setup with direct access to data while offering better security and scalability with metadata. Each object comes with a set of access rules given to it by the management server and metadata is associated and stored directly with each data object and is automatically carried between layers and across devices. Space allocation and management metadata are the responsibility of the storage device.&amp;lt;sup&amp;gt; [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt; This allows metadata layers to be folded, reducing server overhead and processing, and allows for larger clusters of storage compared with traditional block-based interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Integrity ===&lt;br /&gt;
Block based file systems in archive solutions usually have no built in mechanisms for assuring data integrity. A common best practice is to conduct frequent backups, which adds to the complexity of using file systems for archiving and scalability. The mechanisms for ensuring data integrity in OSDs have mechanisms that operate differently from block store systems.&lt;br /&gt;
&lt;br /&gt;
One of the major problems with storage at the block level is that if there is an error in a block, it is almost impossible to determine what part of the file system is affected. It may be the case that the error in a particular block may not even contain any data. This usually happens during a backup procedure or when a controller is organizing data. &lt;br /&gt;
&lt;br /&gt;
OSDs provide a level of abstraction that hides the fact that a disk device has blocks. It no longer matters to the file system manager what kind of disk drive is being used, it only worries about managing objects. This is done through managing metadata as well as maintaining internal copies of its metadata. Hence, OSDs have knowledge of its object layout even though one or more groups of objects are on different OSDs. In this way OSDs know what kind of space is being used or unused and can scan and correct errors without losing data. In the event of a failure in recovering a file or a number of files, traditional systems may have to do a complete file system restore. However, an OSDs awareness of its object layout enables it to recover data specific to a byte range and thus restore files in an efficient manner.&lt;br /&gt;
&lt;br /&gt;
OSDs have another powerful feature. Each object file has an associated hash key that is generated uniquely to the contents of the file. Thus the file can be verified for accuracy to ensure the contents remain the same and integrity to ensure the data has not been corrupted. Also it can be used for management of data to flag duplicate data.&amp;lt;sup&amp;gt; [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
&lt;br /&gt;
Security threats can be thought of as having four quadrants. External, internal, accidental and malicious. Block based stores have a variety of ways for handling security but there are basic concepts that SAN and NAS technologies use to secure data.&lt;br /&gt;
&lt;br /&gt;
SAN has traditionally run on fibre channels, although this is a trend that is changing. &amp;lt;sup&amp;gt; [http://en.wikipedia.org/wiki/Storage_area_network] &amp;lt;/sup&amp;gt;&lt;br /&gt;
For the sake of security, running a SAN on fibre channels help isolate its network as they do not communicate over TCP/IP connections. However, since the SAN devices themselves do not restrict access, it&#039;s up to the network infrastructure and host system to handle its security. &lt;br /&gt;
&lt;br /&gt;
Zoning and LUN masking are typical ways SAN systems could use as security measures. Zoning allocates a certain amount of storage to clients. These zones are isolated and are not allowed to communicate outside their respective zone. LUN masking is similar to zoning, however, they differ in the type of devices being used. Switches utilize zoning while disk array controllers use LUN masking. A disk array controller is a device which manages the physical disk drives and interprets them as logical unit numbers. Thus, the term LUN masking. &amp;lt;sup&amp;gt; [http://en.wikipedia.org/wiki/Fibre_Channel_zoning] &amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NAS has its own vulnerabilities but as with SAN, it is only as secure as the network they operate on. NAS security is conceptually simpler than SAN. NAS environments can administer security tasks as well as control disk usage quotas. The proprietary operating system it runs on has access control configurations much like other traditional OSs that can prevent unauthorized access to data. &lt;br /&gt;
&lt;br /&gt;
Unlike NAS and SAN systems, OSD devices handle security requests directly. The set of protocols used by OSD enable it to cover the four quadrants of security threats outlined above. Clients can access an OSD device by providing &amp;quot;cryptographically secure credentials&amp;quot;, called capabilities, which specify a tuple (OSD name, partition ID, object ID) to identify the object. &amp;lt;sup&amp;gt; [http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf] &amp;lt;/sup&amp;gt; This can prevent accidental or even malicious access to an OSD externally or internally.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Although object storage is relatively new compared to block storage, work as progressed steadily in universities and on standards such as the ANSI T10 SCSI OSD standard. But there remains challenges to its adoption in the industry. One of which, is that it is only needed in high end business solutions at the moment, preventing it from reaching smaller businesses.&amp;lt;sup&amp;gt;[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122.3959&amp;amp;rep=rep1&amp;amp;type=pdf]&amp;lt;/sup&amp;gt; But as newer features are added and the standards mature we will see an increased adoption.&lt;br /&gt;
&lt;br /&gt;
It is obvious however that changes do need to occur as storage grows and finer levels of management are needed for data storage. Object-based storage has evolved to fit these needs where block-based storage has stagnated. The better tools for managing the data using the rich metadata of objects, the security and data transfer speeds of NAS and SAN combined and integrity controls for backups and redundancies will be an attracted choice for storage administrators in the future.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] Dell Product Group, 2010. Object Storage A Fresh Approach to Long-Term File Storage. [online] Dell Available at: &amp;lt;http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf&amp;gt; [Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[2] Christian Bandulet, 2007. Object-Based Storage Devices. [online] Oracle Available at: &amp;lt;http://developers.sun.com/solaris/articles/osd.html&amp;gt;&lt;br /&gt;
[Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[3] [http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html IBM 350 Disk Storage Unit]&lt;br /&gt;
&lt;br /&gt;
[4] M. Mesnier, G. R. Ganger, and E. Riedel. Object-Based Storage. IEEE Communications Magazine, 41(8), August 2003.&lt;br /&gt;
&lt;br /&gt;
[5] [http://developers.sun.com/solaris/articles/osd.html Object-Based Storage Devices Christian Bandulet, July 2007]&lt;br /&gt;
&lt;br /&gt;
[6] [http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf Seagate]&lt;br /&gt;
&lt;br /&gt;
[7] [http://articles.techrepublic.com.com/5100-22_11-5841266.html Foundations of Network Storage]&lt;br /&gt;
&lt;br /&gt;
[8] [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Dell Object Storage Overview]&lt;br /&gt;
&lt;br /&gt;
[9] Dell Product Group, 2010. Object Storage A Fresh Approach to Long-Term File Storage. [online] Dell Available at: &amp;lt;http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf&amp;gt; [Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[10] [http://en.wikipedia.org/wiki/Storage_area_network Storage Area Network]&lt;br /&gt;
&lt;br /&gt;
[11] [http://en.wikipedia.org/wiki/Fibre_Channel_zoning Fibre Channel zoning]&lt;br /&gt;
&lt;br /&gt;
[12] [http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf IBM OSD Security Protocol Overview]&lt;br /&gt;
&lt;br /&gt;
[13] Michael Factor, Kalman Meth, Dalit Naor, Ohad Rodeh, Julian Satran, 2005. Object storage: The future building block for storage systems. In 2nd International IEEE Symposium on Mass Storage Systems and Technologies, Sardinia  [online] IBM Available at: &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122.3959&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt; [Accessed 13 October 2010].&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3619</id>
		<title>COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=COMP_3000_Essay_1_2010_Question_11&amp;diff=3619"/>
		<updated>2010-10-14T04:35:10Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Introduction */ Typo, should be &amp;quot;ensured&amp;quot; not &amp;quot;insured&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Question=&lt;br /&gt;
&lt;br /&gt;
Why are object stores an increasingly attractive building block for filesystems (as opposed to block-based stores)? Explain.&lt;br /&gt;
&lt;br /&gt;
=Answer=&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Each year we are faced with growing storage needs as the world&#039;s information increases exponentially and business&#039; are increasingly choosing to archive and retain all the data they produce. The storage industry has been able to keep up with demand with matching increases in storage capacity. Unfortunately the interfaces between clients and storage devices has remained unchanged since the 1950&#039;s. The dominate storage mechanism is still block-based storage technology. This has been sufficient for meeting most needs of modern businesses, but as we enter an age where &amp;quot;store everything, forever&amp;quot;&amp;lt;sup&amp;gt;[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt; is the common mantra of storage administrators and unstructured data with little meta-data is the norm, we have to look for technology that can provide better scalability, business intelligence, and management while ensuring security and data access speed of traditional storage solutions.&lt;br /&gt;
&lt;br /&gt;
Object Based Storage Devices (OSD) solve these issues because of how they are designed. Object storage uses objects that consists of data and meta-data that describe the object. They are accessed with defined methods such as read and write and carry a unique ID. They manage all necessary low-level storage, space management, and security functions.&amp;lt;sup&amp;gt;[http://developers.sun.com/solaris/articles/osd.html]&amp;lt;/sup&amp;gt; This storage technology has the potential to address some of the problems with block-based storage.&lt;br /&gt;
&lt;br /&gt;
With increased scalability, better security through per-object level access and ensured integrity of data with unique hash key&#039;s for each object along with some benefits in management and business intelligence with rich meta-data, OSD can be seen as a viable alternative to improve the standard architectures of   storage area network (SAN) and network-attached storage (NAS).&lt;br /&gt;
&lt;br /&gt;
== Overview of Block-Based Storage ==&lt;br /&gt;
&lt;br /&gt;
Hard disks as a storage medium date back to the 1950&#039;s with the introduction of the IBM 350 disk storage unit.&amp;lt;sup&amp;gt;[http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html]&amp;lt;/sup&amp;gt; Hard disks store data in blocks, which are a fixed length series&#039; of bytes. Since early devices like the IBM 350, the interface that the operating system uses to communicate with the hard disk has remained mostly the same.&amp;lt;sup&amp;gt;[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722]&amp;lt;/sup&amp;gt; This interface simply allows the operating system to read or write to blocks on the disk. This means that the goal of abstracting stored data into related groups or into human-understandable constructs such as objects or files is left completely in the space of the operating system&#039;s filesystem. For example, when the filesystem wants to write data to a file it must translate that into what block on the disk to write to. In this way, the scope of a filesystem extends from high level constructs like files to low level constructs like blocks. This wide scope is necessary because of the simple interface presented to the filesystem that must be abstracted up to the complex expectations of a user.&lt;br /&gt;
&lt;br /&gt;
Multiple standards exist to implement this interface. The small computer system interface (SCSI) standards, which have been around in one form or another since the late 1970s, are popular with industry. Parallel ATA, another standard which was designed in the 1980s, continues today in the form of Serial ATA (SATA). However, even though these standards have been around for a long time, &amp;quot;the logical interface, or the command set, has seen only minor additions&amp;quot;&amp;lt;sup&amp;gt;[http://developers.sun.com/solaris/articles/osd.html]&amp;lt;/sup&amp;gt;(Bandulet). This means that the functionality that the command set allows has also remained mostly the same, since the functionality must be built on top of these commands.&lt;br /&gt;
&lt;br /&gt;
== Overview of Object-Based Storage ==&lt;br /&gt;
&#039;&#039;&#039;Anyone feel free to expand on this section&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Unlike block-based storage, whose design reaches back to the 1950s, object-based storage research goes back to the 1990s. See for example the work of Gibson et al in &amp;quot;A Cost-Effective, High-Bandwidth Storage Architecture&amp;quot;, Proceedings of the 8th Conference on Architectural Support for Programming Languages and Operating Systems, 1998. The fundamental idea of an object based storage device is to have the storage device itself handle a layer of abstraction on top of the block. Instead of the interface presenting the filesystem with blocks to read and write to, the interface presents the filesystem with &amp;quot;objects&amp;quot;  which it can read to, write to, create, or destroy. Objects can be variable sized, and the device itself handles mapping onto physical blocks of memory. These objects also have meta-data and access controls immediately associated with them. This allows the filesystem to work at a higher level of abstraction. This is important because the needs placed on filesystems has changed, and we will see as we compare object based storage with block based storage that the design of objects are more suited to the needs of todays filesystems than blocks.&lt;br /&gt;
&lt;br /&gt;
== Changing Storage Needs ==&lt;br /&gt;
&#039;&#039;&#039;Note: Just getting the ball rolling on this section. Anyone else is welcome to pick it up and expand&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Storage needs have changed a lot since the 1950s, when the first hard disks were developed, and the 1970s, when the interface became standardized. This means that the functionality of storage devices must also change to reflect these needs. Firstly, the scale of data being stored, both personally and by organizations, has gone up by orders of magnitude. Today personal hard drives routinely store terabytes of data, massive networks store even more. In fact, &amp;quot;a survey of over one thousand ASNP members indicates that 20% of them manage over 100 terabytes of data&amp;quot; (Seagate Research, 2005).&amp;lt;sup&amp;gt;[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf]&amp;lt;/sup&amp;gt;  Data has also become more sensitive. Personal information, such as credit card numbers and financial information, is stored in large databases. Sensitive corporate and governmental information is stored similarly. Since the value of data has gone up, it becomes more important to ensure the data&#039;s integrity and security. Block based storage, as we will see, has difficulty dealing with these priorities because of limitations inherent in it&#039;s design. Object based storage is more suited to address these issues because of how it has been designed.&lt;br /&gt;
&lt;br /&gt;
== Comparison of object and block based stores ==&lt;br /&gt;
=== Scalability ===&lt;br /&gt;
Today&#039;s storage systems consist of two main technologies, SAN and NAS storage. They both have their benefits and drawbacks. The key issues being managing metadata and ensuring data access speed as the systems grow. &lt;br /&gt;
&lt;br /&gt;
Most block based storage systems contain many layers of metadata. There are also various types of virtualized systems that contain metadata to deal with device diversity or remapping of blocks for archiving or duplication. Building systems to scale with the metadata becomes a major issue. But at the same time the current speeds of block-based storage needs to be maintained.&lt;br /&gt;
&lt;br /&gt;
NAS is a file system that coordinates the interface between file blocks and the clients access to files. This is done through a single NAS head which usually has thousands of gigabytes of storage behind it.&amp;lt;sup&amp;gt;[http://articles.techrepublic.com.com/5100-22_11-5841266.html]&amp;lt;/sup&amp;gt; All data traffic must flow through this single access point. The benefits of the NAS file system is through its ability to set block access, manage security, prevent unauthorized access to files and use metadata to map blocks into files for the client. However, this causes a bottleneck issue with all the data passing through one point. Another issue is managing the metadata. Metadata is shared among separate metadata servers remote from the hosts. Space allocation management on different storage system layers and applications that add policy and management metadata individually is spread throughout the system. So this results in the metadata becoming very hard to manage.&lt;br /&gt;
&lt;br /&gt;
SAN&#039;s on the other hand, allow data access through fiber cables directly accessing the storage. The storage management and file system is connected separately to both the client and the storage, separating the data channel with the management channel and acts as the mediator with the client and the storage blocks. This eliminates the bottleneck. Although SAN filesystems have the benefits of shared access for scalability, coordination of this shared access leads to scalability problems. File systems must coordinate allocation of blocks. For clients to share read-write access, they must coordinate usage of data blocks through metadata. Security also must be addressed as it opens up a host of security issues as the clients must be trusted to access the data.&lt;br /&gt;
&lt;br /&gt;
Object storage provides the ability to operate a SAN setup with direct access to data while offering better security and scalability with metadata. Each object comes with a set of access rules given to it by the management server and metadata is associated and stored directly with each data object and is automatically carried between layers and across devices. Space allocation and management metadata are the responsibility of the storage device.&amp;lt;sup&amp;gt; [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt; This allows metadata layers to be folded, reducing server overhead and processing, and allows for larger clusters of storage compared with traditional block-based interfaces.&lt;br /&gt;
&lt;br /&gt;
=== Integrity ===&lt;br /&gt;
Block based file systems in archive solutions usually have no built in mechanisms for assuring data integrity. A common best practice is to conduct frequent backups, which adds to the complexity of using file systems for archiving and scalability. The mechanisms for ensuring data integrity in OSDs have mechanisms that operate differently from block store systems.&lt;br /&gt;
&lt;br /&gt;
One of the major problems with storage at the block level is that if there is an error in a block, it is almost impossible to determine what part of the file system is affected. It may be the case that the error in a particular block may not even contain any data. This usually happens during a backup procedure or when a controller is organizing data. &lt;br /&gt;
&lt;br /&gt;
OSDs provide a level of abstraction that hides the fact that a disk device has blocks. It no longer matters to the file system manager what kind of disk drive is being used, it only worries about managing objects. This is done through managing metadata as well as maintaining internal copies of its metadata. Hence, OSDs have knowledge of its object layout even though one or more groups of objects are on different OSDs. In this way OSDs know what kind of space is being used or unused and can scan and correct errors without losing data. In the event of a failure in recovering a file or a number of files, traditional systems may have to do a complete file system restore. However, an OSDs awareness of its object layout enables it to recover data specific to a byte range and thus restore files in an efficient manner.&lt;br /&gt;
&lt;br /&gt;
OSDs have another powerful feature. Each object file has an associated hash key that is generated uniquely to the contents of the file. Thus the file can be verified for accuracy to ensure the contents remain the same and integrity to ensure the data has not been corrupted. Also it can be used for management of data to flag duplicate data.&amp;lt;sup&amp;gt; [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Security ===&lt;br /&gt;
&lt;br /&gt;
Security threats can be thought of as having four quadrants. External, internal, accidental and malicious. Block based stores have a variety of ways for handling security but there are basic concepts that SAN and NAS technologies use to secure data.&lt;br /&gt;
&lt;br /&gt;
SAN has traditionally run on fibre channels, although this is a trend that is changing. &amp;lt;sup&amp;gt; [http://en.wikipedia.org/wiki/Storage_area_network] &amp;lt;/sup&amp;gt;&lt;br /&gt;
For the sake of security, running a SAN on fibre channels help isolate its network as they do not communicate over TCP/IP connections. However, since the SAN devices themselves do not restrict access, it&#039;s up to the network infrastructure and host system to handle its security. &lt;br /&gt;
&lt;br /&gt;
Zoning and LUN masking are typical ways SAN systems could use as security measures. Zoning allocates a certain amount of storage to clients. These zones are isolated and are not allowed to communicate outside their respective zone. LUN masking is similar to zoning, however, they differ in the type of devices being used. Switches utilize zoning while disk array controllers use LUN masking. A disk array controller is a device which manages the physical disk drives and interprets them as logical unit numbers. Thus, the term LUN masking. &amp;lt;sup&amp;gt; [http://en.wikipedia.org/wiki/Fibre_Channel_zoning] &amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NAS has its own vulnerabilities but as with SAN, it is only as secure as the network they operate on. NAS security is conceptually simpler than SAN. NAS environments can administer security tasks as well as control disk usage quotas. The proprietary operating system it runs on has access control configurations much like other traditional OSs that can prevent unauthorized access to data. &lt;br /&gt;
&lt;br /&gt;
Unlike NAS and SAN systems, OSD devices handle security requests directly. The set of protocols used by OSD enable it to cover the four quadrants of security threats outlined above. Clients can access an OSD device by providing &amp;quot;cryptographically secure credentials&amp;quot;, called capabilities, which specify a tuple (OSD name, partition ID, object ID) to identify the object. &amp;lt;sup&amp;gt; [http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf] &amp;lt;/sup&amp;gt; This can prevent accidental or even malicious access to an OSD externally or internally.&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
Although object storage is relatively new compared to block storage, work as progressed steadily in universities and on standards such as the ANSI T10 SCSI OSD standard. But there remains challenges to its adoption in the industry. One of which, is that it is only needed in high end business solutions at the moment, preventing it from reaching smaller businesses.&amp;lt;sup&amp;gt;[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122.3959&amp;amp;rep=rep1&amp;amp;type=pdf]&amp;lt;/sup&amp;gt; But as newer features are added and the standards mature we will see an increased adoption.&lt;br /&gt;
&lt;br /&gt;
It is obvious however that changes do need to occur as storage grows and finer levels of management are needed for data storage. Object-based storage has evolved to fit these needs where block-based storage has stagnated. The better tools for managing the data using the rich metadata of objects, the security and data transfer speeds of NAS and SAN combined and integrity controls for backups and redundancies will be an attracted choice for storage administrators in the future.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] Dell Product Group, 2010. Object Storage A Fresh Approach to Long-Term File Storage. [online] Dell Available at: &amp;lt;http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf&amp;gt; [Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[2] Christian Bandulet, 2007. Object-Based Storage Devices. [online] Oracle Available at: &amp;lt;http://developers.sun.com/solaris/articles/osd.html&amp;gt;&lt;br /&gt;
[Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[3] [http://www-03.ibm.com/ibm/history/exhibits/storage/storage_350.html IBM 350 Disk Storage Unit]&lt;br /&gt;
&lt;br /&gt;
[4] M. Mesnier, G. R. Ganger, and E. Riedel. Object-Based Storage. IEEE Communications Magazine, 41(8), August 2003.&lt;br /&gt;
&lt;br /&gt;
[5] [http://developers.sun.com/solaris/articles/osd.html Object-Based Storage Devices Christian Bandulet, July 2007]&lt;br /&gt;
&lt;br /&gt;
[6] [http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf Seagate]&lt;br /&gt;
&lt;br /&gt;
[7] [http://articles.techrepublic.com.com/5100-22_11-5841266.html Foundations of Network Storage]&lt;br /&gt;
&lt;br /&gt;
[8] [http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Dell Object Storage Overview]&lt;br /&gt;
&lt;br /&gt;
[9] Dell Product Group, 2010. Object Storage A Fresh Approach to Long-Term File Storage. [online] Dell Available at: &amp;lt;http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf&amp;gt; [Accessed 13 October 2010].&lt;br /&gt;
&lt;br /&gt;
[10] [http://en.wikipedia.org/wiki/Storage_area_network Storage Area Network]&lt;br /&gt;
&lt;br /&gt;
[11] [http://en.wikipedia.org/wiki/Fibre_Channel_zoning Fibre Channel zoning]&lt;br /&gt;
&lt;br /&gt;
[12] [http://www.research.ibm.com/haifa/projects/storage/objectstore/papers/OSDSecurityProtocol.pdf IBM OSD Security Protocol Overview]&lt;br /&gt;
&lt;br /&gt;
[13] Michael Factor, Kalman Meth, Dalit Naor, Ohad Rodeh, Julian Satran, 2005. Object storage: The future building block for storage systems. In 2nd International IEEE Symposium on Mass Storage Systems and Technologies, Sardinia  [online] IBM Available at: &amp;lt;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.122.3959&amp;amp;rep=rep1&amp;amp;type=pdf&amp;gt; [Accessed 13 October 2010].&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
	<entry>
		<id>https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=2720</id>
		<title>Talk:COMP 3000 Essay 1 2010 Question 11</title>
		<link rel="alternate" type="text/html" href="https://homeostasis.scs.carleton.ca/wiki/index.php?title=Talk:COMP_3000_Essay_1_2010_Question_11&amp;diff=2720"/>
		<updated>2010-10-09T23:45:39Z</updated>

		<summary type="html">&lt;p&gt;Npradhan: /* Some more links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Initial Outline ==&lt;br /&gt;
&#039;&#039;&#039;Introduction&#039;&#039;&#039;&lt;br /&gt;
* Thesis Statement: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes.&lt;br /&gt;
* What will be discussed&lt;br /&gt;
 - Current state of block based storage&lt;br /&gt;
 - Brief overview of object store&lt;br /&gt;
 - Scalability&lt;br /&gt;
 - Integrity&lt;br /&gt;
 - Security&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block based storage&#039;&#039;&#039;&lt;br /&gt;
* NAS is a single storage device that is shared on a LAN&lt;br /&gt;
 - File level/Single storage device(s) that operates individually&lt;br /&gt;
 - Clients connect to the NAS head (interface between client and NAS) rather than to the individual storage devices&lt;br /&gt;
 - Use small, specialized and proprietary operating systems instead of general purpose OSs&lt;br /&gt;
 - Can enforce security constraints, quotas, indexing&lt;br /&gt;
 - Example of access: \\NAS\Sharename&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - Dedicated, feature-rich file sharing&lt;br /&gt;
 - Network optimized&lt;br /&gt;
 - Centralized storage&lt;br /&gt;
 - Less administration overhead&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Metadata processing has to be handled on the NAS server&lt;br /&gt;
 - Scaling up with more storage behind the NAS head is restricted because metadata processing on the NAS device becomes a bottleneck&lt;br /&gt;
 - Scaling by adding additional NAS devices quickly becomes a management issue because data is isolated on individual NAS islands&lt;br /&gt;
 - High latency protocols that clogs LANs, using TCP/IP &lt;br /&gt;
 - Not suitable for data transfer intensive apps &lt;br /&gt;
&lt;br /&gt;
* SAN filesystem is a local network of multiple devices that operate on disk blocks and provides a file system abstraction&lt;br /&gt;
 - Block level/local network of multiple device&lt;br /&gt;
 - Every client computer has its own file system&lt;br /&gt;
 - A SAN alone does not provide the file abstraction but there is a file system built on top of SANs&lt;br /&gt;
 - Example of access: D:\, E:\, etc.&lt;br /&gt;
&lt;br /&gt;
Advantages&lt;br /&gt;
 - High-performance shared disk&lt;br /&gt;
 - Scalable&lt;br /&gt;
 - Short I/O paths&lt;br /&gt;
 - Lots of parallelism&lt;br /&gt;
Disadvantages&lt;br /&gt;
 - Harder to maintain, lots of file systems to manage&lt;br /&gt;
 - Harder to administer, lots of storage access rights to coordinate&lt;br /&gt;
&lt;br /&gt;
* OSDs closes the gap between the scalability of SAN and the file sharing capabilities of NAS&lt;br /&gt;
* Block storage has limitations that have become more apparent as demand for scalability and security has grown&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Overview of OSD&#039;&#039;&#039;&lt;br /&gt;
* An OSD device deals in objects&lt;br /&gt;
 - Handles the mapping from object to physical media locations itself&lt;br /&gt;
 - Tracks metadata as attributes, such as creation timestamps, allowing for easier sharing of data among clients&lt;br /&gt;
 - OSDs are directly connected to clients without the need for an intermediary to handle metadata.&lt;br /&gt;
&lt;br /&gt;
* ANSI ratified version 1.0 of the OSD specification in 2004, defining a protocol for communication with object-based storage devices&lt;br /&gt;
* The OSD specification describes:&lt;br /&gt;
 - a SCSI command set that provides a high-level interface to OSD devices&lt;br /&gt;
 - how file systems and databases stores and retrieves data objects&lt;br /&gt;
 - work has continued in ratifying OSD-2 and OSD-3 specificiations&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scalability&#039;&#039;&#039;&lt;br /&gt;
* Metadata is associated and stored directly with data objects and carried between layers and across devices&lt;br /&gt;
* Space allocation delegated to storage device&lt;br /&gt;
* Server has reduced overhead and processing, allowing larger clusters of storage&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Integrity&#039;&#039;&#039;&lt;br /&gt;
* OSD&#039;s have knowledge of its object layout&lt;br /&gt;
* Unlike block stores, OSD&#039;s can recover data specific to a byte range&lt;br /&gt;
 - OSD&#039;s know what space is being unused in this way&lt;br /&gt;
 - Can scan and correct errors without losing data&lt;br /&gt;
* OSD&#039;s maintain internal copies of metadata&lt;br /&gt;
 - User doesn&#039;t have to do a complete file system restore for the sake of one or few unrecoverable files&lt;br /&gt;
 - OSD&#039;s can identify the byte range lost and restore the file efficiently&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Security&#039;&#039;&#039;&lt;br /&gt;
* Suited for network based storage&lt;br /&gt;
* Associate security attributes directly with data object&lt;br /&gt;
* Security requests handled directly by storage device &lt;br /&gt;
* Computer system can access OSD device by providing cryptographically secure credentials(capability) that the OSD device can validate&lt;br /&gt;
 - This can prevent malicious access from unauthorized requests or accidental access from misconfigured machines&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conclusion&#039;&#039;&#039;&lt;br /&gt;
* Reiteration of thesis statement&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hey Myagi, I thought i&#039;d move your outline to its own section at the top of the page so it&#039;s more visible. I hope you don&#039;t mind. If you do, feel free to revert this edit.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
: It&#039;s all good.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:00, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:This outline looks pretty good to me. I like the three focus points of scalability, integrity and security, those seem to be constant themes in what i&#039;ve read about object stores. &lt;br /&gt;
&lt;br /&gt;
:For the block storage overview, the two current standards for a block based interface seem to be SCSI and SATA. SCSI seems to be used more in enterprise storage and SATA more in personal storage (someone correct me if i&#039;m wrong here). We might also want to take a look at SAN and NAS. I need to do some more reading, haha.&lt;br /&gt;
&lt;br /&gt;
:Also, I think we might as well start putting up some stuff on the article page. Even just a few sentences per section. I can start on that tomorrow or maybe Saturday. Of course any one else is welcome to as well.&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Quick Overview ==&lt;br /&gt;
So I hope i&#039;m not the only one who was wondering &amp;quot;What are object stores?&amp;quot; when reading the question. I don&#039;t think the textbook mentions it but I didn&#039;t read through the filesystems chapter very thoroughly. Here&#039;s where some quick googling has got me:&lt;br /&gt;
&lt;br /&gt;
Most storage devices divide their storage up into blocks,  a fixed length sequence of bytes. The interface that storage devices provide to the rest of the system is pretty simple. It&#039;s essentially &amp;quot;Here, you can read to or write to blocks, have fun&amp;quot;. This is block-based storage.&lt;br /&gt;
&lt;br /&gt;
Object-based storage is different. The interface it presents to the rest of the system is more sophisticated. Instead of directly accessing blocks on the disk, the system accesses objects. Objects are like a level of abstraction on top of blocks. Objects can be variable sized, read/written to, created, and deleted. The device itself handles mapping these objects to blocks and all the issues that come with that, rather than the OS.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some papers that give an overview of object-based storage:&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1612479 Object Storage: The Future Building Block for Storage Systems]&lt;br /&gt;
&lt;br /&gt;
[http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1222722 Object-Based Storage]&lt;br /&gt;
&lt;br /&gt;
I think if you just look those up on google scholar you can access the pdf without even being inside carleton&#039;s network.&lt;br /&gt;
&lt;br /&gt;
--[[User:Mbingham|Mbingham]] 23:56, 1 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Some more links ==&lt;br /&gt;
I haven&#039;t been reading many academic papers on the subject so those links will be very useful.&lt;br /&gt;
&lt;br /&gt;
If I may add to this. I read articles on object storage here:&lt;br /&gt;
&lt;br /&gt;
[http://www.dell.com/downloads/global/products/pvaul/en/object-storage-overview.pdf Object Storage Overview] &lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
[http://www.snia.org/education/tutorials/2010/spring/file/PaulMassiglia_File_Systems_Object_Storage_Devices.pdf File Systems for OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
I can add that metadata is much richer in an object store context. Searching for files and grouping related files together is much easier with the context information that metadata supplies for objects. I&#039;m beginning to read:&lt;br /&gt;
&lt;br /&gt;
[http://www.seagate.com/docs/pdf/whitepaper/tp_536.pdf The advantages of OSD&#039;s]&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:39, 5 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I&#039;m going to write a version of my essay out over the long weekend with headings and references and put it up on the wiki. I&#039;d like to know who and how many people are working on this essay but dunno if that&#039;s possible. We&#039;ll see what we do from there I guess? I was thinking we just homogenize all of the information we write into one unified essay.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 10:42, 6 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:I think there&#039;s 6 people in our group, though there might only be 5. I&#039;ll be working on this over the long weekend too. I was thinking maybe we should try to get a rough outline up, thursday or friday. Since Prof Somayaji mentioned that this should have the format of an essay, maybe we could start with what our main argument is?&lt;br /&gt;
&lt;br /&gt;
:I was thinking something like objects stores are becoming more attractive because the demands on filesystems has changed, but the interface has not been updated to accomodate these changes. Then we could go into an explanation of block based storage, how it fails to meet the needs placed on modern FSs, then how object stores solves these problems. What do you think?&lt;br /&gt;
&lt;br /&gt;
:--[[User:Mbingham|Mbingham]] 01:55, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:You don&#039;t need to write your own independent essay on the wiki. Let&#039;s just add info as it comes along. I&#039;ll be completely without internet access this weekend, but I&#039;ll try to bring some background reading with me. Expect lots of edits from me starting Monday night/Tuesday morning.&lt;br /&gt;
:--[[User:Dagar|Dagar]] 12:59, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:Sounds good! I think that&#039;s a good idea for a thesis statement and we should have a concrete one by Thurs/Fri. Although I&#039;m not absolutely clear about the interface not being updated? I think the object store SCSI standard is constantly being ratified and now they have an OSD-3 draft. [http://www.t10.org/drafts.htm#OSD_Family T10 OSD Working Drafts]. But then again I&#039;m probably misunderstanding something...&lt;br /&gt;
:--[[User:Myagi|Myagi]] 10:08, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
::I didn&#039;t mean that the object interface hadn&#039;t been updated, I meant that the block interface hasn&#039;t been updated to reflect the changing requirements put on storage. Since the block interface is still largely the same as it was decades ago (read/write to blocks) it is unable to handle the new requirements. Object stores look attractive because they are designed to deal with issues like scalability, integrity, security, etc. Sorry for the confusion, I hope it makes more sense now, haha.&lt;br /&gt;
::--[[User:Mbingham|Mbingham]] 15:44, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:I gotcha, thanks for explaining! I&#039;d say that would be a great thesis statement then: Object stores are becoming more attractive because the demands on filesystems has changed and the block store interface has not been updated to accommodate these changes. We can work from there. I think we can address the inadequacies of block based storage after stating our thesis and then for the body, we point out how object stores deal with issues of scalability, integrity, security as well as flexibility. And then some kind of nice tie up reiterating our thesis.&lt;br /&gt;
:--[[User:Myagi|Myagi]] 12:50, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
I mine as well put my contribution here. I&#039;m willing to move or change it for the sake of organizing this discussion page.&lt;br /&gt;
&lt;br /&gt;
--[[User:Myagi|Myagi]] 18:15, 7 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
:(moved Myagi&#039;s outline to top of page) --[[User:Mbingham|Mbingham]] 02:31, 8 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
Some links that I found while doing the assignment about object storage and its application to SAN systems:&lt;br /&gt;
http://dsc.sun.com/solaris/articles/osd.html&lt;br /&gt;
http://www.research.ibm.com/haifa/projects/storage/zFS/papers/amalfi.pdf&lt;br /&gt;
&lt;br /&gt;
--[[User:Npradhan|Npradhan]] 23:45, 9 October 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
-instead of storing filesytems in terms of blocks, you store in terms of objects.&lt;br /&gt;
&lt;br /&gt;
-extents, named extents&lt;br /&gt;
&lt;br /&gt;
-objects fancier because they can move around.&lt;br /&gt;
&lt;br /&gt;
-extra level of abstraction and indirection&lt;br /&gt;
&lt;br /&gt;
-files made of objects, objects made of blocks&lt;/div&gt;</summary>
		<author><name>Npradhan</name></author>
	</entry>
</feed>