Hi all,
For anyone who is interested in playing around or participating in the
development/deployment of the openalto project, here is a brief introduction to
the code base. We will post further information such as the architecture and
how to install/deploy the server to the mailing list as well.
The openalto project is open source and accessible from
https://github.com/openalto/alto. The source code is released under the MIT
license. For fast development and deployment, the project is using Python as
the programming language.
The main components of the project and their code structure are organized as
follows:
- ALTO client library: The client library wraps the ALTO requests and provides
some high level APIs. The source code is under src/alto/client. Currently the
client library supports the parsing of network map, cost map and endpoint cost
service with path vector extension.
- ALTO data broker: The data broker provides API to connect to and access data
from a data base (which is redis in our current development/deployment). It
serves as a middle layer to decouple ALTO service implementations and data
sources.
- ALTO server frontend: We use the django framework as the server frontend,
which handles the parsing of requests and the encoding of responses. The code
is mainly under src/alto/server/django_server. Currently it supports the
network map, cost map, and endpoint cost service with the path vector extension.
- ALTO server backend: A backend component is basically an algorithm that reads
data from the data broker and generates data (as python objects) that can be
further encoded by the frontend. Currently the project supports the endpoint
cost service with the path vector extension. The source code is at
src/alto/server/backend.py.
- ALTO agents: An ALTO agent is configued to connect to one or multiple data
sources. It collects the data from the data source(s) either in the pull or
push mode. Then it writes the data to the data base that can be consumed by the
backends. We have developed some agents already, under src/alto/agent. For
example, in the CERN deployment, we have developed an agent to fetch
information from the CRIC database and an agent to periodically fetch the
routing information from the CERN looking glass server.
This is only an overview of the project and we will post more technical details
soon. Please feel free to reply to this thread if you have any questions or
comments.
Best,
The openalto team
-----Original Messages-----
From:"Y. Richard Yang" <[email protected]>
Sent Time:2022-10-22 05:03:04 (Saturday)
To: "IETF ALTO" <[email protected]>, "Jensen Zhang" <[email protected]>,
"Kai Gao" <[email protected]>, "Lauren Delwiche" <[email protected]>,
"Jordi Ros Giralt" <[email protected]>, "Martin Duke"
<[email protected]>, "Qin (Bill) Wu" <[email protected]>, "Mohamed
Boucadair" <[email protected]>
Cc:
Subject: openalto.org updates
Hi all,
Sorry to spam the list with one more work-in-progress update email. But since
it is an important, chartered task of the WG, we would like to hear your
feedback and invite more to be involved to work together.
The openalto.org team has two main objectives: (1) design and implement a
high-quality, open-source implementation of ALTO server; and (2) integrate
openalto.org with real application use cases. We plan to provide detailed
updates during the coming IETF'115 ALTO meeting in 3 weeks on Nov. 11 and this
email is to provide a quick overview of progress and thinking. The openalto
implementation and use cases are complementary to the implementation and use
cases by others such as the wonderful project at Telefonica by Luis.
First, on (1), at the surface, ALTO only defines an interface, and the true
complexity and value of an ALTO server implementation is the process of
obtaining the information resources for an ALTO server to expose. The current
openalto implementation focuses on providing 3 types of implementations: (A1)
from configuration, adjacency, and other input such as BGP inputs, (A2) from
reading FIB directly, and (A3) from available sampling FIB (e.g.,
s-flow/netflow report, traceroute essentially sampling by ttl and ICMP report).
So far good process has been made for A2 (for looking glass for CERN and
others) and A3 (based on s-flow, and others, on top of G2 led by Jordi and
Sruthi). There are also efforts to make progress on A1, using batfish and there
is ongoing work to apply the approach to ESnet.
Building on the progress of having many ALTO servers running, the openalto team
includes a new effort to organize the existing ALTO servers. Although there are
existing ALTO server discovery mechanisms, openalto.org will now serve as a
frontend to many servers which will become available soon. One major departure
of this approach from the original ALTO thinking is that openalto allows
multiple ALTO servers to serve a single network. Hence, openalto.org is
organized as a structure motivated by the DNS structure, as
<entity>.<domain>.openalto.org. For example, as513.lg.openalto.org is the ALTO
server for entity AS513 (CERN) implemented by A3 (Looking Glass server) domain.
Hence, the deployment structure is an overlay structure, with base servers that
can be overridden by authoritative servers. We feel that this is a great way to
go.
In addition to serving as a hub of network composition, the current
openalto.org will also serve as a frontend to provide a unified query interface
to existing networking information. An example that will be deployed is to make
ALTO a frontend to geoip data, in the domain of geoip.openalto.org.
For (2), the current focus of openalto is for two applications: the
application-layer scheduling integration into FTS, which is the main scheduling
system at LHC and many others; and Rucio, which is the transfer selection/data
orchestration framework. For FTS, openalto provides the important assets that a
transfer utilizes and then the scheduler, which knows the app and the amount of
data transferred, can conduct application-level resource partition among
multiple application-level entities (experiments/projects/activities). For
Rucio, openalto provides distance (cost map) as a unifying abstraction,
including FTS distance, to guide the transfer selection. These use cases are
different from other use cases such as those described by Luis.
We welcome feedback and broad participation. Please let us know if you can help.
Thanks,
The openalto team
_______________________________________________
alto mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/alto