Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create Netceptor diagram #923

Draft
wants to merge 4 commits into
base: devel
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/diagrams/AddListenerBackend.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
```mermaid
%%{init: { 'theme':'dark', 'sequence': {'useMaxWidth':false}, 'fontSize': 14 } }%%
sequenceDiagram
participant Application
participant Netceptor
Expand Down
19 changes: 19 additions & 0 deletions docs/diagrams/Main.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
```mermaid
flowchart TD
Main[Receptor Main] --> NodeCfgInit[NodeCfg Init]
NodeCfgInit --> Netceptor[Netceptor]
NodeCfgInit --> Workceptor[Workceptor]
NodeCfgInit --> Controlsvc[Controlsvc]
Netceptor --> NetceptorDiagram[Netceptor Diagram]
Netceptor --> InstantiatingNetceptor[Instantiating Netceptor Diagram]

click Main "https://github.com/ansible/receptor/blob/devel/cmd/receptor-cl/receptor.go#L49" _blank
click NodeCfgInit "https://github.com/ansible/receptor/blob/devel/pkg/types/main.go#L21" _blank
click Netceptor "https://github.com/ansible/receptor/blob/devel/pkg/netceptor/netceptor.go#L385" _blank
click Controlsvc "https://github.com/ansible/receptor/blob/devel/pkg/controlsvc/controlsvc.go#L161" _blank
click Workceptor "https://github.com/ansible/receptor/blob/devel/pkg/workceptor/workceptor.go#L72" _blank

click NetceptorDiagram "https://github.com/ansible/receptor/blob/devel/docs/diagrams/Netceptor/Netceptor.md" _blank
click InstantiatingNetceptorDiagram "https://github.com/ansible/receptor/blob/devel/docs/diagrams/Netceptor/InstantiatingNetceptor.md" _blank

```
11 changes: 11 additions & 0 deletions docs/diagrams/Netceptor/InstantiatingNetceptor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
```mermaid
%%{init: { 'theme':'dark', 'sequence': {'useMaxWidth':false}, 'fontSize': 14 } }%%
sequenceDiagram
participant Application
participant Netceptor

Application->>+Netceptor: New
Netceptor-->>-Application: netceptor instance n1
Application->>+Netceptor:context.Background()
Netceptor-->>-Application:context.Done()
```
126 changes: 126 additions & 0 deletions docs/diagrams/Netceptor/NetceptorDefinition.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
```mermaid
classDiagram
class Netceptor {
- nodeID: string
- mtu: int
- routeUpdateTime: time.Duration
- serviceAdTime: time.Duration
- seenUpdateExpireTime: time.Duration
- maxForwardingHops: byte
- maxConnectionIdleTime: time.Duration
- workCommands: []WorkCommand
- workCommandsLock: *sync.RWMutex
- epoch: uint64
- sequence: uint64
- sequenceLock: *sync.RWMutex
- connLock: *sync.RWMutex
- connections: map[string]*connInfo
- knownNodeLock: *sync.RWMutex
- knownNodeInfo: map[string]*nodeInfo
- seenUpdatesLock: *sync.RWMutex
- seenUpdates: map[string]time.Time
- knownConnectionCosts: map[string]map[string]float64
- routingTableLock: *sync.RWMutex
- routingTable: map[string]string
- routingPathCosts: map[string]float64
- listenerLock: *sync.RWMutex
- listenerRegistry: map[string]*PacketConn
- sendRouteFloodChan: chan time.Duration
- updateRoutingTableChan: chan time.Duration
- context: context.Context
- cancelFunc: context.CancelFunc
- hashLock: *sync.RWMutex
- nameHashes: map[uint64]string
- reservedServices: map[string]func(*MessageData) error
- serviceAdsLock: *sync.RWMutex
- serviceAdsReceived: map[string]map[string]*ServiceAdvertisement
- sendServiceAdsChan: chan time.Duration
- backendWaitGroup: sync.WaitGroup
- backendCount: int
- backendCancel: []context.CancelFunc
- networkName: string
- serverTLSConfigs: map[string]*tls.Config
- clientTLSConfigs: map[string]*tls.Config
- clientPinnedFingerprints: map[string][][]byte
- unreachableBroker: *utils.Broker
- routingUpdateBroker: *utils.Broker
- firewallLock: *sync.RWMutex
- firewallRules: []FirewallRuleFunc
+ Logger: *logger.ReceptorLogger

+ AddBackend(backend Backend, modifiers ...func(*BackendInfo)) error
+ AddFirewallRules(rules []FirewallRuleFunc, clearExisting bool) error
+ AddLocalServiceAdvertisement(service string, connType byte, tags map[string]string)
+ AddNameHash(name string) uint64
+ AddWorkCommand(command string, secure bool) error
+ BackendCount() int
+ BackendDone()
+ BackendWait()
+ CancelBackends()
+ Context() context.Context
+ Dial(node string, service string, tlscfg *tls.Config) (*Conn, error)
+ DialContext(ctx context.Context, node string, service string, tlscfg *tls.Config) (*Conn, error)
+ GetClientTLSConfig(name string, expectedHostName string, expectedHostNameType ExpectedHostnameType) (*tls.Config, error)
+ GetEphemeralService() string
+ GetListenerLock() *sync.RWMutex
+ GetListenerRegistry() map[string]*PacketConn
+ GetLogger() *logger.ReceptorLogger
+ GetNameFromHash(namehash uint64) (string, error)
+ GetNetworkName() string
+ GetServerTLSConfig(name string) (*tls.Config, error)
+ GetServiceInfo(nodeID string, service string) (*ServiceAdvertisement, bool)
+ GetUnreachableBroker() *utils.Broker
+ Listen(service string, tlscfg *tls.Config) (*Listener, error)
+ ListenAndAdvertise(service string, tlscfg *tls.Config, tags map[string]string) (*Listener, error)
+ ListenPacket(service string) (PacketConner, error)
+ ListenPacketAndAdvertise(service string, tags map[string]string) (PacketConner, error)
+ MTU() int
+ MaxConnectionIdleTime() time.Duration
+ MaxForwardingHops() byte
+ NetceptorDone() <-chan struct
+ NewAddr(node string, service string) Addr
+ NodeID() string
+ PathCost(nodeID string) (float64, error)
+ Ping(ctx context.Context, target string, hopsToLive byte) (time.Duration, string, error)
+ RemoveLocalServiceAdvertisement(service string) error
+ RouteUpdateTime() time.Duration
+ SeenUpdateExpireTime() time.Duration
+ SendMessageWithHopsToLive(fromService string, toNode string, toService string, data []byte, hopsToLive byte) error
+ ServiceAdTime() time.Duration
+ SetClientTLSConfig(name string, config *tls.Config, pinnedFingerprints [][]byte) error
+ SetMaxConnectionIdleTime(userDefinedMaxIdleConnectionTimeout string) error
+ SetServerTLSConfig(name string, config *tls.Config) error
+ Shutdown()
+ Status() Status
+ SubscribeRoutingUpdates() chan map[string]string
+ Traceroute(ctx context.Context, target string) <-chan *TracerouteResult
- dispatchReservedService(md *MessageData) (bool, error)
- expireSeenUpdates()
- flood(message []byte, excludeConn string)
- forwardMessage(md *MessageData) error
- handleMessageData(md *MessageData) error
- handlePing(md *MessageData) error
- handleRoutingUpdate(ri *routingUpdate, recvConn string)
- handleServiceAdvertisement(data []byte, receivedFrom string) error
- handleUnreachable(md *MessageData) error
- listen(ctx context.Context, service string, tlscfg *tls.Config, advertise bool, adTags map[string]string) (*Listener, error)
- makeRoutingUpdate(suspectedDuplicate uint64) *routingUpdate
- monitorConnectionAging()
- printRoutingTable()
- removeConnection(remoteNodeID string)
- runProtocol(ctx context.Context, sess BackendSession, bi *BackendInfo) error
- sendAndLogConnectionRejection(remoteNodeID string, ci *connInfo, reason string) error
- sendInitialConnectMessage(ci *connInfo, initDoneChan chan bool)
- sendMessage(fromService string, toNode string, toService string, data []byte) error
- sendRejectMessage(ci *connInfo)
- sendRoutingUpdate(suspectedDuplicate uint64)
- sendServiceAd(si *ServiceAdvertisement) error
- sendServiceAds()
- sendUnreachable(toNode string, message *UnreachableMessage) error
- translateDataFromMessage(msg *MessageData) ([]byte, error)
- translateDataToMessage(data []byte) (*MessageData, error)
- translateStructToNetwork(messageType byte, content interface) ([]byte, error)
- updateRoutingTable()
}

```
Loading