{"id":27243231,"url":"https://github.com/netgroup-polito/frog4","last_synced_at":"2026-01-22T00:34:46.609Z","repository":{"id":71244533,"uuid":"56071216","full_name":"netgroup-polito/frog4","owner":"netgroup-polito","description":"Main repository of FROG v.4,  a cloud/NFV orchestrator supporting heterogeneous infrastructure domains","archived":false,"fork":false,"pushed_at":"2017-09-23T08:36:34.000Z","size":5397,"stargazers_count":4,"open_issues_count":2,"forks_count":4,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-04-10T20:41:49.499Z","etag":null,"topics":["multi-domain","multi-domain-orchestrator","nfv","orchestration-framework","orchestrator","sdn"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/netgroup-polito.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-04-12T14:39:44.000Z","updated_at":"2024-05-12T07:20:43.000Z","dependencies_parsed_at":"2023-05-18T19:45:33.132Z","dependency_job_id":null,"html_url":"https://github.com/netgroup-polito/frog4","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/netgroup-polito/frog4","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netgroup-polito%2Ffrog4","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netgroup-polito%2Ffrog4/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netgroup-polito%2Ffrog4/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netgroup-polito%2Ffrog4/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/netgroup-polito","download_url":"https://codeload.github.com/netgroup-polito/frog4/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/netgroup-polito%2Ffrog4/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28648460,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T21:29:11.980Z","status":"ssl_error","status_checked_at":"2026-01-21T21:24:31.872Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["multi-domain","multi-domain-orchestrator","nfv","orchestration-framework","orchestrator","sdn"],"created_at":"2025-04-10T20:27:36.180Z","updated_at":"2026-01-22T00:34:46.604Z","avatar_url":"https://github.com/netgroup-polito.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# The FROG (v.4)\n\nThe **FROG** is a SDN/NFV/cloud orchestration architecture that supports multiple heterogeneous domains.\n\nThe FROG is made of several components.\nGiven that a complex infrastructure is composed by several domains (e.g., SDN/OpenFlow network, OpenStack cloud), each (homogeneous) infrastructure domain is handled by a dedicated FROG domain orchestrator.\n**Domain orchestrators**, each one responsible of a single infrastructure domain, cooperate by timely exporting (i.e., _publishing_) the capabilities and the available resources to a **message bus**. \nFinally, an **overarching orchestrator**, sitting on the same bus, will receive that information and will coordinate the deployment of the requested service across the entire infrastructure.\n\nSupported domains include **SDN/OpenFlow** network infrastructures, traditional cloud computing domains (e.g., **OpenStack**), and resource-limited SOHO **home gateways**, properly extended to make it compatible with the FROG orchestrator. The set of capabilities and resources exported by each single domain, coupled with the constraints specified by the service itself (e.g., the IPsec client endpoint must stay on the tenant home gateway and not on the data centre) determines how the orchestrator splits the service graph, originating the proper set of sub-graphs that are deployed on the selected infrastructure domains.\n\nThe FROG orchestration architecture heavily relies on an intermediate message bus, which complements the traditional REST API to interconnect the different components.\nThis solution provides a clear advantage when the recipient of the information published is not known such as in the bootstrapping process, or when different components (e.g., service layer and orchestrator) need to know the same information coming from the infrastructure domains to perform their job.\n\nThe last block of the architecture is the preferred service layer @POLITO, called \"*user-defined network functions*\", which allows to deploy a complex service based on a set of events occurring in the infrastructure. However, the above service layer is only a proof of concept and can be replaced by other service layers, while the orchestration architecture is service-independent and is able to orchestrate whatever request coming as a service graph.\n\nAn overview of the architecture, with a possible usage example, is shown in the picture below.\n\n![](https://raw.githubusercontent.com/wiki/netgroup-polito/frog4/images/frog-overview.png)\n\n\n## Main FROG components\n\nThe FROG is made by different components, which are developed independently:\n  * [FROG orchestrator](http://github.com/netgroup-polito/frog4-orchestrator/): overarching orchestrator, which controls different infrastructure domains.\n  * [FROG OpenStack Domain Orchestrator](http://github.com/netgroup-polito/frog4-openstack-do/): domain orchestrator, it can control an OpenStack domain.\n  * [FROG OpenFlow Domain Orchestrator](http://github.com/netgroup-polito/frog4-openflow-do/): domain orchestrator, it can control a pure OpenFlow domain (either using ONOS or OpenDayLight).\n  * [FROG User-Defined Service Functions (Service Layer)](http://github.com/netgroup-polito/frog4-service-layer/): one of the possible service layer. This component deploys an _authentication graph_, forcing all the user devices (e.g., laptops) to be redirected to a captive portal to authenticate the user itself. When this happens, this component asks the orchestrator to deploy a user-specific graph and redirects all the user traffic to it.\n  * [FROG datastore](https://github.com/netgroup-polito/frog4-datastore): repository that contains VNF templates and images, service descriptions, and more.\n  * [FROG WEB UI](https://github.com/netgroup-polito/fg-gui): web interface that allows to create, modify and view complex virtualized service graphs. It can interact both with the FROG orchestrator and with the specific domain orchestrator.\n\nIn addition, the FROG orchestrator is compatible with the [Universal Node](http://github.com/netgroup-polito/un-orchestrator) as well, hence you can use that component to bring one (or more) compute nodes, such as home gateways, as part of the controlled infrastructure.\n\nThe FROG architecture relies on [DoubleDecker](https://github.com/Acreo/DoubleDecker), an intermediate message bus to interconnect the different components.\nThis solution provides a clear advantage when the recipient of the information published is not known such as in the bootstrapping process, or when different components (e.g., service layer and orchestrator) need to know the same information coming from the infrastructure domains to perform their job.\n\nAll FROG components expose also a REST API to play with, whose description is available (after installing the selected component) at the URL `http://{component_address}:{component_port}/apidocs/index.html`.\n\n## Additional documentation\nAdditional documentation, such as installation instructions, etc, is available in the [docs](docs/) folder. \n\n## Events and demos\nThe FROG has been showcased in multiple events and demos; some examples can be found in the [events](events/) folder.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetgroup-polito%2Ffrog4","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnetgroup-polito%2Ffrog4","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnetgroup-polito%2Ffrog4/lists"}