@startuml participant BDM_control participant BDM_dispatch participant uD3TN participant Storage BDM_control -> uD3TN: connect uD3TN -> BDM_control: Welcome(node_id = 'ipn:1.0') BDM_control -> uD3TN: Configure(is_subscriber = false, auth_type = FIB_CONTROL, secret = ...) uD3TN -> uD3TN: check secret uD3TN -> BDM_control: ACK BDM_control -> uD3TN: Link(peer_node_id = 'ipn:42.0', peer_cla_addr = ...) uD3TN -> uD3TN: invoke CLA connection uD3TN -> BDM_control: ACK BDM_dispatch -> uD3TN: connect uD3TN -> BDM_dispatch: Welcome(node_id = 'ipn:1.0') BDM_dispatch -> uD3TN: Configure(is_subscriber = true, auth_type = BUNDLE_DISPATCH, secret = ...) uD3TN -> uD3TN: check secret uD3TN -> BDM_dispatch: ACK uD3TN -> BDM_dispatch: Link(peer_node_id = 'ipn:42.0', status = ACTIVE, ...) BDM_dispatch -> uD3TN: ACK BDM_control -> uD3TN: BundleADU(peer_eid = 'ud3tn:storage', payload = StorageCall(PUSH_BUNDLES, filter = 'ipn:4*')) uD3TN -> uD3TN: create bundle to storage CLA uD3TN -> BDM_control: ACK uD3TN -> Storage: Bundle(StorageCall(...)) Storage -> Storage: load bundles matching filter Storage -> uD3TN: Bundle(to = 'ipn:42.0', ...) Storage -> uD3TN: Bundle(to = 'ipn:44.7', ...) uD3TN -> uD3TN: process incoming bundles uD3TN -> uD3TN: forward Bundle(to = 'ipn:42.0', ...) to 'ipn:42.0' uD3TN -> BDM_dispatch: Bundle(dst_eid = 'ipn:44.7', ...) BDM_dispatch -> uD3TN: Dispatch(next_hop_node_id = ['ipn:42.0']) uD3TN -> uD3TN: forward Bundle(to = 'ipn:44.7', ...) to 'ipn:42.0' @enduml