Hi Rohit, So look like OpenWRT could be a good alternative then, but how would you handle other services such as load-balancing, vpn,...? would that be from another Service VMs, kind of doing service mesh ?
Cheers, On Mon, Aug 16, 2021 at 5:37 AM Rohit Yadav <rohit.ya...@shapeblue.com> wrote: > Hi PL, > > I tested OpenWRT on KVM, and I don't see any performance loss in terms of > bandwidth/IO and memory, in fact it seems to be faster than the Debian > based systemvmtemplate due to: > > * Smaller kernel size (the Debian kernel includes all sorts of device > drivers for sound and what not which is not necessary for VR/systemvm) > * Faster ssh (the dropbear ssh kernel is on-par with openssh-server > but has smaller footprint and missing features such as sftp that we don't > need in VR/systemvm; the ssh and programming seemed really fast compared to > Debian's openssh-server) > * Really low memory consumption (Debian10+ eats up some RAM due to > non-optimised services, esp systemd compared to OpenWRT) > * Lua based really-fast APIs and bus (openwrt has > https://openwrt.org/docs/techref/ubus, I'm looking into how we can build > something similar for our Debian based systemvmtemplate if migrating to > OpenWRT is going to be a pain or unacceptable by the community) > > Based on your comment I found that VyOS rolling release has API support ( > https://blog.vyos.io/vyos-rolling-release-has-got-an-http-api) however > that is probably not supported for their lts/legacy release, we'll also > face issue with installing/configuring custom packages (java etc) that we > need for systemvm/VR. > > > Regards. > > ________________________________ > From: Pierre-Luc Dion <pdion...@apache.org> > Sent: Friday, August 13, 2021 21:51 > To: dev <dev@cloudstack.apache.org> > Subject: Re: [DISCUSS] NextGen VR? > > From a certain point of view, OpenWRT is most likely not suitable for our > needs, this project is highly oriented for router appliance platforms and > kernel is most likely highly optimised for a small memory footprint and > might not have performance and virtualization in mind. > > It's a shame that there is not some sort of API driven open source VyOS :-S > > Anything useful that would come out of the CloudNative projects? > > > On Fri, Aug 13, 2021 at 5:48 AM Rohit Yadav <rohit.ya...@shapeblue.com> > wrote: > > > Hi Pierre-Luc, > > > > Thanks for replying. > > > > We've another thread on-going to discuss IPv6 support where we've indeed > > discussed idea of introducing dynamic routing capabilities in the VR in a > > future phase with FRR in the VR. > > > > For the VR agent idea, I'm indeed thinking of API driven way (the agent > > exposes an API for CloudStack and a custom CLI perhaps) for it to manage > > iptables, software packages/services such as dnsmasq etc. Right now it's > > possible to configure some of the services in network offering (for ex. > if > > you don't want LB etc). > > > > I've indeed looked at some alternatives: > > > > * Alpine: I experimented a new systemvmtemplate based on Alpine ( > > https://github.com/shapeblue/alpine-systemvm) but we saw many cons with > > Alpine and the gains weren't significant so we decided to drop the idea > of > > moving from Debian to Alpine. > > * VyOS: I've concerns about project and community (I could be wrong) > > to have our VR depend on it as the "default" provider; though I see an > old > > PR > > * OpenWRT: Among available router distributions, I really liked it - > > it has (a) a good health and active community and commit activity ( > > https://github.com/openwrt/openwrt/graphs/contributors), (b) multi-years > > (10+yrs) of releases (https://openwrt.org/about/history), (c) a > > configuration system (UCI) and UI (LUCI) which can be used to manage > > services, interfaces, firewall, routes etc with a Lua based API, (d) opkg > > packaging system, most software packages or equivalent are available that > > our Debian based systemvmtemplate needs/uses (java jre workaround from > > Alpine though), (e) good documentation on extending features/writing > > plugins etc, (f) they tend to do regular releases and use Linux/LTS > kernel. > > * pfSense/opnSense: the major cons are FreeBSD-based kernel and > skills > > that CloudStack community may not have in terms of debugging, > investigation > > etc like they have for Linux > > > > Among the above, OpenWRT is probably worth exploring in my opinion; other > > some firewall/iptables and iproute2 (interfaces and routes) API/library > > that can be used by the VR agent on Debian to program the firewall (acls, > > firewall, pf), IP/interface management and routing features in the VR > > (currently it's all done in a manual sense which is untested and often > > source of bugs and issues). > > > > Lastly, we already have this PR which aims to do automatic > > systemvmtemplate registeration/installation/seeding and handle upgrades > > (targetted for 4.16): https://github.com/apache/cloudstack/pull/4329 The > > PR also unifies the systemvm template use to be extended for CKS use-case > > (i.e. no separate template installation required for CKS). > > > > > > Regards. > > > > ________________________________ > > From: Pierre-Luc Dion <pdion...@apache.org> > > Sent: Thursday, August 12, 2021 16:45 > > To: dev <dev@cloudstack.apache.org> > > Subject: Re: [DISCUSS] NextGen VR? > > > > Hi Rohit, > > > > Like it! Our VR system is due for some rethinking! > > I don't have much points to add to issues you highlight, it seems pretty > > complete. > > > > Here are some more features or ideas that would be interesting to see in > a > > new VR system: > > - Use or support for routing protocol, such as BGP or OSBP so we could > > provide a more dynamic PrivateGateway concept. using FRR[1]? > > - have an API driven way to configure IPtables and other network > services. > > - could we decouple network services such as LB, VPNserver, gateways > from > > the VR ? > > > > Debian has been a pain for building VR because the iso defined in our > > config need constant update, but on the other hand it's been proved to > be a > > reliable OS, we saw some of our VR with uptime over 1000 days. > > > > As an alternative OS, I'd be curious to look at VyOS[2] or Alpine Linux. > > > > From a certain perspective, us providing the systemvm template make sure > > that systemVM will deploy. work reliably and make it a single template to > > test. Compared to a system that would just provide RPM/DEB packages and > > mechanism to push configs, this could require to test all kinds of > template > > scenarios, since users could use any version of distro to deploy their > > systemVM/VRs. > > > > "Users forget to register the right systemvmtemplate for a new ACS > version > > and upgrades fail": Maybe we could automatically register the new > template > > during the upgrade process? This feature used to exist in the Citrix > > CloudPlatform. > > > > > > [1] https://frrouting.org/ > > [2] https://github.com/vyos/vyos-1x > > > > On Wed, Aug 11, 2021 at 12:37 PM Rohit Yadav <rohit.ya...@shapeblue.com> > > wrote: > > > > > All, > > > > > > We've over the years create a VR that largely is stable but we've > > > discussed the pain of maintaining, extending, and upgrading VRs both in > > > lists and in user-groups and CCC conferences. > > > > > > On a high-level the pain points are: > > > > > > * It's difficult to debug, investigate VR for operators and support > > > team > > > * Maintaining the VR code, fixing bugs, implementing features is a > > > pain for developers; further the xml&json databags based programming > > model > > > is confusing > > > * Any fix or changes requires a new systemvmtemplate or VR codebase > > > whose patching requires restarting the VR or destroying an old VR > > > * No uniform VR programming API (current approach is SSH+databags > and > > > execute a script), this makes testing VR difficult and QA in isolation > is > > > not possible > > > * Users forget to register the right systemvmtemplate for a new ACS > > > version and upgrades fail > > > * Others (please share yours)? > > > > > > Among these pain points my colleagues have proposed a PR targeting 4.16 > > > [1] that aims to unify systemvmtemplate as a building block that is > > bundled > > > as part of ACS rpm/deb/* packages which CloudStack will automatically > > > seed/register/use with which upgrades will be as simple as a yum update > > or > > > apt-get upgrade. Further, my colleagues and I are exploring a live > patch > > > API which in near future that can patch a running systemvm/VR using > > > systemvm.iso (or deprecate systemvm.iso and use ssh/scp to patch?) > > without > > > requiring to reboot/recreate it. Hopefully, this addresses some of > those > > > pain points. We request the community for your feedback and > > > review/participation in the PR. > > > > > > Open questions, topics to discuss and gather feedback: > > > > > > * VR programming: Should we explore a new light-weight VR agent > that > > > provides an API (restful/grpc, or CLI?), some mechanism of live > patching > > VR > > > code, packages, and kernel? > > > * Refactoring isolated network and VPC codebases into a unified > > > codebase and feature sets (assumption that isolated network are > largely a > > > VPC with single tier), does it benefit the community, users, and > > developers? > > > * Underlying OS: > > > * should we consider something other than Debian, any > suggestions? > > > * or explore stable/widely used and maintained opensource router > > > distributions such as OpenWRT [2] which ships with a UI and > > > CLI/configuration system UCI [3]? The cons of the approach are a new > > > dependency and some likely missing packages. > > > * In current VR codebase, most of the effort is spent in > > > implementing/maintaining router packages/configure codebase which we > can > > > get rid of by depending on a stable Linux router distro which ships > with > > > some API/config system. Not choosing an existing router distribution > > means > > > we continue to DIY router programming+config management codebase. > > > * Any other ideas? > > > > > > Thoughts, feedback? > > > > > > [1] https://github.com/apache/cloudstack/pull/4329 > > > [2] https://github.com/openwrt/openwrt/graphs/contributors > > > [3] https://openwrt.org/docs/guide-user/base-system/uci > > > > > > > > > Regards. > > > > > > > > > > > > > > > > > > > > > > > >