# Harmonic * [Component Diagram](#Component-Diagram) * [Using FZAG as Backlink to NM](#Variant-1-Using-FZAG-as-Backlink-to-NM) * [Network Diagrams](#Network-Diagrams) ## Component Diagram ### Variant #1: Using FZAG as Backlink to NM ```plantuml @startuml skinparam rectangle { BackgroundColor<<FRQ>> Cyan FontColor<<FRQ>> Black BackgroundColor<<JKU>> Lightgreen BackgroundColor<<AIT>> Orange BackgroundColor<<Swiss>> Red BackgroundColor<<Skyguide>> Plum BackgroundColor<<FZAG>> SaddleBrown FontColor<<FZAG>> White } skinparam component { BackgroundColor<<FRQ>> Cyan FontColor<<FRQ>> Black BackgroundColor<<JKU>> Lightgreen BackgroundColor<<FRQ+JKU>> Lightblue BackgroundColor<<AIT>> Orange BackgroundColor<<Swiss>> Red BackgroundColor<<Skyguide>> Plum BackgroundColor<<FZAG>> SaddleBrown FontColor<<FZAG>> White } skinparam database { BackgroundColor<<JKU>> Lightgreen } rectangle "Airport" as ap #moccasin { rectangle "TTMS" <<FRQ>> as ttms { component "Controller" <<JKU>> as controller database "DB" <<JKU>> as db component "Dashboard" <<FRQ+JKU>> as dashboard component "Optimizer" <<JKU>> as optimizer component "Privacy Engine" <<AIT>> as pe component "Equity\nManager" <<JKU>> as equality controller -down-> optimizer optimizer -down-> pe controller -left-> db dashboard -up-> db equality -> db } component "MPC Node" <<AIT>> as mpc1 pe -down-> mpc1 component "AP ClientIF" <<FRQ>> as apClientIF component "PE Encode" <<AIT>> as apPeEnc apClientIF -up-> apPeEnc component "Airport Bridge" <<FZAG>> as bridge component "FZAG System" <<FZAG>> as fzagSys controller <-up-> apClientIF apClientIF -up-> fzagSys apClientIF <-left- bridge } database "NM\nECTL" as nm { component "NM B2B" as casa } nm -> bridge nm <- fzagSys rectangle "Airspace User (SWISS)" <<SWISS>> as au1 #coral { component "AU ClientIF" <<FRQ>> as auClientIF component "PE Encode" <<AIT>> as auPeEnc auClientIF -down-> auPeEnc component "SWISS ORCAS" <<SWISS>> as orcas auClientIF -right-> orcas component "MPC Node" <<AIT>> as mpc2 pe -down-> mpc2 } controller -right-> auClientIF rectangle "Airspace User (other)" as au2 { component "AU ClientIF" <<FRQ>> as au2ClientIF component "PE Encode" <<AIT>> as au2PeEnc au2ClientIF -down-> au2PeEnc component "ClientUI" <<FRQ>> as clientUI au2ClientIF -right-> clientUI } controller -right-> au2ClientIF rectangle "ANSP (Skyguide)" <<Skyguide>> as ansp #lavender { component "ANSP clientIF" <<FRQ>> as anspClientIF component "PE Encode" <<AIT>> as anspPeEnc anspClientIF -down-> anspPeEnc component "Skyguide AOP System" <<Skyguide>> as skyguide anspClientIF -right-> skyguide component "MPC Node" <<AIT>> as mpc3 pe -down-> mpc3 } mpc1 <-> mpc2 mpc1 <-> mpc3 controller -down-> anspClientIF rectangle "FZAG" <<FZAG>> rectangle "SWISS" <<SWISS>> rectangle "Skyguide" <<Skyguide>> rectangle "FRQ" <<FRQ>> rectangle "JKU" <<JKU>> rectangle "AIT" <<AIT>> @enduml ``` <p> &nbsp;<br>&nbsp;<br>&nbsp; </p> ### ~~Variant #2: Using Skyguide as Backlink to NM~~ (deprecated) ```plantuml @startuml skinparam rectangle { BackgroundColor<<FRQ>> Cyan FontColor<<FRQ>> Black BackgroundColor<<JKU>> Lightgreen BackgroundColor<<AIT>> Orange BackgroundColor<<Swiss>> Red BackgroundColor<<Skyguide>> Plum BackgroundColor<<FZAG>> SaddleBrown FontColor<<FZAG>> White } skinparam component { BackgroundColor<<FRQ>> Cyan FontColor<<FRQ>> Black BackgroundColor<<JKU>> Lightgreen BackgroundColor<<FRQ+JKU>> Lightblue BackgroundColor<<AIT>> Orange BackgroundColor<<Swiss>> Red BackgroundColor<<Skyguide>> Plum BackgroundColor<<FZAG>> SaddleBrown FontColor<<FZAG>> White } skinparam database { BackgroundColor<<JKU>> Lightgreen } rectangle "Airport" as ap #moccasin { rectangle "TTMS" <<FRQ>> as ttms { component "Controller" <<JKU>> as controller database "DB" <<JKU>> as db component "Dashboard" <<FRQ+JKU>> as dashboard component "Optimizer" <<JKU>> as optimizer component "Privacy Engine" <<AIT>> as pe component "Equity\nManager" <<JKU>> as equality controller -down-> optimizer optimizer -down-> pe controller -left-> db dashboard -up-> db equality -> db } component "MPC Node" <<AIT>> as mpc1 pe -down-> mpc1 component "AP ClientIF" <<FRQ>> as apClientIF component "PE Encode" <<AIT>> as apPeEnc apClientIF -up-> apPeEnc component "Airport Bridge" <<FZAG>> as bridge controller <-up-> apClientIF apClientIF <-left- bridge } database "NM\nECTL" as nm { component "NM B2B" as nmb2b } nm -down-> bridge rectangle "Airspace User (SWISS)" <<SWISS>> as au1 #coral { component "AU ClientIF" <<FRQ>> as auClientIF component "PE Encode" <<AIT>> as auPeEnc auClientIF -down-> auPeEnc component "SWISS ORCAS" <<SWISS>> as orcas auClientIF -right-> orcas component "MPC Node" <<AIT>> as mpc2 pe -down-> mpc2 } controller <-right-> auClientIF rectangle "Airspace User (other)" as au2 { component "AU ClientIF" <<FRQ>> as au2ClientIF component "PE Encode" <<AIT>> as au2PeEnc au2ClientIF -down-> au2PeEnc component "ClientUI" <<FRQ>> as clientUI au2ClientIF -right-> clientUI } controller <-right-> au2ClientIF rectangle "ANSP (Skyguide)" <<Skyguide>> as ansp #lavender { component "ANSP clientIF" <<FRQ>> as anspClientIF component "Skyguide AOP System" <<Skyguide>> as skyguide component "PE Encode" <<AIT>> as anspPeEnc component "TTA Communication" <<Skyguide>> as ttacom anspClientIF -down-> anspPeEnc anspClientIF <-down- skyguide anspClientIF -right-> ttacom ttacom -up-> nmb2b component "MPC Node" <<AIT>> as mpc3 pe -down-> mpc3 } mpc1 <--> mpc2 mpc1 <--> mpc3 mpc2 <-> mpc3 controller <-down-> anspClientIF rectangle "FZAG" <<FZAG>> rectangle "SWISS" <<SWISS>> rectangle "Skyguide" <<Skyguide>> rectangle "FRQ" <<FRQ>> rectangle "JKU" <<JKU>> rectangle "AIT" <<AIT>> @enduml ``` ### Variant #3: TTMS Cloud Deployment ```plantuml @startuml skinparam rectangle { BackgroundColor<<FRQ>> Cyan FontColor<<FRQ>> Black BackgroundColor<<JKU>> Lightgreen BackgroundColor<<AIT>> Orange BackgroundColor<<Swiss>> Red BackgroundColor<<Skyguide>> Plum BackgroundColor<<FZAG>> SaddleBrown FontColor<<FZAG>> Black } skinparam component { BackgroundColor<<FRQ>> Cyan FontColor<<FRQ>> Black BackgroundColor<<JKU>> Lightgreen BackgroundColor<<FRQ+JKU>> Lightblue BackgroundColor<<AIT>> Orange BackgroundColor<<Swiss>> Red BackgroundColor<<Skyguide>> Plum BackgroundColor<<FZAG>> SaddleBrown FontColor<<FZAG>> White } skinparam database { BackgroundColor<<JKU>> Lightgreen } database "NM\nECTL" as nm { component "NM B2B" as casa } cloud "Cloud Hosted" <<???>> as ttmsCloud { rectangle "TTMS" <<FRQ>> as ttms { component "Controller" <<JKU>> as controller database "DB" <<JKU>> as db component "Dashboard" <<FRQ+JKU>> as dashboard component "Optimizer" <<JKU>> as optimizer component "Privacy Engine" <<AIT>> as pe component "Equity\nManager" <<JKU>> as equality controller -down-> optimizer optimizer -down-> pe controller -down-> db dashboard -up-> db equality -> db } package "Other AU Users" { component "AU ClientIF" <<FRQ>> as oauClientIF { component "PE Encode" <<AIT>> as oauPeEnc } component "AU ClientUI" <<FRQ>> as oauClientUI oauClientIF -> oauClientUI oauClientIF -down-> controller } } cloud "MPC Hosting" <<???>> as mpcHost { rectangle "Airport" <<FZAG>> as apMpc #moccasin { component "MPC Node" <<AIT>> as mpc1 } rectangle "Airspace User" <<SWISS>> as auMpc #coral { component "MPC Node" <<AIT>> as mpc2 } rectangle "ANSP" <<Skyguide>> as anspMpc #lavender { component "MPC Node" <<AIT>> as mpc3 } mpc1 <-> mpc2 mpc2 <-> mpc3 mpc3 <-down-> mpc1 pe <--down-> mpcHost } rectangle "Hosting ???" <<???>> as nmInputHost { rectangle "NM Input IF" <<FRQ>> as nmInput rectangle "NM ATM System" <<???>> as nmAtmInput nmInput -up-> controller nmAtmInput -> nmInput } rectangle "Hosting ???" <<???>> as nmOutputHost { rectangle "NM Output IF" <<FRQ>> as nmOutput rectangle "NM ATM System" <<???>> as nmAtmOutput nmOutput <-- controller nmAtmOutput <- nmOutput } nm -down-> nmAtmInput nm <-down- nmAtmOutput rectangle "Airport" <<FZAG>> as ap #moccasin { component "AP ClientIF" <<FRQ>> as apClientIF component "ZRH Bridge" <<FZAG>> as bridge component "AP ClientUI" <<FRQ>> as apClientUI apClientIF <-down-> bridge apClientIF <-down-> apClientUI controller <-> apClientIF } rectangle "Airspace User (SWISS)" <<SWISS>> as au1 #coral { component "AU ClientIF" <<FRQ>> as auClientIF { component "PE Encode" <<AIT>> as auPeEnc } component "SWISS ORCAS" <<SWISS>> as orcas component "AUClientUI" <<FRQ>> as auClientUI auClientIF <-down-> orcas auClientIF <-down-> auClientUI controller <-> auClientIF } rectangle "ANSP (Skyguide)" <<Skyguide>> as ansp #lavender { component "ANSP clientIF" <<FRQ>> as anspClientIF component "Skyguide AOP System" <<Skyguide>> as skyguide component "ANSP ClientUI" <<FRQ>> as anspClientUI anspClientIF <-down-> skyguide anspClientIF <-down-> anspClientUI controller <-> anspClientIF } rectangle "Airspace User (other)" <<other>> as au2 { rectangle "Web Browser" as oauBrowser oauBrowser -down-> oauClientUI } @enduml ``` ## Network Diagrams ### FZAG ```plantuml @startuml nwdiag { Internet [shape=cloud]; Internet -- fzag_inet_fw; network DMZ_external { address="x.x.x.x/y"; fzag_inet_fw [description = "<&fire*2> Firewall"]; controller [address="x.x.x.x"]; dashboard [address="x.x.x.x"]; pe [address="x.x.x.x", shape=node, description="<b>Privacy Engine</b>\nharmonic/pe-controller"]; } network DMZ_internal { controller [address="x.x.x.10", shape=node, description="<b>Controller</b>\nharmonic/controller"]; dashboard [address="x.x.x.11", shape=node, description="<b>Dashboard</b>\nharmonic/dashboard"]; pe [address="x.x.x.12"]; fzag_mpc [address="x.x.x.13", shape=node, description="<b>MPC Node</b>\nharmonic/mpc_node"]; fzag_internal_fw [description = "<&fire*2> Firewall"]; } network TTMS { address="x.x.x.x/y"; fzag_internal_fw; clientIF [address="x.x.x.20", shape=node, description="<b>AP ClientIF</b>\nharmonic/ap-clientif"]; db [address="x.x.x.21", shape=database, description="<b>Database</b>\nharmonic/datawarehouse"]; equality [address="x.x.x.22", shape=node, description="<b>Equality Manager</b>\nharmonic/equity"] optimizer [address="x.x.x.23", shape=node, description="<b>Optimizer</b>\nharmonic/optimizer"]; } network FZAG { address="x.x.x.x/y"; clientIF; clientUI [address="x.x.x.30", shape=node, description="<b>ClientUI</b>\nharmonic/ap-clientui"]; peenc [address="x.x.x.31", shape=node, description="<b>PE Encoder</b>\nharmonic/pe-enc"]; bridge [address="x.x.x.x", shape=collections, description="<b>Airport Bridge</b>\nprovides current flight sequence"]; system [address="x.x.x.x", shape=collections, description="<b>FZAG System</b>\nNM CASA access"]; } } @enduml ``` ### SWISS ```plantuml @startuml nwdiag { Internet [shape=cloud]; Internet -- inet_fw; network DMZ_external { address="x.x.x.x/y"; inet_fw [description = "<&fire*2> Firewall"]; swiss_clientIF [address="x.x.x.x"]; swiss_mpc [address="x.x.x.x", [shape=node, description="<b>MPC Node</b>\nharmonic/mpc_node"]; } network DMZ_internal { swiss_clientIF [address="x.x.x.x", shape=node, description="<b>AU ClientIF</b>\nharmonic/au-clientif"]; internal_fw [description = "<&fire*2> Firewall"]; } network SWISS { address="x.x.x.x/y"; internal_fw; swiss_clientUI [address="x.x.x.x", shape=node, description="<b>ClientUI</b>\nharmonic/au-clientui"]; swiss_peenc [address="x.x.x.x", shape=node, description="<b>PE Encoder</b>\nharmonic/pe-enc"]; orcas [address="x.x.x.x", shape=collections, description="<b>SWISS ORCAS</b>"]; } } @enduml ``` ### Skyguide ```plantuml @startuml nwdiag { Internet [shape=cloud]; Internet -- inet_fw; network DMZ_external { address="x.x.x.x/y"; inet_fw [description = "<&fire*2> Firewall"]; skyguide_clientIF [address="x.x.x.x"]; skyguide_mpc [address="x.x.x.x", [shape=node, description="<b>MPC Node</b>\nharmonic/mpc_node"]; } network DMZ_internal { skyguide_clientIF [address="x.x.x.x", shape=node, description="<b>ANSP ClientIF</b>\nharmonic/ansp-clientif"]; internal_fw [description = "<&fire*2> Firewall"]; } network SWISS { address="x.x.x.x/y"; internal_fw; skyguide_clientUI [address="x.x.x.x", shape=node, description="<b>ClientUI</b>\nharmonic/ansp-clientui"]; skyguide_peenc [address="x.x.x.x", shape=node, description="<b>PE Encoder</b>\nharmonic/pe-enc"]; system [address="x.x.x.x", shape=collections, description="<b>Skyguide System</b>"]; } } @enduml ``` ### EUROCONTROL ```plantuml @startuml nwdiag { Internet [shape=cloud]; Internet -- inet_fw; network EUROCONTROL { address="x.x.x.x/y"; inet_fw [description = "<&fire*2> Firewall"]; casa [address="x.x.x.x", shape=collections, description="<b>CASA</b>"]; } } @enduml ```