NFU Specification: Difference between revisions

From ReddNet
Jump to navigation Jump to search
(New page: Simple overview: * NFU server -- "adjacent" to IBP depot. * NFU Op -- lightweight program, written in C, or Java, depending on server. * NFU client -- launches nfuOps and exchanges data wi...)
 
No edit summary
 
(26 intermediate revisions by the same user not shown)
Line 1: Line 1:
Simple overview:
Simple overview:
* NFU server -- "adjacent" to IBP depot.
* Three components:
* NFU Op -- lightweight program, written in C, or Java, depending on server.
** NFU server -- "adjacent" to IBP depot, runs NFU Ops
* NFU client -- launches nfuOps and exchanges data with it.
** NFU Op -- lightweight program, written in C, or Java, depending on server.
** 2 types of data exchange:
** NFU client -- initiates launch of an nfu Op and exchanges data with it.
** 1. variable exchange -- data passed directly between NFU Client and NFU Op
* NFU API -- Two iotypes categories for data exchange between nfu_op and nfu_client:
NFU_VAL_IN
** IBP_VAL_[IN, OUT, INOUT]
** 2. IBP Cap handling
*** variable/values exchanged directly between nfu client and nfu Op
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.
** IBP_REF_[RD, WR, RDWR]
*** NFU Server (not nfuOp) processes IBP Caps
***E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation
***nfuOp does not receive readCap string
* security issues
** Java NFU server has VM isolation of nfuOp
** UTK NFU server has option to run Cap as process to isolate nfuOp from server
** UTK NFU server mmaps allocations from readCaps, i.e. nfuOp has no direct knowledge of allocation file names.
* compatibility issues:
** Java NFU server currently has no way to run C nfu Ops
** if nfu server is not part of the ibp depot, then all IBP_REF_* exchanges need to be changed to IBP_VAL_* exchanges
*** this forces the nfuOp to process IBP caps which would otherwise be processed by the nfuServer.
*** this disables 1/2 of the NFU iotypes

Latest revision as of 08:02, 2 July 2008

Simple overview:

  • Three components:
    • NFU server -- "adjacent" to IBP depot, runs NFU Ops
    • NFU Op -- lightweight program, written in C, or Java, depending on server.
    • NFU client -- initiates launch of an nfu Op and exchanges data with it.
  • NFU API -- Two iotypes categories for data exchange between nfu_op and nfu_client:
    • IBP_VAL_[IN, OUT, INOUT]
      • variable/values exchanged directly between nfu client and nfu Op
    • IBP_REF_[RD, WR, RDWR]
      • NFU Server (not nfuOp) processes IBP Caps
      • E.G. _RD: client sends readCap to server, NFU server provides nfuOp a pointer to mmap of the allocation
      • nfuOp does not receive readCap string
  • security issues
    • Java NFU server has VM isolation of nfuOp
    • UTK NFU server has option to run Cap as process to isolate nfuOp from server
    • UTK NFU server mmaps allocations from readCaps, i.e. nfuOp has no direct knowledge of allocation file names.
  • compatibility issues:
    • Java NFU server currently has no way to run C nfu Ops
    • if nfu server is not part of the ibp depot, then all IBP_REF_* exchanges need to be changed to IBP_VAL_* exchanges
      • this forces the nfuOp to process IBP caps which would otherwise be processed by the nfuServer.
      • this disables 1/2 of the NFU iotypes