{"id":13932926,"url":"https://github.com/hubo1016/vlcp","last_synced_at":"2026-01-14T07:37:36.913Z","repository":{"id":62587671,"uuid":"41724434","full_name":"hubo1016/vlcp","owner":"hubo1016","description":"A production-ready SDN controller, and a highly-extensible SDN framework.","archived":false,"fork":false,"pushed_at":"2019-12-13T06:52:47.000Z","size":2226,"stargazers_count":225,"open_issues_count":1,"forks_count":30,"subscribers_count":18,"default_branch":"master","last_synced_at":"2025-08-17T18:44:54.786Z","etag":null,"topics":["async-programming","docker","sdn-controller","sdn-network"],"latest_commit_sha":null,"homepage":"http://vlcp.readthedocs.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hubo1016.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-09-01T07:43:06.000Z","updated_at":"2025-06-11T21:06:02.000Z","dependencies_parsed_at":"2022-11-03T17:48:23.333Z","dependency_job_id":null,"html_url":"https://github.com/hubo1016/vlcp","commit_stats":null,"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"purl":"pkg:github/hubo1016/vlcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hubo1016%2Fvlcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hubo1016%2Fvlcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hubo1016%2Fvlcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hubo1016%2Fvlcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hubo1016","download_url":"https://codeload.github.com/hubo1016/vlcp/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hubo1016%2Fvlcp/sbom","scorecard":{"id":471963,"data":{"date":"2025-08-11","repo":{"name":"github.com/hubo1016/vlcp","commit":"61c4c2595b610675ac0cbc4dbc46f70ec40090d3"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 1/12 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: downloadThenRun not pinned by hash: ci_test.sh:39","Warn: downloadThenRun not pinned by hash: ci_test.sh:41","Info:   0 out of   2 downloadThenRun dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":1,"reason":"9 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2019-217 / GHSA-462w-v97r-4m45","Warn: Project is vulnerable to: PYSEC-2014-8 / GHSA-8r7q-cvjq-x353","Warn: Project is vulnerable to: GHSA-cpwx-vrp4-4pq7","Warn: Project is vulnerable to: PYSEC-2014-82 / GHSA-fqh9-2qgg-h84h","Warn: Project is vulnerable to: PYSEC-2021-66 / GHSA-g3rq-g295-4j3m","Warn: Project is vulnerable to: GHSA-h5c8-rqwp-cp95","Warn: Project is vulnerable to: GHSA-h75v-3vvj-5mfj","Warn: Project is vulnerable to: PYSEC-2019-220 / GHSA-hj2j-77xm-mc5v","Warn: Project is vulnerable to: GHSA-q2x7-8rv6-6q7h"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 26 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-19T14:08:47.309Z","repository_id":62587671,"created_at":"2025-08-19T14:08:47.309Z","updated_at":"2025-08-19T14:08:47.309Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28413454,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T05:26:33.345Z","status":"ssl_error","status_checked_at":"2026-01-14T05:21:57.251Z","response_time":107,"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":["async-programming","docker","sdn-controller","sdn-network"],"created_at":"2024-08-07T21:01:22.324Z","updated_at":"2026-01-14T07:37:36.896Z","avatar_url":"https://github.com/hubo1016.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# VLCP\n\n[![Build Status](https://travis-ci.org/hubo1016/vlcp.svg?branch=master)](https://travis-ci.org/hubo1016/vlcp)\n[![PyPI](https://img.shields.io/pypi/v/vlcp.svg)](https://pypi.python.org/pypi/vlcp)\n[![codecov](https://codecov.io/gh/hubo1016/vlcp/branch/master/graph/badge.svg)](https://codecov.io/gh/hubo1016/vlcp)\n\nVLCP is a modern SDN controller able to be integrated with OpenStack, Docker and other virtualization environments.\nIt is designed to be highly scalable, highly available and have very low overhead for virtual networking. \nCurrently it is ready for production, and has been verified, tested and in use in clusters with about 10 physical\nservers. Tests show that the controller stays stable for more than a week under high pressure as: 1000 endpoints per\nserver; 16+ Gbps traffic; 200 endpoint changes (creations and deletions) per minute per server.\n\n## Why VLCP\n\n## Functions\n\nVLCP provides the ability to create both L2 and L3 SDN networks. All the elements in the SDN network like physical networks (infrastructures), logical networks and endpoints can be modified at any time and take an immediate effect.\nLogical networks are fully isolated with each other, including the abilities to use the same MAC addresses or IP\naddresses. It is very easy to create multi-tenant networks with VLCP controllers. VLCP supports both VLAN and VXLAN\nfor isolation; it is even possible to use them for different logical networks at the same time.\n\nVLCP provides easy-to-use web APIs for configurations. The APIs can be used anywhere with a connection to the central\ndatabase, and multiple instances can be deployed to provide load balancing or high-availabilities.\n\nFor VXLAN, VLCP supports software implementation on OpenvSwitch, and hardware implementation with hardware_vtep\ninterface on physical switches (the same interface used by NSX). Software VXLAN implementation provides about\n6+Gbps for each server. With physical switches supporting hardware_vtep, it is usually 20+Gbps.\n\n### Stabilities\n\nVLCP has a modern software architecture. It is designed to be stable under the worst situations. Usually the\ncontroller is deployed on each server, working independently. Server failures only affects traffic to and from\nthis server. As long as the servers containing the source endpoint and the destination endpoint stay alive, network\ntraffic between these two endpoints is not affected.\n\nVLCP uses a ZooKeeper cluster for configuration management. ZooKeeper provides consistency for all the nodes easily.\nAll nodes are equal to each other when reading from and writing to the central storage. They use a transaction layer\nto provide ACID on multiple keys, so any change to the central storage either success or fail at once. Nodes use the\nWatch mechanism of ZooKeeper to subscribe and update informations related to the local endpoints. There is not any\nmiddle-states, any critical failures like power failures, system core dumps, network disconnections are recoverable.\nThe hardest recover operations of VLCP controllers are no more than restarting the controller. Usually it recovers\nas soon as the network/system problems are solved.\n\nThere are multiple guarantees for the SDN network connectivities:\n\n1. Partial failures (less than half of the servers) on the ZooKeeper cluster do not affect any operations\n\n2. A full failure on the ZooKeeper cluster makes it impossible to create/delete/modify endpoints, but the\n   existed endpoints are not affected.\n\n3. Controller crashes on one server makes it stop responding to network structure changes (endpoint\n   creation/deletion etc.), but the existed endpoints are not affected.\n\n4. OpenvSwitch crashes, server crashes disconnect the endpoints on this server with other endpoints, but\n   connectivities between endpoints on other servers are not affected.\n   \n5. Failures are always recoverable. No components would stay in a middle-state.\n   \nWith these guarantees, any disasters can be keep in the smallest scope to reduce the impact to the\nproduction environment.\n\n## Highly Extensible\n\nVLCP is designed to be both a production-ready SDN controller and an extensible SDN framework. Most functions\nin the SDN networks are split into smaller modules, each provides an independent function. Every module can\nbe loaded, unloaded or reloaded even without a restarting. You can rearrange the modules to add or remove functions.\nIt is also possible to develop new functions with separated modules, and integrate them with the SDN controller.\n\n# Learn More\n\nThe full document is on http://vlcp.readthedocs.io/en/latest/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhubo1016%2Fvlcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhubo1016%2Fvlcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhubo1016%2Fvlcp/lists"}