<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.reddnet.org/mwiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dano</id>
	<title>ReddNet - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.reddnet.org/mwiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dano"/>
	<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php/Special:Contributions/Dano"/>
	<updated>2026-05-25T00:42:26Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3582</id>
		<title>Talk:Development ideas</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3582"/>
		<updated>2008-07-02T14:07:38Z</updated>

		<summary type="html">&lt;p&gt;Dano: /* NFU checksum approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Data Integrity==&lt;br /&gt;
&lt;br /&gt;
*The idea of 64k chunks for checksums (subdividing an IBP allocation) is what's termed a hash list&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_list&lt;br /&gt;
*which can be extended to a multi-level hash tree&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree&lt;br /&gt;
&lt;br /&gt;
*One could imagine a 3-level tree&lt;br /&gt;
**a hash for each lowest-common-unit, say the commonly used 1K&lt;br /&gt;
**a single top hash for each IBP allocation&lt;br /&gt;
**a single top hash for the file&lt;br /&gt;
***This is problematic since a file can be replicated with different allocation boundaries leading to different top hash for the file.&lt;br /&gt;
&lt;br /&gt;
*It seems to be common in distributed file systems to use a binary hash tree rather than a hash list -- even on individual data blocks.&lt;br /&gt;
**Tiger Tree Hash TTH is currently the most? popular since it provides high security with a relatively low cpu cost&lt;br /&gt;
**http://en.wikipedia.org/wiki/Tiger_%28hash%29&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree#Tiger_tree_hash&lt;br /&gt;
**http://en.wikipedia.org/wiki/List_of_hash_functions#Computational_costs_of_CRCs_vs_Hashes&lt;br /&gt;
&lt;br /&gt;
If the IBP protocol were to be extended to support a single specific checksum method it would possibly be something like TTH.   In this example, this would mean TTH usage becomes part of the IBP protocol specification and both the IBP client and IBP depot would be required to implement it.  The next level tools and APIs like LoRS and libxio and lstcp would not be required to know anything about IBP internal checksums, but they could optionally use it.  &lt;br /&gt;
*If checksumming were optional, additional IBP commands to turn it on and off would be needed, and interoperability with non-checksumming depots becomes an issue.&lt;br /&gt;
*Do the hashes go into the exnode, or are they only stored in the depot allocation tables?&lt;br /&gt;
*Since the IBP client needs to do the checksumming it needs to be emphasized that &lt;br /&gt;
**the checksum method becomes part of the IBP protocol itself &lt;br /&gt;
**and is not a hidden internal operation.&lt;br /&gt;
**The checksum method is exposed at least to the IBP client&lt;br /&gt;
**This may have significant implications to the scalability of the IBP protocol and these scalability implications may need to be explicitly addressed.&lt;br /&gt;
&lt;br /&gt;
- Dan 1/24/08&lt;br /&gt;
== NFU checksum approach ==&lt;br /&gt;
*It has also been suggested that NFUs could accommodate any generic hashing approach that the end user wants to implement.&lt;br /&gt;
** the NFU operation would read data from disk via localhost (can NFU talk to the depot internally?) or with mmaps for NFU servers integrated into IBP depot. &lt;br /&gt;
*This may be slower than an algorithm integrated into the depot.&lt;br /&gt;
*A depot internal checksum doesn't stop the use of NFU checksums.&lt;br /&gt;
**excessive NFU usage could hamper depot performance&lt;br /&gt;
&lt;br /&gt;
- Dan 1/28/08&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3581</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3581"/>
		<updated>2008-07-02T14:02:42Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* Three components:&lt;br /&gt;
** NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot, runs NFU Ops&lt;br /&gt;
** NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
** NFU client -- initiates launch of an nfu Op and exchanges data with it.&lt;br /&gt;
* NFU API -- Two iotypes categories for data exchange between nfu_op and nfu_client:&lt;br /&gt;
** IBP_VAL_[IN, OUT, INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** IBP_REF_[RD, WR, RDWR]&lt;br /&gt;
*** NFU Server (not nfuOp) processes IBP Caps&lt;br /&gt;
***E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation&lt;br /&gt;
***nfuOp does not receive readCap string&lt;br /&gt;
* security issues&lt;br /&gt;
** Java NFU server has VM isolation of nfuOp&lt;br /&gt;
** UTK NFU server has option to run Cap as process to isolate nfuOp from server&lt;br /&gt;
** UTK NFU server mmaps allocations from readCaps, i.e. nfuOp has no direct knowledge of allocation file names.&lt;br /&gt;
* compatibility issues:&lt;br /&gt;
** Java NFU server currently has no way to run C nfu Ops&lt;br /&gt;
** if nfu server is not part of the ibp depot, then all IBP_REF_* exchanges need to be changed to IBP_VAL_* exchanges &lt;br /&gt;
*** this forces the nfuOp to process IBP caps which would otherwise be processed by the nfuServer.&lt;br /&gt;
*** this disables 1/2 of the NFU iotypes&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3580</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3580"/>
		<updated>2008-07-02T14:01:53Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot, runs NFU Ops&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- initiates launch of an nfu Op and exchanges data with it.&lt;br /&gt;
* NFU API -- Two iotypes categories for data exchange between nfu_op and nfu_client:&lt;br /&gt;
** IBP_VAL_[IN, OUT, INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** IBP_REF_[RD, WR, RDWR]&lt;br /&gt;
*** NFU Server (not nfuOp) processes IBP Caps&lt;br /&gt;
***E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation&lt;br /&gt;
***nfuOp does not receive readCap string&lt;br /&gt;
* security issues&lt;br /&gt;
** Java NFU server has VM isolation of nfuOp&lt;br /&gt;
** UTK NFU server has option to run Cap as process to isolate nfuOp from server&lt;br /&gt;
** UTK NFU server mmaps allocations from readCaps, i.e. nfuOp has no direct knowledge of allocation file names.&lt;br /&gt;
* compatibility issues:&lt;br /&gt;
** Java NFU server currently has no way to run C nfu Ops&lt;br /&gt;
** if nfu server is not part of the ibp depot, then all IBP_REF_* exchanges need to be changed to IBP_VAL_* exchanges &lt;br /&gt;
*** this forces the nfuOp to process IBP caps which would otherwise be processed by the nfuServer.&lt;br /&gt;
*** this disables 1/2 of the NFU iotypes&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3579</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3579"/>
		<updated>2008-07-02T14:01:15Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot, runs NFU Ops&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- initiates launch of an nfu Op and exchanges data with it.&lt;br /&gt;
* NFU API -- Two iotypes for data exchange between nfu_op and nfu_client:&lt;br /&gt;
** IBP_VAL_[IN, OUT, INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** IBP_REF_[RD, WR, RDWR]&lt;br /&gt;
*** NFU Server (not nfuOp) processes IBP Caps&lt;br /&gt;
***E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation&lt;br /&gt;
***nfuOp does not receive readCap string&lt;br /&gt;
* security issues&lt;br /&gt;
** Java NFU server has VM isolation of nfuOp&lt;br /&gt;
** UTK NFU server has option to run Cap as process to isolate nfuOp from server&lt;br /&gt;
** UTK NFU server mmaps allocations from readCaps, i.e. nfuOp has no direct knowledge of allocation file names.&lt;br /&gt;
* compatibility issues:&lt;br /&gt;
** Java NFU server currently has no way to run C nfu Ops&lt;br /&gt;
** if nfu server is not part of the ibp depot, then all IBP_REF_* exchanges need to be changed to IBP_VAL_* exchanges &lt;br /&gt;
*** this forces the nfuOp to process IBP caps which would otherwise be processed by the nfuServer.&lt;br /&gt;
*** this disables 1/2 of the NFU iotypes&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3578</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3578"/>
		<updated>2008-07-02T14:00:07Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot, runs NFU Ops&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- initiates launch of an nfu Op and exchanges data with it.&lt;br /&gt;
* NFU API -- Two iotypes for data exchange between nfu_op and nfu_client:&lt;br /&gt;
** IBP_VAL_[IN, OUT, INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** IBP_REF_[RD, WR, RDWR]&lt;br /&gt;
*** NFU Server (not nfuOp) processes IBP Caps&lt;br /&gt;
***E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation&lt;br /&gt;
***nfuOp does not receive readCap string&lt;br /&gt;
* security issues&lt;br /&gt;
** Java NFU server has VM isolation of nfuOp&lt;br /&gt;
** UTK NFU server has option to run Cap as process to isolate nfuOp from server&lt;br /&gt;
** UTK NFU server mmaps allocations from readCaps, i.e. nfuOp has no direct knowledge of allocation file names.&lt;br /&gt;
* compatibility issues:&lt;br /&gt;
** Java NFU server currently has no way to run C nfu Ops&lt;br /&gt;
** if nfu server is not part of the ibp depot, then all IBP_REF_* exchanges need to be changed to IBP_VAL_* exchanges forcing the nfuOp to process IBP caps which would otherwise be processed by the nfuServer.&lt;br /&gt;
*** this disables 1/2 of the NFU api&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3577</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3577"/>
		<updated>2008-07-02T13:58:52Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot, runs NFU Ops&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- initiates launch of an nfu Op and exchanges data with it.&lt;br /&gt;
* NFU API -- Two iotypes for data exchange between nfu_op and nfu_client:&lt;br /&gt;
** IBP_VAL_[IN, OUT, INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** IBP_REF_[RD, WR, RDWR]&lt;br /&gt;
*** NFU Server (not nfuOp) processes IBP Caps&lt;br /&gt;
***E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation&lt;br /&gt;
***nfuOp does not receive readCap string&lt;br /&gt;
* security issues&lt;br /&gt;
** Java NFU server has VM isolation of nfuOp&lt;br /&gt;
** UTK NFU server has option to run Cap as process to isolate nfuOp from server&lt;br /&gt;
** UTK NFU server mmaps allocations from readCaps, i.e. nfuOp has no direct knowledge of allocation file names.&lt;br /&gt;
* compatibility issues:&lt;br /&gt;
** Java NFU server currently has no way to run C nfuOps&lt;br /&gt;
** if nfu server is not part of the ibp depot, then all IBP_REF_* exchanges need to be changed to IBP_VAL_* exchanges forcing the nfuOp to process IBP caps which would otherwise be processed by the nfuServer.&lt;br /&gt;
*** this disables 1/2 of the NFU api&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3576</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3576"/>
		<updated>2008-07-02T13:58:35Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot, runs NFU Ops&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- initiates launch of an nfu Op and exchanges data with it.&lt;br /&gt;
* NFU API -- Two iotypes for data exchange between nfu_op and nfu_client:&lt;br /&gt;
** 1. IBP_VAL_[IN, OUT, INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** 2. IBP_REF_[RD, WR, RDWR]&lt;br /&gt;
*** NFU Server (not nfuOp) processes IBP Caps&lt;br /&gt;
***E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation&lt;br /&gt;
***nfuOp does not receive readCap string&lt;br /&gt;
* security issues&lt;br /&gt;
** Java NFU server has VM isolation of nfuOp&lt;br /&gt;
** UTK NFU server has option to run Cap as process to isolate nfuOp from server&lt;br /&gt;
** UTK NFU server mmaps allocations from readCaps, i.e. nfuOp has no direct knowledge of allocation file names.&lt;br /&gt;
* compatibility issues:&lt;br /&gt;
** Java NFU server currently has no way to run C nfuOps&lt;br /&gt;
** if nfu server is not part of the ibp depot, then all IBP_REF_* exchanges need to be changed to IBP_VAL_* exchanges forcing the nfuOp to process IBP caps which would otherwise be processed by the nfuServer.&lt;br /&gt;
*** this disables 1/2 of the NFU api&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3575</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3575"/>
		<updated>2008-07-02T13:57:51Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot, runs NFU Ops&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- initiates launch of an nfu Op and exchanges data with it.&lt;br /&gt;
* NFU API:&lt;br /&gt;
** Two iotypes for data exchange between nfu_op and nfu_client:&lt;br /&gt;
** 1. IBP_VAL_[IN, OUT, INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** 2. IBP_REF_[RD, WR, RDWR]&lt;br /&gt;
*** NFU Server (not nfuOp) processes IBP Caps&lt;br /&gt;
***E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation&lt;br /&gt;
***nfuOp does not receive readCap string&lt;br /&gt;
* security issues&lt;br /&gt;
** Java NFU server has VM isolation of nfuOp&lt;br /&gt;
** UTK NFU server has option to run Cap as process to isolate nfuOp from server&lt;br /&gt;
** UTK NFU server mmaps allocations from readCaps, i.e. nfuOp has no direct knowledge of allocation file names.&lt;br /&gt;
* compatibility issues:&lt;br /&gt;
** Java NFU server currently has no way to run C nfuOps&lt;br /&gt;
** if nfu server is not part of the ibp depot, then all IBP_REF_* exchanges need to be changed to IBP_VAL_* exchanges forcing the nfuOp to process IBP caps which would otherwise be processed by the nfuServer.&lt;br /&gt;
*** this disables 1/2 of the NFU api&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3574</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3574"/>
		<updated>2008-07-02T10:20:45Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot, runs NFU Ops&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- initiates launch of an nfuOp and exchanges data with it.&lt;br /&gt;
* NFU API:&lt;br /&gt;
** Two types of data exchange:&lt;br /&gt;
** 1. variable exchange&lt;br /&gt;
***IBP_VAL_[IN, OUT, INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** 2. IBP Cap handling&lt;br /&gt;
*** NFU Server (not nfuOp) processes IBP Caps&lt;br /&gt;
***IBP_REF_[RD, WR, RDWR]&lt;br /&gt;
***E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation&lt;br /&gt;
***nfuOp does not receive readCap string&lt;br /&gt;
* security issues&lt;br /&gt;
** Java NFU server has VM isolation of nfuOp&lt;br /&gt;
** UTK NFU server has option to run Cap as process to isolate nfuOp from server&lt;br /&gt;
** UTK NFU server mmaps allocations from readCaps, i.e. nfuOp has no direct knowledge of allocation file names.&lt;br /&gt;
* compatibility issues:&lt;br /&gt;
** Java NFU server currently has no way to run C nfuOps&lt;br /&gt;
** if nfu server is not part of the ibp depot, then all IBP_REF_* exchanges need to be changed to IBP_VAL_* exchanges forcing the nfuOp to process IBP caps which would otherwise be processed by the nfuServer.&lt;br /&gt;
*** this disables 1/2 of the NFU api&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3573</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3573"/>
		<updated>2008-07-02T08:45:28Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot, runs NFU Ops&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- initiates launch of an nfuOp and exchanges data with it.&lt;br /&gt;
* NFU API:&lt;br /&gt;
** Two types of data exchange:&lt;br /&gt;
** 1. variable exchange&lt;br /&gt;
***IBP_VAL_[IN, OUT, INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** 2. IBP Cap handling&lt;br /&gt;
*** NFU Server (not nfuOp) processes IBP Caps&lt;br /&gt;
***IBP_REF_[RD, WR, RDWR]&lt;br /&gt;
***E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation&lt;br /&gt;
***nfuOp does not receive readCap string&lt;br /&gt;
* security issues&lt;br /&gt;
** Java NFU server has VM isolation of nfuOp&lt;br /&gt;
** UTK NFU server has option to run Cap as process to isolate nfuOp from server&lt;br /&gt;
** UTK NFU server mmaps allocations from readCaps, i.e. nfuOp has no direct knowledge of allocation file names.&lt;br /&gt;
* compatibility issues:&lt;br /&gt;
** Java NFU server currently has no way to run C nfuOps&lt;br /&gt;
** if nfu server is not part of the ibp depot, then all IBP_REF_* exchanges need to be changed to IBP_VAL_* exchanges forcing the nfuOp to process IBP caps which otherwise are processed by the nfuServer and hidden from the nfuOp.&lt;br /&gt;
*** this disables 1/2 of the NFU api&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3572</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3572"/>
		<updated>2008-07-02T08:44:47Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot, runs NFU Ops&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- initiates launch of an nfuOp and exchanges data with it.&lt;br /&gt;
* NFU API:&lt;br /&gt;
** Two types of data exchange:&lt;br /&gt;
** 1. variable exchange&lt;br /&gt;
***IBP_VAL_[IN, OUT, INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** 2. IBP Cap handling&lt;br /&gt;
*** NFU Server (not nfuOp) processes IBP Caps&lt;br /&gt;
***IBP_REF_[RD, WR, RDWR]&lt;br /&gt;
***E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation&lt;br /&gt;
***nfuOp does not receive readCap string&lt;br /&gt;
* security issues&lt;br /&gt;
** Java NFU server has VM isolation of nfuOp&lt;br /&gt;
** UTK NFU server has option to run Cap as process to isolate nfuOp from server&lt;br /&gt;
** UTK NFU server mmaps allocations from readCaps, nfuOp has no direct knowledge of allocation file names.&lt;br /&gt;
* compatibility issues:&lt;br /&gt;
** Java NFU server currently has no way to run C nfuOps&lt;br /&gt;
** if nfu server is not part of the ibp depot, then all IBP_REF_* exchanges need to be changed to IBP_VAL_* exchanges forcing the nfuOp to process IBP caps which otherwise are processed by the nfuServer and hidden from the nfuOp.&lt;br /&gt;
*** this disables 1/2 of the NFU api&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3571</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3571"/>
		<updated>2008-07-02T08:43:58Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot, runs NFU Ops&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- initiates launch of an nfuOp and exchanges data with it.&lt;br /&gt;
* NFU API:&lt;br /&gt;
** Two types of data exchange:&lt;br /&gt;
** 1. variable exchange&lt;br /&gt;
***IBP_VAL_[IN, OUT, INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** 2. IBP Cap handling&lt;br /&gt;
*** NFU Server (not nfuOp) processes IBP Caps&lt;br /&gt;
***IBP_REF_[RD, WR, RDWR]&lt;br /&gt;
***E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation&lt;br /&gt;
***nfuOp does not receive readCap string&lt;br /&gt;
* security issues&lt;br /&gt;
** Java NFU server has VM isolation of nfuOp&lt;br /&gt;
** UTK NFU server has option to run Cap as process to isolate nfuOp from server&lt;br /&gt;
* compatibility issues:&lt;br /&gt;
** UTK NFU server mmaps allocations from readCaps, nfuOp has no direct knowledge of allocation file names.&lt;br /&gt;
** Java NFU server currently has no way to run C nfuOps&lt;br /&gt;
** if nfu server is not part of the ibp depot, then all IBP_REF_* exchanges need to be changed to IBP_VAL_* exchanges forcing the nfuOp to process IBP caps which otherwise are processed by the nfuServer and hidden from the nfuOp.&lt;br /&gt;
*** this disables 1/2 of the NFU api&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3570</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3570"/>
		<updated>2008-07-02T08:42:41Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot, runs NFU Ops&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- initiates launch of an nfuOp and exchanges data with it.&lt;br /&gt;
* NFU API:&lt;br /&gt;
** Two types of data exchange:&lt;br /&gt;
** 1. variable exchange&lt;br /&gt;
***IBP_VAL_[IN, OUT, INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** 2. IBP Cap handling&lt;br /&gt;
*** NFU Server (not nfuOp) processes IBP Caps&lt;br /&gt;
***IBP_REF_[RD, WR, RDWR]&lt;br /&gt;
***E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation&lt;br /&gt;
***nfuOp does not receive readCap string&lt;br /&gt;
* security issues&lt;br /&gt;
** Java NFU server has VM isolation of nfuOp&lt;br /&gt;
** UTK NFU server has option to run Cap as process to isolate nfuOp from server&lt;br /&gt;
* compatibility issues:&lt;br /&gt;
** Java NFU server currently has no way to run C nfuOps&lt;br /&gt;
** if nfu server is not part of the ibp depot, then all IBP_REF_* exchanges need to be changed to IBP_VAL_* exchanges forcing the nfuOp to process IBP caps which otherwise are processed by the nfuServer and hidden from the nfuOp.&lt;br /&gt;
*** this disables 1/2 of the NFU api&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3569</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3569"/>
		<updated>2008-07-02T08:35:21Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot, runs NFU Ops&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- initiates launch of an nfuOp and exchanges data with it.&lt;br /&gt;
* NFU API:&lt;br /&gt;
** Two types of data exchange:&lt;br /&gt;
** 1. variable exchange&lt;br /&gt;
***IBP_VAL_[IN, OUT, INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** 2. IBP Cap handling&lt;br /&gt;
*** NFU Server (not nfuOp) processes IBP Caps&lt;br /&gt;
***IBP_REF_[RD, WR, RDWR]&lt;br /&gt;
***E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation&lt;br /&gt;
***nfuOp does not receive readCap string&lt;br /&gt;
* security issues&lt;br /&gt;
** Java NFU server has VM isolation of nfuOp&lt;br /&gt;
** UTK NFU server has option to run Cap as process to isolate nfuOp from server&lt;br /&gt;
* compatibility issues:&lt;br /&gt;
** Java NFU server currently has no way to run C nfuOps&lt;br /&gt;
** if nfu server is not part of the ibp depot, then all IBP_REF_* exchanges need to be changed to IBP_VAL_* exchanges forcing the nfuOp to process IBP caps.&lt;br /&gt;
*** this disables 1/2 of the NFU api&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3568</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3568"/>
		<updated>2008-07-01T13:52:32Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot.&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- launches nfuOps and exchanges data with it.&lt;br /&gt;
* NFU API:&lt;br /&gt;
** Two types of data exchange:&lt;br /&gt;
** 1. variable exchange&lt;br /&gt;
***IBP_VAL_[IN, OUT, INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** 2. IBP Cap handling&lt;br /&gt;
*** NFU Server (not nfuOp) processes IBP Caps&lt;br /&gt;
***IBP_REF_[RD, WR, RDWR]&lt;br /&gt;
***E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation&lt;br /&gt;
***nfuOp does not receive readCap string&lt;br /&gt;
* security issues&lt;br /&gt;
** Java NFU server has VM isolation of nfuOp&lt;br /&gt;
** UTK NFU server has option to run Cap as process to isolate nfuOp from server&lt;br /&gt;
* compatibility issues:&lt;br /&gt;
** Java NFU server currently has no way to run C nfuOps&lt;br /&gt;
** if nfu server is not part of the ibp depot, then all IBP_REF_* exchanges need to be changed to IBP_VAL_* exchanges forcing the nfuOp to process IBP caps.&lt;br /&gt;
*** this disables 1/2 of the NFU api&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3567</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3567"/>
		<updated>2008-07-01T13:51:59Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot.&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- launches nfuOps and exchanges data with it.&lt;br /&gt;
* NFU API:&lt;br /&gt;
** Two types of data exchange:&lt;br /&gt;
** 1. variable exchange&lt;br /&gt;
***IBP_VAL_[IN, OUT, INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** 2. IBP Cap handling&lt;br /&gt;
*** NFU Server (not nfuOp) processes IBP Caps&lt;br /&gt;
***IBP_REF_[RD, WR, RDWR]&lt;br /&gt;
***E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation&lt;br /&gt;
***nfuOp does not receive readCap string&lt;br /&gt;
* security issues&lt;br /&gt;
** Java NFU server has VM isolation of nfuOp&lt;br /&gt;
** UTK NFU server has option to run Cap as process to isolate nfuOp from server&lt;br /&gt;
* compatibility issues:&lt;br /&gt;
** Java NFU server currently has no way to run C nfuOps&lt;br /&gt;
** if nfu server is not part of the ibp depot, then all IBP_REF_* exchanges need to be changed to IBP_VAL_* exchanges forcing the nfuOp to process IBP caps.&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3566</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3566"/>
		<updated>2008-07-01T13:49:27Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot.&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- launches nfuOps and exchanges data with it.&lt;br /&gt;
* NFU API:&lt;br /&gt;
** Two types of data exchange:&lt;br /&gt;
** 1. variable exchange&lt;br /&gt;
***IBP_VAL_[IN, OUT, INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** 2. IBP Cap handling&lt;br /&gt;
*** NFU Server (not nfuOp) processes IBP Caps&lt;br /&gt;
***IBP_REF_[RD, WR, RDWR]&lt;br /&gt;
***E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation&lt;br /&gt;
***nfuOp does not receive readCap string&lt;br /&gt;
* security issues&lt;br /&gt;
** Java NFU server has VM isolation of nfuOp&lt;br /&gt;
** UTK NFU server has option to run Cap as process to isolate nfuOp from server&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3565</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3565"/>
		<updated>2008-07-01T13:48:30Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot.&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- launches nfuOps and exchanges data with it.&lt;br /&gt;
* NFU API:&lt;br /&gt;
** Two types of data exchange:&lt;br /&gt;
** 1. variable exchange&lt;br /&gt;
***IBP_VAL_[IN, OUT, INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** 2. IBP Cap handling&lt;br /&gt;
***IBP_REF_[RD, WR, RDWR]&lt;br /&gt;
***E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation&lt;br /&gt;
***nfuOp does not receive readCap string&lt;br /&gt;
* security issues&lt;br /&gt;
** Java NFU server has VM isolation of nfuOp&lt;br /&gt;
** UTK NFU server has option to run Cap as process to isolate nfuOp from server&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3564</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3564"/>
		<updated>2008-07-01T13:47:49Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot.&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- launches nfuOps and exchanges data with it.&lt;br /&gt;
** Two types of data exchange:&lt;br /&gt;
** 1. variable exchange&lt;br /&gt;
***IBP_VAL_[IN, OUT, INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** 2. IBP Cap handling&lt;br /&gt;
***IBP_REF_[RD, WR, RDWR]&lt;br /&gt;
***E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation&lt;br /&gt;
***nfuOp does not receive readCap string&lt;br /&gt;
* security issues&lt;br /&gt;
** Java NFU server has VM isolation of nfuOp&lt;br /&gt;
** UTK NFU server has option to run Cap as process to isolate nfuOp from server&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3563</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3563"/>
		<updated>2008-07-01T13:47:27Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot.&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- launches nfuOps and exchanges data with it.&lt;br /&gt;
** Two types of data exchange:&lt;br /&gt;
** 1. variable exchange&lt;br /&gt;
***IBP_VAL_[IN, OUT, INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** 2. IBP Cap handling&lt;br /&gt;
***IBP_REF_[RD, WR, RDWR]&lt;br /&gt;
***E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation&lt;br /&gt;
***nfuOp does not receive readCap string&lt;br /&gt;
&lt;br /&gt;
* Java NFU server has VM isolation of nfuOp&lt;br /&gt;
* UTK NFU server has option to run Cap as process to isolate nfuOp from server&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3562</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3562"/>
		<updated>2008-07-01T13:46:22Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot.&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- launches nfuOps and exchanges data with it.&lt;br /&gt;
** Two types of data exchange:&lt;br /&gt;
** 1. variable exchange&lt;br /&gt;
***IBP_VAL_[IN, OUT, INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** 2. IBP Cap handling&lt;br /&gt;
***IBP_REF_[RD, WR, RDWR]&lt;br /&gt;
***E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation&lt;br /&gt;
***nfuOp does not receive readCap string&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3561</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3561"/>
		<updated>2008-07-01T13:41:29Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot.&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- launches nfuOps and exchanges data with it.&lt;br /&gt;
** Two types of data exchange:&lt;br /&gt;
** 1. variable exchange&lt;br /&gt;
***IBP_VAL_[IN, OUT, INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** 2. IBP Cap handling&lt;br /&gt;
***IBP_REF_[RD, WR, RDWR]&lt;br /&gt;
***client sends an IBP Cap to server, NFU server returns pointer to mmap of the allocation&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3560</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3560"/>
		<updated>2008-07-01T13:41:09Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot.&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- launches nfuOps and exchanges data with it.&lt;br /&gt;
** Two types of data exchange:&lt;br /&gt;
** 1. variable exchange&lt;br /&gt;
***IBP_VAL_[IN,OUT,INOUT]&lt;br /&gt;
*** variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
** 2. IBP Cap handling&lt;br /&gt;
***IBP_REF_[RD,WR,RDWR]&lt;br /&gt;
***client sends an IBP Cap to server, NFU server returns pointer to mmap of the allocation&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3559</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3559"/>
		<updated>2008-07-01T13:40:40Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot.&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- launches nfuOps and exchanges data with it.&lt;br /&gt;
** Two types of data exchange:&lt;br /&gt;
*** 1. variable exchange&lt;br /&gt;
****IBP_VAL_[IN,OUT,INOUT]&lt;br /&gt;
variable/values exchanged directly between nfu client and nfu Op&lt;br /&gt;
*** 2. IBP Cap handling&lt;br /&gt;
****IBP_REF_[RD,WR,RDWR]&lt;br /&gt;
****client sends an IBP Cap to server, NFU server returns pointer to mmap of the allocation&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3558</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3558"/>
		<updated>2008-07-01T13:39:03Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot.&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- launches nfuOps and exchanges data with it.&lt;br /&gt;
** Two types of data exchange:&lt;br /&gt;
*** 1. variable exchange -- data passed directly between NFU Client and NFU Op&lt;br /&gt;
IBP_VAL_[IN,OUT,INOUT]&lt;br /&gt;
*** 2. IBP Cap handling&lt;br /&gt;
IBP_REF_[RD,WR,RDWR]&lt;br /&gt;
client sends an IBP Cap to server, NFU server returns pointer to mmap of the allocation&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3557</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3557"/>
		<updated>2008-07-01T13:30:42Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot.&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- launches nfuOps and exchanges data with it.&lt;br /&gt;
** Two types of data exchange:&lt;br /&gt;
*** 1. variable exchange -- data passed directly between NFU Client and NFU Op&lt;br /&gt;
NFU_VAL_IN&lt;br /&gt;
*** 2. IBP Cap handling&lt;br /&gt;
NFU_IBP_RD, client sends an IBP Cap to server, NFU Op does not receive cap, but a pointer to a mmap of the cap.&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3556</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3556"/>
		<updated>2008-07-01T13:28:53Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot.&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- launches nfuOps and exchanges data with it.&lt;br /&gt;
** Two types of data exchange:&lt;br /&gt;
**1. variable exchange -- data passed directly between NFU Client and NFU Op&lt;br /&gt;
NFU_VAL_IN&lt;br /&gt;
**2. IBP Cap handling&lt;br /&gt;
NFU_IBP_RD, client sends an IBP Cap to server, NFU Op does not receive cap, but a pointer to a mmap of the cap.&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3555</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3555"/>
		<updated>2008-07-01T13:28:12Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot.&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- launches nfuOps and exchanges data with it.&lt;br /&gt;
** Two types of data exchange:&lt;br /&gt;
1. variable exchange -- data passed directly between NFU Client and NFU Op&lt;br /&gt;
NFU_VAL_IN&lt;br /&gt;
2. IBP Cap handling&lt;br /&gt;
NFU_IBP_RD, client sends an IBP Cap to server, NFU Op does not receive cap, but a pointer to a mmap of the cap.&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3554</id>
		<title>NFU Specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=NFU_Specification&amp;diff=3554"/>
		<updated>2008-07-01T13:24:45Z</updated>

		<summary type="html">&lt;p&gt;Dano: New page: Simple overview: * NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot. * NFU Op -- lightweight program, written in C, or Java, depending on server. * NFU client -- launches nfuOps and exchanges data wi...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple overview:&lt;br /&gt;
* NFU server -- &amp;quot;adjacent&amp;quot; to IBP depot.&lt;br /&gt;
* NFU Op -- lightweight program, written in C, or Java, depending on server.&lt;br /&gt;
* NFU client -- launches nfuOps and exchanges data with it.&lt;br /&gt;
** 2 types of data exchange:&lt;br /&gt;
** 1. variable exchange -- data passed directly between NFU Client and NFU Op&lt;br /&gt;
NFU_VAL_IN&lt;br /&gt;
** 2. IBP Cap handling&lt;br /&gt;
NFU_IBP_RD, client sends an IBP Cap to server, NFU Op does not receive cap, but a pointer to a mmap of the cap.&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=All_Hands_Meeting,_Feb_1,_2008&amp;diff=3224</id>
		<title>All Hands Meeting, Feb 1, 2008</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=All_Hands_Meeting,_Feb_1,_2008&amp;diff=3224"/>
		<updated>2008-01-31T23:44:48Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Agenda for All-Hands==&lt;br /&gt;
&lt;br /&gt;
Meeting Purpose:  &amp;quot;To decide upon a plan of action that will make REDDnet a success.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The Meeting will be held at ACCRE at Vanderbilt University&lt;br /&gt;
&lt;br /&gt;
===Morning Session 9-12:30===&lt;br /&gt;
&lt;br /&gt;
====09:00-09:30 --- Meeting Kickoff====&lt;br /&gt;
&lt;br /&gt;
* Summary of the proposal - towards a vision for REDDnet - Terry&lt;br /&gt;
* Putting together a plan of action - Paul &lt;br /&gt;
&lt;br /&gt;
====09:30-10:00 --- Deployment and Operations====&lt;br /&gt;
&lt;br /&gt;
* [[Operations and Deployment|Plan of Work]] - Bobby&lt;br /&gt;
* What should we expect of REDDnet sites? What should they expect of us?&lt;br /&gt;
&lt;br /&gt;
====10:00-10:30 --- Applications====&lt;br /&gt;
* Application Liaison Effort - Plan of Work (Carie Lee)&lt;br /&gt;
* [[Demo Projects and Application Use]] - Plans (such as CMS) (Dan)&lt;br /&gt;
&lt;br /&gt;
====10:30-10:45 --- Coffee Break====&lt;br /&gt;
&lt;br /&gt;
====10:45-12:30 --- A Toolbox for Distributed Storage (Part 1)====&lt;br /&gt;
* Data and Directory Services Discussion&lt;br /&gt;
** [[Directory and data management services APIs|Architectural Issues]] - Larry &lt;br /&gt;
** How we did things in the tools we developed at UTK - Chris&lt;br /&gt;
** TSSP - Hunter&lt;br /&gt;
* IBP: [[Presentation information|Current Status and Proposed Extensions]] - Alan&lt;br /&gt;
&lt;br /&gt;
===Lunch 12:30-01:30===&lt;br /&gt;
* Lunch will be provided at the Vanderbilt Commons&lt;br /&gt;
&lt;br /&gt;
===Afternoon Session 1:30-05:00===&lt;br /&gt;
&lt;br /&gt;
====01:30-03:15 --- A Toolbox for Distributed Storage (Part 2)====&lt;br /&gt;
&lt;br /&gt;
* continue discussion listed above.&lt;br /&gt;
&lt;br /&gt;
====03:15-03:30 --- Coffee Break====&lt;br /&gt;
&lt;br /&gt;
====03:30-05:00 --- Close-Out Discussion and Assignments====&lt;br /&gt;
* tasks to be done&lt;br /&gt;
* prioritize tasks&lt;br /&gt;
* build a software diagram? (straw man is at [[Protocol Standardization Efforts]])&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3216</id>
		<title>Talk:Development ideas</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3216"/>
		<updated>2008-01-29T17:39:06Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Data Integrity==&lt;br /&gt;
&lt;br /&gt;
*The idea of 64k chunks for checksums (subdividing an IBP allocation) is what's termed a hash list&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_list&lt;br /&gt;
*which can be extended to a multi-level hash tree&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree&lt;br /&gt;
&lt;br /&gt;
*One could imagine a 3-level tree&lt;br /&gt;
**a hash for each lowest-common-unit, say the commonly used 1K&lt;br /&gt;
**a single top hash for each IBP allocation&lt;br /&gt;
**a single top hash for the file&lt;br /&gt;
***This is problematic since a file can be replicated with different allocation boundaries leading to different top hash for the file.&lt;br /&gt;
&lt;br /&gt;
*It seems to be common in distributed file systems to use a binary hash tree rather than a hash list -- even on individual data blocks.&lt;br /&gt;
**Tiger Tree Hash TTH is currently the most? popular since it provides high security with a relatively low cpu cost&lt;br /&gt;
**http://en.wikipedia.org/wiki/Tiger_%28hash%29&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree#Tiger_tree_hash&lt;br /&gt;
**http://en.wikipedia.org/wiki/List_of_hash_functions#Computational_costs_of_CRCs_vs_Hashes&lt;br /&gt;
&lt;br /&gt;
If the IBP protocol were to be extended to support a single specific checksum method it would possibly be something like TTH.   In this example, this would mean TTH usage becomes part of the IBP protocol specification and both the IBP client and IBP depot would be required to implement it.  The next level tools and APIs like LoRS and libxio and lstcp would not be required to know anything about IBP internal checksums, but they could optionally use it.  &lt;br /&gt;
*If checksumming were optional, additional IBP commands to turn it on and off would be needed, and interoperability with non-checksumming depots becomes an issue.&lt;br /&gt;
*Do the hashes go into the exnode, or are they only stored in the depot allocation tables?&lt;br /&gt;
*Since the IBP client needs to do the checksumming it needs to be emphasized that &lt;br /&gt;
**the checksum method becomes part of the IBP protocol itself &lt;br /&gt;
**and is not a hidden internal operation.&lt;br /&gt;
**The checksum method is exposed at least to the IBP client&lt;br /&gt;
**This may have significant implications to the scalability of the IBP protocol and these scalability implications may need to be explicitly addressed.&lt;br /&gt;
&lt;br /&gt;
- Dan 1/24/08&lt;br /&gt;
== NFU checksum approach ==&lt;br /&gt;
*It has also been suggested that NFUs could accommodate any generic hashing approach that the end user wants to implement.&lt;br /&gt;
** the NFU operation would read data from disk via localhost (can NFU talk to the depot internally?) &lt;br /&gt;
*This would be much slower than an algorithm integrated into the depot.&lt;br /&gt;
*A depot internal checksum doesn't stop the use of NFU checksums.&lt;br /&gt;
**excessive NFU usage could hamper depot performance&lt;br /&gt;
&lt;br /&gt;
- Dan 1/28/08&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=Exnode_specification&amp;diff=3215</id>
		<title>Exnode specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=Exnode_specification&amp;diff=3215"/>
		<updated>2008-01-29T16:49:30Z</updated>

		<summary type="html">&lt;p&gt;Dano: /* Schema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The exnode specification is implied by current usage in L-Store and LoRS.&lt;br /&gt;
&lt;br /&gt;
[[Example LoRS exnode xml file]]&lt;br /&gt;
* 1 namespace: exnode&lt;br /&gt;
* 6 elements: exnode, mapping, metadata, read, write, manage&lt;br /&gt;
* element metadata uses 2 attibutes: name, type&lt;br /&gt;
** 5 values used for attribute &amp;quot;name:&amp;quot; alloc_length, alloc_offset, e2e_blocksize, exnode_offset, logical_length&lt;br /&gt;
** 1 value used for attribute &amp;quot;type:&amp;quot; integer&lt;br /&gt;
&lt;br /&gt;
[[Example L-Store exnode xml file -- parity off]]&lt;br /&gt;
&lt;br /&gt;
[[Example L-Store exnode xml file -- with parity blocks]]&lt;br /&gt;
*original implementation -- being modified&lt;br /&gt;
&lt;br /&gt;
== Schema ==&lt;br /&gt;
&lt;br /&gt;
The exnode xml is fairly unstructured and the functionality of a schema is minimal.&lt;br /&gt;
&lt;br /&gt;
[[Simplified xml file]]&lt;br /&gt;
*(removed xmlns to view structure more clearly)&lt;br /&gt;
&lt;br /&gt;
[[Simple schema]]&lt;br /&gt;
*In this example schema&lt;br /&gt;
**The schema shows that only the element &amp;quot;mapping&amp;quot; has required elements.&lt;br /&gt;
**The element metadata's use of attributes is unrestricted.&lt;br /&gt;
**The only re-used type is the IBP_capability (read,write,manage)&lt;br /&gt;
*extra-schema assumptions&lt;br /&gt;
**The exnode mapping order corresponds to the file block order&lt;br /&gt;
*L-Store additions&lt;br /&gt;
**element &amp;quot;function&amp;quot; (a tmp space holder to bypass a java bug)&lt;br /&gt;
**erasure metadata attribute &amp;quot;name&amp;quot; with a value of &amp;quot;parity slice size&amp;quot;&lt;br /&gt;
**element &amp;quot;parity&amp;quot; is the mapping for the parity block if parity slice size != -1&lt;br /&gt;
***the parity mapping immediately follows the data mapping&lt;br /&gt;
&lt;br /&gt;
== Erasure codings ==&lt;br /&gt;
*L-Store writes data in its original format (possibly encrypted, etc), just like LoRS.&lt;br /&gt;
**These blocks can be read directly by LoRS.&lt;br /&gt;
*L-Store also writes extra erasure blocks to recover lost blocks.&lt;br /&gt;
**the XOR-ing to generate erasure block is calculated on the depots&lt;br /&gt;
***nfu operation stored on the depot&lt;br /&gt;
**erasure blocks are also stored in the exnode file&lt;br /&gt;
**erasure blocks are only useful to the data-management area and not the data-client (see diagram)&lt;br /&gt;
**erasure blocks constitute an extension of the base (LoRS) exnode concept (or schema)&lt;br /&gt;
*L-Store can write a LoRS compatible exnode file that excludes the erasure allocations.&lt;br /&gt;
**LoRS compatible (the base schema)&lt;br /&gt;
**LoRS does not have access to L-Store's capability to recover a block&lt;br /&gt;
*The L-Store data-client (Lstcp) has no block recovery capability.&lt;br /&gt;
*data recovery, data warming, etc all data-management tasks, not data-client task.&lt;br /&gt;
&lt;br /&gt;
== Data client API &amp;amp; interfaces ==&lt;br /&gt;
*command line tools for file management&lt;br /&gt;
**file movement&lt;br /&gt;
**file replication, augment, trim&lt;br /&gt;
*command line tools for namespace management&lt;br /&gt;
**list files&lt;br /&gt;
**create directories, etc&lt;br /&gt;
*LoRS API&lt;br /&gt;
**uses the base exnode schema (LoRS)&lt;br /&gt;
**reads local exnode files&lt;br /&gt;
**talks to LoDN with a combined http:/LoDN protocol&lt;br /&gt;
**C/C++ Posix and posix-like API&lt;br /&gt;
*Lstcp API (not developed yet)&lt;br /&gt;
**does not parse exnodes?&lt;br /&gt;
**talks to L-Server with the L-Store protocol&lt;br /&gt;
**receives IBP commands individually from L-Server?&lt;br /&gt;
***sends these commands directly to IBP depots?&lt;br /&gt;
*typical C/C++ API needs (proposed)&lt;br /&gt;
**simple offsets and lengths&lt;br /&gt;
**non-blocked (vector) reads&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=Exnode_specification&amp;diff=3214</id>
		<title>Exnode specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=Exnode_specification&amp;diff=3214"/>
		<updated>2008-01-29T16:47:37Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The exnode specification is implied by current usage in L-Store and LoRS.&lt;br /&gt;
&lt;br /&gt;
[[Example LoRS exnode xml file]]&lt;br /&gt;
* 1 namespace: exnode&lt;br /&gt;
* 6 elements: exnode, mapping, metadata, read, write, manage&lt;br /&gt;
* element metadata uses 2 attibutes: name, type&lt;br /&gt;
** 5 values used for attribute &amp;quot;name:&amp;quot; alloc_length, alloc_offset, e2e_blocksize, exnode_offset, logical_length&lt;br /&gt;
** 1 value used for attribute &amp;quot;type:&amp;quot; integer&lt;br /&gt;
&lt;br /&gt;
[[Example L-Store exnode xml file -- parity off]]&lt;br /&gt;
&lt;br /&gt;
[[Example L-Store exnode xml file -- with parity blocks]]&lt;br /&gt;
*original implementation -- being modified&lt;br /&gt;
&lt;br /&gt;
== Schema ==&lt;br /&gt;
&lt;br /&gt;
The exnode xml is fairly unstructured and the functionality of a schema is minimal.&lt;br /&gt;
&lt;br /&gt;
[[Simplified xml file]]&lt;br /&gt;
*(removed xmlns to view structure more clearly)&lt;br /&gt;
&lt;br /&gt;
[[Simple schema]]&lt;br /&gt;
*In this example schema&lt;br /&gt;
**The schema shows that only the element &amp;quot;mapping&amp;quot; has required elements.&lt;br /&gt;
**The element metadata's use of attributes is unrestricted.&lt;br /&gt;
**The only re-used type is the IBP_capability (read,write,manage)&lt;br /&gt;
*extra-schema assumptions&lt;br /&gt;
**The exnode mapping order corresponds to the file block order&lt;br /&gt;
*L-Store additions&lt;br /&gt;
**element &amp;quot;function&amp;quot; (a tmp space holder to bypass a java bug)&lt;br /&gt;
**erasure metadata &amp;quot;parity slice size&amp;quot;&lt;br /&gt;
**element &amp;quot;parity&amp;quot; is the mapping for the parity block if parity slice size != -1&lt;br /&gt;
***the parity mapping immediately follows the data mapping&lt;br /&gt;
== Erasure codings ==&lt;br /&gt;
*L-Store writes data in its original format (possibly encrypted, etc), just like LoRS.&lt;br /&gt;
**These blocks can be read directly by LoRS.&lt;br /&gt;
*L-Store also writes extra erasure blocks to recover lost blocks.&lt;br /&gt;
**the XOR-ing to generate erasure block is calculated on the depots&lt;br /&gt;
***nfu operation stored on the depot&lt;br /&gt;
**erasure blocks are also stored in the exnode file&lt;br /&gt;
**erasure blocks are only useful to the data-management area and not the data-client (see diagram)&lt;br /&gt;
**erasure blocks constitute an extension of the base (LoRS) exnode concept (or schema)&lt;br /&gt;
*L-Store can write a LoRS compatible exnode file that excludes the erasure allocations.&lt;br /&gt;
**LoRS compatible (the base schema)&lt;br /&gt;
**LoRS does not have access to L-Store's capability to recover a block&lt;br /&gt;
*The L-Store data-client (Lstcp) has no block recovery capability.&lt;br /&gt;
*data recovery, data warming, etc all data-management tasks, not data-client task.&lt;br /&gt;
&lt;br /&gt;
== Data client API &amp;amp; interfaces ==&lt;br /&gt;
*command line tools for file management&lt;br /&gt;
**file movement&lt;br /&gt;
**file replication, augment, trim&lt;br /&gt;
*command line tools for namespace management&lt;br /&gt;
**list files&lt;br /&gt;
**create directories, etc&lt;br /&gt;
*LoRS API&lt;br /&gt;
**uses the base exnode schema (LoRS)&lt;br /&gt;
**reads local exnode files&lt;br /&gt;
**talks to LoDN with a combined http:/LoDN protocol&lt;br /&gt;
**C/C++ Posix and posix-like API&lt;br /&gt;
*Lstcp API (not developed yet)&lt;br /&gt;
**does not parse exnodes?&lt;br /&gt;
**talks to L-Server with the L-Store protocol&lt;br /&gt;
**receives IBP commands individually from L-Server?&lt;br /&gt;
***sends these commands directly to IBP depots?&lt;br /&gt;
*typical C/C++ API needs (proposed)&lt;br /&gt;
**simple offsets and lengths&lt;br /&gt;
**non-blocked (vector) reads&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=Exnode_specification&amp;diff=3213</id>
		<title>Exnode specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=Exnode_specification&amp;diff=3213"/>
		<updated>2008-01-29T16:45:53Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The exnode specification is implied by current usage in L-Store and LoRS.&lt;br /&gt;
&lt;br /&gt;
[[Example LoRS exnode xml file]]&lt;br /&gt;
* 1 namespace: exnode&lt;br /&gt;
* 6 elements: exnode, mapping, metadata, read, write, manage&lt;br /&gt;
* element metadata uses 2 attibutes: name, type&lt;br /&gt;
** 5 attribute name values: alloc_length, alloc_offset, e2e_blocksize, exnode_offset, logical_length&lt;br /&gt;
** 1 attribute type value: integer&lt;br /&gt;
&lt;br /&gt;
[[Example L-Store exnode xml file -- parity off]]&lt;br /&gt;
&lt;br /&gt;
[[Example L-Store exnode xml file -- with parity blocks]]&lt;br /&gt;
*original implementation -- being modified&lt;br /&gt;
&lt;br /&gt;
== Schema ==&lt;br /&gt;
&lt;br /&gt;
The exnode xml is fairly unstructured and the functionality of a schema is minimal.&lt;br /&gt;
&lt;br /&gt;
[[Simplified xml file]]&lt;br /&gt;
*(removed xmlns to view structure more clearly)&lt;br /&gt;
&lt;br /&gt;
[[Simple schema]]&lt;br /&gt;
*In this example schema&lt;br /&gt;
**The schema shows that only the element &amp;quot;mapping&amp;quot; has required elements.&lt;br /&gt;
**The element metadata's use of attributes is unrestricted.&lt;br /&gt;
**The only re-used type is the IBP_capability (read,write,manage)&lt;br /&gt;
*extra-schema assumptions&lt;br /&gt;
**The exnode mapping order corresponds to the file block order&lt;br /&gt;
*L-Store additions&lt;br /&gt;
**element &amp;quot;function&amp;quot; (a tmp space holder to bypass a java bug)&lt;br /&gt;
**erasure metadata &amp;quot;parity slice size&amp;quot;&lt;br /&gt;
**element &amp;quot;parity&amp;quot; is the mapping for the parity block if parity slice size != -1&lt;br /&gt;
***the parity mapping immediately follows the data mapping&lt;br /&gt;
== Erasure codings ==&lt;br /&gt;
*L-Store writes data in its original format (possibly encrypted, etc), just like LoRS.&lt;br /&gt;
**These blocks can be read directly by LoRS.&lt;br /&gt;
*L-Store also writes extra erasure blocks to recover lost blocks.&lt;br /&gt;
**the XOR-ing to generate erasure block is calculated on the depots&lt;br /&gt;
***nfu operation stored on the depot&lt;br /&gt;
**erasure blocks are also stored in the exnode file&lt;br /&gt;
**erasure blocks are only useful to the data-management area and not the data-client (see diagram)&lt;br /&gt;
**erasure blocks constitute an extension of the base (LoRS) exnode concept (or schema)&lt;br /&gt;
*L-Store can write a LoRS compatible exnode file that excludes the erasure allocations.&lt;br /&gt;
**LoRS compatible (the base schema)&lt;br /&gt;
**LoRS does not have access to L-Store's capability to recover a block&lt;br /&gt;
*The L-Store data-client (Lstcp) has no block recovery capability.&lt;br /&gt;
*data recovery, data warming, etc all data-management tasks, not data-client task.&lt;br /&gt;
&lt;br /&gt;
== Data client API &amp;amp; interfaces ==&lt;br /&gt;
*command line tools for file management&lt;br /&gt;
**file movement&lt;br /&gt;
**file replication, augment, trim&lt;br /&gt;
*command line tools for namespace management&lt;br /&gt;
**list files&lt;br /&gt;
**create directories, etc&lt;br /&gt;
*LoRS API&lt;br /&gt;
**uses the base exnode schema (LoRS)&lt;br /&gt;
**reads local exnode files&lt;br /&gt;
**talks to LoDN with a combined http:/LoDN protocol&lt;br /&gt;
**C/C++ Posix and posix-like API&lt;br /&gt;
*Lstcp API (not developed yet)&lt;br /&gt;
**does not parse exnodes?&lt;br /&gt;
**talks to L-Server with the L-Store protocol&lt;br /&gt;
**receives IBP commands individually from L-Server?&lt;br /&gt;
***sends these commands directly to IBP depots?&lt;br /&gt;
*typical C/C++ API needs (proposed)&lt;br /&gt;
**simple offsets and lengths&lt;br /&gt;
**non-blocked (vector) reads&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=Exnode_specification&amp;diff=3212</id>
		<title>Exnode specification</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=Exnode_specification&amp;diff=3212"/>
		<updated>2008-01-29T16:44:16Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The exnode specification is implied by current usage in L-Store and LoRS.&lt;br /&gt;
&lt;br /&gt;
[[Example LoRS exnode xml file]]&lt;br /&gt;
* 1 namespace: exnode&lt;br /&gt;
* 6 elements: exnode, mapping, metadata, read, write, manage&lt;br /&gt;
* element metadata uses 2 attibutes: name, type&lt;br /&gt;
** 5 attribute name values: alloc_length, alloc&lt;br /&gt;
&lt;br /&gt;
[[Example L-Store exnode xml file -- parity off]]&lt;br /&gt;
&lt;br /&gt;
[[Example L-Store exnode xml file -- with parity blocks]]&lt;br /&gt;
*original implementation -- being modified&lt;br /&gt;
&lt;br /&gt;
== Schema ==&lt;br /&gt;
&lt;br /&gt;
The exnode xml is fairly unstructured and the functionality of a schema is minimal.&lt;br /&gt;
&lt;br /&gt;
[[Simplified xml file]]&lt;br /&gt;
*(removed xmlns to view structure more clearly)&lt;br /&gt;
&lt;br /&gt;
[[Simple schema]]&lt;br /&gt;
*In this example schema&lt;br /&gt;
**The schema shows that only the element &amp;quot;mapping&amp;quot; has required elements.&lt;br /&gt;
**The element metadata's use of attributes is unrestricted.&lt;br /&gt;
**The only re-used type is the IBP_capability (read,write,manage)&lt;br /&gt;
*extra-schema assumptions&lt;br /&gt;
**The exnode mapping order corresponds to the file block order&lt;br /&gt;
*L-Store additions&lt;br /&gt;
**element &amp;quot;function&amp;quot; (a tmp space holder to bypass a java bug)&lt;br /&gt;
**erasure metadata &amp;quot;parity slice size&amp;quot;&lt;br /&gt;
**element &amp;quot;parity&amp;quot; is the mapping for the parity block if parity slice size != -1&lt;br /&gt;
***the parity mapping immediately follows the data mapping&lt;br /&gt;
== Erasure codings ==&lt;br /&gt;
*L-Store writes data in its original format (possibly encrypted, etc), just like LoRS.&lt;br /&gt;
**These blocks can be read directly by LoRS.&lt;br /&gt;
*L-Store also writes extra erasure blocks to recover lost blocks.&lt;br /&gt;
**the XOR-ing to generate erasure block is calculated on the depots&lt;br /&gt;
***nfu operation stored on the depot&lt;br /&gt;
**erasure blocks are also stored in the exnode file&lt;br /&gt;
**erasure blocks are only useful to the data-management area and not the data-client (see diagram)&lt;br /&gt;
**erasure blocks constitute an extension of the base (LoRS) exnode concept (or schema)&lt;br /&gt;
*L-Store can write a LoRS compatible exnode file that excludes the erasure allocations.&lt;br /&gt;
**LoRS compatible (the base schema)&lt;br /&gt;
**LoRS does not have access to L-Store's capability to recover a block&lt;br /&gt;
*The L-Store data-client (Lstcp) has no block recovery capability.&lt;br /&gt;
*data recovery, data warming, etc all data-management tasks, not data-client task.&lt;br /&gt;
&lt;br /&gt;
== Data client API &amp;amp; interfaces ==&lt;br /&gt;
*command line tools for file management&lt;br /&gt;
**file movement&lt;br /&gt;
**file replication, augment, trim&lt;br /&gt;
*command line tools for namespace management&lt;br /&gt;
**list files&lt;br /&gt;
**create directories, etc&lt;br /&gt;
*LoRS API&lt;br /&gt;
**uses the base exnode schema (LoRS)&lt;br /&gt;
**reads local exnode files&lt;br /&gt;
**talks to LoDN with a combined http:/LoDN protocol&lt;br /&gt;
**C/C++ Posix and posix-like API&lt;br /&gt;
*Lstcp API (not developed yet)&lt;br /&gt;
**does not parse exnodes?&lt;br /&gt;
**talks to L-Server with the L-Store protocol&lt;br /&gt;
**receives IBP commands individually from L-Server?&lt;br /&gt;
***sends these commands directly to IBP depots?&lt;br /&gt;
*typical C/C++ API needs (proposed)&lt;br /&gt;
**simple offsets and lengths&lt;br /&gt;
**non-blocked (vector) reads&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3211</id>
		<title>Talk:Development ideas</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3211"/>
		<updated>2008-01-29T15:57:37Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Data Integrity==&lt;br /&gt;
&lt;br /&gt;
*The idea of 64k chunks for checksums (subdividing an IBP allocation) is what's termed a hash list&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_list&lt;br /&gt;
*which can be extended to a multi-level hash tree&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree&lt;br /&gt;
&lt;br /&gt;
*One could imagine a 3-level tree&lt;br /&gt;
**a hash for each lowest-common-unit, say the commonly used 1K&lt;br /&gt;
**a single top hash for each IBP allocation&lt;br /&gt;
**a single top hash for the file&lt;br /&gt;
***This is problematic since a file can be replicated with different allocation boundaries leading to different top hash for the file.&lt;br /&gt;
&lt;br /&gt;
*It seems to be common in distributed systems to use a binary hash tree rather than a hash list -- even on individual data blocks.&lt;br /&gt;
**Tiger Tree Hash TTH is currently the most? popular since it provides high security with a relatively low cpu cost&lt;br /&gt;
**http://en.wikipedia.org/wiki/Tiger_%28hash%29&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree#Tiger_tree_hash&lt;br /&gt;
**http://en.wikipedia.org/wiki/List_of_hash_functions#Computational_costs_of_CRCs_vs_Hashes&lt;br /&gt;
&lt;br /&gt;
If the IBP protocol were to be extended to support a single specific checksum method it would possibly be something like TTH.   In this example, this would mean TTH usage becomes part of the IBP protocol specification and both the IBP client and IBP depot would be required to implement it.  The next level tools and APIs like LoRS and libxio and lstcp would not be required to know anything about IBP internal checksums, but they could optionally use it.  &lt;br /&gt;
*If checksumming were optional, additional IBP commands to turn it on and off would be needed, and interoperability with non-checksumming depots becomes an issue.&lt;br /&gt;
*Do the hashes go into the exnode, or are they only stored in the depot allocation tables?&lt;br /&gt;
*Since the IBP client needs to do the checksumming it needs to be emphasized that &lt;br /&gt;
**the checksum method becomes part of the IBP protocol itself &lt;br /&gt;
**and is not a hidden internal operation.&lt;br /&gt;
**The checksum method is exposed at least to the IBP client&lt;br /&gt;
**This may have significant implications to the scalability of the IBP protocol and these scalability implications may need to be explicitly addressed.&lt;br /&gt;
&lt;br /&gt;
- Dan 1/24/08&lt;br /&gt;
== NFU checksum approach ==&lt;br /&gt;
*It has also been suggested that NFUs could accommodate any generic hashing approach that the end user wants to implement.&lt;br /&gt;
** the NFU operation would read data from disk via localhost (can NFU talk to the depot internally?) &lt;br /&gt;
*This would be much slower than an algorithm integrated into the depot.&lt;br /&gt;
*A depot internal checksum doesn't stop the use of NFU checksums.&lt;br /&gt;
**excessive NFU usage could hamper depot performance&lt;br /&gt;
&lt;br /&gt;
- Dan 1/28/08&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3210</id>
		<title>Talk:Development ideas</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3210"/>
		<updated>2008-01-29T15:46:48Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Data Integrity==&lt;br /&gt;
&lt;br /&gt;
*The idea of 64k chunks for checksums (subdividing an IBP allocation) is what's termed a hash list&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_list&lt;br /&gt;
*which can be extended to a multi-level hash tree&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree&lt;br /&gt;
&lt;br /&gt;
*One could imagine a 3-level tree&lt;br /&gt;
**a hash for each lowest-common-unit, say the commonly used 1K&lt;br /&gt;
**a single top hash for each IBP allocation&lt;br /&gt;
**a single top hash for the file&lt;br /&gt;
***This is problematic since a file can be replicated with different allocation boundaries leading to different top hash for the file.&lt;br /&gt;
&lt;br /&gt;
*It seems to be common in distributed systems to use a binary hash tree rather than a hash list -- even on individual data blocks.&lt;br /&gt;
**Tiger Tree Hash TTH is currently the most? popular since it provides high security with a relatively low cpu cost&lt;br /&gt;
**http://en.wikipedia.org/wiki/Tiger_%28hash%29&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree#Tiger_tree_hash&lt;br /&gt;
**http://en.wikipedia.org/wiki/List_of_hash_functions#Computational_costs_of_CRCs_vs_Hashes&lt;br /&gt;
&lt;br /&gt;
If the IBP protocol were to be extended to support a single specific checksum method it would possibly be something like TTH.   In this example, this would mean TTH usage becomes part of the IBP protocol specification and both the IBP client and IBP depot would be required to implement it.  The next level tools and APIs like LoRS and libxio and lstcp would not be required to know anything about IBP internal checksums, but they could optionally use it.  &lt;br /&gt;
*If checksumming were optional, additional IBP commands to turn it on and off would be needed, and interoperability with non-checksumming depots becomes an issue.&lt;br /&gt;
*Do the hashes go into the exnode, or are they only stored in the depot allocation tables?&lt;br /&gt;
*Since the IBP client needs to do the checksumming it needs to be emphasized that the checksum method becomes part of the IBP protocol itself and is not a hidden internal operation.&lt;br /&gt;
**The checksum method is exposed at least to the IBP client&lt;br /&gt;
**This may have significant implications to the scalability of the IBP protocol and these scalability implications may need to be explicitly addressed.&lt;br /&gt;
&lt;br /&gt;
- Dan 1/24/08&lt;br /&gt;
== NFU checksum approach ==&lt;br /&gt;
*It has also been suggested that NFUs could accommodate any generic hashing approach that the end user wants to implement.&lt;br /&gt;
** the NFU operation would read data from disk via localhost (can NFU talk to the depot internally?) &lt;br /&gt;
*This would be much slower than an algorithm integrated into the depot.&lt;br /&gt;
*A depot internal checksum doesn't stop the use of NFU checksums.&lt;br /&gt;
**excessive NFU usage could hamper depot performance&lt;br /&gt;
&lt;br /&gt;
- Dan 1/28/08&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3209</id>
		<title>Talk:Development ideas</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3209"/>
		<updated>2008-01-29T15:14:15Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Data Integrity==&lt;br /&gt;
&lt;br /&gt;
*The idea of 64k chunks for checksums (subdividing an IBP allocation) is what's termed a hash list&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_list&lt;br /&gt;
*which can be extended to a multi-level hash tree&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree&lt;br /&gt;
&lt;br /&gt;
*One could imagine a 3-level tree&lt;br /&gt;
**a hash for each lowest-common-unit, say the commonly used 1K&lt;br /&gt;
**a single top hash for each IBP allocation&lt;br /&gt;
**a single top hash for the file&lt;br /&gt;
***This is problematic since a file can be replicated with different allocation sizes and boundaries.&lt;br /&gt;
&lt;br /&gt;
*It seems to be common in distributed systems to use a binary hash tree rather than a hash list -- even on individual data blocks.&lt;br /&gt;
**Tiger Tree Hash TTH is currently the most? popular since it provides high security with a relatively low cpu cost&lt;br /&gt;
**http://en.wikipedia.org/wiki/Tiger_%28hash%29&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree#Tiger_tree_hash&lt;br /&gt;
**http://en.wikipedia.org/wiki/List_of_hash_functions#Computational_costs_of_CRCs_vs_Hashes&lt;br /&gt;
&lt;br /&gt;
If the IBP protocol were to be extended to support a single specific checksum method it would possibly be something like TTH.   In this example, this would mean TTH usage becomes part of the IBP protocol specification and both the IBP client and IBP depot would be required to implement it.  The next level tools and APIs like LoRS and libxio and lstcp would not be required to know anything about IBP internal checksums, but they could optionally use it.  &lt;br /&gt;
*If checksumming were optional, additional IBP commands to turn it on and off would be needed, and interoperability with non-checksumming depots becomes an issue.&lt;br /&gt;
*Do the hashes go into the exnode, or are they only stored in the depot allocation tables?&lt;br /&gt;
*Since the IBP client needs to do the checksumming it needs to be emphasized that the checksum method becomes part of the IBP protocol itself and is not a hidden internal operation.&lt;br /&gt;
**The checksum method is exposed at least to the IBP client&lt;br /&gt;
**This may have significant implications to the scalability of the IBP protocol and these scalability implications may need to be explicitly addressed.&lt;br /&gt;
&lt;br /&gt;
- Dan 1/24/08&lt;br /&gt;
== NFU checksum approach ==&lt;br /&gt;
*It has also been suggested that NFUs could accommodate any generic hashing approach that the end user wants to implement.&lt;br /&gt;
** the NFU operation would read data from disk via localhost (can NFU talk to the depot internally?) &lt;br /&gt;
*This would be much slower than an algorithm integrated into the depot.&lt;br /&gt;
*A depot internal checksum doesn't stop the use of NFU checksums.&lt;br /&gt;
**excessive NFU usage could hamper depot performance&lt;br /&gt;
&lt;br /&gt;
- Dan 1/28/08&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3208</id>
		<title>Talk:Development ideas</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3208"/>
		<updated>2008-01-29T14:59:57Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Data Integrity==&lt;br /&gt;
&lt;br /&gt;
*The idea of 64k chunks for checksums (subdividing an IBP allocation) is what's termed a hash list&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_list&lt;br /&gt;
*which can be extended to a multi-level hash tree&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree&lt;br /&gt;
&lt;br /&gt;
*One could imagine a 3-level tree&lt;br /&gt;
**a hash for each lowest-common-unit, say the commonly used 1K&lt;br /&gt;
**a single top hash for each IBP allocation&lt;br /&gt;
**a single top hash for the file&lt;br /&gt;
**or more levels&lt;br /&gt;
&lt;br /&gt;
*It seems to be common in distributed systems to use a binary hash tree rather than a hash list -- even on individual data blocks.&lt;br /&gt;
**Tiger Tree Hash TTH is currently the most? popular since it provides high security with a relatively low cpu cost&lt;br /&gt;
**http://en.wikipedia.org/wiki/Tiger_%28hash%29&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree#Tiger_tree_hash&lt;br /&gt;
**http://en.wikipedia.org/wiki/List_of_hash_functions#Computational_costs_of_CRCs_vs_Hashes&lt;br /&gt;
&lt;br /&gt;
If the IBP protocol were to be extended to support a single specific checksum method it would possibly be something like TTH.   In this example, this would mean TTH usage becomes part of the IBP protocol specification and both the IBP client and IBP depot would be required to implement it.  The next level tools and APIs like LoRS and libxio and lstcp would not be required to know anything about IBP internal checksums, but they could optionally use it.  &lt;br /&gt;
*If checksumming were optional, additional IBP commands to turn it on and off would be needed, and interoperability with non-checksumming depots becomes an issue.&lt;br /&gt;
*Do the hashes go into the exnode, or are they only stored in the depot allocation tables?&lt;br /&gt;
*Since the IBP client needs to do the checksumming it needs to be emphasized that the checksum method becomes part of the IBP protocol itself and is not a hidden internal operation.&lt;br /&gt;
**The checksum method is exposed at least to the IBP client&lt;br /&gt;
**This may have significant implications to the scalability of the IBP protocol and these scalability implications may need to be explicitly addressed.&lt;br /&gt;
&lt;br /&gt;
- Dan 1/24/08&lt;br /&gt;
== NFU checksum approach ==&lt;br /&gt;
*It has also been suggested that NFUs could accommodate any generic hashing approach that the end user wants to implement.&lt;br /&gt;
** the NFU operation would read data from disk via localhost (can NFU talk to the depot internally?) &lt;br /&gt;
*This would be much slower than an algorithm integrated into the depot.&lt;br /&gt;
*A depot internal checksum doesn't stop the use of NFU checksums.&lt;br /&gt;
**excessive NFU usage could hamper depot performance&lt;br /&gt;
&lt;br /&gt;
- Dan 1/28/08&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3198</id>
		<title>Talk:Development ideas</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3198"/>
		<updated>2008-01-28T22:43:57Z</updated>

		<summary type="html">&lt;p&gt;Dano: /* NFU checksum approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Data Integrity==&lt;br /&gt;
&lt;br /&gt;
*The idea of 64k chunks for checksums (subdividing an IBP allocation) is what's termed a hash list&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_list&lt;br /&gt;
*which can be extended to a multi-level hash tree&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree&lt;br /&gt;
&lt;br /&gt;
*One could imagine a 3-level tree&lt;br /&gt;
**a hash for each lowest-common-unit, say the commonly used 1K&lt;br /&gt;
**a single top hash for each IBP allocation&lt;br /&gt;
**a single top hash for the file&lt;br /&gt;
**or more levels&lt;br /&gt;
&lt;br /&gt;
*It seems to be common in distributed systems to use a binary hash tree rather than a hash list -- even on individual data blocks.&lt;br /&gt;
**Tiger Tree Hash TTH is currently the most? popular since it provides high security with a relatively low cpu cost&lt;br /&gt;
**http://en.wikipedia.org/wiki/Tiger_%28hash%29&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree#Tiger_tree_hash&lt;br /&gt;
**http://en.wikipedia.org/wiki/List_of_hash_functions#Computational_costs_of_CRCs_vs_Hashes&lt;br /&gt;
&lt;br /&gt;
If the IBP protocol were to be extended to support a single specific checksum method it would possibly be something like TTH.   In this example, this would mean TTH usage becomes part of the IBP protocol specification and both the IBP client and IBP depot would be required to implement it.  The next level tools and APIs like LoRS and libxio and lstcp would not be required to know anything about IBP internal checksums, but they could optionally use it.  &lt;br /&gt;
*If checksumming were optional, additional IBP commands to turn it on and off would be needed, and interoperability with non-checksumming depots becomes and issue.&lt;br /&gt;
*Do the hashes go into the exnode, or are they only stored in the depot allocation tables?&lt;br /&gt;
*Since the IBP client needs to do the checksumming it needs to be emphasized that the checksum method becomes part of the IBP protocol itself and is not a hidden internal operation.&lt;br /&gt;
**The checksum method is exposed at least to the IBP client&lt;br /&gt;
**This may have significant implications to the scalability of the IBP protocol and these scalability implications may need to be explicitly addressed.&lt;br /&gt;
&lt;br /&gt;
- Dan 1/24/08&lt;br /&gt;
== NFU checksum approach ==&lt;br /&gt;
*It has also been suggested that NFUs could accommodate any generic hashing approach that the end user wants to implement.&lt;br /&gt;
** the NFU operation would read data from disk via localhost (can NFU talk to the depot internally?) &lt;br /&gt;
*This would be much slower than an algorithm integrated into the depot.&lt;br /&gt;
*A depot internal checksum doesn't stop the use of NFU checksums.&lt;br /&gt;
**excessive NFU usage could hamper depot performance&lt;br /&gt;
&lt;br /&gt;
- Dan 1/28/08&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3197</id>
		<title>Talk:Development ideas</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3197"/>
		<updated>2008-01-28T22:42:20Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Data Integrity==&lt;br /&gt;
&lt;br /&gt;
*The idea of 64k chunks for checksums (subdividing an IBP allocation) is what's termed a hash list&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_list&lt;br /&gt;
*which can be extended to a multi-level hash tree&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree&lt;br /&gt;
&lt;br /&gt;
*One could imagine a 3-level tree&lt;br /&gt;
**a hash for each lowest-common-unit, say the commonly used 1K&lt;br /&gt;
**a single top hash for each IBP allocation&lt;br /&gt;
**a single top hash for the file&lt;br /&gt;
**or more levels&lt;br /&gt;
&lt;br /&gt;
*It seems to be common in distributed systems to use a binary hash tree rather than a hash list -- even on individual data blocks.&lt;br /&gt;
**Tiger Tree Hash TTH is currently the most? popular since it provides high security with a relatively low cpu cost&lt;br /&gt;
**http://en.wikipedia.org/wiki/Tiger_%28hash%29&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree#Tiger_tree_hash&lt;br /&gt;
**http://en.wikipedia.org/wiki/List_of_hash_functions#Computational_costs_of_CRCs_vs_Hashes&lt;br /&gt;
&lt;br /&gt;
If the IBP protocol were to be extended to support a single specific checksum method it would possibly be something like TTH.   In this example, this would mean TTH usage becomes part of the IBP protocol specification and both the IBP client and IBP depot would be required to implement it.  The next level tools and APIs like LoRS and libxio and lstcp would not be required to know anything about IBP internal checksums, but they could optionally use it.  &lt;br /&gt;
*If checksumming were optional, additional IBP commands to turn it on and off would be needed, and interoperability with non-checksumming depots becomes and issue.&lt;br /&gt;
*Do the hashes go into the exnode, or are they only stored in the depot allocation tables?&lt;br /&gt;
*Since the IBP client needs to do the checksumming it needs to be emphasized that the checksum method becomes part of the IBP protocol itself and is not a hidden internal operation.&lt;br /&gt;
**The checksum method is exposed at least to the IBP client&lt;br /&gt;
**This may have significant implications to the scalability of the IBP protocol and these scalability implications may need to be explicitly addressed.&lt;br /&gt;
&lt;br /&gt;
- Dan 1/24/08&lt;br /&gt;
== NFU checksum approach ==&lt;br /&gt;
*It has also been suggested that NFUs could accommodate any generic hashing approach that the end user wants to implement.&lt;br /&gt;
*This would be much slower than an algorithm integrated into the depot.&lt;br /&gt;
*A depot internal checksum doesn't stop the use of NFU checksums.&lt;br /&gt;
**excessive NFU usage could hamper depot performance&lt;br /&gt;
&lt;br /&gt;
- Dan 1/28/08&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3196</id>
		<title>Talk:Development ideas</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3196"/>
		<updated>2008-01-28T22:41:24Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Data Integrity==&lt;br /&gt;
&lt;br /&gt;
*The idea of 64k chunks for checksums (subdividing an IBP allocation) is what's termed a hash list&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_list&lt;br /&gt;
*which can be extended to a multi-level hash tree&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree&lt;br /&gt;
&lt;br /&gt;
*One could imagine a 3-level tree&lt;br /&gt;
**a hash for each lowest-common-unit, say the commonly used 1K&lt;br /&gt;
**a single top hash for each IBP allocation&lt;br /&gt;
**a single top hash for the file&lt;br /&gt;
**or more levels&lt;br /&gt;
&lt;br /&gt;
*It seems to be common in distributed systems to use a binary hash tree rather than a hash list -- even on individual data blocks.&lt;br /&gt;
**Tiger Tree Hash TTH is currently the most? popular since it provides high security with a relatively low cpu cost&lt;br /&gt;
**http://en.wikipedia.org/wiki/Tiger_%28hash%29&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree#Tiger_tree_hash&lt;br /&gt;
**http://en.wikipedia.org/wiki/List_of_hash_functions#Computational_costs_of_CRCs_vs_Hashes&lt;br /&gt;
&lt;br /&gt;
If the IBP protocol were to be extended to support a single specific checksum method it would possibly be something like TTH.   In this example, this would mean TTH usage becomes part of the IBP protocol specification and both the IBP client and IBP depot would be required to implement it.  The next level tools and APIs like LoRS and libxio and lstcp would not be required to know anything about IBP internal checksums, but they could optionally use it.  &lt;br /&gt;
*If checksumming were optional, additional IBP commands to turn it on and off would be needed, and interoperability with non-checksumming depots becomes and issue.&lt;br /&gt;
*Do the hashes go into the exnode, or are they only stored in the depot allocation tables?&lt;br /&gt;
*Since the IBP client needs to do the checksumming it needs to be emphasized that the checksum method becomes part of the IBP protocol itself and is not a hidden internal operation.&lt;br /&gt;
**The checksum method is exposed at least to the IBP client&lt;br /&gt;
**This may have significant implications to the scalability of the IBP protocol and these scalability implications may need to be explicitly addressed.&lt;br /&gt;
&lt;br /&gt;
- Dan 1/24/08&lt;br /&gt;
== NFU checksum approach ==&lt;br /&gt;
*It has also been suggested that a java-based NFU approach could accommodate any generic hashing approach that the end user wants to implement.&lt;br /&gt;
*This will be much slower than an algorithm integrated into the depot.&lt;br /&gt;
*A depot internal checksum doesn't stop the use of NFU checksums.&lt;br /&gt;
**excessive NFU usage could hamper depot performance&lt;br /&gt;
&lt;br /&gt;
- Dan 1/28/08&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3195</id>
		<title>Talk:Development ideas</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3195"/>
		<updated>2008-01-28T22:40:51Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Data Integrity==&lt;br /&gt;
&lt;br /&gt;
*The idea of 64k chunks for checksums (subdividing an IBP allocation) is what's termed a hash list&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_list&lt;br /&gt;
*which can be extended to a multi-level hash tree&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree&lt;br /&gt;
&lt;br /&gt;
*One could imagine a 3-level tree&lt;br /&gt;
**a hash for each lowest-common-unit, say the commonly used 1K&lt;br /&gt;
**a single top hash for each IBP allocation&lt;br /&gt;
**a single top hash for the file&lt;br /&gt;
**or more levels&lt;br /&gt;
&lt;br /&gt;
*It seems to be common in distributed systems to use a binary hash tree rather than a hash list -- even on individual data blocks.&lt;br /&gt;
**Tiger Tree Hash TTH is currently the most? popular since it provides high security with a relatively low cpu cost&lt;br /&gt;
**http://en.wikipedia.org/wiki/Tiger_%28hash%29&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree#Tiger_tree_hash&lt;br /&gt;
**http://en.wikipedia.org/wiki/List_of_hash_functions#Computational_costs_of_CRCs_vs_Hashes&lt;br /&gt;
&lt;br /&gt;
If the IBP protocol were to be extended to support a single specific checksum method it would possibly be something like TTH.   In this example, this would mean TTH usage becomes part of the IBP protocol specification and both the IBP client and IBP depot would be required to implement it.  The next level tools and APIs like LoRS and libxio and lstcp would not be required to know anything about IBP internal checksums, but they could optionally use it.  &lt;br /&gt;
*If checksumming were optional, additional IBP commands to turn it on and off would be needed, and interoperability with non-checksumming depots becomes and issue.&lt;br /&gt;
*Do the hashes go into the exnode, or are they only stored in the depot allocation tables?&lt;br /&gt;
*Since the IBP client needs to do the checksumming it needs to be emphasized that the checksum method becomes part of the IBP protocol itself and is not a hidden internal operation.&lt;br /&gt;
**The checksum method is exposed at least to the IBP client&lt;br /&gt;
**This may have significant implications to the scalability of the IBP protocol and these scalability implications may need to be explicitly addressed.&lt;br /&gt;
&lt;br /&gt;
- Dan 1/24/08&lt;br /&gt;
&lt;br /&gt;
*It has also been suggested that a java-based NFU approach could accommodate any generic hashing approach that the end user wants to implement.&lt;br /&gt;
*This will be much slower than an algorithm integrated into the depot.&lt;br /&gt;
*A depot internal checksum doesn't stop the use of NFU checksums.&lt;br /&gt;
**excessive NFU usage could hamper depot performance&lt;br /&gt;
&lt;br /&gt;
- Dan 1/28/08&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3194</id>
		<title>Talk:Development ideas</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3194"/>
		<updated>2008-01-28T16:54:46Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Data Integrity==&lt;br /&gt;
&lt;br /&gt;
*The idea of 64k chunks for checksums (subdividing an IBP allocation) is what's termed a hash list&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_list&lt;br /&gt;
*which can be extended to a multi-level hash tree&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree&lt;br /&gt;
&lt;br /&gt;
*One could imagine a 3-level tree&lt;br /&gt;
**a hash for each lowest-common-unit, say the commonly used 1K&lt;br /&gt;
**a single top hash for each IBP allocation&lt;br /&gt;
**a single top hash for the file&lt;br /&gt;
**or more levels&lt;br /&gt;
&lt;br /&gt;
*It seems to be common in distributed systems to use a binary hash tree rather than a hash list -- even on individual data blocks.&lt;br /&gt;
**Tiger Tree Hash TTH is currently the most? popular since it provides high security with a relatively low cpu cost&lt;br /&gt;
**http://en.wikipedia.org/wiki/Tiger_%28hash%29&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree#Tiger_tree_hash&lt;br /&gt;
**http://en.wikipedia.org/wiki/List_of_hash_functions#Computational_costs_of_CRCs_vs_Hashes&lt;br /&gt;
&lt;br /&gt;
If the IBP protocol were to be extended to support a single specific checksum method it would possibly be something like TTH.   In this example, this would mean TTH usage becomes part of the IBP protocol specification and both the IBP client and IBP depot would be required to implement it.  The next level tools and APIs like LoRS and libxio and lstcp would not be required to know anything about IBP internal checksums, but they could optionally use it.  &lt;br /&gt;
*If checksumming were optional, additional IBP commands to turn it on and off would be needed, and interoperability with non-checksumming depots becomes and issue.&lt;br /&gt;
*Do the hashes go into the exnode, or are they only stored in the depot allocation tables?&lt;br /&gt;
&lt;br /&gt;
- Dan 1/24/08&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3171</id>
		<title>Talk:Development ideas</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3171"/>
		<updated>2008-01-25T10:24:00Z</updated>

		<summary type="html">&lt;p&gt;Dano: /* Data Integrity */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Data Integrity==&lt;br /&gt;
&lt;br /&gt;
*The idea of 64k chunks per allocation for checksums is what's termed a hash list&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_list&lt;br /&gt;
*which can be extended to a multi-level hash tree&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree&lt;br /&gt;
&lt;br /&gt;
*One could imagine a 3-level tree&lt;br /&gt;
**a hash for each lowest-common-unit, say the commonly used 1K&lt;br /&gt;
**a single top hash for each IBP allocation&lt;br /&gt;
**a single top hash for the file&lt;br /&gt;
**or more levels&lt;br /&gt;
&lt;br /&gt;
*It seems to be common in distributed systems to use a binary hash tree rather than a hash list -- even on individual data blocks.&lt;br /&gt;
**Tiger Tree Hash TTH is currently the most? popular since it provides high security with a relatively low cpu cost&lt;br /&gt;
**http://en.wikipedia.org/wiki/Tiger_%28hash%29&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree#Tiger_tree_hash&lt;br /&gt;
**http://en.wikipedia.org/wiki/List_of_hash_functions#Computational_costs_of_CRCs_vs_Hashes&lt;br /&gt;
&lt;br /&gt;
If the IBP protocol were to be extended to support a single specific checksum method it would possibly be something like TTH.   In this example, this would mean TTH usage becomes part of the IBP protocol specification and both the IBP client and IBP depot would be required to implement it.  The next level tools and APIs like LoRS and libxio and lstcp would not be required to know anything about IBP internal checksums, but they could optionally use it.  &lt;br /&gt;
*If checksumming were optional, additional IBP commands to turn it on and off would be needed, and interoperability with non-checksumming depots becomes and issue.&lt;br /&gt;
*Do the hashes go into the exnode, or are they only stored in the depot allocation tables?&lt;br /&gt;
&lt;br /&gt;
- Dan 1/24/08&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3170</id>
		<title>Talk:Development ideas</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3170"/>
		<updated>2008-01-25T10:23:42Z</updated>

		<summary type="html">&lt;p&gt;Dano: /* Data Integrity */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Data Integrity==&lt;br /&gt;
&lt;br /&gt;
*The idea of 64k chunks per allocation for checksums is what's termed a hash list&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_list&lt;br /&gt;
*which can be extended to a multi-level hash tree&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree&lt;br /&gt;
&lt;br /&gt;
*One could imagine a 3-level tree&lt;br /&gt;
**a hash for each lowest-common-unit, say the commonly used 1K&lt;br /&gt;
**a single top hash for each IBP allocation&lt;br /&gt;
**a single top hash for the file&lt;br /&gt;
**or more levels&lt;br /&gt;
&lt;br /&gt;
*It seems to be common in distributed systems to use a binary hash tree rather than a hash list -- even on individual data blocks.&lt;br /&gt;
**Tiger Tree Hash TTH is currently the most? popular since it provides high security with a relatively low cpu cost&lt;br /&gt;
**http://en.wikipedia.org/wiki/Tiger_%28hash%29&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree#Tiger_tree_hash&lt;br /&gt;
**http://en.wikipedia.org/wiki/List_of_hash_functions#Computational_costs_of_CRCs_vs_Hashes&lt;br /&gt;
&lt;br /&gt;
If the IBP protocol were to be extended to support a single specific checksum method it would possibly be something like TTH.   In this example, this would mean TTH usage becomes part of the IBP protocol specification and both the IBP client and IBP depot would be required to implement it.  The next level tools and APIs like LoRS and libxio and lstcp would not be required to know anything about IBP internal checksums, but they could optionally use it.  &lt;br /&gt;
*If checksumming were optional, additional IBP commands to turn it on and off would be needed, and interoperability with non-checksumming depots becomes and issue.&lt;br /&gt;
*Do the hashes go into the exnode, or are they only stored in the depot allocation tables.&lt;br /&gt;
&lt;br /&gt;
- Dan 1/24/08&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3169</id>
		<title>Talk:Development ideas</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3169"/>
		<updated>2008-01-25T10:22:24Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Data Integrity==&lt;br /&gt;
&lt;br /&gt;
*The idea of 64k chunks per allocation for checksums is what's termed a hash list&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_list&lt;br /&gt;
*which can be extended to a multi-level hash tree&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree&lt;br /&gt;
&lt;br /&gt;
*One could imagine a 3-level tree&lt;br /&gt;
**a hash for each lowest-common-unit, say the commonly used 1K&lt;br /&gt;
**a single top hash for each IBP allocation&lt;br /&gt;
**a single top hash for the file&lt;br /&gt;
**or more levels&lt;br /&gt;
&lt;br /&gt;
*It seems to be common in distributed systems to use a binary hash tree rather than a hash list -- even on individual data blocks.&lt;br /&gt;
**Tiger Tree Hash TTH is currently the most? popular since it provides high security with a relatively low cpu cost&lt;br /&gt;
**http://en.wikipedia.org/wiki/Tiger_%28hash%29&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree#Tiger_tree_hash&lt;br /&gt;
**http://en.wikipedia.org/wiki/List_of_hash_functions#Computational_costs_of_CRCs_vs_Hashes&lt;br /&gt;
&lt;br /&gt;
If the IBP protocol were to be extended to support a single specific checksum method it would possibly be something like TTH.   In this example, this would mean TTH usage becomes part of the IBP protocol specification and both the IBP client and IBP depot would be required to implement it.  The next level tools and APIs like LoRS and libxio and lstcp would not be required to know anything about IBP internal checksums, but they could optionally use it.  &lt;br /&gt;
*If checksumming were optional, additional IBP commands to turn it on and off would be needed, and interoperability with non-checksumming depots becomes and issue.&lt;br /&gt;
&lt;br /&gt;
- Dan 1/24/08&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3168</id>
		<title>Talk:Development ideas</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3168"/>
		<updated>2008-01-25T10:13:34Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Data Integrity==&lt;br /&gt;
&lt;br /&gt;
*The idea of 64k chunks per allocation for checksums is what's termed a hash list&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_list&lt;br /&gt;
*which can be extended to a multi-level hash tree&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree&lt;br /&gt;
&lt;br /&gt;
*One could imagine a 3-level tree&lt;br /&gt;
**a hash for each lowest-common-unit, say the commonly used 1K&lt;br /&gt;
**a single top hash for each IBP allocation&lt;br /&gt;
**a single top hash for the file&lt;br /&gt;
**or more levels&lt;br /&gt;
&lt;br /&gt;
*It seems to be common in distributed systems to use a binary hash tree rather than a hash list -- even on individual data blocks.&lt;br /&gt;
**Tiger Tree Hash TTH is currently the most? popular since it provides high security with a relatively low cpu cost&lt;br /&gt;
**http://en.wikipedia.org/wiki/Tiger_%28hash%29&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree#Tiger_tree_hash&lt;br /&gt;
**http://en.wikipedia.org/wiki/List_of_hash_functions#Computational_costs_of_CRCs_vs_Hashes&lt;br /&gt;
&lt;br /&gt;
If the IBP protocol were to be extended to support a single specific checksum method it would possibly be something like TTH.   In this example, this would mean TTH usage becomes part of the IBP protocol specification and both the IBP client and IBP depot would be required to implement it.  The next level tools and APIs like LoRS and libxio and lstcp would not be required to know anything about IBP internal checksums, but they could optionally use it.  If checksumming were optional, additional IBP commands to turn it on and off would be needed, and interoperability with non-checksumming depots becomes and issue.&lt;br /&gt;
&lt;br /&gt;
- Dan 1/24/08&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=Development_ideas&amp;diff=3167</id>
		<title>Development ideas</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=Development_ideas&amp;diff=3167"/>
		<updated>2008-01-25T10:10:01Z</updated>

		<summary type="html">&lt;p&gt;Dano: /* Validation along the entire data path */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Suggested changes to existing protocol =&lt;br /&gt;
&lt;br /&gt;
== Re-order parameters in IBP_STATUS command ==&lt;br /&gt;
The existing IBP v1.4 implementation is:&lt;br /&gt;
&lt;br /&gt;
:''version IBP_STATUS '''RID'''   IBP_ST_INQ password  TIMEOUT \n''&lt;br /&gt;
:''version IBP_STATUS '''RID'''   IBP_ST_CHANGE password  TIMEOUT \n max_hard max_soft max_duration \n''&lt;br /&gt;
:''version IBP_STATUS  IBP_ST_RES  TIMEOUT \n''&lt;br /&gt;
&lt;br /&gt;
Notice that two of the commands have a primary command, ''IBP_STATUS'', a resource ID (''RID''), followed by a sub-command (''IBP_ST_INQ, IBP_ST_CHANGE'') and the last version has no ''RID'', just a sub-command, ''IBP_ST_RES''.  The current implementation can only be parsed by first reading the whole line in and then counting the number of arguments.  The argument count is then used to determine which command is actually being issued.  A more natural version of the commands would always have the sub-command immediately follow the IBP_STATUS command.&lt;br /&gt;
&lt;br /&gt;
== Change in ''RID'' format ==&lt;br /&gt;
The current definition of an ''RID'' is an integer as defined in ''struct ibp_depot''.  The definition of an integer is architecture dependent and hense not portable.  An alternative definition would be to define the ''RID'' as a character string.  This would provide flexibility in its implmentation and use.  The current IBP client libraries already treat the ''RID'' as an opaque character string for all commands except ''IBP_Allocate()''.&lt;br /&gt;
&lt;br /&gt;
== Provide interface to IBP data structures ==&lt;br /&gt;
No explicit interfaces are provided for any of the various IBP data structures. A more flexible approach would be to add API calls to manipulate these structures indirectly.&lt;br /&gt;
&lt;br /&gt;
== IBP_MCOPY current status ==&lt;br /&gt;
The documentation for this command is sparse.  It looks like numerous different multicast methods were implemented but there is very little documentation describing them.  Should this command be dropped?&lt;br /&gt;
&lt;br /&gt;
== NFU ==&lt;br /&gt;
There is very little documentation describing the NFU implementation in the current LoCI depot and the documentation provided has errors and is not fully supported.  The concept of the NFU is very powerful and I wonder if it should be split out as a separate specification altogether.  Hunter's Java implementation is quite elegant.  In his implementation the NFU calls are actually Java JAR files stored as allocations.  These allocation are then registered with the NFU manager with hooks for checksums for data integrity.  Having the NFU call operating in a Java container is extremely appealing.  Java can place the NFU call in a box to limit it's resource consumption(memory, cpu, threads, etc) making it much more difficult for an NFU call to inadvertently or maliciously take down the depot or NFU manager.  Also because of Java's portability deploying new NFU calls becomes trivial.&lt;br /&gt;
&lt;br /&gt;
= Security =&lt;br /&gt;
&lt;br /&gt;
== Add support for SSL ==&lt;br /&gt;
Self-explanatory&lt;br /&gt;
&lt;br /&gt;
== Auth/AuthZ for IBP_ALLOC command ==&lt;br /&gt;
This command has the potential for abuse and could result in a a &amp;quot;Denial of Space&amp;quot; attack on the depot.  If the concept of an &amp;quot;account&amp;quot; is added one could then come up with additional methods to share resources for example adding the concept of an account quota.  It also provides a tracking mechanism on who is *creating* allocations.&lt;br /&gt;
&lt;br /&gt;
== Virtual Capabilities(vcap) ==&lt;br /&gt;
The current implementation only allows a single set of caps for an allocation.  So once a user has access to a cap it can never be revoked.  Virtual caps is designed to solve this problem.  The idea is a user presenting the IBP_MANAGE cap could request the depot issue a new set of caps with a shorter duration.  These new vcaps could then be provided to a 3rd party.  At any time the original cap owner can revoke access to the allocation by simply using the IBP_MANAGE command to delete the vcap.  Another useful feature to consider is restricting the vcap to a specific byte range of the original cap.&lt;br /&gt;
&lt;br /&gt;
== IBP &amp;quot;Accounts&amp;quot; ==&lt;br /&gt;
In order for several of these ideas to work a new set of commands would need to be added to manage the accounts.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
= Data Integrity =&lt;br /&gt;
&lt;br /&gt;
== Validation along the entire data path ==&lt;br /&gt;
The current implementation allows for validating at the end points only.  This is accomplished by having the data originator calculate a checksum before uploading the data.  This checksum can be appended to the data uploaded data or it can be stored externally in the exnode.  The consumer can then download the data, calculate the checksum, and compare it to what is stored.  This approach is not well suited to live data streams since the raw data will have to be buffered until the consumer can download the data to verify it.&lt;br /&gt;
&lt;br /&gt;
An alternative approach would be to standardize on a checksum algorithm and have the client calculate the checksum as the data is being streamed to the depot while the depot simultaneously calculates the checksum as it receives the data. The sender would pass on it's checksum for validation by the receiver. Any discrepancy occurring during the network transfer would be immediately detected while the data is still in the senders original buffer.  The depot could then store this checksum as part of the allocation for use later.  Most OS will immediately detect a write failure but not necessarily bit rot when reading unless the disk is part of a RAID array.  Likewise when a reader requests data the reverse process can occur.  Namely the depot and receiver both calculate the checksum as the data is being sent.  The depot would additionally compare the original checksum stored with what was just calculated in order to detect disk errors.  If no errors occurred the depot would go ahead and send the checksum down to the receiver for validation.  This process is computationally efficient since the data is never re-read.  The checksum is just part of the transfer pipeline.&lt;br /&gt;
&lt;br /&gt;
Building this validation procedure into the protocol simplifies the data integrity higher level tools require.  These checksums could be used by higher level tools to verify replicated copies and detect data changes.  The checksums should be treated as opaque strings and could be accessed by additional IBP_MANAGE sub-commands:&lt;br /&gt;
&lt;br /&gt;
* IBP_GET_CHECKSUM - Return the allocations checksum&lt;br /&gt;
* IBP_VALIDATE_CHECKSUM - Re-calculate the checksum&lt;br /&gt;
&lt;br /&gt;
Using single checksum for an entire allocation is not efficient if random I/O on an allocation is allowed. In this case changing a single byte of a 10MB allocation would require the re-processing of the entire allocation.  Another option would be to specify that for every 64KB of data (I picked this out of the blue so feel free to suggest something different) a checksum is generated.  This means each allocation could have multiple checksums.  In this case if a single byte was changed only 64KB of data would have to be re-processed.  If the checksum field on the client is treated as an opaque string then having 1 or multiple checksums is irrelevant.  Both cases can be treated the same.&lt;br /&gt;
&lt;br /&gt;
see discussion tab for comments&lt;br /&gt;
&lt;br /&gt;
= Miscellanous =&lt;br /&gt;
&lt;br /&gt;
== Support UDP transfers ==&lt;br /&gt;
What about usingthe UDT implementation since it can mimic FAST, web100, etc. TCP congestion control methods...&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
	<entry>
		<id>https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3151</id>
		<title>Talk:Development ideas</title>
		<link rel="alternate" type="text/html" href="https://www.reddnet.org/mwiki/index.php?title=Talk:Development_ideas&amp;diff=3151"/>
		<updated>2008-01-24T20:53:34Z</updated>

		<summary type="html">&lt;p&gt;Dano: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Data Integrity==&lt;br /&gt;
&lt;br /&gt;
*The idea of 64k chunks per allocation for checksums is what's termed a hash list&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_list&lt;br /&gt;
*which can be extended to a multi-level hash tree&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree&lt;br /&gt;
&lt;br /&gt;
*One could imagine a 3-level tree&lt;br /&gt;
**a hash for each lowest-common-unit, say the commonly used 1K&lt;br /&gt;
**a single top hash for each IBP allocation&lt;br /&gt;
**a single top hash for the file&lt;br /&gt;
**or more levels&lt;br /&gt;
&lt;br /&gt;
*It seems to be common in distributed systems to use a binary hash tree rather than a hash list -- even on individual data blocks.&lt;br /&gt;
**Tiger Tree Hash TTH is currently the most? popular since it provides high security with a relatively low cpu cost&lt;br /&gt;
**http://en.wikipedia.org/wiki/Tiger_%28hash%29&lt;br /&gt;
**http://en.wikipedia.org/wiki/Hash_tree#Tiger_tree_hash&lt;br /&gt;
**http://en.wikipedia.org/wiki/List_of_hash_functions#Computational_costs_of_CRCs_vs_Hashes&lt;br /&gt;
&lt;br /&gt;
If the IBP protocol were to be extended to support a single specific checksum method it would possibly be something like TTH.   In this example, this would mean TTH usage becomes part of the IBP protocol specification and both the IBP client and IBP depot would have to implement it.  The next level tools and APIs like LoRS and libxio and lstcp would not be required to know anything about IBP internal checksums, but they could optionally use it.&lt;br /&gt;
&lt;br /&gt;
- Dan 1/24/08&lt;/div&gt;</summary>
		<author><name>Dano</name></author>
	</entry>
</feed>