| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
This makes the routing component into a policy since different
approaches may exist to do this, depending on how high the rank of the
DIF is.
|
|
|
|
|
|
|
| |
In order to ensure 100% reliable transfer, the protocol state machine
that takes care of retransmission and SDU ordering has to be in the
application. Flow allocation in the normal now uses fds. The PDU_type
field was deprecated and AE's within the DIF can use reserved fds.
|
|
|
|
|
|
| |
Connection establishment was done at the same time as flow
allocation. This splits it more cleanly, and allows to re-use the DT
AE for other purposes.
|
|
|
|
|
|
| |
This splits the flow manager into the Data Transfer AE, which is in
charge of routing SDUs, and the Flow Allocator AE, which handles flow
allocations.
|
|
|
|
|
|
| |
This extracts the SDU scheduling component out of the Flow Manager
since the functionality was duplicated. For both the N-1 and N+1 flow
sets an SDU scheduling component is now created.
|
|
|
|
|
| |
This adds a regression test for the graph component to test the
routing table.
|
|
|
|
|
|
| |
This lets the routing component listen to RIB events. It listens to
/fsdb which is populated with FSOs. The graph that is kept within the
routing component is updated depending on the event that was received.
|
|
|
|
|
|
| |
This adds a graph structure which will be updated by routing when it
is notified about a new RIB event. The routing can then use this graph
as input for calculating the shortest path to a destination.
|
|
|
|
| |
The CMakeLists files are now properly indented.
|
|
|
|
| |
This removes the CDAP flow class, which is no longer needed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This refactors the different Application Entities of the normal
IPCP. They all listen to and use the connection manager to establish
new application connections.
This commit also adds a neighbors struct to the normal IPCP. It
contains neighbor structs that contain application
connection. Notifiers can be registered in case a neighbor changes
(added, removed, QoS changed).
The flow manager has an instance of this neighbors struct and listens
to these events to update its flow set. The routing component also
listens to these events so that it can update the FSDB if needed. The
flow manager now also creates the PFF instances and the routing
instances per QoS cube.
The RIB manager also uses this an instance of the neighbors struct and
listens to neighbor events as well.
|
|
|
|
|
|
|
| |
This adds the connection manager which allows the different AEs of the
normal IPCP to register with it. An AE can then use the connection
manager to allocate a flow to a neighbor, or to wait for a new
connection from a neighbor.
|
|
|
|
|
| |
Avoids some code duplication in the normal IPCP with respect to
establishing authenticated CDAP flows.
|
|
|
|
|
|
|
|
|
|
| |
This PR updates the normal IPCP to use the new RIB. The old ribmgr is
removed and replaced by a stub that needs to be implemented. All
components (dir, fmgr, frct) were adapted to the new RIB API. A lot
of functionality was moved outside of the ribmgr, such as the
addr_auth, which is now a component of the IPCP. The address is also
stored to the ipcpi struct. The irm tool has an option to set the gam
policy of the rib manager.
|
|
|
|
| |
The CRC32 implementation will be used to ID objects in the RIB.
|
|
|
|
|
| |
This allows the selection of a policy for the graph adjacency
manager. Currently we only support constructing a complete graph.
|
|
|
|
|
| |
This commit adds the graph adjacency manager to the normal IPCP, which
sets up N-1 flows to other members.
|
| |
|
|
|
|
|
| |
Refactors the normal IPCP fmgr and ribmgr, and modifies the API for
cdap so that no callbacks are needed.
|
|
|
|
|
|
|
| |
This adds a hash table that takes 64-bit integers as key and uses
separate chaining on collision. It also adds the PDU Forwarding
Function, which the Flow Manager can use to lookup the fd towards the
next hop. Routing policies will add/update/remove entries in the PFF.
|
|
|
|
|
| |
This adds a directory to the normal IPCP that maps names on IPCP
addresses.
|
|
|
|
|
| |
This adds some helper functions to construct pathnames. Users of the
RIB manager may find these handy when constructing RIB objects.
|
|
|
|
|
| |
This will add a check in the flat address policy to see if the address
is in use or not.
|
|
|
|
|
| |
This adds the remote syncing of RIB objects. Subscribers are notified
upon receipt of new/deleted/updated RIB objects.
|
|
|
|
|
|
| |
This adds a policy for obtaining a flat address, and thus also the
infrastructure for policies in the IPCP. The IPCP should check if the
address is available; this is currently not there yet.
|
|
|
|
|
|
|
|
| |
This commit will remove the RMT component from the normal IPCP, as
some of its functionality would else be duplicated in the FMGR. Now
all reading from flows, either N-1 or N+1 is done in the FMGR, then
either passed to the FRCT or a lookup is performed in the PFF (not
there yet) and the PDU is forwarded.
|
|
|
|
|
|
|
|
|
| |
This adds the operations needed in the normal IPCP to get and set the
Protocol Control Information. It allows to allocate or release space
in the current DU. The struct pci can be serialized into newly
allocate space. Vice versa, a struct pci can be deserialized given a
DU. It allows for decreasing the TTL in the DU and for calculating the
CRC32. The TTL and CRC32 can now be selected when creating a new DIF.
|
|
|
|
| |
Destruction of the object in the reply stage was unsafe.
|
|
|
|
|
|
|
|
|
|
|
| |
This adds the initial framework for flow allocation between two N+1
endpoints. The FMGR will receive flow allocation requests and will
create a connection as a result, addressed to the right address, it
will also pass a flow allocation message to this address. Upon receipt
on the other side, the FMGR will be receive a flow allocation message
and a pointer to a new connection. The FMGR can then accept or destroy
the connection. This commit also introduces the RMT function, which is
needed by the FRCT to forward its SDUs on the right file descriptor.
|
|
|
|
|
|
| |
This adds the functionality of exchanging the static DIF information
between 2 DIF members. After exchange the enrollment is stopped, and
the IPCP that initiated enrollment transitions to the enrolled state.
|
|
|
|
|
|
|
|
|
| |
This adds the intial implementation of establishing management N-1
flows between normal IPCPs. On calling fmgr_mgmt_flow, a management
flow will be setup to a certain destination IPCP. After flow
allocation, the fd is handed to the RIB manager. The flow manager also
listens for incoming flow requests. In case they are management flows,
they are handed to the RIB manager, otherwise to the FRCT.
|
|
|
|
| |
Fixes #3
|
| |
|
|
|
|
|
|
| |
The installation prefix was taking a trailing backslash, while it is
common not to do so. Fixed it so that any trailing backslash is
removed by the compilation and installation scripts.
|
|
|
|
|
|
|
|
|
| |
This sets the correct install directories for all the binaries,
library and header files. It also sets the right permissions on the
sockets and shared memory so that regular users can also use the
ouroboros library. Root privileges are required to run the irmd.
Fixes #7
|
|
|
|
|
|
|
|
|
|
| |
This adds the QoS cube definition, which is an enum to select which
QoS is needed in the IPCP. An application has to use the qos_spec in
qos.h to define what it needs. The IRMd will map this unto a qos cube
definition.
Some headers are now also no longer installed on the system, since
they are only to be used within the irmd and ipcps.
|
|
Basic functions for implementation of IPC processes, and
implementation of core functions of the shim IPCP over UDP. Updates
to the build system to compile these IPC processes, as well as some
fixes in the irmd (rudimentary capturing exit signals) and some fixes
in the library, mainly relating to the messaging.
Basic implementation of creation / bootstrapping / deletion of the
shim UDP. Placeholders for other functions.
|