wiki:WikiStart

Welcome to the Currency Management System (CMS) project

TOC?

News

30/10/08 - CMS development version is available through the subversion repository. Take a look at here.

Introduction

The current and future Internet, as a shared open network and service infrastructure, is used every day by more people and more diverse applications. This growth in usage, capacity and diversity makes even more difficult to provide sustainable high quality services to its heterogeneous population. In these kind of shared and cooperative infrastructures, resource providers may find there is not sufficient compensation and may be tempted to simply stop contributing more resources or block certain applications to reduce their load. Besides, users have no incentive to make an efficient use of resources of the, otherwise usually congested, overall infrastructure.

The Currency Management System (CMS) is a software package developed within the Grid4All European project in line with the work and effort at the Distributed Systems Group in developing decentralized mechanisms to support economics-inspired resource allocation in large-scale shared infrastructures like the grid. Other works complementary to this are the Market Information System (MIS) and the Grid Market Middleware (GMM).

CMS principal aim is two-fold:

  • provide the means to self-regulate and account for resource exchanges to ensure the stability and fairness of the infrastructure. Thus, it is modelled as a decentralized banking service which enable participants to exchange currency among to incentive sharing while limiting purchase power as well as provide the necessary infrastructure to support regulation policies based on different wealth re-distributions.
  • provide en enhanced peer-to-peer storage middleware to support ACID transactions. Our framework generalizes the transactional problem of the banking service allowing application designers to focus on semantics and not worry about conflicting transactions. Hence, other applications might benefit from our framework relying on lower latency transactions at a cost of probabilistic guarantees.

Overview

The currency abstraction enables participants to pay for resource exchanges over time and enables system designers to apply regulation policies to leverage users to behave accordingly. The currency in CMS is represented as a bank account balance that specifies the amount of currency each user owns as well as a history of past transactions over time. Although currency may be seen as a rather simple mechanism to regulate complex and widespread infrastructure, it is able to solve some of the main issues in large-scale computational infrastructures:

  • The need for regulation: It acts as a regulation mechanisms to solve the overloading problem as each user has a limited amount of currency being a ceiling on its purchase power.
  • Lack of incentives: For resource consumers it is an incentive to manage carefully their finite endowment or budget over a period of time using only the right amount of required resources. For resource providers it is also an incentive to maintain the nodes they contribute in good condition of capacity and availability in order to be competitive in the resource market and earn currency which in turn might be used to acquire future resources.
  • Non-reciprocal exchanges: It is a generic exchange mechanism able to cope with the heterogeneity between resource consumption and contribution.

Following the banking infrastructure requirements (scalability, fault-tolerance and self-managing), we have developed our system on top of DKS, a peer-to-peer middleware providing a structured overlay. Besides, we have enhanced this middleware to support ACID (atomic, consistent, isolated and durable) transactions through a decentralized timestamping and mutual exclusion mechanisms allowing different nodes of the enhanced DHT to handle and manage different user's accounts.

cmsLayers.png




Thus, our system provides the necessary accounting mechanisms to enable market-based allocations on top of a transactional storage through the following layers allowing their de-coupling and reusability:

  • Banking Layer: This layer is the responsible to create user’s accounts and provides management functionalities of client’s accounts. It also provides operations to perform currency payments between user’s accounts. This layer implements the CMS API as presented in the documentation. The API is felxible enough to support different charging policies such as pay-before-use, pay-during-use or pay-after-use.
  • Transactional Layer: This layer is responsible for providing mechanisms to execute transactions in an atomic and isolated way to the banking layer considering that accounts are spread across several nodes. As the main transaction of the banking layer is the transfer of funds between two accounts, both of them must be modified or none at all (atomicity). Moreover, concurrent updates against the same account must be handled correctly avoiding inconsistent account balances and the lost of updates (isolation).
  • Consistency Layer: This layer is responsible for providing to the upper layers with a fault-tolerant distributed storage (durability). Most existing DHTs provide good support for immutable data but with no consistency guarantees. In other words, current DHTs do not deliver any consistency guarantee so that stale values might be recovered from replicas after a failure. This way, its aim is to retrieve always the most recent item stored in the DHT despite the joining, leaving or failure of nodes (consistency).





Project status

This software package has been developed in the context of the Grid4All European Project. The source code, api documentation and a jar library have been released in case anyone is interested either in the CMS as a service or in the underlying transactional DHT middleware. Notice that it is not a stable release but a development branch as it is part of ongoing work in different research projects.

Publications

[1] Xavier León, Xavier Vilajosana, René Brunner, Ruby Krishnaswamy, Leandro Navarro, Joan Manuel Marquès and Felix Freitag, "Information and Regulation in Decentralized Marketplaces for P2P-Grids", in Proceedings of the 16th IEEE International Workshops on Enabling Technologies: Infrastructures for Collaborative Enterprises (WETICE 2008), Rome, Italy, June 2008 https://code.ac.upc.edu/projects/cms/chrome/site/cops08market.pdf PDF https://code.ac.upc.edu/projects/cms/chrome/site/cops08market.bib Bibtex

[2] Ruby Krishnaswamy, Leandro Navarro, René Brunner, Xavier León and Xavier Vilajosana, "Grid4All: Open Market Places for Democratic Grids", in Proceedings of the 5th International Workshop on Grid Economics and Business Models (GECON 2008), Las Palmas de Gran Canaria, Spain, August 2008 https://code.ac.upc.edu/projects/cms/chrome/site/gecon08grid4all.pdf PDF https://code.ac.upc.edu/projects/cms/chrome/site/gecon08grid4all.bib Bibtex

[3] Pablo Chacín, Xavier León, René Brunner, Felix Freitag and Leandro Navarro, "Core Services for Grid Markets", in Proceedings of the The CoreGRID Symposium (CGSYMP 2008), Las Palmas de Gran Canaria, Spain, August 2008 https://code.ac.upc.edu/projects/cms/chrome/site/cgsymp08gmmcore.pdf PDF https://code.ac.upc.edu/projects/cms/chrome/site/cgsymp08gmmcore.bib Bibtex

[4] Xavier León, "Economic regulation mechanism for self-organizing market-based Grids", Master Thesis, Universitat Politècnica de Catalunya, Spain, September 2008 [PDF] https://code.ac.upc.edu/projects/cms/chrome/site/xleon08msthesis.bib Bibtex

[5] Xavier León and Leandro Navarro, "Currency Management System: a Distributed Banking Service for the Grid", Technical Report UPC-DAC-RR-XCSD-2007-6, Universitat Politècnica de Catalunya, Spain, July 2007 http://gsi.ac.upc.edu/reports/2007/40/pfc-cms.pdf PDF https://code.ac.upc.edu/projects/cms/chrome/site/xleon07cms.bib Bibtex

Download and Usage

The latest version (might be unstable) can be found at the subversion repository. To download the code publicly available just execute:

user@host:~$ svn co https://code.ac.upc.edu/projects/cms/svn/trunk cms_dir

We provide an ant build.xml file to ease the compilation and execution of different test cases. To generate de bytecode, the jar distribution library and the CMS API javadoc documentation you may execute respectively:

user@host:~/cms_dir$ ant build
user@host:~/cms_dir$ ant dist
user@host:~/cms_dir$ ant javadoc

To execute and test CMS functionalities, we provide different execution targets:

  1. Command Line Interface (CLI). It is offered as an example on how CMS may be used in a programmable manner using the external interfaces offered. In order to use an initial CMS deployment containing one node and play with CMS commands and subsequently add more nodes to the CMS network execute the following statements. This way, from whatever node you can create and query accounts, transfer funds between accounts, etc.
    user@host:~/cms_dir$ ant TestBootCMSNode
    user@host:~/cms_dir$ ant TestRegularCMSNode
    
  1. Fractal bindings. We have fractalized our application in order to be deployed through the Fractal component model. For more information on the benefits of using this kind of component deployment see http://fractal.objectweb.org/. To execute the test cases using Fractal bindings, just execute:
    user@host:~/cms_dir$ ant TestCMSfractal
    

Through future releases, we plan to provide a WSRF compliant interface to enable the integration with other Grid Components based on these standards. For more information read the README, LICENSE and TODO files.

Maintainers

If you are interested contact xleon at ac dot upc dot edu

Distributed Systems Group homepage

Grid Market Middleware homepage

Grid4All European Project homepage

Last modified 13 years ago Last modified on Feb 25, 2009, 10:21:06 AM