Skip to content

Instantly share code, notes, and snippets.

@sappenin
Last active June 25, 2017 19:22
Show Gist options
  • Save sappenin/2174f1d4f31ba159906f944b0c731f97 to your computer and use it in GitHub Desktop.
Save sappenin/2174f1d4f31ba159906f944b0c731f97 to your computer and use it in GitHub Desktop.
Quality of Service (QOS) in Interledger Networks

Summary

This document expands the concept of Quality of Service to Interledger payment networks, thereby allowing Interledger nodes to dynamically route payments using the best paths according to both the real-time conditions of the network as well as the characteristics of a given payment.

Background

[Dynamic](## Dynamic Routing) payment routing paths in Interledger networks can vary based upon a nearly infinite combination of characteristics including network health, liquidity, and even properties of each payment sent across the network.

Typically, Interledger payments are routed using a predefined path provided by a payment [# Quote] that is generated before a payment is actually sent. While this mechanism is adequate for many payment use-cases, this document suggests a better framework where payment senders can specify certain characteristics of their payment, and then allow the Interledger network to find the most appropriate route in real-time.

As an example, consider a sender who may want a particular payment to transit networks with the lowest fees, whereas another sender may want a payment to transit networks with the least latency. At the same time, other senders may desire to have their payments transit financial institutions with certain KYC provisions, and other senders may wish to have the opposite occur (instruct the network to transit payment networks anonymously).

Definitions

Payment Route

A path that an payment will traverse across the Interledger network in order to transfer money from a sender to a receiver.

Static Routing

For purposes of this document, static routing refers to a payment that will transit a particular path according to a pre-arranged quote which will be honored for some duration. For example, Interledger nodes A and B might agree to facilitate an Interledger payment for a fee of $0.05 each, as long as the payment is made in the next 60 minutes. Because the sender can rely upon this quote and route for a specific duration of time, this route is referred to as a static route.

Dynamic Routing

For purposes of this document, dynamic routing refers to a payment whose payment route is undetermined until the payment actually traverses the Interledger network. In other words, a dynamic route is one in the Interledger network decides in real-time according to certain rules and restrictions related to a payment.

As an example, Interledger nodes A and B might provide an adequate path for an Interledger payment to traverse, but if the payment specifies a maximum fee of $0.02, then this path might be rejected in real-time if the fees chosen by A become too high.

Quality of Service (QOS)

From Quality of Service on wikipedia:

Quality of service (QoS) is the description or measurement of the overall performance of a service, such as a telephony or computer network or a Cloud computing service, particularly the performance seen by the users of the network. To quantitatively measure quality of service, several related aspects of the network service are often considered, such as error rates, bit rate, throughput, transmission delay, availability, jitter, etc.

Know Your Customer (KYC)

From Know your customer on wikipedia:

Know your customer (KYC) is the process of a business identifying and verifying the identity of its clients. The term is also used to refer to the bank and anti-money laundering regulations which governs these activities. Know your customer processes are also employed by companies of all sizes for the purpose of ensuring their proposed agents, consultants, or distributors are anti-bribery compliant. Banks, insurers and export creditors are increasingly demanding that customers provide detailed anti-corruption due diligence information.

Routing Characteristics

This section outlines various Interledger routing characteristics that an Interledger payment might restrict the set of available routes a payment might take."

Fees

A payment can be restricted based upon a maximum fee. For example: "take any set of paths that will not exceed a certain money value or a certain percentage."

Exchange Rate

A payment can be restricted based upon a particular exchange rate. For example: "take any path that offers an FX rate of 1 USD to 0.89 EUR."

Payment Latency

A payment can be restricted based upon a particular exchange rate. For example: "take any path that offers an FX rate of 1 USD to 0.89 EUR."

Payment Bandwidth

A payment can be restricted to routes that can support a particular payment bandwidth. For example: "take any path that can sustain as least $1/second in payment volume."

Liquidity Availability

TBD

KYC

TBD

Routing Design

This section details how various components of the Interledger stack would need to be adjusted in order to support payment characteristics and QOS. Essentially, each component involved in a routing decision would need to track various characteristics in order to be able to make routing decisions according to values defined in an Interledger payment packet.

Interledger Routers

Interledger Quote providers

Payment Packet Enhancements

The interledger payment packet would need to be designed to be able to support various restriction characteristics that apply to a payment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment