Skip to content

skunkwerks/netinf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This is the NetInf framework developed as part of the SAIL
project. (http://sail-project.eu)
NetInf is an abbreviation for 'Network of Information'.

Specification(s) - note, versions may change::
* http://tools.ietf.org/html/draft-farrell-decade-ni-10
* http://tools.ietf.org/html/draft-hallambaker-decade-ni-params-03
* http://tools.ietf.org/html/draft-kutscher-icnrg-netinf-proto-00

Contact: stephen.farrell@cs.tcd.ie, dirk.kutscher@neclab.eu
Copyright (C) 2012 Trinity College Dublin and Dirk Kutscher

License:: http://www.apache.org/licenses/LICENSE-2.0.html
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Authors
-------
	Dirk Kutscher <dirk.kutscher@neclab.eu>
 	Stephen Farrel <stephen.farrell@cs.tcd.ie>
	Elwyn Davies <davieseb@scss.tcd.ie>
	Claudio Imbrenda <claudio.imbrenda@neclab.eu>
	Ville Petteri Pöyhönen <petteri.poyhonen@nsn.com>
	Janne Tuononen <janne.tuononen@nsn.com>
	Bengt Ahlgren <bengta@sics.se>

Version
------

This is version 0.2.

In this version, the c, python, ruby and clojure libraries
are up to date with draft-farrell-decade-ni-10 for ni: and nih:
name generation and verification as well as binary format names. 

The HTTP and UDP convergence layers in c, php, python, ruby and clojure
implement the functionality described in
draft-kutscher-netinf-proto-00.

The php, Python and ruby code implement some rudimnentary NRS
capability.

Other NetInf features and other languages are in a state of
flux at the moment.

Roadmap
-------

There are c, ruby, python, java, php, and clojure subdirectories, each
with code handling ni names and implementing the NetInf protocol. In
addition, there is a patch to wget for handling NI names and some
shell script to work with NI-named objects on a web server.

The different implementations provide the following features:

  - c: NI URI format, HTTP convergence layer

  - curl: patches to allow curl to operate with ni names

  - ruby: NI URI format, HTTP and UDP convergence layers, standalone
	NetInf router

  - python: NI URI format, HTTP convergence layer, standalone
	NetInf server for HTTP convergence layer with NRS server

  - java: NI URI format, HTTP convergence layer, NI proxy with local
  	cache, GET/REGISTER/PUBLISH clients. Both client and proxy are 
	Eclipse (http://www.eclipse.org/) projects and external JARs are 
	not included; for more information, see README under lib/ directory.

  - PHP: HTTP convergence layer, NRS server

  - clojure: NI URI format

  - wget: patch for wget to handle NI names

  - sh: scripts to generate NI names for a web server environment


Documentation
-------------

The specification of the NI URI format is here (as of 2012-10-0r51):

* http://tools.ietf.org/html/draft-farrell-decade-ni-10
* http://tools.ietf.org/html/draft-hallambaker-decade-ni-params-03

The NetInf protocol specification (the basis of the HTTP and UDP
convergence layer implementations provided by some of the tools in
this package) has been published as an Internet Draft.  The tools
here conform to the following version:
* http://tools.ietf.org/html/draft-kutscher-icnrg-netinf-proto-00


An overall Makefile is provided in the top level to invoke the Makefiles in
subsidiaary directories, especially for C, and generate documentation.

Doxygen documentation can be generated for the C and Python code 
(the Makefile does it) but requires the help of the doxypy.py 
module as a filter for the Python modules.  (Doxygen support 
for Ruby is not available in the main Doxygen code although there 
is work in progress - see https://github.com/fourmond/doxygen-ruby-patch).

The doxypy.py module can be obtained from http://code.foosel.org/doxypy or 
there is a Debian repository with doxypy.  Note that the Debian install 
creates the script 'doxypy' whereas the module as obtained from the developer 
site leaves you with doxypy.py.  You may need to tweak the INPUT_FILTER
entry in the Doxygen configuration file (netinf_code/doc/nilib_apis) 
appropriately.

If you don't want to install doxypy then edit the Doxygen configuration file 
(netinf_code/doc/nilib_apis) setting FILTER_SOURCE_FILES = NO so the doxypy 
filter is not used.

The Ruby source code documentation can be generated by 'make -C ruby doc'.

A note
-----

Grossmutti's advice to those starting to suck the ni URI egg:

- The semi-colon (;) is a meta-character (statement terminator) 
  in all known species of *nix shell
- Complete ni URI's contain a semi-colon
- If you don't quote ni URIs on shell command lines than you will 
  get some peculiar error messages.