# ilp-routing

> Routing Library for Interledger modules

Latest version **20.0.1-beta.1** (published 2019-07-04) · Apache-2.0 license · 0 weekly downloads

## Install

```sh
npm install ilp-routing
pnpm add ilp-routing
yarn add ilp-routing
bun add ilp-routing
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 20.0.1-beta.1 |
| Published | 2019-07-04 |
| First published | 2016-10-07 |
| Weekly downloads | 0 |
| License | Apache-2.0 |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 366.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 2 |
| Author | Interledger Team |
| Maintainers | interledger |

## Links

- npm: https://www.npmjs.com/package/ilp-routing
- Repository: https://github.com/interledgerjs/ilp-routing
- Homepage: https://github.com/interledgerjs/ilp-routing#readme
- Issues: https://github.com/interledgerjs/ilp-routing/issues
- npm.io page: https://npm.io/package/ilp-routing

## Dependencies (1)

- [lodash](https://npm.io/package/lodash.md) ^4.17.11

## Recent versions

- 20.0.1-beta.1 (latest) — 2019-07-04
- 20.0.1-beta.0 — 2019-02-28
- 10.1.0 — 2017-07-27
- 10.0.3 — 2017-07-19
- 10.0.2 — 2017-07-11
- 10.0.1 — 2017-07-05
- 10.0.0 — 2017-06-28
- 9.1.1 — 2017-06-20
- 9.1.0 — 2017-06-19
- 9.0.1 — 2017-06-05
- 8.0.0 — 2017-05-02
- 7.1.0 — 2017-04-20
- 7.0.2 — 2017-03-24
- 7.0.1 — 2017-03-23
- 7.0.0 — 2017-03-15
- … 13 more at https://npm.io/package/ilp-routing/versions

## README

# ilp-routing
> (BETA Stage) Router and Route Manager for Interledger-style addressing

[![NPM Package](https://img.shields.io/npm/v/ilp-routing.svg?style=flat)](https://npmjs.org/package/ilp-routing)
[![CircleCI](https://circleci.com/gh/interledgerjs/ilp-routing.svg?style=shield)](https://circleci.com/gh/interledgerjs/ilp-routing)

<!-- ## Usage

```js
// TypeScript
import Router from 'ilp-router'

``` -->

## Project


## Members

### ilp-router
Stand alone router for ilp address space. Contains a routing table and a forwarding routing table. Routing table is used to determine where the nextHop is based on a given address. The forwarding routing table is used to broadcasting routes to peers.

### ilp-route-manager
A route manager that deals with adding/removing peers and adding/removing routes for given peers. Based on these it will update the routing table accordingly.

#### Note CCP is outside the scope of the functionalities of this library.

### Folders

All source code is expected to be TypeScript and is placed in the `src` folder. Tests are put in the `test` folder.

The NPM package will not contain any TypeScript files (`*.ts`) but will have typings and source maps.

### Scripts

  - `clean` : Cleans the build folder and test output
  - `build` : Build the project
  - `lint`  : Run the linter over the project
  - `test`  : Run the unit tests and produce a code coverage report
  - `doc`   : Build the docs

### TODO
- [ ] Add Logging
- [ ] Add example file
- [ ] Add Auth
- [x] Add weight to lessen the need for relations to be used
- [ ] Add Performance Regression
- [ ] Increase test coverage
- [ ] Ensure adding and removing routes are deterministic and no race conditions exist
- [ ] Add dragon filtering back to the layer between the routing and forwarding routing table
- [ ] Create a more favorable data structure for Peers incoming routes table. One way this can be achieved is having a write heavy data structure that is read fast. (This is probably preferable.)

### Future notes/reading
Implement BGP type path based filtering
https://www.cisco.com/c/en/us/support/docs/ip/border-gateway-protocol-bgp/13753-25.html#bestpath
Multipath could also be an interesting area to pursue.

---
_Source: https://npm.io/package/ilp-routing · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
